Re: the annoying, verbose self

2007-11-27 Thread Steven D'Aprano
On Mon, 26 Nov 2007 21:48:36 +0100, Ton van Vliet wrote:

> On Mon, 26 Nov 2007 20:14:50 +0100, Bruno Desthuilliers
> <[EMAIL PROTECTED]> wrote:
> 
>>> However, I was more thinking in terms of attributes only
>>
>>Too bad : in Python, everything's an object, so 'methods' are attributes
>>too.
> 
> Right, but I'm sure *you* know a way to distinguish between them (I'm
> just a beginner ;-)

All methods are attributes. Not all attributes are methods. The usual way 
to see if something is a method is to try calling it and see what 
happens, but if you want a less informal test, try type():


>>> type(''.join)

>>> type(Foo().foo)  # with the obvious definition of Foo





-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


FREE AIR TICKET

2007-11-27 Thread amutharr
AIR TICKET FOR SWIZ ANSWER SIMPLE QUESTIONhttp://rexmier.blogspot.com/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Rss Feed Creator

2007-11-27 Thread Stefan Behnel
Shane Geiger wrote:
> James Matthews wrote:
>> I am looking for a library that will create Rss/Atom feeds in python.
>> It needs to format the XML in a readable format! Does anyone have any
>> suggestions?

http://trac.openplans.org/openplans/browser/TaggerClient/trunk/taggerclient/atom.py?rev=6717

The usage is mainly the same as in standard ElementTree.

http://codespeak.net/lxml/dev/

Stefan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Rss Feed Creator

2007-11-27 Thread Vladimir Rusinov
On 11/27/07, James Matthews <[EMAIL PROTECTED]> wrote:
>
> I am looking for a library that will create Rss/Atom feeds in python. It
> needs to format the XML in a readable format! Does anyone have any
> suggestions?


You can also use some xml-based template engine (Kid or Genshi).

-- 
Vladimir Rusinov
GreenMice Solutions: IT-решения на базе Linux
http://greenmice.info/
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: the annoying, verbose self

2007-11-27 Thread Bruno Desthuilliers
Steven D'Aprano a écrit :
> On Mon, 26 Nov 2007 21:48:36 +0100, Ton van Vliet wrote:
> 
>> On Mon, 26 Nov 2007 20:14:50 +0100, Bruno Desthuilliers
>> <[EMAIL PROTECTED]> wrote:
>>
 However, I was more thinking in terms of attributes only
>>> Too bad : in Python, everything's an object, so 'methods' are attributes
>>> too.
>> Right, but I'm sure *you* know a way to distinguish between them

Yes : reading the doc. But that's something the compiler will have hard 
time doing.

>> (I'm
>> just a beginner ;-)
> 
> All methods are attributes. Not all attributes are methods. The usual way 
> to see if something is a method is to try calling it and see what 
> happens, but if you want a less informal test, try type():
> 
> 
 type(''.join)
> 
 type(Foo().foo)  # with the obvious definition of Foo
> 
> 


Fine. Now since Python let you define your own callable types and your 
own descriptors, you can as well have an attribute that behave just like 
a method without being an instance of any of the method types - so the 
above test defeats duck typing. And since you can have callable 
attributes that are definitively not methods, you can't rely on the fact 
that an attribute is callable neither.




-- 
http://mail.python.org/mailman/listinfo/python-list

Why are class methods not classmethods?

2007-11-27 Thread Steven D'Aprano
There's some subtle behaviour going on here that I don't really follow. 
Class methods apparently aren't classmethods.


>>> class Parrot(object):
... def method(self, *args):
... return self, args
... @classmethod
... def cmethod(cls, *args):
... return cls, args
...
>>> type(parrot.method)  # as expected

>>> type(parrot.cmethod)  # I don't expect this result

>>> type(classmethod(parrot.method))

>>> 
>>> parrot.cm = classmethod(parrot.method)
>>> type(parrot.cm)  # I expect this

>>> 
>>> Parrot.CM = classmethod(parrot.method)
>>> type(Parrot.CM)  # but not this



Can anyone explain why class methods bound to a class are instancemethods 
rather than classmethods?




-- 
Steven.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: gnosis XML objectify

2007-11-27 Thread Stefan Behnel
Wang, Harry wrote:
> Test Suite Started @ 2007-11-26 11:34:46.617000
> Traceback (most recent call last):
>   File "C:\UDR2\UDRxmlGateway.py", line 370, in 
> ParseAll()
>   File "C:\UDR2\UDRxmlGateway.py", line 286, in ParseAll
> py_obj = gnosis.xml.objectify.XML_Objectify(InputFile).make_instance()
>   File "C:\python25\Lib\site-packages\gnosis\xml\objectify\_objectify.py", 
> line 160, in make_instance
> o = self.ParseFile(self._fh)
>   File "C:\python25\Lib\site-packages\gnosis\xml\objectify\_objectify.py", 
> line 190, in ParseFile
> self._myparser.ParseFile(file)
> xml.parsers.expat.ExpatError: not well-formed (invalid token): line 68, 
> column 0

You XML input is broken. This is not a gnosis problem.

Look at line 68 in your XML file.

Stefan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Roy Smith
In article <[EMAIL PROTECTED]>,
 Bruno Desthuilliers <[EMAIL PROTECTED]> 
 wrote:

> Steven D'Aprano a écrit :
> > On Mon, 26 Nov 2007 21:48:36 +0100, Ton van Vliet wrote:
> > 
> >> On Mon, 26 Nov 2007 20:14:50 +0100, Bruno Desthuilliers
> >> <[EMAIL PROTECTED]> wrote:
> >>
>  However, I was more thinking in terms of attributes only
> >>> Too bad : in Python, everything's an object, so 'methods' are attributes
> >>> too.
> >> Right, but I'm sure *you* know a way to distinguish between them
> 
> Yes : reading the doc. But that's something the compiler will have hard 
> time doing.
> 
> >> (I'm
> >> just a beginner ;-)
> > 
> > All methods are attributes. Not all attributes are methods. The usual way 
> > to see if something is a method is to try calling it and see what 
> > happens, but if you want a less informal test, try type():
> > 
> > 
>  type(''.join)
> > 
>  type(Foo().foo)  # with the obvious definition of Foo
> > 
> > 
> 
> 
> Fine. Now since Python let you define your own callable types and your 
> own descriptors, you can as well have an attribute that behave just like 
> a method without being an instance of any of the method types - so the 
> above test defeats duck typing. And since you can have callable 
> attributes that are definitively not methods, you can't rely on the fact 
> that an attribute is callable neither.

If you want to have a little fun:

class peverse:
def __call__(self):
raise AttributeError ("peverse instance has no __call__ method")

x = peverse()
x()
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Why are class methods not classmethods?

2007-11-27 Thread Marc 'BlackJack' Rintsch
On Tue, 27 Nov 2007 09:12:28 +, Steven D'Aprano wrote:

> Can anyone explain why class methods bound to a class are instancemethods 
> rather than classmethods?

I'd say because they are bound to the class which is the instance that is
passed as first argument.  Just like unbound methods turn into bound
methods when you access them on "normal" objects and change from
functions to instance methods, accessing class methods make them instance
methods too.  If you bypass the dot operator you get the still unwrapped
class method:

In [83]: Parrot.cmethod
Out[83]: >

In [84]: type(Parrot.cmethod)
Out[84]: 

In [85]: Parrot.__dict__['cmethod']
Out[85]: 

In [86]: type(Parrot.__dict__['cmethod'])
Out[86]: 

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread MonkeeSage
On Nov 27, 3:20 am, Roy Smith <[EMAIL PROTECTED]> wrote:

> If you want to have a little fun:
>
> class peverse:
> def __call__(self):
> raise AttributeError ("peverse instance has no __call__ method")
>
> x = peverse()
> x()

That is "peverse", but still...

from types import FunctionType
type(x) == FunctionType # False

And you can't (easily?) subclass FunctionType:

Error when calling the metaclass bases
  type 'function' is not an acceptable base type

;)

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Rss Feed Creator

2007-11-27 Thread James Matthews
Thank you everyone!

On Nov 27, 2007 10:13 AM, Vladimir Rusinov <[EMAIL PROTECTED]> wrote:

>
>
> On 11/27/07, James Matthews <[EMAIL PROTECTED]> wrote:
> >
> > I am looking for a library that will create Rss/Atom feeds in python. It
> > needs to format the XML in a readable format! Does anyone have any
> > suggestions?
>
>
> You can also use some xml-based template engine (Kid or Genshi).
>
> --
> Vladimir Rusinov
> GreenMice Solutions: IT-решения на базе Linux
> http://greenmice.info/




-- 
http://search.goldwatches.com/?Search=Movado+Watches
http://www.goldwatches.com/coupons
http://www.jewelerslounge.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Find & Replace hyperlinks in a string

2007-11-27 Thread MonkeeSage
On Nov 27, 1:37 am, Nico Grubert <[EMAIL PROTECTED]> wrote:
> Hi there,
>
> I have a string containing some hyperlinks. I'd like to replace every
> hyperlink with a HTML style link.
>
> Example:
> 
> Replace
>'http://www.foo.com/any_url'
> with
>'http://www.foo.com/any_url";>http://www.foo.com/any_url'
>
> What's the best way to do this if I have a few hundret strings to check?
>
> Thanks in advance,
> Nico

Well, this isn't the most robust and someone will probably say not to
use regular expressions, but the Q&D way is:

import re
fixed = re.sub(r'(http:[^\s\n\r]+)', r'\1',
your_string)

NB. If the URLs are malformed (like have spaces in them, or are broken
over several lines) this won't work right.

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


vanga machan vanga

2007-11-27 Thread abi
http://goast.50webs.com/
http://bigchurch.com/go/g912753-pmem
http://indianfriendfinder.com/go/g912753-pmem
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Bruno Desthuilliers
Colin J. Williams a écrit :
> Bruno Desthuilliers wrote:
> [snip]>
>> Too bad : in Python, everything's an object, so 'methods' are 
>> attributes too.
> 
> What do you see as a problem here?

You snipped too much... Tony wrote "However, I was more thinking in 
terms of attributes only" (implying: attributes != methods). So the "too 
bad" meant "won't work here".

 > Surely it gives useful flexibility.

Indeed. But that's not the problem here.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Bruno Desthuilliers
MonkeeSage a écrit :
> On Nov 27, 3:20 am, Roy Smith <[EMAIL PROTECTED]> wrote:
> 
>> If you want to have a little fun:
>>
>> class peverse:
>> def __call__(self):
>> raise AttributeError ("peverse instance has no __call__ method")
>>
>> x = peverse()
>> x()

print callable(x)
=> True

> That is "peverse", but still...
> 
> from types import FunctionType
> type(x) == FunctionType # False
> 
> And you can't (easily?) subclass FunctionType:
> 
> Error when calling the metaclass bases
>   type 'function' is not an acceptable base type
> 
> ;)

You don't have to subclass function to define a callable type that 
implements the descriptor protocol so it behaves just like a function in 
the context of an attribute lookup.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: spawning a process with subprocess

2007-11-27 Thread Nick Craig-Wood
MonkeeSage <[EMAIL PROTECTED]> wrote:
>  Couple of things. You should use poll() on the Popen instance, and
>  should check it explicitly against None (since a 0 return code,
>  meaning exit successfully, will be treated as a false condition the
>  same as None). Also, in your second example, you block the program
>  when you call readlines on the pipe, since readlines blocks until it
>  reaches eof (i.e., until pipe closes stdout, i.e., process is
>  complete). Oh, and you don't have to split the input to the args
>  option yourself, you can just pass a string.

Though passing an array is good practice if you want to avoid passing
user data through the shell.

> So, putting it all together, you want something like:
> 
>  import subprocess, time
> 
>  cmd = "cat somefile"
>  proc = subprocess.Popen(args=cmd, shell=True,
>stdout=subprocess.PIPE, stdin=subprocess.PIPE,
>stderr=subprocess.STDOUT, close_fds=True)
> 
>  while 1:
>time.sleep(1)
>if proc.poll() != None:
>  break
>else:
>  print "waiting on child..."
> 
>  print "returncode =", proc.returncode

This works fine unless the command generates a lot of output (more
than 64k on linux) when the output pipe will fill up and the process
will block until it is emptied.

If you run the below with `seq 1` then it works fine but as
written the subprocess will block forever writing its output pipe
(under linux 2.6.23).

#
import subprocess, time

cmd = """
for i in `seq 2`; do
  echo $i
done
exit 42
"""

proc = subprocess.Popen(args=cmd, shell=True,
  stdout=subprocess.PIPE, stdin=subprocess.PIPE,
  stderr=subprocess.STDOUT, close_fds=True)

while 1:
  time.sleep(1)
  if proc.poll() != None:
break
  else:
print "waiting on child..."

print "returncode =", proc.returncode
lines = 0
total = 0
for line in proc.stdout:
lines += 1
total += len(line)
print "Received %d lines of %d bytes total" % (lines, total)
#

So you do need to read stuff from your subprocess, but there isn't a
way in the standard library to do that without potentially blocking.

There are a few solutions

1) use the python expect module (not windows)

  http://pexpect.sourceforge.net/

2) set your file descriptors non blocking.  The following recipe shows
a cross platform module to do it.

  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554

Or just do it with the fcntl module

3) Use a thread to read stuff from your subprocess and allow it to
block on proc.stdout.read()

Here is an example of 2)

#
import subprocess, time, os
from fcntl import fcntl, F_GETFL, F_SETFL
from errno import EAGAIN

cmd = """
for i in `seq 10`; do
  echo $i
done
exit 42
"""

proc = subprocess.Popen(args=cmd, shell=True,
  stdout=subprocess.PIPE, stdin=subprocess.PIPE,
  stderr=subprocess.STDOUT, close_fds=True)

# Set non blocking (unix only)
fcntl(proc.stdout, F_SETFL, fcntl(proc.stdout, F_GETFL) | os.O_NONBLOCK)

def read_all(fd):
out = ""
while 1:
try:
bytes = fd.read(4096)
except IOError, e:
if e[0] != EAGAIN:
raise
break
if not bytes:
break
out += bytes
return out

rx = ""
while 1:
  time.sleep(1)
  if proc.poll() != None:
break
  else:
print "waiting on child..."
rx += read_all(proc.stdout)

rx += read_all(proc.stdout)
print "returncode =", proc.returncode
lines = 0
total = 0
for line in rx.split("\n"):
lines += 1
total += len(line)
print "Received %d lines of %d bytes total" % (lines, total)
#

Which runs like this on my machine

$ python subprocess-shell-nb.py
waiting on child...
waiting on child...
waiting on child...
waiting on child...
waiting on child...
waiting on child...
waiting on child...
waiting on child...
returncode = 42
Received 11 lines of 488895 bytes total

-- 
Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: trouble selling twisted

2007-11-27 Thread Nick Craig-Wood
[EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>  i have a lot of trouble selling twisted a a client lib for network
>  access (on embedded platform) the group i'm a member of wants to
>  write some unmaintainable threaded blocking junk in c--.

Finish the code in the time it takes them to work out what they are
going to do is the best way of selling it to them ;-)

Twisted may be hard to understand but it doesn't produce the kind of
monstrously difficult to debug threading problems that you get with
the other proposed solution.

If you can't sell them twisted you could try
http://monkey.org/~provos/libevent/ which is similar in concept to a
lot of twisted but as a C library.

>  does anyone can give me an idea how many kilobytes extra would it
>  take to have a pyqt linked in and a running qtreactor?  (qtreactor
>  natirally depends on the qt bindings)

Presumably you wouldn't use a qtreactor unless you were already using
QT - there are plenty of other reactors.  So you are asking about the
overhead of pyqt only?  In terms of disk space it is potentially quite
large.  As for memory I suggest you write the minimal pyqt program on
your platform (using a shared QT) and see how much extra RAM it uses.

>  is there an exaample of going thru a passworded proxy using twisted
>  client classes?  i have trouble understanding how to adapt the
>  proxy example on page 58 in the twisted book to my needs.

I advise looking at the twisted source code!

-- 
Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Find & Replace hyperlinks in a string

2007-11-27 Thread gsal
You mean in Python? 'cause if it is a one time shot kind of thing, I
would simply open the file in my favorite editor (NEdit) and use a
Search and Replace, check the regexp box and type my
expression...something along the lines of ([^:]+)://([^:/]+)(:
([0-9]+))?(/.*) to find URLs and then replace with \0 ...if I remember correctly that \0 is the entire match, \1 the
first parenthesised match, etc.

gsal
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: spawning a process with subprocess

2007-11-27 Thread MonkeeSage
On Nov 27, 4:30 am, Nick Craig-Wood <[EMAIL PROTECTED]> wrote:
> MonkeeSage <[EMAIL PROTECTED]> wrote:
> >  Couple of things. You should use poll() on the Popen instance, and
> >  should check it explicitly against None (since a 0 return code,
> >  meaning exit successfully, will be treated as a false condition the
> >  same as None). Also, in your second example, you block the program
> >  when you call readlines on the pipe, since readlines blocks until it
> >  reaches eof (i.e., until pipe closes stdout, i.e., process is
> >  complete). Oh, and you don't have to split the input to the args
> >  option yourself, you can just pass a string.
>
> Though passing an array is good practice if you want to avoid passing
> user data through the shell.

Well, he was setting shell=True, but I guess being explicit (about
that) is better than implicit. ;)

> > So, putting it all together, you want something like:
>
> >  import subprocess, time
>
> >  cmd = "cat somefile"
> >  proc = subprocess.Popen(args=cmd, shell=True,
> >stdout=subprocess.PIPE, stdin=subprocess.PIPE,
> >stderr=subprocess.STDOUT, close_fds=True)
>
> >  while 1:
> >time.sleep(1)
> >if proc.poll() != None:
> >  break
> >else:
> >  print "waiting on child..."
>
> >  print "returncode =", proc.returncode
>
> This works fine unless the command generates a lot of output (more
> than 64k on linux) when the output pipe will fill up and the process
> will block until it is emptied.
>
> If you run the below with `seq 1` then it works fine but as
> written the subprocess will block forever writing its output pipe
> (under linux 2.6.23).
>
> #
> import subprocess, time
>
> cmd = """
> for i in `seq 2`; do
>   echo $i
> done
> exit 42
> """
>
> proc = subprocess.Popen(args=cmd, shell=True,
>   stdout=subprocess.PIPE, stdin=subprocess.PIPE,
>   stderr=subprocess.STDOUT, close_fds=True)
>
> while 1:
>   time.sleep(1)
>   if proc.poll() != None:
> break
>   else:
> print "waiting on child..."
>
> print "returncode =", proc.returncode
> lines = 0
> total = 0
> for line in proc.stdout:
> lines += 1
> total += len(line)
> print "Received %d lines of %d bytes total" % (lines, total)
> #
>
> So you do need to read stuff from your subprocess, but there isn't a
> way in the standard library to do that without potentially blocking.
>
> There are a few solutions
>
> 1) use the python expect module (not windows)
>
>  http://pexpect.sourceforge.net/
>
> 2) set your file descriptors non blocking.  The following recipe shows
> a cross platform module to do it.
>
>  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554
>
> Or just do it with the fcntl module
>
> 3) Use a thread to read stuff from your subprocess and allow it to
> block on proc.stdout.read()
>
> Here is an example of 2)
>
> #
> import subprocess, time, os
> from fcntl import fcntl, F_GETFL, F_SETFL
> from errno import EAGAIN
>
> cmd = """
> for i in `seq 10`; do
>   echo $i
> done
> exit 42
> """
>
> proc = subprocess.Popen(args=cmd, shell=True,
>   stdout=subprocess.PIPE, stdin=subprocess.PIPE,
>   stderr=subprocess.STDOUT, close_fds=True)
>
> # Set non blocking (unix only)
> fcntl(proc.stdout, F_SETFL, fcntl(proc.stdout, F_GETFL) | os.O_NONBLOCK)
>
> def read_all(fd):
> out = ""
> while 1:
> try:
> bytes = fd.read(4096)
> except IOError, e:
> if e[0] != EAGAIN:
> raise
> break
> if not bytes:
> break
> out += bytes
> return out
>
> rx = ""
> while 1:
>   time.sleep(1)
>   if proc.poll() != None:
> break
>   else:
> print "waiting on child..."
> rx += read_all(proc.stdout)
>
> rx += read_all(proc.stdout)
> print "returncode =", proc.returncode
> lines = 0
> total = 0
> for line in rx.split("\n"):
> lines += 1
> total += len(line)
> print "Received %d lines of %d bytes total" % (lines, total)
> #
>
> Which runs like this on my machine
>
> $ python subprocess-shell-nb.py
> waiting on child...
> waiting on child...
> waiting on child...
> waiting on child...
> waiting on child...
> waiting on child...
> waiting on child...
> waiting on child...
> returncode = 42
> Received 11 lines of 488895 bytes total
>
> --
> Nick Craig-Wood <[EMAIL PROTECTED]> --http://www.craig-wood.com/nick

Nice. Thanks for the recipe link too.

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: spawning a process with subprocess

2007-11-27 Thread Ove Svensson
bhunter <[EMAIL PROTECTED]> writes:

> Hi,
> 
> I've used subprocess with 2.4 several times to execute a process, wait
> for it to finish, and then look at its output.  Now I want to spawn
> the process separately, later check to see if it's finished, and if it
> is look at its output.  I may want to send a signal at some point to
> kill the process.  This seems straightforward, but it doesn't seem to
> be working.
> 
> Here's my test case:
> 
> import subprocess, time
> 
> cmd = "cat somefile"
> thread = subprocess.Popen(args=cmd.split(), shell=True,
> stdout=subprocess.PIPE, stdin=subprocess.PIPE,
> stderr=subprocess.STDOUT, close_fds=True)
> 
> while(1):
>   time.sleep(1)
>   if(thread.returncode):
>  break
>   else:
>  print thread.returncode
> 
> print "returncode = ", thread.returncode
> for line in thread.stdout:
>print "stdout:\t",line
> 
> 
> This will just print the returncode of None forever until I Ctrl-C it.
> 
> Of course, the program works fine if I call thread.communicate(), but
> since this waits for the process to finish, that's not what I want.
> 
> Any help would be appreciated.

Reading documentation for subprocess, it mentions that

On UNIX, with shell=False (default): In this case, the Popen class
uses os.execvp() to execute the child program.  args should normally
be a sequence.  A string will be treated as a sequence with the string
as the only item (the program to execute).

On UNIX, with shell=True: If args is a string, it specifies the
command string to execute through the shell.  If args is a sequence,
the first item specifies the command string, and any additional items
will be treated as additional shell arguments.

Since you have specified shell = True, and since you pass a sequence as
args, you will efficiently invoke the cat process through the shell and
then pass somefile as an extra argument to she shell (not the cat command)
That is probably not what you intended.

This can be solved by either
- Not splitting the cmd, in which case you will pass the whole cmd
  string to the shell for execution
- Or setting shell to False. This is what I would have done, since
  I can't see any reason for going via the shell. Please note that
  if setting shell to False, you must then split the cmd.

Please also note that your test for the returncode might not work
since a normal returncode is 0. Your code will only detect non-0
values.

Also, it is good practice to call wait() on the subprocess in order
to avoid zombie-processes.

Finally, I find it somewhat misleading to use the name thread for
the variable used to represent a sub-process. Threads and processes
are not exactly the same

Hence, the following code should works as expected

cmd = "cat somefile"
proc = subprocess.Popen(
args  = cmd.split(),
shell = False,
stdin = None,
stdout= subprocess.PIPE,
stderr= subprocess.STDOUT,
close_fds = True)

while True:
rc = proc.poll()
if rc != None: break
print rc
time.sleep(1)

lno = 1
for lin in proc.stdout:
print '%i: %s' % (lno,lin.rstrip('\n'))
lno += 1

rc = proc.wait()
print "rc = %i" % rc


/Ove
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread MonkeeSage
On Nov 27, 4:22 am, Bruno Desthuilliers

> You don't have to subclass function to define a callable type that
> implements the descriptor protocol so it behaves just like a function in
> the context of an attribute lookup.

I'm aware, and I understand that python's types (as with other duck-
typed languages) are basically just an object's capabilities; I was
just pointing out that, if needed (though I can't think of why
offhand...mabye some kind of sandbox?), you can detect built-in
functions. Hmm...but then again, it seems that shadowing a built-in
function still reports as it's type as FunctionType...

In [1]: from types import FunctionType

In [2]: def len(x):
   ...: # mischief
   ...: pass
   ...:

In [3]: type(len) == FunctionType
Out[3]: True

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Iain King
On Nov 27, 9:20 am, Roy Smith <[EMAIL PROTECTED]> wrote:
> In article <[EMAIL PROTECTED]>,
>  Bruno Desthuilliers <[EMAIL PROTECTED]>
>
>
>
>  wrote:
> > Steven D'Aprano a écrit :
> > > On Mon, 26 Nov 2007 21:48:36 +0100, Ton van Vliet wrote:
>
> > >> On Mon, 26 Nov 2007 20:14:50 +0100, Bruno Desthuilliers
> > >> <[EMAIL PROTECTED]> wrote:
>
> >  However, I was more thinking in terms of attributes only
> > >>> Too bad : in Python, everything's an object, so 'methods' are attributes
> > >>> too.
> > >> Right, but I'm sure *you* know a way to distinguish between them
>
> > Yes : reading the doc. But that's something the compiler will have hard
> > time doing.
>
> > >> (I'm
> > >> just a beginner ;-)
>
> > > All methods are attributes. Not all attributes are methods. The usual way
> > > to see if something is a method is to try calling it and see what
> > > happens, but if you want a less informal test, try type():
>
> >  type(''.join)
> > > 
> >  type(Foo().foo)  # with the obvious definition of Foo
> > > 
>
> > Fine. Now since Python let you define your own callable types and your
> > own descriptors, you can as well have an attribute that behave just like
> > a method without being an instance of any of the method types - so the
> > above test defeats duck typing. And since you can have callable
> > attributes that are definitively not methods, you can't rely on the fact
> > that an attribute is callable neither.
>
> If you want to have a little fun:
>
> class peverse:
> def __call__(self):
> raise AttributeError ("peverse instance has no __call__ method")
>
> x = peverse()
> x()


Horrific cluge:
--

def noself(func):
def t(*args, **kwargs):
self = args[0]
g = globals()
delete = []
for varname in dir(self):
if not varname.startswith("__") and varname not in g:
g[varname] = self.__getattribute__(varname)
delete.append(varname)
func(*args, **kwargs)
for varname in delete:
del(g[varname])
return t


class Test(object):
x = 1

@noself
def test(self):
print x


>>> foo = Test()
>>> foo.test()
1

--

FTR, I won't be using this :)  I do like this syntax though:

class Vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def abs(self):
using self:
return math.sqrt(.x*.x + .y*.y + .z*.z)

Iain
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Bruno Desthuilliers
MonkeeSage a écrit :
> On Nov 27, 4:22 am, Bruno Desthuilliers
> 
>> You don't have to subclass function to define a callable type that
>> implements the descriptor protocol so it behaves just like a function in
>> the context of an attribute lookup.
> 
> I'm aware, and I understand that python's types (as with other duck-
> typed languages) are basically just an object's capabilities; I was
> just pointing out that, if needed (though I can't think of why
> offhand...mabye some kind of sandbox?), you can detect built-in
> functions.

Ok.

> Hmm...but then again, it seems that shadowing a built-in
> function still reports as it's type as FunctionType...

Of course (at least as long as you sahdow it with another function) - 
Why would it be otherwise ?



-- 
http://mail.python.org/mailman/listinfo/python-list


see most important news

2007-11-27 Thread RANI
see most important news
http://earnmac.blogspot.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Duncan Booth
Iain King <[EMAIL PROTECTED]> wrote:

> FTR, I won't be using this :)  I do like this syntax though:
> 
> class Vector:
> def __init__(self, x, y, z):
> self.x = x
> self.y = y
> self.z = z
> def abs(self):
> using self:
> return math.sqrt(.x*.x + .y*.y + .z*.z)

It is a bit verbose though. This variant is shorter on my system[*]:

class Vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def abs(self):
return math.sqrt(self.x*self.x + self.y*self.y + self.z*self.z)

[*] Windows, they are the same length on Linux.

:)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Iain King
On Nov 27, 12:03 pm, Duncan Booth <[EMAIL PROTECTED]>
wrote:
> Iain King <[EMAIL PROTECTED]> wrote:
> > FTR, I won't be using this :)  I do like this syntax though:
>
> > class Vector:
> > def __init__(self, x, y, z):
> > self.x = x
> > self.y = y
> > self.z = z
> > def abs(self):
> > using self:
> > return math.sqrt(.x*.x + .y*.y + .z*.z)
>
> It is a bit verbose though. This variant is shorter on my system[*]:
>
> class Vector:
> def __init__(self, x, y, z):
> self.x = x
> self.y = y
> self.z = z
> def abs(self):
> return math.sqrt(self.x*self.x + self.y*self.y + self.z*self.z)
>
> [*] Windows, they are the same length on Linux.
>
> :)

Yeah, in this example.  Another would be

using NetworkConnection:
.address = "127.0.0.1"
.port = "8080"
.connect()
using .connection
   while .read():
   do something
.disconnect()

I doubt anything like this will take though, since you can write
similar code with 'with' and assigning a long name to a short one.

Iain

-- 
http://mail.python.org/mailman/listinfo/python-list


It works! Was: Installing Python 3000 on Leopard (Mac OS) fails...

2007-11-27 Thread André
On Nov 26, 9:59 pm, "André" <[EMAIL PROTECTED]> wrote:
> While I made some progress in trying to install Py3k from source (for
> the first time), it has failed...
>
> Here are the steps I went through (not necessarily in that order -
> except for those that matter).
>
> 1. After installing Leopard, install Xcode tools from the dvd - even
> if you had done so with a previous version (they need to be updated -
> trust me :-)
>
> 2. Download Python 3.0a1
>
> 3.  Unpack the archive.
>
> 4. Go to  /usr/local and make a directory "sudo mkdir py3k"   (This is
> probably not needed, but that's what I did).
>
> 5. From the directory where the Python 3.0a1 was unpacked run
> ./configure --prefix=/usr/local/py3k
>
> 6. run "make"
>
> This last step failed with the following error message:
>
> gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-
> madd -DNDEBUG -g -O3 -Wall -Wstrict-prototypes  -I. -I./Include   -
> DPy_BUILD_CORE  -c ./Modules/posixmodule.c -o Modules/posixmodule.o
> ./Modules/posixmodule.c: In function 'posix_setpgrp':
> ./Modules/posixmodule.c:3769: error: too few arguments to function
> 'setpgrp'
> make: *** [Modules/posixmodule.o] Error 1
>
> Any suggestions?
>
> André

Following Martin v Löwis's suggestion, I looked at

 http://bugs.python.org/issue1358

and added the line
#define SETPGRP_HAVE_ARG
by hand to pyconfig.h  (after it was created by configure).  Then
6. run  "make"
7. run "make test"  (one test failed; this step likely unnecessary)
8. sudo make altinstall
9. sudo ln /usr/local/bin/py3k/python3.0 /usr/bin/python3.0

10. type "python"
11. print("Hello world!")
12. Be happy!

André, hoping this report might help some other newbie.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Neil Cerutti
On 2007-11-26, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Hrvoje Niksic wrote:
>> greg <[EMAIL PROTECTED]> writes:
>>
>> > none wrote:
>> >> IIRC, I once saw an explanation how Python doesn't have
>> >> "variables" in the sense that, say, C does, and instead has
>> >> bindings from names to objects.
>
> IMHO, this is nonsense.  All that variables are (in any
> language) are "bindings" for names. Pretending python does
> anything novel with regard to "variables" is confusing and,
> ultimately, simply results in a redefinition of terms
> programmers are already familiar with. 

Someone who says Python identifiers aren't variables, as in C, is
thinking of C variables, which behave quite differently than
Python identifiers.

> I mean, it's kind of like saying my computer is not a computer
> but is actually a device that follows input directions.  Of
> course that description may be true (and I may even use it to
> explain to students *what* a computer is), but it is no less a
> computer for it.

Your analogy is begging the question. Noone is claiming that a
variable is not a variable. Python identifiers are variables in a
broad sense. But they aren't like C variables.

>> > If you're talking to C programmers, just tell them that
>> > Python variables always contain pointers. That should give
>> > them the right mental model to build on.
>>
>> That is a convenient shortcut when it works, but in my
>> experience it tends to confuse the issue.  The reason is that
>> one of the main uses of pointers in C is implementing
>> pass-by-reference.  A C programmer told that Python variables
>> internally hold pointers expects this code:
>
> I think most C programmers are smart enough to figure out the
> supposed differences, with only a little additional explanation
> on the part of the instructor.  Python's "variable model" is
> practically identical to that of Java, after all, and I don't
> recall any discussion of cataclysmic proportions over the
> differences between C "pointers" and Java "references".  There
> are "differences" (or more accurately "points of emphasis"),
> but of the sort that take a paragraph or two of
> explanation/clarification -- not a completely new model.

There are more differences than similarities. Pointers are are a
low-level mechanism suitable for many purposes, referencing
values amongst them. Python identifiers are a high-level
machanism, suitable for only one purpose.

-- 
Neil Cerutti
-- 
http://mail.python.org/mailman/listinfo/python-list


reading/writing files

2007-11-27 Thread sandipm
Hi,

  I am trying to read a file and write into other file. if I do it for
simple text file, it works well.
but for pdfs or some other mime types, its failing.

actually main problem is i am uploading file using cgi, in this
process I am getting content of file, and I am
trying to save the file. I think I need to specify mimetype of file
somehow..?
any quick solutions? or need to google.

sandip
-- 
http://mail.python.org/mailman/listinfo/python-list


Keyword passing to superclass written in C

2007-11-27 Thread Sven Erik Knop
Hi

I am getting slightly frustrated and wonder if you can help me.

Consider a Python class Foo implemented in C++. I have declared an 
initialization method like this

static int
Foo_init(P4Adapter *self, PyObject *args, PyObject *kwds)
{

}

and I am subclassing Foo in Python, which works fine in principle, 
except for passing keywords.

Here is the subclass:

class Bar(Foo):
  def __init__(self, *args, **kwlist):
 Foo.__init__(self, args, kwlist)

I have tested Foo and Bar as Python classes and passing the keywords is 
not a problem. If I create Foo in C++ and call it directly, I can pass 
the keywords no bother.

But if I call Bar with keywords, it calls the C++ version of Foo with 
all arguments bunched together in "args" and not separated in args and 
keywords.

What am doing wrong?

This is Python 2.5.1 - on Ubuntu 7.0.4 if that makes any difference.

Thanks

Sven Erik





This email and any files transmitted with it are confidential and intended 
solely for the use of the individual or entity to whom they are addressed. If 
you have received this email in error please notify the system manager. Please 
note that any views or opinions presented in this email are solely those of the 
author and do not necessarily represent those of Perforce Software. Finally, 
the recipient should check this email and any attachments for the presence of 
viruses. Perforce Software accepts no liability for any damage caused by any 
virus transmitted by this email.

Perforce Software UK Ltd is registered in England and Wales as company no. 
3816019 at the following address: West Forest Gate, Wellington Road, Wokingham,
RG40 2AQ, UK

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: reading/writing files

2007-11-27 Thread sandipm
f1= open("file1.pdf", "rb")
x = f1.read()
open("file2.pdf", "wb").write(x)



works...

thanks
sandip

On Nov 27, 5:43 pm, sandipm <[EMAIL PROTECTED]> wrote:
> Hi,
>
>   I am trying to read a file and write into other file. if I do it for
> simple text file, it works well.
> but for pdfs or some other mime types, its failing.
>
> actually main problem is i am uploading file using cgi, in this
> process I am getting content of file, and I am
> trying to save the file. I think I need to specify mimetype of file
> somehow..?
> any quick solutions? or need to google.
>
> sandip

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How can I create customized classes that have similar properties as 'str'?

2007-11-27 Thread Licheng Fang
On Nov 27, 10:45 am, Steven D'Aprano
<[EMAIL PROTECTED]> wrote:
> On Sun, 25 Nov 2007 02:42:36 -0800, Licheng Fang wrote:
> > I mentioned trigram counting as an illustrative case. In fact, you'll
> > often need to define patterns more complex than that, and tens of
> > megabytes of text may generate millions of them, and I've observed they
> > quickly  ate up the 8G memory of a workstation in a few minutes.
> > Manipulating these patterns can be tricky, you can easily waste a lot of
> > memory without taking extra care. I just thought if I define my pattern
> > class with this 'atom' property, coding efforts could be easier later.
>
> I'm just not getting the same results as you when I try this. I'm finding
> that with no extra effort at all, it just works.
>
> The size of your corpus is not important. Neither is the complexity of
> how you generate the patterns. What's important is the number of patterns
> you produce, and "millions" isn't that huge a number, even without
> interning the strings.
>
> Obviously I'm not running your code, but I can build a dict with millions
> of patterns, from hundreds of megabytes of text, on a PC with just 1GB of
> memory and not run into any serious problems.
>
> I've just processed roughly 240MB of random emails, generating n-grams up
> to length 5. The emails include binary attachments and HTML etc., so I'm
> getting lots of patterns that don't normally exist in natural languages
> (e.g. 71 occurrences of 'qqq', and 5 of ''). As I said, my PC has
> only 1GB, and that's being shared with about a dozen other apps (including
> such memory hogs as Firefox).
>
> Results? 64939962 patterns found, of which 17031467 are unique. There's
> paging, yes, and my PC runs a little slow when I try to switch from one
> running application to another, but nothing unusable. Opening a dozen
> YouTube videos at once impacts performance worse.
>
> I can't think what you're doing to use up 8GB of RAM for merely
> "millions" of strings, even if you are keeping two, three, ten redundant
> copies. Assuming an average length of twenty bytes per pattern (you said
> trigrams, but I'd rather over-estimate than under), and even assuming
> that only half the 8GB are available to Python, you should be able to
> store something of the order of one hundred million patterns easily:

My task is identifying sequences of tokens (phrases) that are possible
tranlations of each other from a bilingual corpus. I need to check all
the subsequences of a sentence to get the possible phrase pairs. This
makes the problem different from n-gram counting in that the number of
possible phrases doesn't grow linearly with n, but approximately with
n^2. (n being the sentence length.) My first version of the program
consumes almost twice as much memory as the current one because I
discovered in doing different statistics I was regenerating the
patterns, and the counting dictionaries ended up with duplicated
pattern keys (a == b, yet a is not b). Wouldn't it be convenient if I
can restrict the pattern class to not generate identical instances? So
I can avoid such subtle but significant bugs.

>
> 4 bytes for a pointer plus 20 bytes for the string = 24 bytes
>
> 4*1024**3 / 24 = 178,956,970
>
> (This is a ballpark figure. Real Python strings will have additional
> overhead.)



>
> If you're running into problems with merely millions of patterns, then
> you're doing worse by probably two orders of magnitude.
>
> I don't think that the problem lies where you think it does. If you have
> a dict with millions of keys, it doesn't matter how many times each
> pattern exists in the corpus because the key only exists *once* in the
> dict. Duplicate the dict, or generate it from scratch even, and at worse
> you double the memory used by the keys. And probably not even that.
>
> The only thing I can think of that might explain why you're using so much
> memory is if you are generating *all* the patterns up front, say in a
> list, before adding them to the dict:
>
> # Generate one massive list of patterns containing many duplicates
> patterns = make_patterns(text)
> # returns a massive list like ['fre', 'req', 'equ', 'que' ...]
> d = {}
> for pattern in patterns:
> d[pattern] = d.get(pattern, 0) + 1
>

No, I wasn't doing that.
BTW, do you think the pattern counting code can avoid hashing the
pattern twice? Is there a way to do that when the dictionary values
are of a primitive type?

> Notice that the real killer in the above algorithm is that you need
> enough storage, not just for the unique patterns, but for EVERY separate
> occurrence of each pattern. Nothing to do with how dicts operate, and
> everything to do with the algorithm you (hypothetically) are using.
>
> If that's what you're doing, then no wonder you're running out of memory.
> With 200MB of text, you have 209715198 trigrams in your list. The
> pointers alone will take almost a gigabyte, assuming 32-bit pointers.
>
> If this is your approach, interning the strin

Different kinds of Import Errors

2007-11-27 Thread Thomas Guettler
If you look at this code, you see there are two kind of ImportErrors:

1. app_name has no attribute or file managment.py: That's OK.
2. managment.py exists, but raises an ImportError: That's not OK: reraise

# Import the 'management' module within each installed app, to register
# dispatcher events.
for app_name in settings.INSTALLED_APPS:
try:
__import__(app_name + '.management', {}, {}, [''])
except ImportError, exc:
if exc.args[0]!='No module named management':
raise


I am searching a better solution, since in a future version of python
the string 'No module namend management' might be changed.

Any better solution?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best ways of managing text encodings in source/regexes?

2007-11-27 Thread J. Clifford Dyer
On Tue, Nov 27, 2007 at 01:30:15AM +0200, tinker barbet wrote regarding Re: 
Best ways of managing text encodings in source/regexes?:
> 
> Hi
> 
> Thanks for your responses, as I said on the reply I posted I thought
> later it was a bit long so I'm grateful you held out!
> 
> I should have said (but see comment about length) that I'd tried
> joining a unicode and a byte string in the interpreter and got that
> working, but wondered whether it was safe (I'd seen the odd warning
> about mixing byte strings and unicode).  Anyway what I was concerned
> about was what python does with source files rather than what happens
> from the interpreter, since I don't know if it's possible to change
> the encoding of the terminal without messing with site.py (and what
> else).
> 
> Aren't both ASCII and ISO-8859-1 subsets of UTF-8?  Can't you then use
> chars from either of those charsets in a file saved as UTF-8 by one's
> editor, with a # -*- coding: utf-8 -*- pseudo-declaration for python,
> without problems?  You seem to disagree.
> 
I do disagree.  Unicode is a superset of ISO-8859-1, but UTF-8 is a specific 
encoding, which changes many of the binary values.  UTF-8 was designed 
specifically not to change the values of ascii characters.  0x61 (lower case a) 
in ascii is encoded with the bits 0110 0001.  In UTF-8 it is also encoded 0110 
0001.  However, ?, "latin small letter n with tilde", is unicode/iso-8859-1 
character 0xf1.  In ISO-8859-1, this is represented by the bits  0001.  

UTF-8 gets a little tricky here.  In order to be extensible beyond 8 bits, it 
has to insert control bits at the beginning, so this character actually 
requires 2 bytes to represent instead of just one.  In order to show that UTF-8 
will be using two bytes to represent the character, the first byte begins with 
110 (1110 is used when three bytes are needed).  Each successive byte begins 
with 10 to show that it is not the beginning of a character.  Then the 
code-point value is packed into the remaining free bits, as far to the right as 
possible.  So in this case, the control bits are 

110x  10xx .  

The character value, 0xf1, or:
 0001

gets inserted as follows:

110x xx{11}  10{11 0001}

and the remaining free x-es get replaced by zeroes.

1100 0011  1011 0001.

Note that the python interpreter agrees:

py>>> x = u'\u00f1'
py>>> x.encode('utf-8')
'\xc3\xb1'

(Conversion from binary to hex is left as an exercise for the reader)

So while ASCII is a subset of UTF-8, ISO-8859-1 is definitely not.  As others 
have said many times when this issue periodically comes up: UTF-8 is not 
unicode.  Hopefully this will help explain exactly why.

Note that with other encodings, like UTF-16, even ascii is not a subset.

See the wikipedia article on UTF-8 for a more complete explanation and external 
references to official documentation (http://en.wikipedia.org/wiki/UTF-8).



> The reason all this arose was that I was using ISO-8859-1/Latin-1 with
> all the right declarations, but then I needed to match a few chars
> outside of that range.  So I didn't need to use u"" before, but now I
> do in some regexes, and I was wondering if this meant that /all/ my
> regexes had to be constructed from u"" strings or whether I could just
> do the selected ones, either using literals (and saving the file as
> UTF-8) or unicode escape sequences (and leaving the file as ASCII -- I
> already use hex escape sequences without problems but that doesn't
> work past the end of ISO-8859-1).
> 

Do you know about unicode escape sequences?

py>>> u'\xf1' == u'\u00f1'
True

> Thanks again for your feedback.
> 
> Best wishes
> Tim
> 

No problem.  It took me a while to wrap my head around it, too.

Cheers,
Cliff
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Different kinds of Import Errors

2007-11-27 Thread kyosohma
On Nov 27, 7:35 am, Thomas Guettler <[EMAIL PROTECTED]> wrote:
> If you look at this code, you see there are two kind of ImportErrors:
>
> 1. app_name has no attribute or file managment.py: That's OK.
> 2. managment.py exists, but raises an ImportError: That's not OK: reraise
>
> # Import the 'management' module within each installed app, to 
> register
> # dispatcher events.
> for app_name in settings.INSTALLED_APPS:
> try:
> __import__(app_name + '.management', {}, {}, [''])
> except ImportError, exc:
> if exc.args[0]!='No module named management':
> raise
>
> I am searching a better solution, since in a future version of python
> the string 'No module namend management' might be changed.
>
> Any better solution?

I would assume that in the future versions of Python, it would still
mention the word "management". In that case, you could do something
like this in the except clause:

# untested
args = exc.args[0]
if args.find('management') != -1:
raise


Mike
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best ways of managing text encodings in source/regexes?

2007-11-27 Thread Kumar McMillan
On Nov 26, 2007 4:27 PM, "Martin v. Löwis" <[EMAIL PROTECTED]> wrote:
> > myASCIIRegex = re.compile('[A-Z]')
> > myUniRegex = re.compile(u'\u2013') # en-dash
> >
> > then read the source file into a unicode string with codecs.read(),
> > then expect re to match against the unicode string using either of
> > those regexes if the string contains the relevant chars?  Or do I need
> > to do make all my regex patterns unicode strings, with u""?
>
> It will work fine if the regular expression restricts itself to ASCII,
> and doesn't rely on any of the locale-specific character classes (such
> as \w). If it's beyond ASCII, or does use such escapes, you better make
> it a Unicode expression.

yes, you have to be careful when writing unicode-senstive regular expressions:
http://effbot.org/zone/unicode-objects.htm

"You can apply the same pattern to either 8-bit (encoded) or Unicode
strings. To create a regular expression pattern that uses Unicode
character classes for \w (and \s, and \b), use the "(?u)" flag prefix,
or the re.UNICODE flag:

pattern = re.compile("(?u)pattern")
pattern = re.compile("pattern", re.UNICODE)

"


>
> I'm not actually sure what precisely the semantics is when you match
> an expression compiled from a byte string against a Unicode string,
> or vice versa. I believe it operates on the internal representation,
> so \xf6 in a byte string expression matches with \u00f6 in a Unicode
> string; it won't try to convert one into the other.
>
> Regards,
> Martin
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


you want?

2007-11-27 Thread shoplife0001
Dear Friends

The Shoplifes.com belongs to Shoplife Limited Company who mainly sell
personal stylish electronic  consumable products such as Mobile
phones, Laptops, Digital Cameras, Digital Videos,Mp3,Mp4 and  bulk
products such as LCD TV, Motorcycles and so on. The specific item
please visit our company  website www.shoplifes.com.
As a larger wholesaler we pursue a goal which offer our customer
competitive price, highly  efficient delivery and perfect customer
service. In China we have own warehouse and stores, and  our clients
all over the world. The best foundation and long-term business
relation lead to our  company gain highly reputation. We expect to
please our honest customer through our product and  service.
If you have any comments about our products or service please contact
us we are appreciated and  will improve our service. Hope we can have
cooperate with great pleasure and establish long-term  business
relationship.

 Website: www.shoplifes.com
 E-mail: [EMAIL PROTECTED]
 MSN:[EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: the annoying, verbose self

2007-11-27 Thread Neil Cerutti
On 2007-11-26, Bruno Desthuilliers <[EMAIL PROTECTED]> wrote:
> Patrick Mullen a écrit :
> (snip)
>> Still an unnecessary lookup on tmp though :)  And it would be useless
>> to use it for one assignment, the idea is to eliminate all the typing
>> with this:
>> 
>> self.var1 = 5
>> self.var2 = "a value"
>> self.var3 = stuff
>> self.var4 = [2,54,7,7]
>> self.var5 = "dingaling"
>> self.var6 = 6.4
>> self.var7 = 1
>> self.var8 = False
>> self.var9 = True
>
> self.__dict__.update(dict(var1=5, var2="a value", var3 = stuff, ))
>
> Someone else ? Or are we done with this DeadHorse ?

I was really upset about having to type 'self' all the time,
until I learned that in ABC, one of Python's precursors, you had
to use '__anInstanceOf_This_TYPE_or_Maybe_A__SubClassOfItInstead_arg0_'.

-- 
Neil Cerutti
Sermon Outline: I. Delineate your fear II. Disown your fear III. Displace your
rear --Church Bulletin Blooper
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread hdante
On Nov 25, 5:31 pm, none <""atavory\"@(none)"> wrote:
> Aurélien Campéas wrote:
> > none a écrit :
> >> Hello,
>
> >> IIRC, I once saw an explanation how Python doesn't have
> >> "variables" in the sense that, say, C does, and instead has bindings
> >> from names to objects. Does anyone have a link?
>
> >> Thanks,
>
> >> Ami
>
> > That's something I've often heard and I don't get it. Somehow I don't
> > understand how C variables are not like python bindings (the differences
> > being that C variables are statically typed and completely disappear at
> > run-time; are these differences important enough to warrant such a shift
> > in terminology ? (yes there are some other differences, but then the
> > question is asked in a context of pedagogy, where the audience is
> > introduced to the basics))
>
> > I mean : aren't C variables also bindings from names to objects ? Or what ?
>
> Thanks.
>
> It's very possible you're right - I don't know. There seem to be some
> differences however. To name a few:
> 1. A C variable exists regardless of whether you're storing something in
> it. Not so for a python "variable" - so it's a bit really more like a
> name for something that exists independently.
> 2. C variables (or C++ objects) completely disappear when out of scope,
> but that's not necessarily true of Python objects.
> 3. C++ references have the semantics that if a = b, and you write a.c =
> 3, then b.c == 3. This is also true in Python. But then if a = b, and
> then you write b = 5, then a is still bound to the original value of b,
> so it's not exactly like a reference.
> 4. Etc.
>
> So on the one hand, you're obviously right, and maybe there's no room
> for a paradigm shift. OTOH, if the simplest explanation is "it's like a
> C/C++ variable/reference/pointer except for 1, 2, 3, 4,...", then maybe
> it is different. I just don't know, hence my question.

 (If I say something wrong, please raise your hand)
 For me, python variables are _exactly_ the same as reference counted
(or garbage collected) C++ pointers. It's just that the assignment
operator in python has distinctive semantics.

 for example: the following code in python

 a = 3
 print a + 2
 print len(a)
 b = a
 print id(a), id(b)
 print a + b
 a = 5

 is similar to the following pseudo-code in C++

 object *a, *b;

 // a = 3
 a = refnew(3);

 // print a + 2
 print(a->add(*refnew(2)));

 // print len(a)
 cout << len(*a) << '\n';

 // b = a
 b = refnew(a);

 // print id(a), id(b)
 print(*refnew(a, b))

 // print a + b
 print(a->add(*b));

 // a = 5
 refdel(a);
 a = refnew(5);

 So, we can see that, in python:
 - attributions operate in the pointer
 - method calls (that is, everything else, except id()) operate in the
object

 And that's it. I think that there is confusion because everything we
do with python variables are pointer dereferences, except for the
attribution, that instead of dereferencing and operating the object,
just changes the pointer. The scope is just a matter of using
automatic memory management or not.
-- 
http://mail.python.org/mailman/listinfo/python-list


read/write to java socket in python

2007-11-27 Thread madsornomads
Hi all,

I have a problem with reading from a Java server after I have written
to it - it just hangs. It works fine if I just write to the server and
not try to write. I have read the HOWTO on sockets - and it states
that there is a problem (something about flushing), but not what the
solutions is. Nor do google. Can somebody please help?

A few lines down you can see the example code that sums up the
problem. Just change the name of the Python HOST-variable.

Thanks
Mads


This is the client in Python:
#! /usr/bin/env python

import sys
from socket import *

PORT = 3122
HOST = 'app-5'
SUCCESS = 'Success'
FAILURE = 'Failure'

s = socket(AF_INET, SOCK_STREAM)
s.connect((HOST, PORT))
s.send("Hi Java Server");
print "Have written, waiting to recieve.."
print s.recv(1014)
s.close()

And this the server in Java:
import java.io.*;
import java.net.*;

public class Server{
public static void main(String args[]){

int port = 3122;
int backLog = 50;

ServerSocket ss = null;
try{

InetAddress localhost =
InetAddress.getLocalHost();
ss = new ServerSocket(port, backLog,
localhost);
while(true){
final Socket client = ss.accept();
new Thread(){
public void run(){
try{


InputStream is =
client.getInputStream();
BufferedReader buf =
new BufferedReader(new InputStreamReader(is));
print(buf.readLine());

PrintWriter out = new
PrintWriter(client.getOutputStream());
out.write("Hi Python
Client.");
out.flush();
client.close();
}catch(Exception e)
{print(e);}
}
}.start();
}
}catch(Exception e){print(e);}
}

private static void print(Object o){System.out.println(o);}
}

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: reading/writing files

2007-11-27 Thread BartlebyScrivener
On Nov 27, 7:14 am, sandipm <[EMAIL PROTECTED]> wrote:
> f1= open("file1.pdf", "rb")
> x = f1.read()
> open("file2.pdf", "wb").write(x)
>
> works...
>
> thanks
> sandip

You might also like:

http://pybrary.net/pyPdf/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read/write to java socket in python

2007-11-27 Thread Jean-Paul Calderone
On Tue, 27 Nov 2007 07:08:04 -0800 (PST), [EMAIL PROTECTED] wrote:
>Hi all,
>
>I have a problem with reading from a Java server after I have written
>to it - it just hangs. It works fine if I just write to the server and
>not try to write. I have read the HOWTO on sockets - and it states
>that there is a problem (something about flushing), but not what the
>solutions is. Nor do google. Can somebody please help?
>
>A few lines down you can see the example code that sums up the
>problem. Just change the name of the Python HOST-variable.
>
>Thanks
>Mads
>
>
> [snip]
>s.send("Hi Java Server");

Here, you sent some bytes (maybe - you didn't check the return value of
send, so it's possible nothing at all was sent) but you didn't send a new
line indicator of any sort.

> [snip]
>print(buf.readLine());

Here, you tried you read a line from the socket.  The peer never sent a
whole line though, so readLine will never succeed.

Jean-Paul
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read/write to java socket in python

2007-11-27 Thread hdante
On Nov 27, 1:08 pm, [EMAIL PROTECTED] wrote:
> Hi all,
>
> I have a problem with reading from a Java server after I have written
> to it - it just hangs. It works fine if I just write to the server and
> not try to write. I have read the HOWTO on sockets - and it states
> that there is a problem (something about flushing), but not what the
> solutions is. Nor do google. Can somebody please help?
>
> A few lines down you can see the example code that sums up the
> problem. Just change the name of the Python HOST-variable.
>
> Thanks
> Mads
>
> This is the client in Python:
> #! /usr/bin/env python
>
> import sys
> from socket import *
>
> PORT = 3122
> HOST = 'app-5'
> SUCCESS = 'Success'
> FAILURE = 'Failure'
>
> s = socket(AF_INET, SOCK_STREAM)
> s.connect((HOST, PORT))
> s.send("Hi Java Server");
> print "Have written, waiting to recieve.."
> print s.recv(1014)
> s.close()
>
> And this the server in Java:
> import java.io.*;
> import java.net.*;
>
> public class Server{
> public static void main(String args[]){
>
> int port = 3122;
> int backLog = 50;
>
> ServerSocket ss = null;
> try{
>
> InetAddress localhost =
> InetAddress.getLocalHost();
> ss = new ServerSocket(port, backLog,
> localhost);
> while(true){
> final Socket client = ss.accept();
> new Thread(){
> public void run(){
> try{
>
> InputStream is =
> client.getInputStream();
> BufferedReader buf =
> new BufferedReader(new InputStreamReader(is));
> print(buf.readLine());
>
> PrintWriter out = new
> PrintWriter(client.getOutputStream());
> out.write("Hi Python
> Client.");
> out.flush();
> client.close();
> }catch(Exception e)
> {print(e);}
> }
> }.start();
> }
> }catch(Exception e){print(e);}
> }
>
> private static void print(Object o){System.out.println(o);}
>
> }

 I don't know, but it's amazing to compare the python client with the
java server.
-- 
http://mail.python.org/mailman/listinfo/python-list


A bug in Python's regular expression engine?

2007-11-27 Thread Just Another Victim of the Ambient Morality
This won't compile for me:


regex = re.compile('(.*\\).*')


I get the error:


sre_constants.error: unbalanced parenthesis


I'm running Python 2.5 on WinXP.  I've tried this expression with 
another RE engine in another language and it works just fine which leads me 
to believe the problem is Python.  Can anyone confirm or deny this bug?
Thank you...



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Why are class methods not classmethods?

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 3:12 AM, Steven D'Aprano
<[EMAIL PROTECTED]> wrote:
> There's some subtle behaviour going on here that I don't really follow.
> Class methods apparently aren't classmethods.
>
>
> >>> class Parrot(object):
> ... def method(self, *args):
> ... return self, args
> ... @classmethod
> ... def cmethod(cls, *args):
> ... return cls, args
> ...
> >>> type(parrot.method)  # as expected
> 
> >>> type(parrot.cmethod)  # I don't expect this result
> 
> >>> type(classmethod(parrot.method))
> 
> >>>
> >>> parrot.cm = classmethod(parrot.method)
> >>> type(parrot.cm)  # I expect this
> 
> >>>
> >>> Parrot.CM = classmethod(parrot.method)
> >>> type(Parrot.CM)  # but not this
> 
>
>
> Can anyone explain why class methods bound to a class are instancemethods
> rather than classmethods?
>
>

They're instancemethods bound to the type instance, rather than to an
instance of the type:

>>> c = C()
>>> c.method
>
>>> c.cmethod
>
>>>

So rather than inventing special machinery for classmethods, Python
uses the existing instancemethod machinery and just changes the object
the instancemethod is bound to.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread Diez B. Roggisch
Just Another Victim of the Ambient Morality wrote:

> This won't compile for me:
> 
> 
> regex = re.compile('(.*\\).*')
> 
> 
> I get the error:
> 
> 
> sre_constants.error: unbalanced parenthesis
> 
> 
> I'm running Python 2.5 on WinXP.  I've tried this expression with
> another RE engine in another language and it works just fine which leads
> me
> to believe the problem is Python.  Can anyone confirm or deny this bug?

It pretty much says what the problem is - you escaped the closing
parenthesis, resulting in an invalid rex.

Either use raw-strings or put the proper amount of backslashes in your
string:

regex = re.compile(r'(.*\\).*') # raw string literal

regex = re.compile('(.*).*') # two consecutive \es, meaning an escaped
one

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Keyword passing to superclass written in C

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 6:47 AM, Sven Erik Knop <[EMAIL PROTECTED]> wrote:
> Hi
>
> I am getting slightly frustrated and wonder if you can help me.
>
> Consider a Python class Foo implemented in C++. I have declared an
> initialization method like this
>
> static int
> Foo_init(P4Adapter *self, PyObject *args, PyObject *kwds)
> {
>
> }
>
> and I am subclassing Foo in Python, which works fine in principle,
> except for passing keywords.
>
> Here is the subclass:
>
> class Bar(Foo):
>   def __init__(self, *args, **kwlist):
>  Foo.__init__(self, args, kwlist)
>

This passes the args tuple and the kw dict as 2 regular arguments. You
need to expand them in the second call if you want them to be passed
as args and kwargs -
Foo.__init__(self, *args, **kwargs)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread Neil Cerutti
On 2007-11-27, Just Another Victim of the Ambient Morality
<[EMAIL PROTECTED]> wrote:
> This won't compile for me:
>
>
> regex = re.compile('(.*\\).*')
>
> I get the error:
>  sre_constants.error: unbalanced parenthesis

Hint 1: Always assume that errors are in your own code. Blaming
library code and language implementations will get you nowhere
most of the time.

Hint 2: regular expressions and Python strings use the same
escape character.

Hint 3: Consult the Python documentation about raw strings, and
what they are meant for.

-- 
Neil Cerutti
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread Paul Hankin
On Nov 27, 3:48 pm, "Just Another Victim of the Ambient Morality"
<[EMAIL PROTECTED]> wrote:
> This won't compile for me:
>
> regex = re.compile('(.*\\).*')
>
> I get the error:
>
> sre_constants.error: unbalanced parenthesis
>
> I'm running Python 2.5 on WinXP.  I've tried this expression with
> another RE engine in another language and it works just fine which leads me
> to believe the problem is Python.  Can anyone confirm or deny this bug?

Your code is equivalent to:
regex = re.compile(r'(.*\).*')

Written like this, it's easier to see that you've started a regular
expression group with '(', but it's never closed since your closed
parenthesis is escaped (which causes it to match a literal ')' when
used). Hence the reported error (which isn't a bug).

Perhaps you meant this?
regex = re.compile(r'(.*\\).*')

This matches any number of characters followed by a backslash (group
1), and then any number of characters. If you're using this for path
splitting filenames under Windows, you should look at os.path.split
instead of writing your own.

HTH
--
Paul Hankin
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread Just Another Victim of the Ambient Morality

"Paul Hankin" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> On Nov 27, 3:48 pm, "Just Another Victim of the Ambient Morality"
> <[EMAIL PROTECTED]> wrote:
>> This won't compile for me:
>>
>> regex = re.compile('(.*\\).*')
>>
>> I get the error:
>>
>> sre_constants.error: unbalanced parenthesis
>>
>> I'm running Python 2.5 on WinXP.  I've tried this expression with
>> another RE engine in another language and it works just fine which leads 
>> me
>> to believe the problem is Python.  Can anyone confirm or deny this bug?
>
> Your code is equivalent to:
> regex = re.compile(r'(.*\).*')
>
> Written like this, it's easier to see that you've started a regular
> expression group with '(', but it's never closed since your closed
> parenthesis is escaped (which causes it to match a literal ')' when
> used). Hence the reported error (which isn't a bug).
>
> Perhaps you meant this?
> regex = re.compile(r'(.*\\).*')
>
> This matches any number of characters followed by a backslash (group
> 1), and then any number of characters. If you're using this for path
> splitting filenames under Windows, you should look at os.path.split
> instead of writing your own.

Indeed, I did end up using os.path functions, instead.
I think I see what's going on.  Backslash has special meaning in both 
the regular expression and Python string declarations.  So, my version 
should have been something like this:


regex = re.compile('(.*).*')


That is funny.  Thank you for your help...
Just for clarification, what does the "r" in your code do?



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: It works! Was: Installing Python 3000

2007-11-27 Thread jim-on-linux
On Tuesday 27 November 2007 07:20, André wrote:
> On Nov 26, 9:59 pm, "André" <[EMAIL PROTECTED]> wrote:
> > While I made some progress in trying to install Py3k from source
> > (for the first time), it has failed...
> >
> > Here are the steps I went through (not necessarily in that order
> > - except for those that matter).
> >
> > 1. After installing Leopard, install Xcode tools from the dvd -
> > even if you had done so with a previous version (they need to be
> > updated - trust me :-)
> >
> > 2. Download Python 3.0a1
> >
> > 3.  Unpack the archive.
> >
> > 4. Go to  /usr/local and make a directory "sudo mkdir py3k"  
> > (This is probably not needed, but that's what I did).
> >
> > 5. From the directory where the Python 3.0a1 was unpacked run
> > ./configure --prefix=/usr/local/py3k
> >
> > 6. run "make"
> >
> > This last step failed with the following error message:
> >
> > gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp
> > -mno-fused- madd -DNDEBUG -g -O3 -Wall -Wstrict-prototypes  -I.
> > -I./Include   - DPy_BUILD_CORE  -c ./Modules/posixmodule.c -o
> > Modules/posixmodule.o ./Modules/posixmodule.c: In function
> > 'posix_setpgrp':
> > ./Modules/posixmodule.c:3769: error: too few arguments to
> > function 'setpgrp'
> > make: *** [Modules/posixmodule.o] Error 1
> >
> > Any suggestions?
> >
> > André
>
> Following Martin v Löwis's suggestion, I looked at
>
>  http://bugs.python.org/issue1358
>
> and added the line
> #define   SETPGRP_HAVE_ARG
> by hand to pyconfig.h  (after it was created by configure).  Then
> 6. run  "make"
> 7. run "make test"  (one test failed; this step likely unnecessary)
> 8. sudo make altinstall
> 9. sudo ln /usr/local/bin/py3k/python3.0 /usr/bin/python3.0
>
> 10. type "python"
> 11. print("Hello world!")
> 12. Be happy!
>
> André, hoping this report might help some other newbie.



Bug fix excluded,

After unpacking the compressed version of Python, look for a file 
named "README".

Open "README" and look for Installing.  Make install and Make 
altinstall is explained.

I don't like to read instructions but in the long run, it saves time.

jim-on-linux
http://www.inqvista.com






















-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Should proxy objects lie about their class name?

2007-11-27 Thread Fuzzyman
On Nov 26, 11:56 pm, Carl Banks <[EMAIL PROTECTED]> wrote:
> On Nov 20, 3:50 pm, [EMAIL PROTECTED] (John J. Lee) wrote:
>
> > Not much to add to the subject line.  I mean something like this:
>
> > ProxyClass.__name__ = ProxiedClass.__name__
>
> > I've been told that this is common practice.  Is it?  Would this
> > surprise you if you ran into it in a debugging session?
>
> > One very real advantage that I can see is avoiding breaking existing
> > doctests.
>
> > Thanks in advance for your views
>
> Python 3.0 has a proposal, accepted I believe, to allow classes to
> control the behavior of issubclass and ininstance, so there appears to
> be tacit support from the language for mimicking the proxied classes
> in such ways.
>
> I guess for me it would be a judgment call on based how tight I wanted
> the proxy class to be--is it being the class, or is it just standing
> in?


In Python 2 you can already lie to 'isinstance' and 'issubclass' by
catching calls to the '__class__' and '__bases__' attribute. I'm not
sure yet whether this is a good thing however. :-)

I have a proxy class I want to extend and am facing similar questions.

Michael
http://www.manning.com/foord

>
> Carl Banks

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Aaron Watters
On Nov 27, 10:06 am, hdante <[EMAIL PROTECTED]> wrote:
> On Nov 25, 5:31 pm, none <""atavory\"@(none)"> wrote:

>  And that's it. I think that there is confusion because everything we
> do with python variables are pointer dereferences, except for the
> attribution, that instead of dereferencing and operating the object,
> just changes the pointer. The scope is just a matter of using
> automatic memory management or not.

I hope the participants in this thread realize
that this sort of discussion will cause
any programming newbie to immediately melt into the
floor.

I would try to avoid talking
in generalities about python variables versus C or
lisp or whatever, unless I was teaching an upper division
college programming languages survey class.

Instead, I'd fire up the interactive interpreter and
illustrate how things work via examples, avoiding the
weird cases at all costs.  If they ask about the
relationship to C or java or whatever
I would encourage them to not worry about it,
and only go deeper if pressed.

BTW, at the moment I'm "facilitating" an online
C# class for fun and a very little profit in my
spare time.  I'm becoming quite convinced that
especially the beginning programmers would have far
less difficulty with Python, largely because
there is less syntactic noise to confuse them and
because they can fiddle around with everything
up to and including advanced concepts using simple
examples at the interactive prompt.

But if you talk like the above to them, they
will run for the hills... (no offense intended).

  -- Aaron Watters

===
http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=evil+fish

-- 
http://mail.python.org/mailman/listinfo/python-list


count pages in a pdf

2007-11-27 Thread belred
is it possible to parse a pdf file in python?  for starters, i would
like to count the number of pages in a pdf file.  i see there is a
project called ReportLab, but it seems to be a pdf generator... i
can't tell if i would be able to parse a pdf file programmically.

thanks for any recommendations.

bryan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: count pages in a pdf

2007-11-27 Thread Tim Golden
[EMAIL PROTECTED] wrote:
> is it possible to parse a pdf file in python?  for starters, i would
> like to count the number of pages in a pdf file.  i see there is a
> project called ReportLab, but it seems to be a pdf generator... i
> can't tell if i would be able to parse a pdf file programmically.

Well the simple expedient of putting "python count pages pdf" into
Google turned up the following link:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496837

and no few others. Might be worth a look?

TJG
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 10:25 AM, Aaron Watters <[EMAIL PROTECTED]> wrote:
> On Nov 27, 10:06 am, hdante <[EMAIL PROTECTED]> wrote:
> > On Nov 25, 5:31 pm, none <""atavory\"@(none)"> wrote:
> 
> >  And that's it. I think that there is confusion because everything we
> > do with python variables are pointer dereferences, except for the
> > attribution, that instead of dereferencing and operating the object,
> > just changes the pointer. The scope is just a matter of using
> > automatic memory management or not.
>
> I hope the participants in this thread realize
> that this sort of discussion will cause
> any programming newbie to immediately melt into the
> floor.
>

Well, this (part of) the conversation was specifically about using the
knowledge that a C programmer already has and how best to teach them
how Python "variables" work in that context. I think that even the
people who disagree with my position would agree that, if your goal
were to teach a new student about Python variables, teaching them C
pointers first would be a really terrible way to go about it.

> I would try to avoid talking
> in generalities about python variables versus C or
> lisp or whatever, unless I was teaching an upper division
> college programming languages survey class.
>

I disagree, although it's not really on topic for the thread. There's
no reason why low level details need to be relegated to "upper
division" college classes. It shouldn't be in Programming Languages
101, but it's something that I would expect a first year student who's
planning to pursue a programming career or a comp sci degree to be
exposed to. It's not out of place even in high school - that's where I
first learned C.

> Instead, I'd fire up the interactive interpreter and
> illustrate how things work via examples, avoiding the
> weird cases at all costs.  If they ask about the
> relationship to C or java or whatever
> I would encourage them to not worry about it,
> and only go deeper if pressed.
>
> BTW, at the moment I'm "facilitating" an online
> C# class for fun and a very little profit in my
> spare time.  I'm becoming quite convinced that
> especially the beginning programmers would have far
> less difficulty with Python, largely because
> there is less syntactic noise to confuse them and
> because they can fiddle around with everything
> up to and including advanced concepts using simple
> examples at the interactive prompt.
>

The idea of boxes with names is generally far more intuitive to
absolute beginners than pointers, if only because you have to
understand more of the underlying implementation to make use of
pointers. There's other (very good) reasons to use Python as a first
language for beginners, too.


> But if you talk like the above to them, they
> will run for the hills... (no offense intended).
>
>   -- Aaron Watters
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread MonkeeSage
On Nov 27, 10:19 am, "Just Another Victim of the Ambient Morality"
<[EMAIL PROTECTED]> wrote:


> That is funny.  Thank you for your help...
> Just for clarification, what does the "r" in your code do?

It means a "raw" string (as you know ruby, think of it like %w{}):

This page explains about string literal prefixes (see especially the
end-notes):

http://docs.python.org/ref/strings.html

HTH,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Should proxy objects lie about their class name?

2007-11-27 Thread Steven Bethard
Fuzzyman wrote:
> On Nov 26, 11:56 pm, Carl Banks <[EMAIL PROTECTED]> wrote:
>> On Nov 20, 3:50 pm, [EMAIL PROTECTED] (John J. Lee) wrote:
>>> Not much to add to the subject line.  I mean something like this:
>>> ProxyClass.__name__ = ProxiedClass.__name__
>>> I've been told that this is common practice.  Is it?  Would this
>>> surprise you if you ran into it in a debugging session?
>>> One very real advantage that I can see is avoiding breaking existing
>>> doctests.
>>
>> Python 3.0 has a proposal, accepted I believe, to allow classes to
>> control the behavior of issubclass and ininstance, so there appears to
>> be tacit support from the language for mimicking the proxied classes
>> in such ways.
> 
> In Python 2 you can already lie to 'isinstance' and 'issubclass' by
> catching calls to the '__class__' and '__bases__' attribute. I'm not
> sure yet whether this is a good thing however. :-)

The Python 3 machinery allows *other* classes to lie about whether or 
not your object is an instance or subclass of them, without requiring 
them to set your __class__ or __bases__.  So, for example, you can 
create a class ``Integer`` and make ``issubclass(int, Integer)`` true. 
For more information see:

 http://www.python.org/dev/peps/pep-3119/

STeVe
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: A bug in Python's regular expression engine?

2007-11-27 Thread MonkeeSage
On Nov 27, 10:52 am, MonkeeSage <[EMAIL PROTECTED]> wrote:
> On Nov 27, 10:19 am, "Just Another Victim of the Ambient Morality"
>
> <[EMAIL PROTECTED]> wrote:
> > That is funny.  Thank you for your help...
> > Just for clarification, what does the "r" in your code do?
>
> It means a "raw" string (as you know ruby, think of it like %w{}):
>
> This page explains about string literal prefixes (see especially the
> end-notes):
>
> http://docs.python.org/ref/strings.html
>
> HTH,
> Jordan

Arg! %w{} should have said %q{}
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Keyword passing to superclass written in C

2007-11-27 Thread Sven Erik Knop

Duh

of course. Not sure what I had done in Python/Python.

Now it works. Thanks a lot.

Sven Erik

Chris Mellon wrote:

On Nov 27, 2007 6:47 AM, Sven Erik Knop <[EMAIL PROTECTED]> wrote:
  

Hi

I am getting slightly frustrated and wonder if you can help me.

Consider a Python class Foo implemented in C++. I have declared an
initialization method like this

static int
Foo_init(P4Adapter *self, PyObject *args, PyObject *kwds)
{

}

and I am subclassing Foo in Python, which works fine in principle,
except for passing keywords.

Here is the subclass:

class Bar(Foo):
  def __init__(self, *args, **kwlist):
 Foo.__init__(self, args, kwlist)




This passes the args tuple and the kw dict as 2 regular arguments. You
need to expand them in the second call if you want them to be passed
as args and kwargs -
Foo.__init__(self, *args, **kwargs)
  





This email and any files transmitted with it are confidential and intended 
solely for the use of the individual or entity to whom they are addressed. If 
you have received this email in error please notify the system manager. Please 
note that any views or opinions presented in this email are solely those of the 
author and do not necessarily represent those of Perforce Software. Finally, 
the recipient should check this email and any attachments for the presence of 
viruses. Perforce Software accepts no liability for any damage caused by any 
virus transmitted by this email.


Perforce Software UK Ltd is registered in England and Wales as company no. 
3816019 at the following address: West Forest Gate, Wellington Road, Wokingham,

RG40 2AQ, UK

-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Should proxy objects lie about their class name?

2007-11-27 Thread Robin Becker
Steven Bethard wrote:
...
> The Python 3 machinery allows *other* classes to lie about whether or 
> not your object is an instance or subclass of them, without requiring 
> them to set your __class__ or __bases__.  So, for example, you can 
> create a class ``Integer`` and make ``issubclass(int, Integer)`` true. 
> For more information see:
> 
>  http://www.python.org/dev/peps/pep-3119/
> 
> STeVe

That will allow me to magically create instances which claim to be instances of 
working_class even though they're actually instances of reactionary_class thus 
turning all my modules into instances of class_war :)
-- 
Robin Becker

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How can I create customized classes that have similar properties as 'str'?

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 7:16 AM, Licheng Fang <[EMAIL PROTECTED]> wrote:
> On Nov 27, 10:45 am, Steven D'Aprano
>
> <[EMAIL PROTECTED]> wrote:
> > On Sun, 25 Nov 2007 02:42:36 -0800, Licheng Fang wrote:
> > > I mentioned trigram counting as an illustrative case. In fact, you'll
> > > often need to define patterns more complex than that, and tens of
> > > megabytes of text may generate millions of them, and I've observed they
> > > quickly  ate up the 8G memory of a workstation in a few minutes.
> > > Manipulating these patterns can be tricky, you can easily waste a lot of
> > > memory without taking extra care. I just thought if I define my pattern
> > > class with this 'atom' property, coding efforts could be easier later.
> >
> > I'm just not getting the same results as you when I try this. I'm finding
> > that with no extra effort at all, it just works.
> >
> > The size of your corpus is not important. Neither is the complexity of
> > how you generate the patterns. What's important is the number of patterns
> > you produce, and "millions" isn't that huge a number, even without
> > interning the strings.
> >
> > Obviously I'm not running your code, but I can build a dict with millions
> > of patterns, from hundreds of megabytes of text, on a PC with just 1GB of
> > memory and not run into any serious problems.
> >
> > I've just processed roughly 240MB of random emails, generating n-grams up
> > to length 5. The emails include binary attachments and HTML etc., so I'm
> > getting lots of patterns that don't normally exist in natural languages
> > (e.g. 71 occurrences of 'qqq', and 5 of ''). As I said, my PC has
> > only 1GB, and that's being shared with about a dozen other apps (including
> > such memory hogs as Firefox).
> >
> > Results? 64939962 patterns found, of which 17031467 are unique. There's
> > paging, yes, and my PC runs a little slow when I try to switch from one
> > running application to another, but nothing unusable. Opening a dozen
> > YouTube videos at once impacts performance worse.
> >
> > I can't think what you're doing to use up 8GB of RAM for merely
> > "millions" of strings, even if you are keeping two, three, ten redundant
> > copies. Assuming an average length of twenty bytes per pattern (you said
> > trigrams, but I'd rather over-estimate than under), and even assuming
> > that only half the 8GB are available to Python, you should be able to
> > store something of the order of one hundred million patterns easily:
>
> My task is identifying sequences of tokens (phrases) that are possible
> tranlations of each other from a bilingual corpus. I need to check all
> the subsequences of a sentence to get the possible phrase pairs. This
> makes the problem different from n-gram counting in that the number of
> possible phrases doesn't grow linearly with n, but approximately with
> n^2. (n being the sentence length.) My first version of the program
> consumes almost twice as much memory as the current one because I
> discovered in doing different statistics I was regenerating the
> patterns, and the counting dictionaries ended up with duplicated
> pattern keys (a == b, yet a is not b). Wouldn't it be convenient if I
> can restrict the pattern class to not generate identical instances? So
> I can avoid such subtle but significant bugs.
>

Implement __hash__ and __eq__ on your pattern class. If the same
pattern compares equal and hashes the same then it will be a "matching
key" as far as the dict is concerned and will only be stored once.
This is probably cheaper than explicit interning anyway (you don't
need to search an intern table).


> > The only thing I can think of that might explain why you're using so much
> > memory is if you are generating *all* the patterns up front, say in a
> > list, before adding them to the dict:
> >
> > # Generate one massive list of patterns containing many duplicates
> > patterns = make_patterns(text)
> > # returns a massive list like ['fre', 'req', 'equ', 'que' ...]
> > d = {}
> > for pattern in patterns:
> > d[pattern] = d.get(pattern, 0) + 1
> >
>
> No, I wasn't doing that.
> BTW, do you think the pattern counting code can avoid hashing the
> pattern twice? Is there a way to do that when the dictionary values
> are of a primitive type?
>

Hashing isn't really an expensive operation. On strings it's even
cached on the object. If you implement your own __hash__ method you
can do the same, but I wouldn't bother unless you benchmark it and
discover that hashing is a bottleneck.
-- 
http://mail.python.org/mailman/listinfo/python-list


os.path.islink documentation error?

2007-11-27 Thread Giampaolo Rodola'
os.path.islink documentation says:

"Return True if path refers to a directory entry that is a symbolic
link. Always False if symbolic links are not supported."

It's not clear to me why it is mentioned the DIRECTORY term.
Shouldn't os.path.islink be used to just check if the *path* passed as
argument is a symlink?
In such case I would change it in:

"Return True if path refers to a symbolic link"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: count pages in a pdf

2007-11-27 Thread Andreas Lobinger
Tim Golden wrote:
> [EMAIL PROTECTED] wrote:
> 
>> is it possible to parse a pdf file in python?  for starters, i would
>> like to count the number of pages in a pdf file.  i see there is a
>> project called ReportLab, but it seems to be a pdf generator... i
>> can't tell if i would be able to parse a pdf file programmically.

http://groups.google.de/group/comp.lang.python/msg/6f304970b4ff40ce
and following.

> Well the simple expedient of putting "python count pages pdf" into
> Google turned up the following link:
> 
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496837

h. There is a non-vanishing possibility that this pattern-
matching can give you false positives -> not reliable.

Wishing a happy day,
LOBI
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: count pages in a pdf

2007-11-27 Thread Jon Ribbens
On 2007-11-27, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> is it possible to parse a pdf file in python?  for starters, i would
> like to count the number of pages in a pdf file.  i see there is a
> project called ReportLab, but it seems to be a pdf generator... i
> can't tell if i would be able to parse a pdf file programmically.

http://pybrary.net/pyPdf/
-- 
http://mail.python.org/mailman/listinfo/python-list


Unsupported operator for Decimal: + (or -)

2007-11-27 Thread Todd O'Bryan
This seems to have come up earlier...

http://mail.python.org/pipermail/python-list/2007-July/451187.html

but no resolution.

We're seeing the same thing. We're using Django's DecimalField type
and when we try to add or subtract values--which should be
decimal.Decimal objects--we occasionally get an error about the
operator not being supported. It doesn't always happen and we can't
seem to reproduce it when we try to.

Has anybody else seen this or is it just the original poster and me?

Todd
-- 
http://mail.python.org/mailman/listinfo/python-list


Looking for a Python tutor

2007-11-27 Thread hong2221
I'm looking for a Python programmar that is willing write simple
functions, prices can be talked over. Contact me asap.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.path.islink documentation error?

2007-11-27 Thread Diez B. Roggisch
Giampaolo Rodola' schrieb:
> os.path.islink documentation says:
> 
> "Return True if path refers to a directory entry that is a symbolic
> link. Always False if symbolic links are not supported."
> 
> It's not clear to me why it is mentioned the DIRECTORY term.
> Shouldn't os.path.islink be used to just check if the *path* passed as
> argument is a symlink?
> In such case I would change it in:
> 
> "Return True if path refers to a symbolic link"


But it does say so. It talks about entries in a directory being symbolic 
links. Not the entries being symbolic links to directories.

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Unsupported operator for Decimal: + (or -)

2007-11-27 Thread Diez B. Roggisch
Todd O'Bryan schrieb:
> This seems to have come up earlier...
> 
> http://mail.python.org/pipermail/python-list/2007-July/451187.html
> 
> but no resolution.
> 
> We're seeing the same thing. We're using Django's DecimalField type
> and when we try to add or subtract values--which should be
> decimal.Decimal objects--we occasionally get an error about the
> operator not being supported. It doesn't always happen and we can't
> seem to reproduce it when we try to.

Try putting an try/except clause around the problem that drops into the 
debugger:


try:
   foo = a - b
except TypeError:
   import pdb; pdb.set_trace()

Then you can see what a & b _really_ are.

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Donn Cave
In article 
<[EMAIL PROTECTED]>,
 Aaron Watters <[EMAIL PROTECTED]> wrote:


> I would try to avoid talking
> in generalities about python variables versus C or
> lisp or whatever, unless I was teaching an upper division
> college programming languages survey class.
> 
> Instead, I'd fire up the interactive interpreter and
> illustrate how things work via examples, avoiding the
> weird cases at all costs.  If they ask about the
> relationship to C or java or whatever
> I would encourage them to not worry about it,
> and only go deeper if pressed.

I don't know if that explains enough on its own - I suppose
it depends on how ambitious your programmer is.  But the
key point is that by approaching it this way, you're teaching
them how to teach themselves as required:  write an example,
see what happens.  A programmer who does this by reflex and
remains confused about how the language works is, in my opinion,
not going to get very far anyway.  (This may have changed
somewhat in recent years as more esoteric junk has has been
stuffed into the language, I haven't really been keeping track.)
In contrast, I suspect that someone who learns Python concepts
in terms of explanations like `boxes' or `pointers' or whatnot
is at some disadvantage while that lasts, like translating a
foreign language to your own instead of attaching meaning
directly.

   Donn Cave, [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Unsupported operator for Decimal: + (or -)

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 11:45 AM, Todd O'Bryan <[EMAIL PROTECTED]> wrote:
> This seems to have come up earlier...
>
> http://mail.python.org/pipermail/python-list/2007-July/451187.html
>
> but no resolution.
>
> We're seeing the same thing. We're using Django's DecimalField type
> and when we try to add or subtract values--which should be
> decimal.Decimal objects--we occasionally get an error about the
> operator not being supported. It doesn't always happen and we can't
> seem to reproduce it when we try to.
>
> Has anybody else seen this or is it just the original poster and me?
>

If __sub__ (or __add__, or whatever) returns NotImplemented that can
raise this error. This should never happen between two Decimal
instances, and the traceback should show you which two classes were
used. The most likely cause is that something is getting passed into
the comparison that's not a Decimal, an int, or a long.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread hdante
On Nov 26, 7:49 am, Hrvoje Niksic <[EMAIL PROTECTED]> wrote:
> greg <[EMAIL PROTECTED]> writes:
> > none wrote:
> >> IIRC, I once saw an explanation how Python doesn't have
> >> "variables" in the sense that, say, C does, and instead has bindings
> >> from names to objects.
>
> > If you're talking to C programmers, just tell them that Python
> > variables always contain pointers. That should give them the right
> > mental model to build on.
>
> That is a convenient shortcut when it works, but in my experience it
> tends to confuse the issue.  The reason is that one of the main uses
> of pointers in C is implementing pass-by-reference.  A C programmer
> told that Python variables internally hold pointers expects this code:
>
> def func(a):
>   a = 10
> ...
> func(x)
>
> to change the value of x.

 This shouldn't confuse a C programmer if he understands that
assignment changes the pointer address, instead of copying the value:

 void func(int *a) {
   int *tmp = malloc(sizeof(int));
   *tmp = 10;
   a = tmp;
   free(tmp);
 }

 int *x = some_address;
 func(x);
 assert(x == some_address);

 The confusion is that assignment does not copy the object. Python
variables are pointers and that's it.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read/write to java socket in python

2007-11-27 Thread madsornomads
On Nov 27, 4:21 pm, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote:
> On Tue, 27 Nov 2007 07:08:04 -0800 (PST), [EMAIL PROTECTED] wrote:
> >Hi all,
>
> >I have a problem with reading from a Java server after I have written
> >to it - it just hangs. It works fine if I just write to the server and
> >not try to write. I have read the HOWTO on sockets - and it states
> >that there is a problem (something about flushing), but not what the
> >solutions is. Nor do google. Can somebody please help?
>
> >A few lines down you can see the example code that sums up the
> >problem. Just change the name of the Python HOST-variable.
>
> >Thanks
> >Mads
>
> > [snip]
> >s.send("Hi Java Server");
>
> Here, you sent some bytes (maybe - you didn't check the return value of
> send, so it's possible nothing at all was sent) but you didn't send a new
> line indicator of any sort.
>
> > [snip]
> >print(buf.readLine());
>
> Here, you tried you read a line from the socket.  The peer never sent a
> whole line though, so readLine will never succeed.
>
> Jean-Paul

Thanks, sometimes the obvious causes the biggest problems ;) Thanks a
lot!

/Mads
-- 
http://mail.python.org/mailman/listinfo/python-list


Pulling data from a .asps site

2007-11-27 Thread hall . jeff
There's a government website which shows public data for banks. We'd
like to pull the data down programmatically but the data is "hidden"
behind .aspx...

Is there anyway in Python to hook in directly to a browser (firefox or
IE) to do the following...

1) Fill the search criteria
2) Press the "Search" button
3) Press another button (the CSV button) on the resulting page
4) Then grab the data out of the notepad file that pops up

If this is a wild good chase, let me know... (or if there's a better
way besides Python... I may have to explore writing a firefox plug-in
or something)...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read/write to java socket in python

2007-11-27 Thread James Matthews
It's a socket interface it should be universal!

On Nov 27, 2007 4:08 PM, <[EMAIL PROTECTED]> wrote:

> Hi all,
>
> I have a problem with reading from a Java server after I have written
> to it - it just hangs. It works fine if I just write to the server and
> not try to write. I have read the HOWTO on sockets - and it states
> that there is a problem (something about flushing), but not what the
> solutions is. Nor do google. Can somebody please help?
>
> A few lines down you can see the example code that sums up the
> problem. Just change the name of the Python HOST-variable.
>
> Thanks
> Mads
>
>
> This is the client in Python:
> #! /usr/bin/env python
>
> import sys
> from socket import *
>
> PORT = 3122
> HOST = 'app-5'
> SUCCESS = 'Success'
> FAILURE = 'Failure'
>
> s = socket(AF_INET, SOCK_STREAM)
> s.connect((HOST, PORT))
> s.send("Hi Java Server");
> print "Have written, waiting to recieve.."
> print s.recv(1014)
> s.close()
>
> And this the server in Java:
> import java.io.*;
> import java.net.*;
>
> public class Server{
>public static void main(String args[]){
>
>int port = 3122;
>int backLog = 50;
>
>ServerSocket ss = null;
>try{
>
>InetAddress localhost =
> InetAddress.getLocalHost();
>ss = new ServerSocket(port, backLog,
> localhost);
>while(true){
>final Socket client = ss.accept();
>new Thread(){
>public void run(){
>try{
>
>
>InputStream is =
> client.getInputStream();
>BufferedReader buf =
> new BufferedReader(new InputStreamReader(is));
>print(buf.readLine());
>
>PrintWriter out = new
> PrintWriter(client.getOutputStream());
>out.write("Hi Python
> Client.");
>out.flush();
>client.close();
>}catch(Exception e)
> {print(e);}
>}
>}.start();
>}
>}catch(Exception e){print(e);}
>}
>
>private static void print(Object o){System.out.println(o);}
> }
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
http://search.goldwatches.com/?Search=Movado+Watches
http://www.goldwatches.com/coupons
http://www.jewelerslounge.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Fwd: Pulling data from a .asps site

2007-11-27 Thread Todd O'Bryan
-- Forwarded message --
From: Todd O'Bryan <[EMAIL PROTECTED]>
Date: Nov 27, 2007 1:48 PM
Subject: Re: Pulling data from a .asps site
To: [EMAIL PROTECTED]


Check out Selenium Remote Control! It's very easy to use.


On Nov 27, 2007 1:37 PM,  <[EMAIL PROTECTED]> wrote:
> There's a government website which shows public data for banks. We'd
> like to pull the data down programmatically but the data is "hidden"
> behind .aspx...
>
> Is there anyway in Python to hook in directly to a browser (firefox or
> IE) to do the following...
>
> 1) Fill the search criteria
> 2) Press the "Search" button
> 3) Press another button (the CSV button) on the resulting page
> 4) Then grab the data out of the notepad file that pops up
>
> If this is a wild good chase, let me know... (or if there's a better
> way besides Python... I may have to explore writing a firefox plug-in
> or something)...
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Robin Kåveland Hansen
Aurélien Campéas <[EMAIL PROTECTED]> wrote (Sun, 25 Nov
2007 20:09:59 +0100):

> none a écrit :
> 
> That's something I've often heard and I don't get it. Somehow I don't 
> understand how C variables are not like python bindings (the differences 
> being that C variables are statically typed and completely disappear at 
> run-time; are these differences important enough to warrant such a shift 
> in terminology ? (yes there are some other differences, but then the 
> question is asked in a context of pedagogy, where the audience is 
> introduced to the basics))
> 
> I mean : aren't C variables also bindings from names to objects ? Or what ?

This is actually something that comes up a lot on #python on freenode irc.
Usually we can explain it by calling things nametags that get bound to
objects and such, but sometimes it help to show people globals() and
locals() - that you can really just keep track of names with a dictionary
(And this is indeed, as I understand it, what's actually being done).
There's nothing that stops several names from being bound to the same
object, but names need to be unique. It's quite a good illustration, I
think. It certainly helped me. Oh, and there's the thing about people
calling them references, which isn't really accurate in the C++/Java or
pointer way. 

Considering a C++/Java reference can actually change what it, in that if
you send a reference to a variable into a function/method, you can risk
that your own "copy" will be "pointing" (For a lack of better words) to a
different object. This won't happen in Python. Mutable objects make it
seem very similar though.

-- 
regards, 
Robin
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: spawning a process with subprocess

2007-11-27 Thread bhunter
Wow, everyone.  Great comments.  Thanks so much!

A few points on all of the above, just so I don't look too stupid:

* The problem with the testcase, I believe, was the size of the file
and the output pipe filling up, as Nick suggested.  When run on a
smaller file, with Jordan's suggestions, it works fine.  With a larger
file, it's necessary to do as Nick says.  If the size of the file is
unknown, its best to use this case as the default.  This seems
unfortunate to me, because it's quite a bit of code to do something
that should be fairly straightforward--at least, that's what I think.

* Using poll() and checking for None and not non-zero:  Yes, I had
both of those originally in my testcase, but when I re-wrote and re-
wrote it after it initially didn't work those initial concepts got
dropped.  Thanks for reminding me.

* Yes, I should use proc instead of thread as a variable.  Good point,
Ove.  But your solution works on small files but chokes on larger
files, too.

Thanks again...and just to reiterate, I really think this could be
more straightforward for the rest of us if Popen could do all of this
on its own.

Brian



On Nov 27, 5:13 am, Ove Svensson <[EMAIL PROTECTED]> wrote:
> bhunter <[EMAIL PROTECTED]> writes:
> > Hi,
>
> > I've used subprocess with 2.4 several times to execute a process, wait
> > for it to finish, and then look at its output.  Now I want to spawn
> > the process separately, later check to see if it's finished, and if it
> > is look at its output.  I may want to send a signal at some point to
> > kill the process.  This seems straightforward, but it doesn't seem to
> > be working.
>
> > Here's my test case:
>
> > import subprocess, time
>
> > cmd = "cat somefile"
> > thread = subprocess.Popen(args=cmd.split(), shell=True,
> > stdout=subprocess.PIPE, stdin=subprocess.PIPE,
> > stderr=subprocess.STDOUT, close_fds=True)
>
> > while(1):
> >   time.sleep(1)
> >   if(thread.returncode):
> >  break
> >   else:
> >  print thread.returncode
>
> > print "returncode = ", thread.returncode
> > for line in thread.stdout:
> >print "stdout:\t",line
>
> > This will just print the returncode of None forever until I Ctrl-C it.
>
> > Of course, the program works fine if I call thread.communicate(), but
> > since this waits for the process to finish, that's not what I want.
>
> > Any help would be appreciated.
>
> Reading documentation for subprocess, it mentions that
>
> On UNIX, with shell=False (default): In this case, the Popen class
> uses os.execvp() to execute the child program.  args should normally
> be a sequence.  A string will be treated as a sequence with the string
> as the only item (the program to execute).
>
> On UNIX, with shell=True: If args is a string, it specifies the
> command string to execute through the shell.  If args is a sequence,
> the first item specifies the command string, and any additional items
> will be treated as additional shell arguments.
>
> Since you have specified shell = True, and since you pass a sequence as
> args, you will efficiently invoke the cat process through the shell and
> then pass somefile as an extra argument to she shell (not the cat command)
> That is probably not what you intended.
>
> This can be solved by either
> - Not splitting the cmd, in which case you will pass the whole cmd
>   string to the shell for execution
> - Or setting shell to False. This is what I would have done, since
>   I can't see any reason for going via the shell. Please note that
>   if setting shell to False, you must then split the cmd.
>
> Please also note that your test for the returncode might not work
> since a normal returncode is 0. Your code will only detect non-0
> values.
>
> Also, it is good practice to call wait() on the subprocess in order
> to avoid zombie-processes.
>
> Finally, I find it somewhat misleading to use the name thread for
> the variable used to represent a sub-process. Threads and processes
> are not exactly the same
>
> Hence, the following code should works as expected
>
> cmd = "cat somefile"
> proc = subprocess.Popen(
> args  = cmd.split(),
> shell = False,
> stdin = None,
> stdout= subprocess.PIPE,
> stderr= subprocess.STDOUT,
> close_fds = True)
>
> while True:
> rc = proc.poll()
> if rc != None: break
> print rc
> time.sleep(1)
>
> lno = 1
> for lin in proc.stdout:
> print '%i: %s' % (lno,lin.rstrip('\n'))
> lno += 1
>
> rc = proc.wait()
> print "rc = %i" % rc
>
> /Ove

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Brian Blais

On Nov 27, 2007, at Nov 27:1:21 PM, hdante wrote:


 This shouldn't confuse a C programmer if he understands that
assignment changes the pointer address, instead of copying the value:



Coming from C, I found the pointer analogy to work pretty well, but  
in my head I always felt that integers (or other numbers) were  
somehow different than lists, dicts and other classes.  I think I  
found it a little weird to think that --> 1 <-- is an object.  "You  
can't have all the integers as individual objects!", is what I  
thought...then I saw that is exactly how it is implemented.  So when  
you say:


a=1

it is *really* a pointer to a 1-object, and that

b=1  points to the same 1-object.

In [4]:id(a)
Out[4]:25180552

In [5]:b=1

In [6]:id(b)
Out[6]:25180552


bb


--
Brian Blais
[EMAIL PROTECTED]
http://web.bryant.edu/~bblais



-- 
http://mail.python.org/mailman/listinfo/python-list

Re: How to Teach Python "Variables"

2007-11-27 Thread Aaron Watters
On Nov 27, 11:52 am, "Chris Mellon" <[EMAIL PROTECTED]> wrote:
> > I would try to avoid talking
> > in generalities about python variables versus C or
> > lisp or whatever, unless I was teaching an upper division
> > college programming languages survey class.
>
> I disagree, although it's not really on topic for the thread. There's
> no reason why low level details need to be relegated to "upper
> division" college classes. It shouldn't be in Programming Languages
> 101, but it's something that I would expect a first year student who's
> planning to pursue a programming career or a comp sci degree to be
> exposed to. It's not out of place even in high school - that's where I
> first learned C.

Well I learned PDP11 assembly and FORTRAN IV in high school
and I'm still recovering (taking it day by day).

Offline I would discuss anything the students wanted to
talk about, but during lecture or in reading, etcetera
I would try to stick to the "pythonic" way of looking
at things without worrying about the underlying
implementation, except in side references.
Yes, some boxes and arrows would be
very useful to explain shared side effects,
but I'd keep the diagrams limited.

I think thinking too much like "C" can lead to bad
practices -- for example I've seen people use the
global module name space more or less like any other
hash table -- adding, deleting, changing freely
-- and I think this was motivated by the
"C" level understanding that it really is just another
hash table.  From a pythonic perspective you would
never think of behaving this way except under
extreme duress.

  -- Aaron Watters
===
http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=revolting+delicate
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: read/write to java socket in python

2007-11-27 Thread madsornomads
On Nov 27, 4:29 pm, hdante <[EMAIL PROTECTED]> wrote:
> On Nov 27, 1:08 pm, [EMAIL PROTECTED] wrote:
>
>
>
> > Hi all,
>
> > I have a problem with reading from a Java server after I have written
> > to it - it just hangs. It works fine if I just write to the server and
> > not try to write. I have read the HOWTO on sockets - and it states
> > that there is a problem (something about flushing), but not what the
> > solutions is. Nor do google. Can somebody please help?
>
> > A few lines down you can see the example code that sums up the
> > problem. Just change the name of the Python HOST-variable.
>
> > Thanks
> > Mads
>
> > This is the client in Python:
> > #! /usr/bin/env python
>
> > import sys
> > from socket import *
>
> [Snip - a little Python]
>
> > And this the server in Java:
> > import java.io.*;
> > import java.net.*;
>
> [Snip - a lot of Java]
>
> > }
>
>  I don't know, but it's amazing to compare the python client with the
> java server.


Yes, Python is really handy :)

/Mads
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Looking for a Python tutor

2007-11-27 Thread James Matthews
Please post on the job section!

On Nov 27, 2007 6:46 PM, hong2221 <[EMAIL PROTECTED]> wrote:

> I'm looking for a Python programmar that is willing write simple
> functions, prices can be talked over. Contact me asap.
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
http://search.goldwatches.com/?Search=Movado+Watches
http://www.goldwatches.com/coupons
http://www.jewelerslounge.com
-- 
http://mail.python.org/mailman/listinfo/python-list

create pywintypes.CreateGuid() compatible guids on Linux ?

2007-11-27 Thread GHUM
Hello,

I created lots of guids via  pywintypes.CreateGuid()  on windows.

Now I would like to run the same software on Linux / Solaris /
FreeBSD.

So I should produce "compatible" GUIDS on that systems. "compatible"
having the meaining: "Providing similiar likelehood of collisions".

of course "google python guid" leads directly to
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/163604,
but ... will it blend?

any ideas what could help me to research?

Harald
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread hdante
On Nov 27, 2:25 pm, Aaron Watters <[EMAIL PROTECTED]> wrote:
>
> I hope the participants in this thread realize
> that this sort of discussion will cause
> any programming newbie to immediately melt into the
> floor.

 All right, answering the original question is good. :-P

 1) If the students can't program and you have chosen to teach them by
using python, then they don't have any "assignment == copy" hard-coded
in their minds. Just teach them that python assignments are like
creating aliases, or "mirrors". That is,

  a = 2

 Makes "a" an alias of 2.

  l = [1, 2, 3]

 Makes l[0] an alias of 1

 Don't ever speak the word copy in class.

 2) If the students come from different backgrounds, typically having
programmed in high level languages, like pascal, java, C#, etc, then
you may call python variables either aliases or references, but state
clearly that "assignment in python doesn't mean object copy, but
reference change".

 3) If you're teaching in college, always show the students the formal
definition.

>
>
>   -- Aaron Watters
>
> ===http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=evil+fish

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Looking for a Python tutor

2007-11-27 Thread Arnaud Delobelle
On Nov 27, 5:46 pm, hong2221 <[EMAIL PROTECTED]> wrote:
> I'm looking for a Python programmar that is willing write simple
   ^^
> functions, prices can be talked over. Contact me asap.

You should start with a prospelling :)

--
Arnaud

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: create pywintypes.CreateGuid() compatible guids on Linux ?

2007-11-27 Thread Chris Mellon
On Nov 27, 2007 1:09 PM, GHUM <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I created lots of guids via  pywintypes.CreateGuid()  on windows.
>
> Now I would like to run the same software on Linux / Solaris /
> FreeBSD.
>
> So I should produce "compatible" GUIDS on that systems. "compatible"
> having the meaining: "Providing similiar likelehood of collisions".
>
> of course "google python guid" leads directly to
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/163604,
> but ... will it blend?
>
> any ideas what could help me to research?
>


The uuid module, in Python 2.5 and up,  provides RFC compliant UUID
generation. See the module docs and the RFC for details.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread MonkeeSage
On Nov 27, 11:50 am, Donn Cave <[EMAIL PROTECTED]> wrote:

> In contrast, I suspect that someone who learns Python concepts
> in terms of explanations like `boxes' or `pointers' or whatnot
> is at some disadvantage while that lasts, like translating a
> foreign language to your own instead of attaching meaning
> directly.

I agree with your point, but I think the distinction is this:
pedagogical analogies should be truly *analogous* -- they should not
be "analogies" that are only vaguely similar and require you to
constantly say "...but ignore this difference and that
difference...oh, and that one...you'll learn that later." I personally
think the "ignore this for now" approach is detrimental. An example of
a real analogy, which is very useful (imho), is in regards to C
pointers. The analogy is to a real pointing device (nowadays, probably
a laser pointer). The pointer (pointing device) is one thing, and it
takes up its own dimensions of space; but it can point to something
else, and that something takes up its own dimensions as well. They are
not interchangeable;  they have their own identities. But by following
the pointer to the something else, and interpreting that something
according to its own nature (text, a picture, &c), you can find the
"value" of the pointer. The pointer merely "references" that value.
And you can exchange the value that is referred to with any other
value of the same nature. You can, for example, point to a line of
code on an overhead projector. Then you can change the slide. Now the
value of the reference has changed, but the reference is the same. And
you can go one step further and point at an arrow symbol, which in
turn points to some other value in the context; the value turns out to
be another pointer which can be followed to it's own meaning. Granted,
it's an analogy, but I think it's a *good* analogy rather than a bad
one; it helps map the meaning to familiar objects, rather than the
trappings of the familiar preventing from grasping the concept.

Regards,
Jordan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: It works! Was: Installing Python 3000

2007-11-27 Thread André
On Nov 27, 11:17 am, jim-on-linux <[EMAIL PROTECTED]> wrote:
> On Tuesday 27 November 2007 07:20, André wrote:
>
>
>
> > On Nov 26, 9:59 pm, "André" <[EMAIL PROTECTED]> wrote:
> > > While I made some progress in trying to install Py3k from source
> > > (for the first time), it has failed...
>
> > > Here are the steps I went through (not necessarily in that order
> > > - except for those that matter).
>
> > > 1. After installing Leopard, install Xcode tools from the dvd -
> > > even if you had done so with a previous version (they need to be
> > > updated - trust me :-)
>
> > > 2. Download Python 3.0a1
>
> > > 3.  Unpack the archive.
>
> > > 4. Go to  /usr/local and make a directory "sudo mkdir py3k"
> > > (This is probably not needed, but that's what I did).
>
> > > 5. From the directory where the Python 3.0a1 was unpacked run
> > > ./configure --prefix=/usr/local/py3k
>
> > > 6. run "make"
>
> > > This last step failed with the following error message:
>
> > > gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp
> > > -mno-fused- madd -DNDEBUG -g -O3 -Wall -Wstrict-prototypes  -I.
> > > -I./Include   - DPy_BUILD_CORE  -c ./Modules/posixmodule.c -o
> > > Modules/posixmodule.o ./Modules/posixmodule.c: In function
> > > 'posix_setpgrp':
> > > ./Modules/posixmodule.c:3769: error: too few arguments to
> > > function 'setpgrp'
> > > make: *** [Modules/posixmodule.o] Error 1
>
> > > Any suggestions?
>
> > > André
>
> > Following Martin v Löwis's suggestion, I looked at
>
> >  http://bugs.python.org/issue1358
>
> > and added the line
> > #defineSETPGRP_HAVE_ARG
> > by hand to pyconfig.h  (after it was created by configure).  Then
> > 6. run  "make"
> > 7. run "make test"  (one test failed; this step likely unnecessary)
> > 8. sudo make altinstall
> > 9. sudo ln /usr/local/bin/py3k/python3.0 /usr/bin/python3.0
>
> > 10. type "python"
Should have been "python3.0"
> > 11. print("Hello world!")
> > 12. Be happy!
>
> > André, hoping this report might help some other newbie.
>
> Bug fix excluded,
>
> After unpacking the compressed version of Python, look for a file
> named "README".
>

Did that.

> Open "README" and look for Installing.  Make install and Make
> altinstall is explained.
>
make altinstall is mentioned (not "explained") in very brief comment.

This series of post followed from a previous one where I queried about
how to install py3k without it becoming the default.  Many useful
suggestions were offered by others which I found very useful as I had
*never* installed/configured/made something from source before  (I
always used .msi on Windows and, more recently, .dmg on Mac).  Once
you know what/why things like "--prefix"  or "--enable-framework"  or
"altinstall" are for, the README file content becomes extremely clear.

> I don't like to read instructions but in the long run, it saves time.

Actually, I do try and read instructions first usually.  But sometimes
the instructions use terms that are not clear for newbies.  And, if I
may, the "normal" way to create an alias/link for unsophisticated Mac
users (like me) is to use the GUI (Finder) and ctrl-click on the
file.  However, /usr is hidden ...  and using "ln" is not something
that can be found in the README ...

So that is why, to save time for others, I thought of writing this
summary of what I did, so that it could be found by people searching
this newsgroup (which is one of the other things I did first...)

André
>
> jim-on-linuxhttp://www.inqvista.com
-- 
http://mail.python.org/mailman/listinfo/python-list


chdir() problem

2007-11-27 Thread Hodginshut
I am trying to get a hold of anyone at Fenix in Thailand. Can you be of any 
help?

Pizza Hut
London, Ont.
Canada   
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: read/write to java socket in python

2007-11-27 Thread Bjoern Schliessmann
[EMAIL PROTECTED] wrote:
> I have a problem with reading from a Java server after I have
> written to it - it just hangs. It works fine if I just write to
> the server and not try to write. 

Excuse me?

> I have read the HOWTO on sockets - and it states that there is a
> problem (something about flushing), but not what the solutions is.
> Nor do google. Can somebody please help?

Spare yourself the trouble and do not use low level socket functions
in Python directly. Try Twisted.

http://twistedmatrix.com/projects/core/documentation/howto/clients.html

As for that Java problem I recommend learning common debugging
techniques: Use a protocol analyser (www.wireshark.org) and let
your program(s) output a debug log.

Regards,


Björn


-- 
BOFH excuse #16:

somebody was calculating pi on the server

-- 
http://mail.python.org/mailman/listinfo/python-list


Passing arguments to subclasses of unittest.TestCase

2007-11-27 Thread Tom Harris
Hi,

Is there a way to pass arguments to TestCases when running tests? I have 
a test suite that need to be configured slightly differently for 3 
different products, and rather than do a hack I wondered if there was a 
canonical way to do it.

I _know_ that py.test can do it trivially. I am rather stuck with 
unittest, as I have 84 testcases, and I have to make it work tomorrow.


-- 
Tom Harris BeacyBooks bigpondcom>

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Pulling data from a .asps site

2007-11-27 Thread Zepo Len
On Tue, 27 Nov 2007 20:37:19 +0200, <[EMAIL PROTECTED]> wrote:

>
> There's a government website which shows public data for banks. We'd
> like to pull the data down programmatically but the data is "hidden"
> behind .aspx...
>
> Is there anyway in Python to hook in directly to a browser (firefox or
> IE) to do the following...
>
> 1) Fill the search criteria
> 2) Press the "Search" button
> 3) Press another button (the CSV button) on the resulting page
> 4) Then grab the data out of the notepad file that pops up
>
> If this is a wild good chase, let me know... (or if there's a better
> way besides Python... I may have to explore writing a firefox plug-in
> or something)...

Well, Python supports moving the mouse pointer so it's should be quite  
simple to write such a program.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Running unmodified CGI scripts persistently under mod_wsgi.

2007-11-27 Thread Istvan Albert
On Nov 25, 1:55 am, Graham Dumpleton <[EMAIL PROTECTED]>
wrote:

> The other question is whether there is even a demand for this. Do
> people want to be able to take unmodified Python CGI scripts and try
> to run them persistently in this way, or would they be better off
> converting them to proper WSGI applications.

I think CGI will be with us for many decades.

It will be awesome if mod_wsgi can run CGI without invoking python on
each access.

i.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: spawning a process with subprocess

2007-11-27 Thread Thomas Bellman
bhunter <[EMAIL PROTECTED]> wrote:

> * The problem with the testcase, I believe, was the size of the file
> and the output pipe filling up, as Nick suggested.  When run on a
> smaller file, with Jordan's suggestions, it works fine.  With a larger
> file, it's necessary to do as Nick says.  If the size of the file is
> unknown, its best to use this case as the default.  This seems
> unfortunate to me, because it's quite a bit of code to do something
> that should be fairly straightforward--at least, that's what I think.

You may be interrested in the module 'asyncproc', which I wrote
a couple of years ago to make it easier working with processes
that would otherwise block on output.  You can download it at
.

It probably only works on Unix, but considering your use of "cat"
as a test program, I suppose that isn't a problem for you.


-- 
Thomas Bellman,   Lysator Computer Club,   Linköping University,  Sweden
"God is real, but Jesus is an integer."  !  bellman @ lysator.liu.se
 !  Make Love -- Nicht Wahr!
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Should proxy objects lie about their class name?

2007-11-27 Thread John J. Lee
"Diez B. Roggisch" <[EMAIL PROTECTED]> writes:

> John J. Lee schrieb:
>> [EMAIL PROTECTED] (John J. Lee) writes:
>>
>>> Not much to add to the subject line.  I mean something like this:
>>>
>>> ProxyClass.__name__ = ProxiedClass.__name__
>>>
>>>
>>> I've been told that this is common practice.  Is it?  Would this
>>> surprise you if you ran into it in a debugging session?
>>
>> Does nobody have an opinion on this?  Pull your socks up, c.l.py!
>>
>> 
>
> I've written quite a few proxies, but none of them did that. IMHO this
> is similar to using isinstance overeagerly: it works against the
> duck-typing principle to guard code by requiring certain base-classes,
> instead of just relying on protocol. The same applies here.

Sure.  The push here was the doctest issue.


> There might be of course cases where you have code lying around that
> does do some distinctions based on the class-name (I'm certainly I've
> seen such stuff once or tiwce, but always regarded it a WTF). Then
> doing as you do above might help in getting things work.

Right.

The actual case I'm talking about here involved an exception class
(dynamically created by subclassing at runtime, eugh) -- and a common
one at that -- so it's a pretty common thing in doctests and any
workaround on the doctest level would be very ugly (of course,
alternatives include working around it by wrapping the code that
raises the exception, or changing the doctest files to use the new
exception name).

What worries me is the potential for confusion.  Again, would it
confuse you (not just Diez, everybody)?


John
-- 
http://mail.python.org/mailman/listinfo/python-list


get mouse

2007-11-27 Thread Shawn Minisall
I'm just trying to test and see if the get mouse statements are working 
in my program.  If they are, in the console window, it should go back to 
the prompt.  It doesn't for all of them, just the last 
rectangle...sometimes.  Am I setting them up correctly?   here's the 
relevant code...thx

The first two numbers are x1,x2 and the last two are y1, y2.

rectMathButton = CreateRect(4,6,7,8,"grey")
rectMathButton.draw(win)
rectScienceButton = CreateRect(3.5,6.5,5,6,"grey")
rectScienceButton.draw(win)
rectHistoryButton = CreateRect(3.5,6.5,3,4,"grey")
rectHistoryButton.draw(win)
rectGeographyButton = CreateRect(3.1,7,1,2,"grey")
rectGeographyButton.draw(win)

#math
p1 = win.getMouse()
while p1.getX()> 6 or p1.getX()< 4 or p1.getY()> 8 or p1.getY()< 7:  
p1 = win.getMouse()

#science
p2 = win.getMouse()
while p2.getX()> 6.5 or p2.getX()< 3.5 or p2.getY()> 6 or p2.getY()< 
5:  
p2 = win.getMouse()

#history
p3 = win.getMouse()
while p3.getX()> 6.5 or p3.getX()< 3.5 or p3.getY()> 4 or p3.getY()< 
3:  
p3 = win.getMouse()

#geography
p4 = win.getMouse()
while p4.getX()> 7 or p4.getX()< 3.1 or p4.getY()> 2 or p4.getY()< 
1.1:  
p4 = win.getMouse()



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: fork/exec with input redirection

2007-11-27 Thread Dan Upton
> > > ./gobmk_base.linux_x86 --quiet --mode gtp < 13x13.tst
> >
> > > The only thing I could really think of to try was
> >
> > >os.execv("./gobmk_base.linux_x86", ["./gobmk_base.linux_x86",
> > > "--quiet", "--mode", "gtp", "<", "13x13.tst"])
> >
> > > but this apparently doesn't work.  Is there some other way to
> > > accomplish what I'm going for?
> >
> > > Thanks,
> > > -dan
> >
> >  IIRC,
> >
> >  if os.fork() == 0:
> >new_stdin = os.open('13x13.tst')
> >os.dup2(new_stdin, sys.stdin.fileno())
> >os.close(new_stdin)
> >os.execv("./gobmk_base.linux_x86", ["./gobmk_base.linux_x886", "--
> > quiet", "--mode", "gtp"])
>
>  Maybe a sys.stdin.flush() just to be sure ?
>

Thanks, that did the trick (well, os.open('13x13.tst', os.O_RDONLY),
but you know... close enough).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to Teach Python "Variables"

2007-11-27 Thread Aaron Watters
On Nov 27, 2:20 pm, MonkeeSage <[EMAIL PROTECTED]> wrote:
> On Nov 27, 11:50 am, Donn Cave <[EMAIL PROTECTED]> wrote:

> I agree with your point, but I think the distinction is this:
> pedagogical analogies should be truly *analogous* -- they should not
> be "analogies" that are only vaguely similar and require you to
> constantly say "...but ignore this difference and that
> difference...oh, and that one...you'll learn that later." I personally
> think the "ignore this for now" approach is detrimental.

Yes, in theory.  And in theory, theory is the same as practice.
In practice there is too much to understand all at
once and in the beginning you have to say "don't worry about that
right now, consider it magic..."  Of course they should
eventually understand it.

Again, this is another place where Python shines, because
the front end scary magic is limited -- you can start out
with simple and useful imperative
straight line scripts and then move
into higher levels from there -- in contrast to C# and java
which require you to declare a class with static methods
even if you have no intention of writing any OO code.
Beginners find this incredibly confusing and scary.

Magic should never be permanent, however.
In the case of Struts or Spring there is magic
that no one is ever intended to truly understand.
Danger Will Robinson!  Danger!

This is my problem also with
most web application frameworks, even in Python
-- too much strange magic floats around in the air
-- usually in order to make things "easy" that I never thought
were hard in the first place.

  -- Aaron Watters
===
http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=lame+hack+wink
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Pulling data from a .asps site

2007-11-27 Thread Diez B. Roggisch
[EMAIL PROTECTED] schrieb:
> There's a government website which shows public data for banks. We'd
> like to pull the data down programmatically but the data is "hidden"
> behind .aspx...
> 
> Is there anyway in Python to hook in directly to a browser (firefox or
> IE) to do the following...
> 
> 1) Fill the search criteria
> 2) Press the "Search" button
> 3) Press another button (the CSV button) on the resulting page
> 4) Then grab the data out of the notepad file that pops up
> 
> If this is a wild good chase, let me know... (or if there's a better
> way besides Python... I may have to explore writing a firefox plug-in
> or something)...

There needs no browser to be involved - unless there is AJAX in the 
game, and even then - after alle, it's all HTTP-requests.

Whichfor there are several options to work with - one popular is

http://wwwsearch.sourceforge.net/mechanize/

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Passing arguments to subclasses of unittest.TestCase

2007-11-27 Thread Diez B. Roggisch
Tom Harris schrieb:
> Hi,
> 
> Is there a way to pass arguments to TestCases when running tests? I have 
> a test suite that need to be configured slightly differently for 3 
> different products, and rather than do a hack I wondered if there was a 
> canonical way to do it.
> 
> I _know_ that py.test can do it trivially. I am rather stuck with 
> unittest, as I have 84 testcases, and I have to make it work tomorrow.

How about writing one test that takes arguments, and three test-methods 
that invoke it with different arguments? Or need there be commandline 
arguments or such stuff involved?

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


  1   2   >