Re: non-blocking PIPE read on Windows

2006-07-31 Thread Durumdara
Hi !If you don't want to use MS-specific things, you can use the normal pipes.See this code. If you want to use non-blocking version, you need to create a thread that handle the reads/writes.
import os, sys, time, binascii, cPicklebpath,bname=os.path.split(sys.argv[0])def Log(Msg,IsMaster,First=False):    fn=sys.argv[0]+'.'+['c','m'][int(IsMaster)]+'.log'    mode='aw'[int(First)]    f=open(fn,mode)
    f.write('\n%s:\n'%time.time())    f.write('%s\n'%Msg)    f.flush()    f.close()def ReadTextPacket(SourceStream):    packet=SourceStream.read(6)    psize=int(packet)    packet=SourceStream.read
(psize)    return packetdef WriteTextPacket(DestStream,Packet):    Packet=str(Packet)    DestStream.write('%06d'%len(Packet))    DestStream.write(Packet)    DestStream.flush()'''def ReadBinPacket(SourceStream):
    txtpacket=ReadTextPacket(SourceStream)    pckpacket=binascii.unhexlify(txtpacket)    obj=cPickle.loads(pckpacket)    return objdef WriteBinPacket(DestStream,Obj):    pckpacket=cPickle.dumps
(Obj)    txtpacket=binascii.hexlify(pckpacket)    WriteTextPacket(DestStream,txtpacket)'''if 'C' in sys.argv:    #Log('Client started',0,1)    while 1:    #Log('Waiting for packet',0,0)
    data="">    #Log('Packet received',0,0)    #Log('The packet is: %s'%([data]),0,0)    #Log('Print the result',0,0)    WriteTextPacket(sys.stdout,"Master wrote: %s"%([data]))
    if data.strip()=='quit':    #Log('Quit packet received',0,0)    break    #Log('Client finished',0,0)else:    #Log('Master started',1,1)    #Log('Start subprocess',1,0)
    import time    st=time.time()    child_stdin,child_stdout=os.popen2(r'c:\python24\python.exe %s C'%(bname))    for i in range(1000):    #Log('Send packet',1,0)    WriteTextPacket(child_stdin,['Alma'*100,i])
    #Log('Waiting for packet',1,0)    s=ReadTextPacket(child_stdout)    #Log('Packet is: %s'%([s]),1,0)    #Log('Print packet',1,0)    #print "Client's answer",[s]    import time
    time.sleep(0.1)    #Log('Send packet',1,0)    WriteTextPacket(child_stdin,'quit')    #Log('Waiting for packet',1,0)    s=ReadTextPacket(child_stdout)    #Log('Packet is: %s'%([s]),1,0)    #Log('Print packet',1,0)
    #print "Client's answer",[s]    #Log('Master finished',1,0)    print time.time()-stdd2006/7/28, Dennis Lee Bieber <
[EMAIL PROTECTED]>:On 27 Jul 2006 22:26:25 -0700, "placid" <
[EMAIL PROTECTED]> declaimed thefollowing in comp.lang.python:>> readline() blocks until the newline character is read, but when i use> read(X) where X is a number of bytes then it doesnt block(expected
> functionality) but i dont know how many bytes the line will be and its> not constant so i cant use this too.>> Any ideas of solving this problem?>Use a thread that reads one character at a time; when it sees
whatever signals "end of line" (it sounds like you're reading a progressbar implemented via overwrite). Combine the characters into astring, return the string to the main program via a queue.
If there is no such "end of line" character, but there IS anoticeable delay between "writes", a more complex method might suffice-- in which one thread does the byte reads, setting a time value on each
read; a related thread then does a sleep() loop, checking the "last readtime" against the pause length -- if close enough to the pause duration,combine and return...Alternatively, take a good old style terminal keyboard (a VT100
Tempest-rated model should be ideal), and use it to beat Bill Gates overthe head until he agrees to push a high-priority upgrade to the commandline I/O system... or makes files work with select() (so you can combine
the time-out with the byte read)--WulfraedDennis Lee Bieber   KD6MOG[EMAIL PROTECTED]   
[EMAIL PROTECTED]HTTP://wlfraed.home.netcom.com/(Bestiaria Support Staff:   [EMAIL PROTECTED]
)HTTP://www.bestiaria.com/--http://mail.python.org/mailman/listinfo/python-list

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

Re: Small problem with print and comma

2006-07-31 Thread Diez B. Roggisch
Dustan wrote:

> Dennis Lee Bieber wrote:
>> > for i in range(0,len(param)):
>> > print a[i],
>>
>> for it in param:
>> print it,
> 
> That's one way. However, if you need the position (this is for future
> reference; you don't need the position number here):
> 
> for i in range(len(param)+1):
> print a[i],
> 
> The last position was excluded because you forgot the '+1' part,
> creating an off-by-one bug.

No, your code creates that bug.

However, the above is not very pythonic - if param is a iterator and not a
sequence-protocol-adherent object, it fails. The usual way to do it is


for i, a in enumerate(param):
print a,


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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Ben Sizer
Paul Boddie wrote:
> Ben Sizer wrote:
> >
> > Even C++ comes with OpenGL in the standard library.
>
> Which standard library?

Sorry, it was a long day, and I used entirely the wrong term here. By
that, I meant "typically shipped with each compiler". I've never had to
even install a development library to use OpenGL, whether under Win32
or Linux. It's just a typical part of the distribution.

> [Web-SIG standardisation]
> > And I always thought that WSGI was solving the wrong problem. It
> > certainly didn't go very far towards meeting the expressed goals of the
> > Web-SIG. Oh well.
> > 
>
> There are some remarks just after that message about the SIG charter
> needing to change or having become irrelevant, but in fact the need for
> standard functionality is as relevant today as ever. At a slightly
> higher level, everyone would now prefer that you buy into their total
> "full stack" solution, perhaps with the exception of the Paste
> developers whose selection of packages either suggest a problem of
> internal framework proliferation or one of a lack of coherency in
> presenting a suitable solution to the casual inquirer.

Yeah. On the server side I think there's been a sad lack of attention
to the large middle ground that lies between simple CGI scripting and
full stack solutions. In fact, I'd guess that the majority of web sites
fall into that middle ground, just perhaps not the most interesting or
financially lucrative ones. Examples might be things like the various
PHP forums, or web-based non-real-time games. These applications are
complex enough to deserve a decent implementation language such as
Python, yet simple and small enough that most users won't want to set
up dedicated hardware for the purpose. I think there's definitely scope
in the standard library to go well beyond the current cgi module and
the piecemeal offerings in other modules, without needing to provide
another integrated web stack.

-- 
Ben Sizer

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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Ben Sizer
Sybren Stuvel wrote:
> Ben Sizer enlightened us with:
> > PyGame was barely maintained for a year, and is based on SDL which
> > was also barely maintained for a year, and which hasn't kept up with
> > hardware advances at all.
>
> Still, ID Software and Epic both use SDL + OpenGL for their games. Why
> is it good for them but insufficient for you?

Because id and Epic have many millions of dollars and better developers
to throw at the problem than I do. :)  To put it another way, they have
lots of in-house middleware that is built on top of those technologies
to make them more effective. SDL and OpenGL is the bottom of the stack
for them. We mere mortals often prefer to start with something a little
higher level. :)

-- 
Ben Sizer

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


Newbie help - test for data type

2006-07-31 Thread Jonathan Bowlas
Hi Listers,

I have a requirement to test for a data type could someone tell me if this
is possible in python?

Basically I have a ZPT in Zope that users can select checkboxes in a form
which pass arguments for a python function, however if there is only one
checkbox selected it is passed as a string whereas more than one checkbox is
passed as a list. Therefore if my function is required to perform an action
based on each argument passed in the list the function works correctly but
if it is passed as a string nothing happens.

This is my function:
selecteddeptcodes = context.REQUEST.DEPTCODE
currentstatus = context.REQUEST.STATUS

if currentstatus == 'pending':
 for dptcd in selecteddeptcodes:
   context.changetolive(DEPTCODE=dptcd)
if currentstatus == 'old':
 for dptcd in selecteddeptcodes:
   context.changetopending(DEPTCODE=dptcd)
return context.pub_dept_form(context, context.REQUEST, message='Updated
Status')

The argument in question is selecteddeptcodes.

I tried to make my function conditional based on the length of the argument
passed but if it’s just one checkbox value passed the length of the argument
is 2 (which is the number of chars passed in the string) and if there are
two checkboxes the length of the argument (which is the number of items in
the list) is also 2. So that doesn’t help.

Any assistance would be appreciated.

Jon



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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Ben Sizer
Terry Reedy wrote:
> "Ben Sizer" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> > PyGame was barely maintained for a year, and is based on SDL which was
> > also barely maintained for a year, and which hasn't kept up with
> > hardware advances at all.
>
> I believe there is a recent release of SDL, but which what advances I do
> not know.  Pygame is being actively worked on by more than one person.

The recent release of SDL was another minimal one, though there is an
intention to make the important changes 'soon'. As for PyGame, it's
good that development there has picked up again but I'd love to see it
broaden its horizons beyond SDL. Maybe that is impractical, however.

-- 
Ben Sizer

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


Re: XML parsing and writing

2006-07-31 Thread Stefan Behnel
c00i90wn wrote:
> Hey, I'm having a problem with the xml.dom.minidom package, I want to
> generate a simple xml for storing configuration variables, for that
> purpose I've written the following code, but before pasting it I'll
> tell you what my problem is. On first write of the xml everything goes
> as it should but on subsequent writes it starts to add more and more
> unneeded newlines to it making it hard to read and ugly.

Maybe you should try to get your code a little cleaner first, that usually
helps in finding these kinds of bugs. Try rewriting it with ElementTree or
lxml, that usually helps you in getting your work done.

http://effbot.org/zone/element-index.htm
http://codespeak.net/lxml/

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


Re: Windows vs. Linux

2006-07-31 Thread 3KWA
I am not a programming expert but I use python everyday on Windows XP:
* python standard distribution (CPython)
* iPython
* cygwin for the command line interaction, add a unix/linux flavour to
the blend

EuGeNe

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


Re: Newbie help - test for data type

2006-07-31 Thread John Machin
Jonathan Bowlas wrote:
> Hi Listers,
>
> I have a requirement to test for a data type could someone tell me if this
> is possible in python?
>
> Basically I have a ZPT in Zope that users can select checkboxes in a form
> which pass arguments for a python function, however if there is only one
> checkbox selected it is passed as a string whereas more than one checkbox is
> passed as a list.
>

Fantastic. If there are 0 checkboxes selected, does it return None?

The built-in function isinstance() will help.

if it is None:
shouldbe = []
elif isinstance(it, str):
shouldbe = [it]
elif isinstance(it, list):
shouldbe = it
else:
raise WTFError(repr(type(it))

Cheers,
John

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


Re: Newbie help - test for data type

2006-07-31 Thread Dennis Benzinger
Jonathan Bowlas wrote:
> Hi Listers,
> 
> I have a requirement to test for a data type could someone tell me if this
> is possible in python?
> 
> Basically I have a ZPT in Zope that users can select checkboxes in a form
> which pass arguments for a python function, however if there is only one
> checkbox selected it is passed as a string whereas more than one checkbox is
> passed as a list. Therefore if my function is required to perform an action
> based on each argument passed in the list the function works correctly but
> if it is passed as a string nothing happens.

You need the isinstance() function. For example you can use
isinstance(selecteddeptcodes, list) to test if your variable is a list. 
If you want to test the other way round use 
isinstance(selecteddeptcodes, str) if your variable is a string, 
isinstance(selecteddeptcodes, unicode) if it's a unicode string or 
isinstance(selecteddeptcodes, basestring) to test if it's a string or 
unicode string. Read more about this function and the types to test for 
in http://docs.python.org/lib/built-in-funcs.html.

If you already have the code for a list argument I'd check if it's not a 
list and then turn it into a list:


if not isintance(selecteddeptcodes, list):
 selecteddeptcodes = [selecteddeptcodes]



Bye,
Dennis
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Has anyone used davlib by Greg Stein?

2006-07-31 Thread Joel Hedlund
> Has anyone worked with this? Is it any good? 

I'll take the palpable silence as a "no" then. :-)

Thank's anyway!
/Joel
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie help - test for data type

2006-07-31 Thread Jonathan Bowlas








Thanks for everyone’s help, much appreciated, I’ll check
out the isinstance function.

 

Jon

 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Dennis
Benzinger
Sent: 31 July 2006 10:20
To: python-list@python.org
Subject: Re: Newbie help - test for data type

 

Jonathan Bowlas wrote:

> Hi Listers,

> 

> I have a requirement to test for a data type could someone tell me
if this

> is possible in python?

> 

> Basically I have a ZPT in Zope that users can select checkboxes in
a form

> which pass arguments for a python function, however if there is
only one

> checkbox selected it is passed as a string whereas more than one
checkbox is

> passed as a list. Therefore if my function is required to perform
an action

> based on each argument passed in the list the function works
correctly but

> if it is passed as a string nothing happens.

 

You need the isinstance() function. For example you can use

isinstance(selecteddeptcodes, list) to test if your variable is a list.


If you want to test the other way round use 

isinstance(selecteddeptcodes, str) if your variable is a string, 

isinstance(selecteddeptcodes, unicode) if it's a unicode string or 

isinstance(selecteddeptcodes, basestring) to test if it's a string or 

unicode string. Read more about this function and the types to test for


in http://docs.python.org/lib/built-in-funcs.html.

 

If you already have the code for a list argument I'd check if it's not
a 

list and then turn it into a list:

 

 

if not isintance(selecteddeptcodes, list):

 selecteddeptcodes = [selecteddeptcodes]

 

 

 

Bye,

Dennis

-- 

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

 






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

Re: Newbie help - test for data type

2006-07-31 Thread Rob Wolfe

> This is my function:
> selecteddeptcodes = context.REQUEST.DEPTCODE
> currentstatus = context.REQUEST.STATUS
>
> if currentstatus == 'pending':
>  for dptcd in selecteddeptcodes:
>context.changetolive(DEPTCODE=dptcd)
> if currentstatus == 'old':
>  for dptcd in selecteddeptcodes:
>context.changetopending(DEPTCODE=dptcd)
> return context.pub_dept_form(context, context.REQUEST, message='Updated
> Status')
>
> The argument in question is selecteddeptcodes.

You can use isinstance or function like that:

>>> def list_from_string(s):
... try:
... s + ''
... return [s]
... except:
... return s

and then:

>>> def f(selecteddeptcodes):
... if selecteddeptcodes is None: return
... selecteddeptcodes = list_from_string(selecteddeptcodes)
... for dptcd in selecteddeptcodes: print dptcd
...
>>> f(['aaa', 'bbb'])
aaa
bbb
>>> f(['aaa'])
aaa
>>> f('aaa')
aaa
>>> f(None)
>>> 


Regards,
Rob

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


Re: [OT]Newbie help - test for data type

2006-07-31 Thread Bruno Desthuilliers
Jonathan Bowlas wrote:
> Hi Listers,
> 
> I have a requirement to test for a data type could someone tell me if this
> is possible in python?
> 
> Basically I have a ZPT in Zope that users can select checkboxes in a form
> which pass arguments for a python function, however if there is only one
> checkbox selected it is passed as a string whereas more than one checkbox is
> passed as a list. 

You should have posted this on Zope's mailing-list.


There's a mechanism in Zope to handle this case, cf section "Passing
Parameters to Scripts" in:
http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/DTML.stx/ScriptingZope.stx

The mechanism is based on 'decorating' forms fields names with type
annotation. In you case, this would look like:



  






HTH



-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie help - test for data type

2006-07-31 Thread Bruno Desthuilliers
John Machin wrote:
> Jonathan Bowlas wrote:
>> Hi Listers,
>>
>> I have a requirement to test for a data type could someone tell me if this
>> is possible in python?
>>
>> Basically I have a ZPT in Zope that users can select checkboxes in a form
>> which pass arguments for a python function, however if there is only one
>> checkbox selected it is passed as a string whereas more than one checkbox is
>> passed as a list.
>>
> 
> Fantastic. If there are 0 checkboxes selected, does it return None?

If no checkbox is selected, then the control is not successful and it's
name should not appear in the request. This is defined in the html spec
 (sections 17.2 and 17.13.2 of html 4.01 spec).


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie help - test for data type

2006-07-31 Thread Bruno Desthuilliers
Dennis Benzinger wrote:
> Jonathan Bowlas wrote:
>> Hi Listers,
>>
>> I have a requirement to test for a data type could someone tell me if
>> this
>> is possible in python?
>>
>> Basically I have a ZPT in Zope that users can select checkboxes in a form
>> which pass arguments for a python function, however if there is only one
>> checkbox selected it is passed as a string whereas more than one
>> checkbox is
>> passed as a list. Therefore if my function is required to perform an
>> action
>> based on each argument passed in the list the function works correctly
>> but
>> if it is passed as a string nothing happens.
> 
> You need the isinstance() function. 

Not in Zope.


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie help - test for data type

2006-07-31 Thread Bruno Desthuilliers
Rob Wolfe wrote:
>> This is my function:
>> selecteddeptcodes = context.REQUEST.DEPTCODE
>> currentstatus = context.REQUEST.STATUS
>>
>> if currentstatus == 'pending':
>>  for dptcd in selecteddeptcodes:
>>context.changetolive(DEPTCODE=dptcd)
>> if currentstatus == 'old':
>>  for dptcd in selecteddeptcodes:
>>context.changetopending(DEPTCODE=dptcd)
>> return context.pub_dept_form(context, context.REQUEST, message='Updated
>> Status')
>>
>> The argument in question is selecteddeptcodes.
> 
> You can use isinstance or function like that:
> 

Zope has a better solution builtin.


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re:Newbie help - test for data type

2006-07-31 Thread Jonathan Bowlas








Thanks Bruno, I’ll use this.

 

Much appreciated.

 

Jon

 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bruno
Desthuilliers
Sent: 31 July 2006 10:37
To: python-list@python.org
Subject: Re: [OT]Newbie help - test for data type

 

Jonathan Bowlas wrote:

> Hi Listers,

> 

> I have a requirement to test for a data type could someone tell me
if this

> is possible in python?

> 

> Basically I have a ZPT in Zope that users can select checkboxes in
a form

> which pass arguments for a python function, however if there is
only one

> checkbox selected it is passed as a string whereas more than one
checkbox is

> passed as a list. 

 

You should have posted this on Zope's mailing-list.

 



There's a mechanism in Zope to handle this case, cf section
"Passing

Parameters to Scripts" in:

http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/DTML.stx/ScriptingZope.stx

 

The mechanism is based on 'decorating' forms fields names with type

annotation. In you case, this would look like:

 





  

 tal:attribute="value code" />







 



 

HTH

 

 

 

-- 

bruno desthuilliers

python -c "print '@'.join(['.'.join([w[::-1] for w in
p.split('.')]) for

p in '[EMAIL PROTECTED]'.split('@')])"

-- 

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

 






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

Re: how to stop python

2006-07-31 Thread victor
or if u want explicit exit of program then use:

import sys
sys.exit(1)

or

raise SystemExit, 'message'

Dan wrote:
> bruce bedouglas at earthlink.net posted:
>
>  > perl has the concept of "die". does python have anything
>  > similar. how can a python app be stopped?
>
> I see this sort of statement a lot in Perl:
>  open(FH, "myfile.txt") or die ("Could not open file");
>
> I've no idea why you're asking for the Python equivalent to die, but if
> it's for this sort of case, you don't need it.  Usually in Python you
> don't need to explicitly check for an error.  The Python function will
> raise an exception instead of returning an error code.  If you want to
> handle the error, enclose it in a try/except block.  But if you just
> want the program to abort with an error message so that you don't get
> silent failure, it will happen automatically if you don't catch the
> exception.  So the equivalent Python example looks something like this:
>  fh = file("myfile.txt")
>
> If the file doesn't exist, and you don't catch the exception, you get
> something like this:
> $ ./foo.py
> Traceback (most recent call last):
>File "./foo.py", line 3, in ?
>  fh = file("myfile.txt")
> IOError: [Errno 2] No such file or directory: 'myfile.txt'
> 
> /Dan

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


Re: Fastest Way To Loop Through Every Pixel

2006-07-31 Thread nikie
Chaos wrote:

> nikie wrote:
> > Chaos wrote:
> >
> > > As my first attempt to loop through every pixel of an image, I used
> > >
> > > for thisY in range(0, thisHeight):
> > > for thisX in range(0, thisWidth):
> > >   #Actions here for Pixel thisX, thisY
> > >
> > > But it takes 450-1000 milliseconds
> > >
> > > I want speeds less than 10 milliseconds
> >
> > Milliseconds don't mean much unless we knew how big your images are and
> > what hardware you're using.
> >
> > Have you considered using NumPy? Assuming you can get the image into a
> > numpy array efficiently, the actual algorithm boils down to something
> > like this:
> >
> > grey = r*0.3 +
>
>  g*0.59 + b*0.11
> > index = grey.argmin()
> > x,y = index%step, index/step
> > v = grey[x,y]
> >
> > where r,g,b and grey are numpy.ndarray objects; The arithmetic
> > operators and the argmin-function are implemented in C, so you can
> > expect decent performance. (the 4 lines above take about 80 ms for a
> > 1000x1000 image on my PC)
> >
> > If that's not enough, you might want to use some specially optimized C
> > library for this purpose. (I'd suggest Intel's IPP, but there are
> > others).
>
> I really do not understand the code. Where did you get the varibales r,
> g, b and step and what does v produce?

Sorry, I should have commented it better. The idea is that r,g,b are
numpy-arrays containig the r, g, b-pixel-values in the image:

  import numpy, Image
  img = Image.open("Image1.jpg")
  r = numpy.array(img.getdata(0))
  g = numpy.array(img.getdata(1))
  b = numpy.array(img.getdata(2))
  w,h = img.size

The "step" is the length of one line of pixels, that is, the offset to
a pixel (x,y) is x+y*step. (This is usually called "step" or "stride"
in literature)

  step = w

Now, I can use numpy's overridden arithmetic operators to do the
per-pixel calculations (Note that numpy also overrides sin, cos, max,
..., but you'll have to use from numpy import * to get these overrides
in your namespace):

  grey = r*0.3 + g*0.59 + b*0.11

The multiplication-operator is overridden, so that "r*0.3" multiplies
each value in the array "r" with "0.3" and returns the multiplied
array, same for "g*0.59", "b*0.11". Adding the arrays adds them up
value by value, and returns the sum array. This generally works quite
well and intuitively if you perform only per-pixel operations. If you
need a neighborhood, use slicing.
The function "argmin" searches for the index of the minimum value in
the array:

  index = grey.argmin()

But since we want coordinates instead of indices, we'll have to
transform these back using the step value:

  x,y = index % step, index / step

Result:

  print x,y,r[index],g[index],b[index]

Works for my image.

Notes:
- I'm _not_ sure if this is the fastest way to get an image into a
numpy array. It's convenient, but if you need speed, digging into the
numpy docs/newsgroup archive, and doing a few benchmarks for yourself
would be a good idea
- numpy does have 2d-Arrays, but I'm not that much of a numpy expert to
tell you how to use that to get rid of the index/step-calculations.
Again, numpy-docs/newsgroup might help
- a general advice: using integer multiplications instead for
floating-point may help with performance, too.
- you said something about 10 ms, so I'm guessing your image doesn't
come from a harddrive at all (because reading it alone will usually
take longer than 10 ms). Numpy arrays have a C-Interface you might want
to use to get data from a framegrabber/digital camera into a numpy
array.

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


Re: class variables

2006-07-31 Thread Bruno Desthuilliers
Colin J. Williams wrote:
> Andre Meyer wrote:
>> Hi all
>>
>> I am trying to understand the magic of Python's class variables and
>> tried the following code (see below).
>>
>> Just out of curiosity, I tried to define a property that provides
>> access to a seemingly instancae variable which is in fact a class
>> variable.

class Foo(object):
  _v = 5

  @apply
  def v():
def fget(self):
  return Foo._v
  # other solution [1] :
  # return self.__class__._v
def fset(self, val):
  Foo._v = val
  # other solution [1] :
  # self.__class__._v = val
return property(**locals())


[1] Depends on how you want this to work when subclassing Foo...


Gives :

>>> f1 = Foo()
>>> f2 = Foo()
>>> f1.v
5
>>> f2.v
5
>>> f1.v = 42
>>> f1.v
42
>>> f2.v
42
>>> Foo._v
42
>>>

>> All seems to work fine (case 4), but when a custom object is
>> assigned, an instance variable is created instead of using theproerty
>> (case 5).
>>
>> What goes wrong here?

I'm afraid there are too much problems with indentation in the posted
code to give any serious answer.

(snip)


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


how to safely extract dict values

2006-07-31 Thread David Zaret
i have a dict with a particular key - the values for this key will be 
None, one valid scalar, or a list:

{mykey, None}
{mykey, "foo"}
{mykey, ["bar", "baz"]}

let's ignore the None case - in the case of the one or many values, i 
want to suck the values into a list.  here's one way to do this:

 if mydict.has_key(mykey):
 vals=[]
 _v = mydict[mykey]
 if isinstance(_v, types.ListType):
 vals.extend(_v)
 else:
 vals.append(_v)
 #   now we can safely iterate through acts
for val in vals:
.


my way is ugly.  what's a better way?

thanks,

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


Re: Nested function scope problem

2006-07-31 Thread Bruno Desthuilliers
Antoon Pardon wrote:
> On 2006-07-29, Gerhard Fiedler <[EMAIL PROTECTED]> wrote:
>> On 2006-07-29 13:47:37, Antoon Pardon wrote:
>>
>>> I think the important thing to remember is that the assignment in Python
>>> is a alias maker and not a copy maker. In languages like C, Fortran,
>>> pascal, the assignment makes a copy from what is on the righthand and
>>> stores that in the variable on the lefthand. In languages like Lisp,
>>> Smalltalk and Python, the assignment essentially makes the lefthand
>>> an alias for the righthand.
>> Yes, I think I got it now :) 
>>
>> It seems that, in essence, Bruno is right in that Python doesn't really
>> have variables. Everything that seems variable doesn't really change; what
>> changes is that an element of what seems to change gets rebound.
> 
> Aren't you looking too much at implementation details now?
> 
> The difference between an alias assignment and a storage assigment
> is for instance totaly irrelevant for immutable objects/values like numbers.

# Python
a = 42
b = a
del a

# C
int *a, *b;
a = malloc(sizeof *a);
*a = 42;
b = a;
free(a);


I wouldn't say it's "totally" irrelevant.

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Paul Rubin
David Zaret <[EMAIL PROTECTED]> writes:
> my way is ugly.  what's a better way?

Untested:

for key in mydict:
   if isinstance(mydict[key], list):
  vals.extend(mydict[key])
   else:
  vals.append(mydict[key])
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Bruno Desthuilliers
Paul Rubin wrote:
> David Zaret <[EMAIL PROTECTED]> writes:
>> my way is ugly.  what's a better way?
> 
> Untested:
> 
> for key in mydict:
>if isinstance(mydict[key], list):
>   vals.extend(mydict[key])
>else:
>   vals.append(mydict[key])

Too much useless lookup IMHO...

vals = []
for k, v in mydict.items():
  if isinstance(v, list):
vals.extend(v)
  else:
vals.append(v)

!-)

But this is not that different from what the OP found so ugly...

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Amit Khemka
On 7/31/06, David Zaret <[EMAIL PROTECTED]> wrote:
> i have a dict with a particular key - the values for this key will be
> None, one valid scalar, or a list:
>
> {mykey, None}
> {mykey, "foo"}
> {mykey, ["bar", "baz"]}
>
> let's ignore the None case - in the case of the one or many values, i
> want to suck the values into a list.  here's one way to do this:
>
>  if mydict.has_key(mykey):
>  vals=[]
>  _v = mydict[mykey]
>  if isinstance(_v, types.ListType):
>  vals.extend(_v)
>  else:
>  vals.append(_v)
>  #   now we can safely iterate through acts
> for val in vals:
> .

how about:

vals = []
for val in mydict.values():
   try: vals.extend(val)
   except: vals.append(val)

cheers,
amit.



-- 

Amit Khemka -- onyomo.com
Home Page: www.cse.iitd.ernet.in/~csd00377
Endless the world's turn, endless the sun's Spinning, Endless the quest;
I turn again, back to my own beginning, And here, find rest.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Bruno Desthuilliers
David Zaret wrote:
> i have a dict with a particular key - the values for this key will be
> None, one valid scalar, or a list:
> 
> {mykey, None}
> {mykey, "foo"}
> {mykey, ["bar", "baz"]}
> 
> let's ignore the None case - in the case of the one or many values, i
> want to suck the values into a list.  here's one way to do this:
> 
> if mydict.has_key(mykey):
> vals=[]
> _v = mydict[mykey]
> if isinstance(_v, types.ListType):
> vals.extend(_v)
> else:
> vals.append(_v)
> #   now we can safely iterate through acts
> for val in vals:
> .
> 
> 
> my way is ugly.  what's a better way?

If you have control over the dict's creation and 'filling', you may want
to handle the case there - eventually using a custom dict-like object
that stores everything (but None) in lists. The implementation code for
this object will not be less ugly than the one above, but at least
ugliness will be hidden away !-)

Else, you can shorten the code a bit (NB : ignoring the 'None' case...):

  v = d[k]
  v = ([v], v)[isinstance(v, list)]

And this can be hidden away in a function:

def get_as_list(d, k):
  v = d[k]
  return ([v], v)[isinstance(v, list)]

vals = get_as_list(mydict, mykey)


I don't like using isinstance() tests too much, but it depends on the
context...

HTH

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Paul Rubin
Bruno Desthuilliers <[EMAIL PROTECTED]> writes:
> Too much useless lookup IMHO...

Actually, you, me, and Amit all mis-read David's original exapmle.
What he really wanted was (let's see if I get it right this time):

   if mykey in mydict:
  v = mydict[mykey]
  if not isinstance(v, list):
 v = [v]
  for val in v: ...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Bruno Desthuilliers
Amit Khemka wrote:
> On 7/31/06, David Zaret <[EMAIL PROTECTED]> wrote:
>> i have a dict with a particular key - the values for this key will be
>> None, one valid scalar, or a list:
>>
>> {mykey, None}
>> {mykey, "foo"}
>> {mykey, ["bar", "baz"]}
>>
>> let's ignore the None case - in the case of the one or many values, i
>> want to suck the values into a list.  here's one way to do this:
>>
>>  if mydict.has_key(mykey):
>>  vals=[]
>>  _v = mydict[mykey]
>>  if isinstance(_v, types.ListType):
>>  vals.extend(_v)
>>  else:
>>  vals.append(_v)
>>  #   now we can safely iterate through acts
>> for val in vals:
>> .
> 
> how about:
> 
> vals = []
> for val in mydict.values():
>   try: vals.extend(val)
>   except: vals.append(val)

>>> l = []
>>> l.extend((1, 2))
>>> l
[1, 2]
>>> l.extend('ab')
>>> l
[1, 2, 'a', 'b']
>>>


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows vs. Linux

2006-07-31 Thread jean-michel bain-cornu
Hi,
[EMAIL PROTECTED] a écrit :
> Is Windows
> an okay enviornment in which to program under Python, or do you
> recommend that I run a dual-boot of Linux or maybe a VMWare install to
> program under Python?

I'm used to practice windows & linux and it makes sense to use python on 
both because the compatibility is excellent. Take care to use os.sep as 
the file path separator if you plan to stay compatible.
My favorite os is linux, but on windows you have pythonwin which is an 
excellent python extension with a very good debugger. Also boa works 
fine on windows but have annoying bugs on linux.
Furthermore, python comes with linux (nothing to install) and not with 
windows (needs python install if you deploy on users pcs).
Regards,
jm
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How do you implement this Python idiom in C++

2006-07-31 Thread benben
You are heading the wrong way...

There are a number of ways to implement this but the easiest I can think 
of is to use RTTI.

To get around with counting sub-objects you can rely on virtual 
inheritance, which only happens at the top of the inheritance tree.

Here is a simple demo:

#include 
#include 
#include 

class count
{
   public:
 typedef std::map counts_t;
 static counts_t counts;

 const std::type_info* ti;

 static unsigned int get_count(const std::type_info& c)
 {return counts[&c];}

 count(const std::type_info& c):ti(&c){++counts[ti];}
 ~count(){--counts[ti];}
};

count::counts_t count::counts;

class c1: virtual private count
{
 public: c1(): count(typeid(c1)){}
};

class c2: public c1, virtual private count
{
 public: c2(): count(typeid(c2)){}
};

int main()
{
 c1 t1[3];
 c2 t2[5];

 std::cout << count::get_count(typeid(c1)) << "\n";
   << count::get_count(typeid(c2)) << "\n";

 return 0;
}
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread David Zaret
thanks for the many responses.

i have zero control over the dict.  in practice, i'm using turbogears 
which is "automatically" populating the result dict with zero-to-many 
choices from a generated list of HTML checkboxes.  the user can select 
none, one, or many, and submit.  cherrypy packs the **kwargs arg full of 
the selection, as i described in my op.

using a try/exception case to switch between append and extend will not 
work.  the scalar, coming back as a string, can certainly be iterated 
and i'll end up with a bunch of characters in my list.

i like what's posted below - that's more compact - and at least closer 
to what i was looking for.

thanks again, great newsgroup.

 dz




Bruno Desthuilliers wrote:
> David Zaret wrote:
>> i have a dict with a particular key - the values for this key will be
>> None, one valid scalar, or a list:
>>
>> {mykey, None}
>> {mykey, "foo"}
>> {mykey, ["bar", "baz"]}
>>
>> let's ignore the None case - in the case of the one or many values, i
>> want to suck the values into a list.  here's one way to do this:
>>
>> if mydict.has_key(mykey):
>> vals=[]
>> _v = mydict[mykey]
>> if isinstance(_v, types.ListType):
>> vals.extend(_v)
>> else:
>> vals.append(_v)
>> #   now we can safely iterate through acts
>> for val in vals:
>> .
>>
>>
>> my way is ugly.  what's a better way?
> 
> If you have control over the dict's creation and 'filling', you may want
> to handle the case there - eventually using a custom dict-like object
> that stores everything (but None) in lists. The implementation code for
> this object will not be less ugly than the one above, but at least
> ugliness will be hidden away !-)
> 
> Else, you can shorten the code a bit (NB : ignoring the 'None' case...):
> 
>   v = d[k]
>   v = ([v], v)[isinstance(v, list)]
> 
> And this can be hidden away in a function:
> 
> def get_as_list(d, k):
>   v = d[k]
>   return ([v], v)[isinstance(v, list)]
> 
> vals = get_as_list(mydict, mykey)
> 
> 
> I don't like using isinstance() tests too much, but it depends on the
> context...
> 
> HTH
> 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Bruno Desthuilliers
Paul Rubin wrote:
> Bruno Desthuilliers <[EMAIL PROTECTED]> writes:
>> Too much useless lookup IMHO...
> 
> Actually, you, me, and Amit all mis-read David's original exapmle.

Actually, I plea not guilty - cf my answer to the OP !-)

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to safely extract dict values

2006-07-31 Thread Bruno Desthuilliers
David Zaret wrote:
> thanks for the many responses.
> 
> i have zero control over the dict.  in practice, i'm using turbogears
> which is "automatically" populating the result dict with zero-to-many
> choices from a generated list of HTML checkboxes.  the user can select
> none, one, or many, and submit.  cherrypy packs the **kwargs arg full of
> the selection, as i described in my op.

Are you sure you get mydict[mykey]==None if the user doesn't check any
of the checkboxes ? According to html specs, the form's dataset
shouldn't  have the key at all in this case.

> using a try/exception case to switch between append and extend will not
> work.  

Nope.

> the scalar, coming back as a string, can certainly be iterated
> and i'll end up with a bunch of characters in my list.

Yes.

> i like what's posted below 

Thanks - and BTW, please, don't top-post...

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Windows vs. Linux

2006-07-31 Thread Andy Dingley
[EMAIL PROTECTED] wrote:

> Is Windows
> an okay enviornment in which to program under Python, or do you
> recommend that I run a dual-boot of Linux or maybe a VMWare install to
> program under Python?

Python is one of the best languages I've found for
platform-independence - significantly better than Perl.  Right now I'm
coding Python that runs happily under Redhat, Windows /Cygwin and
Windows native. It also integrates closely with command line tools like
subversion, including piping their output into Python-based XML
parsers. This really wouldn't be easy with Perl.

Find yourself an editor that's pretty similar under both Unix and
Windows. jEdit is a good place to start.

You might also like to look at running Cygwin under Windows. It's a
Unix-like command shell that provides nearly every command-line Unix
tool you could want on a Windows box. Can be a little awkward at times,
but it's a huge advantage over raw Windows.

I'd never recommend dual-boot for anything!
Hardware is cheap, time and trouble is expensive.

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


Re: how to safely extract dict values

2006-07-31 Thread Amit Khemka
oops ! my mistake :-D

On 7/31/06, Bruno Desthuilliers <[EMAIL PROTECTED]> wrote:
> Amit Khemka wrote:
> > how about:
> >
> > vals = []
> > for val in mydict.values():
> >   try: vals.extend(val)
> >   except: vals.append(val)
>
> >>> l = []
> >>> l.extend((1, 2))
> >>> l
> [1, 2]
> >>> l.extend('ab')
> >>> l
> [1, 2, 'a', 'b']

Oops, my mistake ... jumped in too quickly !

cheers,
-- 

Amit Khemka -- onyomo.com
Home Page: www.cse.iitd.ernet.in/~csd00377
Endless the world's turn, endless the sun's Spinning, Endless the quest;
I turn again, back to my own beginning, And here, find rest.
-- 
http://mail.python.org/mailman/listinfo/python-list


to automate an interactive shell

2006-07-31 Thread Murugesh
Hi all,

I'm a newbie and would like to how python is efficient in automating an 
interative shell(I have a CLI executable which interatcs with the user).
Any starters would be greatly appreciated.

Thanks,
Murugesh

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


Re: Windows vs. Linux

2006-07-31 Thread jean-michel bain-cornu
Andy Dingley a écrit :
> I'd never recommend dual-boot for anything!
Don't agree man, it's good for testing...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: non-blocking PIPE read on Windows

2006-07-31 Thread Durumdara
Hi !A new version with binary data handling. 103 seconds with 1000 data exchange.import os, sys, time, binascii, cPicklebpath,bname=os.path.split(sys.argv[0])def Log(Msg,IsMaster,First=False):
    fn=sys.argv[0]+'.'+['c','m'][int(IsMaster)]+'.log'    mode='aw'[int(First)]    f=open(fn,mode)    f.write('\n%s:\n'%time.time())    f.write('%s\n'%Msg)    f.flush()    f.close()def ReadTextPacket(SourceStream):
    packet=SourceStream.read(6)    psize=int(packet)    packet=SourceStream.read(psize)    return packetdef WriteTextPacket(DestStream,Packet):    Packet=str(Packet)    DestStream.write('%06d'%len(Packet))
    DestStream.write(Packet)    DestStream.flush()    import base64def PackObj(Obj):    pckpacket=cPickle.dumps(Obj)    enstr=base64.encodestring(pckpacket)    return enstrdef UnpackObj(Packet):
    pckpacket=base64.decodestring(Packet)    obj=cPickle.loads(pckpacket)    return obj#s=PackObj([1,None,'A']*10)#print s#print UnpackObj(s)#sys.exit()def ReadBinPacket(SourceStream):
    txtpacket=ReadTextPacket(SourceStream)    obj=UnpackObj(txtpacket)    return objdef WriteBinPacket(DestStream,Obj):    txtpacket=PackObj(Obj)    WriteTextPacket(DestStream,txtpacket)
if 'C' in sys.argv:    Log('Client started',0,1)    try:    while 1:    #Log('Waiting for packet',0,0)    data="">    #Log('Packet received',0,0)
    #Log('The packet is: %s'%([data]),0,0)    #Log('Print the result',0,0)    WriteBinPacket(sys.stdout,"Master wrote: %s"%([data]))    if str(data).strip()=='quit':
    Log('Quit packet received',0,0)    break    except Exception,E:    Log(str(E),0,0)    Log('Client finished',0,0)else:    Log('Master started',1,1)    try:
    Log('Start subprocess',1,0)    import time    st=time.time()    child_stdin,child_stdout=os.popen2(r'c:\python24\python.exe %s C'%(bname))    for i in range(1000):    #Log('Send packet',1,0)
    WriteBinPacket(child_stdin,['Alma'*100,i])    #Log('Waiting for packet',1,0)    s=ReadBinPacket(child_stdout)    #Log('Packet is: %s'%([s]),1,0)    #Log('Print packet',1,0)
    #print "Client's answer",[s]    import time    time.sleep(0.1)    #Log('Send packet',1,0)    WriteBinPacket(child_stdin,'quit')    #Log('Waiting for packet',1,0)
    s=ReadBinPacket(child_stdout)    #Log('Packet is: %s'%([s]),1,0)    #Log('Print packet',1,0)    #print "Client's answer",[s]    Log('Master finished',1,0)    except Exception,E:
    Log(str(E),1,0)    print time.time()-stdd
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: ANN: pywinauto 3.6 released

2006-07-31 Thread david_wahler
I'll be out of the office until approximately August 20th. If you have any 
questions, please email [EMAIL PROTECTED]

-- David Wahler


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


Nuther problem with 'dive into Python'

2006-07-31 Thread Ben Edwards
Am going through Chapter 9 - HTTP Web Services in dive into Python.  It
uses the following:

data = urllib.urlopen('http://diveintomark.org/xml/atom.xml').read()

The page no longer exists, can anyone recommend an alternative page to
use?

Ben



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


Another problem with 'Dive Into Python'

2006-07-31 Thread Ben Edwards (lists)
Am going through Chapter 9 - HTTP Web Services in dive into Python.  It
uses the following:

data = urllib.urlopen('http://diveintomark.org/xml/atom.xml').read()

The page no longer exists, can anyone recommend an alternative page to
use?

Ben



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


gaierror: (8, 'hostname nor servname provided, or not known')

2006-07-31 Thread Laszlo Nagy

  Hello,

I asked this question about a week ago, but I did not provide a 
traceback. Here is the traceback:

  File "/usr/local/lib/python2.4/xmlrpclib.py", line 1096, in __call__
return self.__send(self.__name, args)
  File "/usr/local/lib/python2.4/xmlrpclib.py", line 1383, in __request
verbose=self.__verbose
  File "/usr/local/lib/python2.4/xmlrpclib.py", line 1129, in request
self.send_content(h, request_body)
  File "/usr/local/lib/python2.4/xmlrpclib.py", line 1243, in send_content
connection.endheaders()
  File "/usr/local/lib/python2.4/httplib.py", line 798, in endheaders
self._send_output()
  File "/usr/local/lib/python2.4/httplib.py", line 679, in _send_output
self.send(msg)
  File "/usr/local/lib/python2.4/httplib.py", line 646, in send
self.connect()
  File "/usr/local/lib/python2.4/httplib.py", line 1072, in connect
sock.connect((self.host, self.port))
  File "", line 1, in connect
gaierror: (8, 'hostname nor servname provided, or not known')

The program is connecting to the same host about 2 times per minute. 
After running for one or two hours, it raises this exception. Once it 
raised this exception, it keeps raising in. (My program is trying to 
connect but it cannot.) Then I restart my program and it works for 
anoter hour or two. I tried the same program on different machines and 
different operating system, but the error is always the same. Please 
help me identify the problem.

Thanks,

   Laszlo

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


Re: Windows vs. Linux

2006-07-31 Thread metaperl

Andy Dingley wrote:

>
> Python is one of the best languages I've found for
> platform-independence - significantly better than Perl.

The reason I'm going with vmware is because I'm afraid that I will need
to compile a C portiion of a Python module and that will not be a
pretty picture under Windows... true or false?

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


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
Paul Rubin wrote:

> Philippe Martin <[EMAIL PROTECTED]> writes:
>> > Why are you avoiding naming the chip and its compiler?
>> 
>> I must disagree on that one: There are many threads on this site where
>> people just have fun talking algorithm. I'm not an algo. expert and I
>> know there are many here.
> 
> This is just like the very common situation here and on sci.crypt,
> where a person has a programming or algorithm question and gets asked
> what the application is, and when they answer, it turns out that what
> they need is not anything like what they thought they needed.
> 
>> on one device, the processor in an 8-bit arm and the X-compiler is made
>> by epson
>> 
>> on the other device, the processor is unknown to me and the environment
>> is a subset of java made for smartcards called javacard.
> 
>  You mean ARM?? There is no such thing as an 8-bit ARM; they are
> 32-bit cpu's that (in some models) support a 16-bit instruction
> format.
> 
> Javacard is an interpreter that runs in many 8-bit processors.  The
> interpreter supports 32-bit arithmetic.

I checked the processor and it is an EPSON 8 bit (SC88 I think).

If you check the javacard specs, you'll see that not all VM support 32 bits.

Regards,
Philipped


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


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
John Machin wrote:

> 
> Philippe Martin wrote:
> 
>> >> 3. How does the device manage to compute the 8-decimal-digit number
>> >> that is your input??
>>
>> What device manager ? think about it before being rude
>>
> 
> No device manager [noun] was mentioned. You may have inferred rudeness
> where astonishment was being implied. I'll try again:
> 
> How does the [8-bit] device manage [verb, as in "how is it able"] to
> compute the [32-bit] 8-decimal-digit number that is [split up one
> decimal digit per array element thus becoming] your input??

I get keystrokes from the device keyboard and append to the array as needed.

I actually need numbers much larger than 32 bits.

Regards,

Philippe


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


Multiple Telnet sessions through one script

2006-07-31 Thread vmalhotra
Hi

I am new in python scripting. I want to open a Multiple telnet session
through once script. In other way i can tell i want to open two linux
consoles through one script.

I wrote one script, but the issue is I am not able to open multiple
consoles. The Scripts which i wrote is as follows:

import pexpect
session = pexpect.spawn("telnet localhost 2601\n")
session.expect("Password: ")
session.send("XYZ\n\n")
session.expect("Router1> ")
session1 = pexpect.spawn("telnet localhost 2604\n")
session1.expect("Password: ")
session1.send("ABCD\n\n")
session1.expect("ospfd> ")
#session1.interact()
session1.interact()

output :
ospf>

But in this case, i want in one console router one can open and on
other console ospf should open. But this i want to do is through one
script only.

Regds
Vik

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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Gerhard Fiedler
On 2006-07-29 01:07:12, Tim Roberts wrote:

> Vincent Delporte <[EMAIL PROTECTED]> wrote:
>>
>>BTW, what is the advantage of running a CherryPy/Django server instead
>>of the regular way of code in pages? Improved performance because the
>>Python interpreter is already up and running?
> 
> Exactly.  The Python interpreter can take a significant fraction of a
> second to start.  For the typical short web request, the overhead can add
> up.

Is this start-up overhead the same thing for PHP? Or is this handled
differently there?

Gerhard

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


Re: Windows vs. Linux

2006-07-31 Thread William Witteman
On Mon, Jul 31, 2006 at 04:30:50AM -0700, Andy Dingley wrote:
>[EMAIL PROTECTED] wrote:
>
>> Is Windows
>> an okay enviornment in which to program under Python, or do you
>> recommend that I run a dual-boot of Linux or maybe a VMWare install
>> to
>> program under Python?
>
>Python is one of the best languages I've found for
>platform-independence - significantly better than Perl.  Right now I'm
>coding Python that runs happily under Redhat, Windows /Cygwin and
>Windows native. It also integrates closely with command line tools like
>subversion, including piping their output into Python-based XML
>parsers. This really wouldn't be easy with Perl.

No, it's easy with Perl too - but this is a Python list, so use Python
:-)

>Find yourself an editor that's pretty similar under both Unix and
>Windows. jEdit is a good place to start.

This is very good advice.  I would recommend vim or emacs (mostly vim,
but I don't wish to start a holy war) as the text-editing power tools of
choice, but you should find something that suits your style.  This list
can probably provide some guidance there, too.

>You might also like to look at running Cygwin under Windows. It's a
>Unix-like command shell that provides nearly every command-line Unix
>tool you could want on a Windows box. Can be a little awkward at times,
>but it's a huge advantage over raw Windows.

Ditto.
--

yours,

William
woolgathering.cx
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
John Machin wrote:

> Philippe Martin wrote:
> 
>>
>> Yes I had arm in mind (for some reason) while it is the Smc8831
>>
(http://www.google.com/url?sa=U&start=1&q=http://www.epsondevice.com/www/PDFS/epdoc_ic.nsf/5388db40b5eee4f949256a9c001d589f/944b73008b0bad33492570a00015d6ba/%24FILE/S5U1C88000C_2Ev3.pdf&e=9797)
> 
> That appears to be volume 2 of the 2-volume set of manuals that come
> with the tools package. It says that vol 1 has details about the C
> compiler.
> 
> This appears to be volume 1:
>
http://www.epsondevice.com/www/PDFS/epdoc_ic.nsf/5388db40b5eee4f949256a9c001d589f/1410881ddee374f7492570a00015d65e/$FILE/C88000C_1Ev3.pdf
> 
> Section 1.2.3 Data Types mentions unsigned and signed long (32-bit)
> data types. There are several references to "long" later, including
> declarations in sample C code, and details of how long (32-bit)
> function args are passed.
> 
> There appears to be a fundamental disconnection here somewhere ...

Just trust me John, I do not have access to 32 bit ints/longs.

Regards,

Philippe

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


getting debug from urllib2

2006-07-31 Thread Ben Edwards
Have been experimenting with HTTP stuff in python 2.4 and am having a
problem getting debug info. If I use utllib.utlopen I get debug but if I
user utllib2 I do not.  Below is the probram and the output I am
getting.

Any insight?
Ben

* Code *

import urllib, urllib2, httplib

url = 'http://www.mozillazine.org/atom.xml'
httplib.HTTPConnection.debuglevel = 1

print "urllib"

data = urllib.urlopen(url);

print "urllib2"

request = urllib2.Request(url)
opener = urllib2.build_opener()
feeddata = opener.open(request).read()

print "End\n"

* Output *

urllib
connect: (www.mozillazine.org, 80)
send: 'GET /atom.xml HTTP/1.0\r\nHost: www.mozillazine.org\r
\nUser-agent: Python-urllib/1.16\r\n\r\n'
reply: 'HTTP/1.0 200 OK\r\n'
header: Date: Mon, 31 Jul 2006 13:43:11 GMT
header: Server: Apache/2.0.55 (Gentoo) PHP/4.4.0-pl1-gentoo
header: Last-Modified: Thu, 27 Jul 2006 18:05:52 GMT
header: ETag: "20a1b4-6bcf-be12000"
header: Accept-Ranges: bytes
header: Content-Length: 27599
header: Content-Type: application/xml
header: Age: 5
header: X-Cache: HIT from mz5.mz.osuosl.org
header: X-Cache-Lookup: HIT from mz5.mz.osuosl.org:80
header: Connection: close
urllib2
End



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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Ben Sizer
Gerhard Fiedler wrote:
> On 2006-07-29 01:07:12, Tim Roberts wrote:
>
> > Vincent Delporte <[EMAIL PROTECTED]> wrote:
> >>
> >>BTW, what is the advantage of running a CherryPy/Django server instead
> >>of the regular way of code in pages? Improved performance because the
> >>Python interpreter is already up and running?
> >
> > Exactly.  The Python interpreter can take a significant fraction of a
> > second to start.  For the typical short web request, the overhead can add
> > up.
>
> Is this start-up overhead the same thing for PHP? Or is this handled
> differently there?

Typically you run PHP as a module in your webserver, so there should be
no process startup overhead. mod_python provides the same sort of
functionality for Python, but is not as popular or widely installed as
the PHP Apache module.

-- 
Ben Sizer

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


Re: BCD List to HEX List

2006-07-31 Thread Paul Rubin
Philippe Martin <[EMAIL PROTECTED]> writes:
> I actually need numbers much larger than 32 bits.

What is the max size hex number you need?  What is the application if
you don't mind my asking?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Fastest Way To Loop Through Every Pixel

2006-07-31 Thread Paul McGuire
"Chaos" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
>
> Paul McGuire wrote:
> > "Paul McGuire" <[EMAIL PROTECTED]> wrote in message
> > news:[EMAIL PROTECTED]
> > > "Chaos" <[EMAIL PROTECTED]> wrote in message
> > > news:[EMAIL PROTECTED]
> > > >
> > > >
> > > > myCol = (0.3 * image.GetRed(thisX, thisY)) + (0.59 *
> > > > image.GetGreen(thisX, thisY)) + (0.11 * image.GetBlue(thisX, thisY))
> > > > if myCol < darkestCol:
> > > >darkestCol = myCol
> > > >possX = thisX
> > > >possY = thisY
> > > >
> > >
> > > Psyco may be of some help to you, especially if you extract out your
myCol
> > > expression into its own function, something like:
> > >
> > > def darkness(img,x,y):
> > > return  (0.3 * img.GetRed(x,y)) + (0.59 * img.GetGreen(x,y)) +
(0.11 *
> > > img.GetBlue(x,y))
> > >
> > 
> >
> > Even better than my other suggestions might be to write this function,
and
> > then wrap it in a memoizing decorator
> >
(http://wiki.python.org/moin/PythonDecoratorLibrary#head-11870a08b0fa59a8622
> > 201abfac735ea47ffade5) - surely there must be some repeated colors in
your
> > image.
> >
> > -- Paul
>
> Its not only finding the darkest color, but also finding the X position
> and Y Position of the darkest color.
>

Sorry, you are correct.  To take advantage of memoizing, the darkness method
would have to work with the r, g, and b values, not the x's and y's.

-- Paul


import psyco
psyco.full()

IMAGE_WIDTH = 200
IMAGE_HEIGHT = 200
imgColRange = range(IMAGE_WIDTH)
imgRowRange = range(IMAGE_HEIGHT)

@memoize# copy memoize from
http://wiki.python.org/moin/PythonDecoratorLibrary, or similar
def darkness(r,g,b):
return 0.3*r + 0.59*g + 0.11*b

def getDarkestPixel(image):
getR = image.GetRed
getG = image.GetGreen
getB = image.GetBlue

darkest = darkness( getR(0,0), getG(0,0), getB(0,0) )
# or with PIL, could do
# darkest = darkness( *getpixel(0,0) )
dkX = 0
dkY = 0
for r in imgRowRange:
for c in imgColRange:
dk = darkness( getRed(r,c), getGrn(r,c), getBlu(r,c) )
if dk < darkest:
darkest = dk
dkX = c
dkY = r
return dkX, dkY



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


Re: Windows vs. Linux

2006-07-31 Thread Duncan Booth
metaperl wrote:
> The reason I'm going with vmware is because I'm afraid that I will need
> to compile a C portiion of a Python module and that will not be a
> pretty picture under Windows... true or false?
> 
Provided you have the correct compilers installed it is no harder compiling 
C extensions under Windows than under Linux. The problem is getting the 
correct toolchain installed. You could try the instructions in section A of 
http://wiki.python.org/moin/PyrexOnWindows

You only need to follow section B of that document if you want to use 
Pyrex, but if you are planning on writing C extensions I strongly recommend 
using Pyrex. Also, these days, you can use ctypes for many cases where you 
used to have to compile a C extension.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Fastest Way To Loop Through Every Pixel

2006-07-31 Thread nikie
Paul McGuire wrote:

> "Chaos" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> >
> > Paul McGuire wrote:
> > > "Paul McGuire" <[EMAIL PROTECTED]> wrote in message
> > > news:[EMAIL PROTECTED]
> > > > "Chaos" <[EMAIL PROTECTED]> wrote in message
> > > > news:[EMAIL PROTECTED]
> > > > >
> > > > >
> > > > > myCol = (0.3 * image.GetRed(thisX, thisY)) + (0.59 *
> > > > > image.GetGreen(thisX, thisY)) + (0.11 * image.GetBlue(thisX, thisY))
> > > > > if myCol < darkestCol:
> > > > >darkestCol = myCol
> > > > >possX = thisX
> > > > >possY = thisY
> > > > >
> > > >
> > > > Psyco may be of some help to you, especially if you extract out your
> myCol
> > > > expression into its own function, something like:
> > > >
> > > > def darkness(img,x,y):
> > > > return  (0.3 * img.GetRed(x,y)) + (0.59 * img.GetGreen(x,y)) +
> (0.11 *
> > > > img.GetBlue(x,y))
> > > >
> > > 
> > >
> > > Even better than my other suggestions might be to write this function,
> and
> > > then wrap it in a memoizing decorator
> > >
> (http://wiki.python.org/moin/PythonDecoratorLibrary#head-11870a08b0fa59a8622
> > > 201abfac735ea47ffade5) - surely there must be some repeated colors in
> your
> > > image.
> > >
> > > -- Paul
> >
> > Its not only finding the darkest color, but also finding the X position
> > and Y Position of the darkest color.
> >
>
> Sorry, you are correct.  To take advantage of memoizing, the darkness method
> would have to work with the r, g, and b values, not the x's and y's.
>
> -- Paul
>
>
> import psyco
> psyco.full()
>
> IMAGE_WIDTH = 200
> IMAGE_HEIGHT = 200
> imgColRange = range(IMAGE_WIDTH)
> imgRowRange = range(IMAGE_HEIGHT)
>
> @memoize# copy memoize from
> http://wiki.python.org/moin/PythonDecoratorLibrary, or similar
> def darkness(r,g,b):
> return 0.3*r + 0.59*g + 0.11*b
>
> def getDarkestPixel(image):
> getR = image.GetRed
> getG = image.GetGreen
> getB = image.GetBlue
>
> darkest = darkness( getR(0,0), getG(0,0), getB(0,0) )
> # or with PIL, could do
> # darkest = darkness( *getpixel(0,0) )
> dkX = 0
> dkY = 0
> for r in imgRowRange:
> for c in imgColRange:
> dk = darkness( getRed(r,c), getGrn(r,c), getBlu(r,c) )
> if dk < darkest:
> darkest = dk
> dkX = c
> dkY = r
> return dkX, dkY

>From my experiences with Psyco/PIL, it's probably faster to move the
image data into lists first (using list(Image.getdata) or
list(image.getband)) and access the raw data in your loop(s). Don't use
Image.getpixel in a tight loop, they result in Python-to-C-Calls which
can't be optimized by Psyco. Even when you're not using Psyco, getpixel
is probably slower (at least the PIL docs say so: "Note that this
method is rather slow; if you need to process larger parts of an image
from Python, use the getdata method.")

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


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
Paul Rubin wrote:

> Philippe Martin <[EMAIL PROTECTED]> writes:
>> I actually need numbers much larger than 32 bits.
> 
> What is the max size hex number you need?  What is the application if
> you don't mind my asking?

Well I am under NDA so I cannot tell you what the application is - I need
numbers (dec) with up to 24 digits.

As I said, I went the other way - more data on the line (from dev 1 to dev
2) - but I feel there is no speed issue at this stage.

Seems to work.


Regards,

Philippe



 PYTHON **
l2 = [1,2,3,4]
l1 = [0,2,5,9]


def sup (l1, l2): #assume same length
for i in range(len(l1) ):
if l1[i] > l2[i]:
return 1
if l1[i] < l2[i]:
return -1
return 0



def add (l1, l2): #assume same length
r = []
idx =  range (len(l1))
idx.reverse()
carry = 0
for i in idx:

if l1[i] + l2[i] > 10:
carry = 1
r.insert(0,(l1[i] + l2[i]) % 10)
else:
r.insert(0,l1[i] + l2[i] + carry)
carry = 0
return r



def sub (l1,l2): #assume same length - sub l1 from l2
r = []
idx =  range (len(l1))
idx.reverse()
carry = 0
for i in idx:
print l1[i] + carry, l2[i]
if ((l2[i]) - (l1[i]+carry) < 0) :
print 'CARRY'
r.insert(0,(((10 + l2[i])  - (l1[i]+carry
carry = 1
else:
r.insert(0,(l2[i]) - (l1[i]+ carry))
carry = 0
return r


print sub (l1,l2)

* AND AM JUST TESTING IT IN JAVACARD **


   
//
public byte CmpD(byte[] p_op1, byte[] p_op2,  byte p_len) {
byte l_count = (byte)0;
for (; l_count < p_len; l_count += 1) {
short C = (short)(p_op1[l_count]);
short D = (short)(p_op2[l_count]);

if (C > D) return 1;
if (C < D) return -1;
}

return 0;

}

//
public static void SubD(byte[] p_op1, byte[] p_op2, byte[] p_dest, byte
p_len) {
byte l_count = (byte)0;
byte l_carry = (byte)0;
for (l_count = (byte)(p_len - (byte)1); l_count >= (byte)0; l_count
-= (byte)1) {
if ((p_op2[l_count] - (byte)(p_op1[l_count]+l_carry) ) < 0) {
p_dest[l_count] = (byte)(  ((byte)10 + p_op2[l_count]) -
(byte)(p_op1[l_count] + l_carry)) ;
l_carry = (byte)1;
}
else {
p_dest[l_count] = (byte)(  p_op2[l_count] - (byte)(p_op
[l_count] + l_carry)) ;
l_carry = -(byte)0;
}
}

}

//
public static void AddD(byte[] p_op1, byte[] p_op2, byte[] p_dest, byte
p_len) {
byte l_count = (byte)0;
byte l_carry = (byte)0;
for (l_count = (byte)(p_len - (byte)1); l_count >= (byte)0; l_count
-= (byte)1) {
if (p_op2[l_count] + (byte)(p_op1[l_count]) > 10) {
p_dest[l_count] = (byte)( ( p_op2[l_count] + p_op
[l_count] )% 10) ;
l_carry = (byte)1;
}
else {
p_dest[l_count] = (byte)(  p_op2[l_count] + p_op1[l_count] +
l_carry) ;
l_carry = -(byte)0;
}
}

}   








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


Re: Fastest Way To Loop Through Every Pixel

2006-07-31 Thread Fredrik Lundh
Chaos wrote:

> I have tried PIL. Not only that, but the Image.eval function had no
> success either. I did some tests and I found out that Image.eval only
> called the function a certain number of times either 250, or 255.
> Unless I can find a working example for this function, its impossible
> to use.

you might have better success by asking questions about the problem 
you're trying to solve, rather than about some artifact of your first 
attempt to solve it...

the following PIL snippet locates the darkest pixel in an image in about 
0.5 milliseconds for a 200x200 RGB image, on my machine:

 im = im.convert("L") # convert to grayscale
 lo, hi = im.getextrema() # find darkest pixel value
 lo = im.point(lambda x: x == lo) # highlight darkest pixel value
 x, y, _, _ = lo.getbbox() # locate uppermost/leftmost dark pixel



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


Re: BCD List to HEX List

2006-07-31 Thread Paul Rubin
Philippe Martin <[EMAIL PROTECTED]> writes:
> Well I am under NDA so I cannot tell you what the application is - I need
> numbers (dec) with up to 24 digits.

You actually need to represent numbers up to 10**24??

> As I said, I went the other way - more data on the line (from dev 1 to dev
> 2) - but I feel there is no speed issue at this stage.

What are your memory constraints?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
Paul Rubin wrote:

> Philippe Martin <[EMAIL PROTECTED]> writes:
>> Well I am under NDA so I cannot tell you what the application is - I need
>> numbers (dec) with up to 24 digits.
> 
> You actually need to represent numbers up to 10**24??
> 
>> As I said, I went the other way - more data on the line (from dev 1 to
>> dev 2) - but I feel there is no speed issue at this stage.
> 
> What are your memory constraints?

On device #1 no constraint for my purpose. On the smartcard, the tradeoff is
between using EEPROM (plenty + slow + small life expectancy) for temp
variables versus RAM (very little) ... but I do not think it is an issue
eather in my case. Speed is what worries me most (crypto takes time).

But so far so good.

Regards,

Philippe

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


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
Paul Rubin wrote:

> Philippe Martin <[EMAIL PROTECTED]> writes:
>> Well I am under NDA so I cannot tell you what the application is - I need
>> numbers (dec) with up to 24 digits.
> 
> You actually need to represent numbers up to 10**24??
> 
>> As I said, I went the other way - more data on the line (from dev 1 to
>> dev 2) - but I feel there is no speed issue at this stage.
> 
> What are your memory constraints?
PS: in smart cards, you count RAM in hundreds of bytes and EEPROM in
K-bytes.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: BCD List to HEX List

2006-07-31 Thread Paul Rubin
Philippe Martin <[EMAIL PROTECTED]> writes:
> On device #1 no constraint for my purpose. On the smartcard, the tradeoff is
> between using EEPROM (plenty + slow + small life expectancy) for temp
> variables versus RAM (very little) ... but I do not think it is an issue
> eather in my case. Speed is what worries me most (crypto takes time).

You should not have to do this decimal-hex conversion repeatedly in a
crypto operation.  Do you have a public-key accelerator (or MAC unit)
on that cpu?  Do you really care about speed?  I had thought up a cute
O(n**3) scheme that might have been ok for 8 digits but probably not
for 24.
-- 
http://mail.python.org/mailman/listinfo/python-list


poll() on OSX 10.3.9

2006-07-31 Thread Norman Khine
Hello,
I need to use the 'select' module in python, but get an error on the:

Python 2.5b2 (r25b2:50512, Jul 31 2006, 15:01:51)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1640)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import select
>>> dir(select)
['__doc__', '__file__', '__name__', 'error', 'select']
>>>


this works fine on BSD4

Python 2.5b2 (r25b2:50512, Jul 31 2006, 12:43:17)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
>>> import itools
>>> from select import POLLIN
>>> import select
>>> dir(select)
['POLLERR', 'POLLHUP', 'POLLIN', 'POLLNVAL', 'POLLOUT', 'POLLPRI',
'POLLRDBAND', 'POLLRDNORM', 'POLLWRBAND', 'POLLWRNORM', '__doc__',
'__file__', '__name__', 'error', 'poll', 'select']

is there anything specific to do to the python installation before
compiling.

i am using the itools library from http://www.ikaaro.org/itools which
uses this python module

thanks

--
Norman Khine

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


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
Paul Rubin wrote:

> Philippe Martin <[EMAIL PROTECTED]> writes:
>> On device #1 no constraint for my purpose. On the smartcard, the tradeoff
>> is between using EEPROM (plenty + slow + small life expectancy) for temp
>> variables versus RAM (very little) ... but I do not think it is an issue
>> eather in my case. Speed is what worries me most (crypto takes time).
> 
> You should not have to do this decimal-hex conversion repeatedly in a
> crypto operation.  Do you have a public-key accelerator (or MAC unit)
> on that cpu?  Do you really care about speed?  I had thought up a cute
> O(n**3) scheme that might have been ok for 8 digits but probably not
> for 24.

I did not explain myself correctly, the "decimal" operations are done in
"clear mode" as they are made within the cards which by definition cannot
be broken, requests and results that go to/from the devices are
encrypted/signed with diversified keys ... but that another story ;-)

Regards,

Philippe

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


trouble understanding super()

2006-07-31 Thread John Salerno
Here's some code from Python in a Nutshell. The comments are lines from 
a previous example that the calls to super replace in the new example:

class A(object):
 def met(self):
 print 'A.met'

class B(A):
 def met(self):
 print 'B.met'
 # A.met(self)
 super(B, self).met()

class C(A):
 def met(self):
 print 'C.met'
 # A.met(self)
 super(C, self).met()

class D(B, C):
 def met(self):
 print 'D.met'
 # B.met()
 # C.met()
 super(D, self).met()

Then you call D().met()

Now, I understand that the commented code would cause A.met to be called 
twice. But why does the second version (with super) not also do this? I 
guess my problem lies in not understanding exactly what the super 
function returns.

super(D, self).met() seems like it would return something that has to do 
with both B and C, which each in turn return a superobject having to do 
with A, so why isn't A.met called twice still?

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


Re: Multiple Telnet sessions through one script

2006-07-31 Thread Carl J. Van Arsdall
Well, although you spawn seperate telnet processes there is still only 
one thread of control in your pythons script.  If you need to do two 
things simultaneously you'll need to setup a parallel control 
mechanism.  For example you could use python threads, each thread spawns 
a separate telnet and controls it accordingly.  Similarly, you could 
fork off other python scripts that control each telnet session.

Alright, so that's for controlling two telnets at once.  I think you'll 
have another problem, and that's controlling each telnet session 
manually. To do this I think you'll need to setup an interface that 
provides the two consoles you are after.  I'm not exactly sure the best 
way to do that.  One thought I have is if you used one of the various 
GUI toolkits you could have your app open a window that is seperated 
into two consoles.  Each thread could be bound to one of these consoles 
and you could switch between the two by clicking on one side versus the 
other.  Although if you want to do it all in a shell, or have your 
program open multiple shells I'm not sure how to do that, you might 
check google.  I suppose if you were doing things from a single shell 
and wanted to do thing similar to the GUI toolkit I described earlier, 
you could try something like ncurses. 

I guess I have one final idea, you could use a single shell, buffer 
output from each telnet session and have your main control loop give you 
the ability to switch back and forth between the two sessions. 

Anyhow, hope those ideas help you out a little.

vmalhotra wrote:
> Hi
>
> I am new in python scripting. I want to open a Multiple telnet session
> through once script. In other way i can tell i want to open two linux
> consoles through one script.
>
> I wrote one script, but the issue is I am not able to open multiple
> consoles. The Scripts which i wrote is as follows:
>
> import pexpect
> session = pexpect.spawn("telnet localhost 2601\n")
> session.expect("Password: ")
> session.send("XYZ\n\n")
> session.expect("Router1> ")
> session1 = pexpect.spawn("telnet localhost 2604\n")
> session1.expect("Password: ")
> session1.send("ABCD\n\n")
> session1.expect("ospfd> ")
> #session1.interact()
> session1.interact()
>
> output :
> ospf>
>
> But in this case, i want in one console router one can open and on
> other console ospf should open. But this i want to do is through one
> script only.
>
> Regds
> Vik
>
>   


-- 

Carl J. Van Arsdall
[EMAIL PROTECTED]
Build and Release
MontaVista Software

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


FTP (ftplib) output capture

2006-07-31 Thread ChaosKCW
Hi

Has anyone caputerd the output from the std ftp lib? It seems a bit
annoying that everything is printed to stdout. It means incorporating
this into any real program is a problem. It would have been much better
if they used the std logging module and hooked up a console logger for
the feault ftp application. Alas it isnt that way.

Capturing stdout like this??? :

import sys

sys.stdout = open('bb', 'w)

But I want to re-route it to the logging module not a file , so do I
need to write a steam object? 

Thanks,

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


Using Python for my web site

2006-07-31 Thread northband
Hi, I am interested in re-writing my website in Python vs PHP but have
a few questions. Here are my specs, please advise as to which
configuration would be best:

1.Dell Poweredge Server, w/IIS, currently Windows but considering
FreeBSD
2. Site consists of result pages for auctions and items for sale (100
per page)
3. MySQL (Dell Poweredge w/AMD) database server connected to my web
server
4. Traffic, 30 million page loads/month

I am trying to have the fastest page loads, averaging 100 items per
result page.  I have read about using Apache's mod_python so I could
use PSP.  Any help or tips are appreciated.

-Adam

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


Re: BCD List to HEX List

2006-07-31 Thread bryanjugglercryptographer

Philippe Martin wrote:
> Yes, I came here for the "algorithm" question, not the code result.

To turn BCD x to binary integer y,

  set y to zero
  for each nibble n of x:
y = (((y shifted left 2) + y) shifted left 1) + n

Do you need instruction on extracting nibbles, and shifting and
adding integers?

A problem this small and simple does not call for a prototype.


-- 
--Bryan

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


Re: Mouse LED Control in Python

2006-07-31 Thread Chris Lambacher
There is not enough information in that post to be able to reimpliment what he
did in any language.  You will have to try and get in touch with the author.

-Chris  
On Sun, Jul 30, 2006 at 01:26:40PM -0700, [EMAIL PROTECTED] wrote:
> I found this link that describes the byte arrays to control the
> IM/Email Leds on my Logitech MX610 mouse:
> 
> http://www.kdedevelopers.org/node/2029
> 
> The link to the tarball is dead so I can't look at that.  Is there
> anyway to do what the link says in Python? If you follow the link
> above, it talks about 'sending the byte array to 0x10 (16)'.  I'm not
> sure if that is possible in python.  Can anyone help or point me in the
> right direction?  I'd also be willing to have this be done in another
> language and just call different programs from a python program when I
> need something specific done (IM light on, for example).
> 
> 
> 
> Text from the link if you can't be bothered to follow it:
> 
> "I've figured out the IM led now. As before, you send 6 bytes to report
> ID 0x10
> (16), followed by the "confirm" message.
> 
> The magic values are:
> unsigned char confirm[6] = { 0x01, 0x80, 0x52, 0x00, 0x00, 0x00 };
> unsigned char email_off[6] = { 0x01, 0x80, 0x52, 0x06, 0x00, 0x00 };
> unsigned char email_on[6] = { 0x01, 0x80, 0x52, 0x05, 0x00, 0x00 };
> unsigned char email_pulse[6] = { 0x01, 0x80, 0x52, 0x04, 0x00, 0x00 };
> unsigned char email_flash[6] = { 0x01, 0x80, 0x52, 0x03, 0x00, 0x00 };
> unsigned char email_instanton[6] = { 0x01, 0x80, 0x52, 0x02, 0x00, 0x00
> };
> unsigned char email_instantoff[6] = { 0x01, 0x80, 0x52, 0x01, 0x00,
> 0x00 };
> 
> unsigned char im_off[6] = { 0x01, 0x80, 0x52, 0x00, 0x06, 0x00 };
> unsigned char im_on[6] = { 0x01, 0x80, 0x52, 0x00, 0x05, 0x00 };
> unsigned char im_pulse[6] = { 0x01, 0x80, 0x52, 0x00, 0x04, 0x00 };
> unsigned char im_flash[6] = { 0x01, 0x80, 0x52, 0x00, 0x03, 0x00 };
> unsigned char im_instantoff[6] = { 0x01, 0x80, 0x52, 0x00, 0x01, 0x00
> };
> unsigned char im_instanton[6] = { 0x01, 0x80, 0x52, 0x00, 0x02, 0x00
> };"
> 
> 
> Thanks,
> 
> Jeff
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list


Questions

2006-07-31 Thread Paré , Richard




Hi,
 
I find Python very 
interesting and useful as a developing matrix and other mathematical 
applications. I went through the tutorial to try 
to understand and work 
with various concepts. I have 
the following questions:
 

  Where could I find 
  more information on the "self" classes. The use of the (self) is very abstract 
  for me and I need more 
  clarifications. 
  Do 
  you already have a built-in 
  program or scheme for a linear 
  regression that I could try on 
  data coming from the Bloomberg system sources. Or could you give me 
  a little indication how to 
  build it. I will do the 
  rest. I found something on the regression (test. (x)) on the existing module, but that 
  wasn't appropriate. If you need an example of the formula for the mathematical regression, let me 
  know.
Many thanks in 
advance,
 
Richard
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Possible error in 'dive into Python' book, help!

2006-07-31 Thread Sion Arrowsmith
In article <[EMAIL PROTECTED]>,
Ben Edwards (lists) <[EMAIL PROTECTED]> wrote:
>I have been going through Dive into Python which up to now has been
>excellent.  I am now working through Chapter 9, XML Processing.  I am 9
>pages in (p182) in the 'Parsing XML section.  The following code is
>supposed to return the whole XML document (I have put ti at the end of
>this email):
>
>from xml.dom import minidom
> 
>xmldoc =
>minidom.parse('/home/ben/diveintopython-5.4/py/kgp/binary.xml') 
>grammerNode = xmldoc.firstChild
> 
>print grammerNode.toxml()
>
>But it only returns:
>
>  PUBLIC '-//diveintopython.org//DTD Kant Generator Pro v1.0//EN'
>  'kgp.dtd'>
>
>The next line is then 
>
>grammerNode.childNodes
>
>And it returns an empty tuples;(
>
>Kind of stuck here as I don't really want to continue.  Has anyone any
>idea what is going on?

OK, your xmldoc has two child nodes. The first is the 
you're getting above. Which of course doesn't have any children, so
grammarNode.childNodes is naturally empty. The  element is
the *second* child of the xmldoc, so of course isn't xmldoc.firstChild.
Probably what you want is:

grammarNode = xmldoc.documentElement

Dive Into Python's assertion that "A Document always has only one
child node, the root element of the XML document" looks a little
off from where I'm standing:

>>> print xmldoc.toxml()




  0
  1


  


>>> xmldoc.childNodes
[, ]
>>>

-- 
\S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/
  ___  |  "Frankly I have no feelings towards penguins one way or the other"
  \X/  |-- Arthur C. Clarke
   her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Using Python for my web site

2006-07-31 Thread Norman Khine
northband wrote:
> Hi, I am interested in re-writing my website in Python vs PHP but have
> a few questions. Here are my specs, please advise as to which
> configuration would be best:
>
> 1.Dell Poweredge Server, w/IIS, currently Windows but considering
> FreeBSD
> 2. Site consists of result pages for auctions and items for sale (100
> per page)
> 3. MySQL (Dell Poweredge w/AMD) database server connected to my web
> server
> 4. Traffic, 30 million page loads/month
>
> I am trying to have the fastest page loads, averaging 100 items per
> result page.  I have read about using Apache's mod_python so I could
> use PSP.  Any help or tips are appreciated.
>
> -Adam
>
>   
you should try http://www.ikaaro.org/itools it is a python library and
has all you need, although it is still in alpha state, it is running
some heavy applications such as http://destinationsflybe.com as an example.

for the mysql you can use the csv module.

for now it has not been ported on window$, try gentoo or freebsd

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


Re: getting debug from urllib2

2006-07-31 Thread Chris Lambacher
On Mon, Jul 31, 2006 at 02:43:36PM +0100, Ben Edwards wrote:
> Have been experimenting with HTTP stuff in python 2.4 and am having a
> problem getting debug info. If I use utllib.utlopen I get debug but if I
> user utllib2 I do not.  Below is the probram and the output I am
> getting.
> 
> Any insight?
urllib2 sets the debug level every time a connection is made.  The HTTPHandler
classes provide a way of setting this, but there is no convenient way of doing
this when using the urlopen interface.

-Chris
> Ben
> 
> * Code *
> 
> import urllib, urllib2, httplib
> 
> url = 'http://www.mozillazine.org/atom.xml'
> httplib.HTTPConnection.debuglevel = 1
> 
> print "urllib"
> 
> data = urllib.urlopen(url);
> 
> print "urllib2"
> 
> request = urllib2.Request(url)
> opener = urllib2.build_opener()
> feeddata = opener.open(request).read()
> 
> print "End\n"
> 
> * Output *
> 
> urllib
> connect: (www.mozillazine.org, 80)
> send: 'GET /atom.xml HTTP/1.0\r\nHost: www.mozillazine.org\r
> \nUser-agent: Python-urllib/1.16\r\n\r\n'
> reply: 'HTTP/1.0 200 OK\r\n'
> header: Date: Mon, 31 Jul 2006 13:43:11 GMT
> header: Server: Apache/2.0.55 (Gentoo) PHP/4.4.0-pl1-gentoo
> header: Last-Modified: Thu, 27 Jul 2006 18:05:52 GMT
> header: ETag: "20a1b4-6bcf-be12000"
> header: Accept-Ranges: bytes
> header: Content-Length: 27599
> header: Content-Type: application/xml
> header: Age: 5
> header: X-Cache: HIT from mz5.mz.osuosl.org
> header: X-Cache-Lookup: HIT from mz5.mz.osuosl.org:80
> header: Connection: close
> urllib2
> End
> 
> 
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: trouble understanding super()

2006-07-31 Thread Simon Forman
John Salerno wrote:
> Here's some code from Python in a Nutshell. The comments are lines from
> a previous example that the calls to super replace in the new example:
>
> class A(object):
>  def met(self):
>  print 'A.met'
>
> class B(A):
>  def met(self):
>  print 'B.met'
>  # A.met(self)
>  super(B, self).met()
>
> class C(A):
>  def met(self):
>  print 'C.met'
>  # A.met(self)
>  super(C, self).met()
>
> class D(B, C):
>  def met(self):
>  print 'D.met'
>  # B.met()
>  # C.met()
>  super(D, self).met()
>
> Then you call D().met()
>
> Now, I understand that the commented code would cause A.met to be called
> twice. But why does the second version (with super) not also do this? I
> guess my problem lies in not understanding exactly what the super
> function returns.
>
> super(D, self).met() seems like it would return something that has to do
> with both B and C, which each in turn return a superobject having to do
> with A, so why isn't A.met called twice still?
>
> Thanks!


Basically super(class_, self).method  looks in self's mro (it's list of
base classes) for class class_, and then starts searching *after* class
class_ for the next class that implements the method.

In this case the object's (instance of D) mro will be (D, B, C, A,
object), so as super gets called in each class, it looks in that list
(tuple, whatever) for the class following it (actually the next class
following it that implements the method).

Since no class appears in that list more than once, each class's
implementation of the method will only be called once.


HTH,
~Simon


Also, if you haven't already, read:
http://www.python.org/download/releases/2.2.3/descrintro/#cooperation

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


Re: Using Python for my web site

2006-07-31 Thread northband
Thanks I will look into it.

-Adam



Norman Khine wrote:
> northband wrote:
> > Hi, I am interested in re-writing my website in Python vs PHP but have
> > a few questions. Here are my specs, please advise as to which
> > configuration would be best:
> >
> > 1.Dell Poweredge Server, w/IIS, currently Windows but considering
> > FreeBSD
> > 2. Site consists of result pages for auctions and items for sale (100
> > per page)
> > 3. MySQL (Dell Poweredge w/AMD) database server connected to my web
> > server
> > 4. Traffic, 30 million page loads/month
> >
> > I am trying to have the fastest page loads, averaging 100 items per
> > result page.  I have read about using Apache's mod_python so I could
> > use PSP.  Any help or tips are appreciated.
> >
> > -Adam
> >
> >
> you should try http://www.ikaaro.org/itools it is a python library and
> has all you need, although it is still in alpha state, it is running
> some heavy applications such as http://destinationsflybe.com as an example.
>
> for the mysql you can use the csv module.
>
> for now it has not been ported on window$, try gentoo or freebsd
> 
> --
> Norman Khine

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


Re: FTP (ftplib) output capture

2006-07-31 Thread Simon Forman
ChaosKCW wrote:
> Hi
>
> Has anyone caputerd the output from the std ftp lib? It seems a bit
> annoying that everything is printed to stdout. It means incorporating
> this into any real program is a problem. It would have been much better
> if they used the std logging module and hooked up a console logger for
> the feault ftp application. Alas it isnt that way.
>
> Capturing stdout like this??? :
>
> import sys
>
> sys.stdout = open('bb', 'w)
>
> But I want to re-route it to the logging module not a file , so do I
> need to write a steam object?
>
> Thanks,

ftplib pre-dates the standard logging system by a bit.

I think ftplib only prints stuff if you set its (the FTP class
instances') debug level to greater than 0.

If you really want to replace sys.stdout with something that passes the
data to a logger, then something like the following (untested) class
should do it:

class FileLog:
def __init__(self, log):
self.log = log
def write(self, data):
self.log.debug(data)

The best solution might be to subclass or rewrite FTP to really do what
you want.  I believe one of the goals of Python-3000 is better
integration of the standard library with the new-ish standard logging
system, so if you do a good job send it in.  ;-)

Peace,
~Simon

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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Vincent Delporte
On 31 Jul 2006 07:05:27 -0700, "Ben Sizer" <[EMAIL PROTECTED]> wrote:
>Typically you run PHP as a module in your webserver, so there should be
>no process startup overhead. mod_python provides the same sort of
>functionality for Python, but is not as popular or widely installed as
>the PHP Apache module.

So, if mod_python provides the same functionality, it's not the main
reason why Python developers use application servers while PHP users
still program with page codes in /htdocs.

Why do PHP users stick to that old way of things? Because they mostly
use shared hosts, with no way to install their application server?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: BCD List to HEX List

2006-07-31 Thread Philippe Martin
[EMAIL PROTECTED] wrote:

> 
> Philippe Martin wrote:
>> Yes, I came here for the "algorithm" question, not the code result.
> 
> To turn BCD x to binary integer y,
> 
>   set y to zero
>   for each nibble n of x:
> y = (((y shifted left 2) + y) shifted left 1) + n
> 
> Do you need instruction on extracting nibbles, and shifting and
> adding integers?
> 
> A problem this small and simple does not call for a prototype.
> 
> 
> --
> --Bryan
'cause you're smart

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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Terry Reedy

"Ben Sizer" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
>As for PyGame, it's
> good that development there has picked up again but I'd love to see it
> broaden its horizons beyond SDL. Maybe that is impractical, however.

By wrapping SDL and interfacing to Numeric, Pete Shinners picked a chunk 
that he could chew and maintain.  The Pygame site has recently added a 
PyGame Cookbook or the equivalent so people can more easily share small 
chunks built on pygame and comment thereupon.

tjr



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


Re: Using Python for my web site

2006-07-31 Thread Bruno Desthuilliers
northband wrote:
> Hi, I am interested in re-writing my website in Python vs PHP but have
> a few questions. Here are my specs, please advise as to which
> configuration would be best:
> 
> 1.Dell Poweredge Server, w/IIS, currently Windows but considering
> FreeBSD

I may be a bit biased, but I would not run a web server under Windows...

> 2. Site consists of result pages for auctions and items for sale (100
> per page)
> 3. MySQL (Dell Poweredge w/AMD) database server connected to my web
> server

Have you considered Postgresql instead ?

> 4. Traffic, 30 million page loads/month
> 
> I am trying to have the fastest page loads, averaging 100 items per
> result page.  I have read about using Apache's mod_python so I could
> use PSP.  

That's a possible solution.

> Any help or tips are appreciated.

You may eventually be interested in  Django (full stack MVC web
framework, runs on mod_apache, supports both MySQL and Postgresql)

http://www.djangoproject.com/

or Myghty (Python's extended port of Perl::Mason, runs on mod_apache,
not tied to any RDBMS) + eventually SQLAlchemy (orm)
http://www.myghty.org/
http://www.sqlalchemy.org/

Now I can't tell if either one or the other beats PSP when it comes to
raw perfs...

My 2 cents
-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


running an app as user "foo"

2006-07-31 Thread bruce
hi.

within python, what's the best way to automatically spawn an app as a given
user/group.

i'm testing an app, and i'm going to need to assign the app to a given
user/group, as well as assign it certain access rights/modes (rwx) i then
want to copy the test app to a given dir, and then spawn a process to run
the app..

thanks


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


Abstract the storage of an app

2006-07-31 Thread Panos Laganakos
Hello,

I'm trying to think of an OO way to abstract the storage of an
application I am working on.

The classes are (example):

FamilyMember (base class)
Family (container class)

I've been thinking of using a FamilyDoc class to interface the Family
container class to a storage location (particularly, in XML).

I want to be able to use another backend for storing that data, ie
SQL(ite).

What would you suggest as a design pattern for something like this?

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


Re: how to make python socket server work with the app.MainLoop() in wxpython?

2006-07-31 Thread Vincent
I think you should use thread.
I just write a similar program using thread. It works well
You can try it, good luck!

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


Problem with using unittest module

2006-07-31 Thread Olivier Langlois
Hi,

I have the following statement in my test :

self.assertRaises(CDKeyException, ValidationObject.Validate,
1001,'NonExistantKey')

and the test fails as if assertRaises was not catching the thrown
exception:

==
ERROR: test (DBLookupValidationTests.DBLookupValidationTests)
--
Traceback (most recent call last):
  File
"C:\Dev\jade.r12sp\src\RVPackages\CDKey\Server\DBLookupValidationTests.py",
line 64, in test
self.assertRaises(CDKeyException, ValidationObject.Validate,
1001,'NonExistantKey')
  File "C:\tools\Python\lib\unittest.py", line 320, in failUnlessRaises
callableObj(*args, **kwargs)
  File
"C:\Dev\jade.r12sp\src/Services/local/Home\Scripts/system\CDKey\DBLookupValidation.py",
line 69, in Validate
raise CDKeyException, self.logger.error(e) CDKeyException

Any idea what is happening?

Thanks,
Olivier Langlois
http://www.olivierlanglois.net

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


Re: trouble understanding super()

2006-07-31 Thread John Salerno
Simon Forman wrote:

> In this case the object's (instance of D) mro will be (D, B, C, A,
> object), so as super gets called in each class, it looks in that list
> (tuple, whatever) for the class following it (actually the next class
> following it that implements the method).
> 
> Since no class appears in that list more than once, each class's
> implementation of the method will only be called once.

But after super(D, self).met() is called, doesn't that then call both 
super(B, self).met() and super(C, self).met()? If so, how does that 
avoid calling A.met twice? Or is that not what's happening?

Here's what I think gets called, in order, after running D().met():

print 'D.met'
super(D, self).met()
print 'B.met'
super(B, self).met()
print 'A.met'
print 'C.met'
super(C, self).met()
print 'A.met'
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: trouble understanding super()

2006-07-31 Thread Duncan Booth
John Salerno wrote:

> But after super(D, self).met() is called, doesn't that then call both 
> super(B, self).met() and super(C, self).met()? If so, how does that 
> avoid calling A.met twice? Or is that not what's happening?

If you have an instance of a B then super(B,self).met() will call A.met(), 
but if self is actually an instance of a D, then super(B,self).met() 
actually calls C.met().

That is why super needs both the class and the instance: so it can jump 
sideways across the inheritance diamond instead of always passing calls to 
the base of the current class.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Using Python for my web site

2006-07-31 Thread northband
Thanks for the info.  Reason why we are interested in PSP is because we
think our developers would be able to quickly adapt to the migration,
they are familiar with php and asp.

I agree on the windows webserver, we are looking into using FreeBSD
instead.

What would postgre's advantage over MySQL be?

I will look into Django.

Thanks for your .2

-Adam


Bruno Desthuilliers wrote:
> northband wrot
> > Hi, I am interested in re-writing my website in Python vs PHP but have
> > a few questions. Here are my specs, please advise as to which
> > configuration would be best:
> >
> > 1.Dell Poweredge Server, w/IIS, currently Windows but considering
> > FreeBSD
>
> I may be a bit biased, but I would not run a web server under Windows...
>
> > 2. Site consists of result pages for auctions and items for sale (100
> > per page)
> > 3. MySQL (Dell Poweredge w/AMD) database server connected to my web
> > server
>
> Have you considered Postgresql instead ?
>
> > 4. Traffic, 30 million page loads/month
> >
> > I am trying to have the fastest page loads, averaging 100 items per
> > result page.  I have read about using Apache's mod_python so I could
> > use PSP.
>
> That's a possible solution.
>
> > Any help or tips are appreciated.
>
> You may eventually be interested in  Django (full stack MVC web
> framework, runs on mod_apache, supports both MySQL and Postgresql)
>
> http://www.djangoproject.com/
>
> or Myghty (Python's extended port of Perl::Mason, runs on mod_apache,
> not tied to any RDBMS) + eventually SQLAlchemy (orm)
> http://www.myghty.org/
> http://www.sqlalchemy.org/
>
> Now I can't tell if either one or the other beats PSP when it comes to
> raw perfs...
>
> My 2 cents
> --
> bruno desthuilliers
> python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
> p in '[EMAIL PROTECTED]'.split('@')])"

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


Re: Need a compelling argument to use Django instead of Rails

2006-07-31 Thread Bruno Desthuilliers
Vincent Delporte wrote:
> On 31 Jul 2006 07:05:27 -0700, "Ben Sizer" <[EMAIL PROTECTED]> wrote:
>> Typically you run PHP as a module in your webserver, so there should be
>> no process startup overhead. mod_python provides the same sort of
>> functionality for Python, but is not as popular or widely installed as
>> the PHP Apache module.
> 
> So, if mod_python provides the same functionality, it's not the main
> reason why Python developers use application servers while PHP users
> still program with page codes in /htdocs.
> 
> Why do PHP users stick to that old way of things? Because they mostly
> use shared hosts, with no way to install their application server?

PHP has never been designed to allow writing such a thing as a web
server (some may say that PHP has never been designed at all, but this
is another troll^Mquestion). IIRC, it was initially meant to run as cgi,
then rewrote as an apache module.

And the fact is that while there's no startup overhead in PHP (at least
when deployed as a module), you still have to rebuild the whole world
(includes, app-specific conf etc) for each request. This is what
long-running application servers try to solve.

mod_python is at once lower-level and a bit more powerful than PHP. It
really exposes most of Apache's API to Python - which BTW doesn't make
it that well-suited for shared hosting... (most of the time, updating a
mod_python based app requires restarting the server).


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Python Docs Fix

2006-07-31 Thread Terry Reedy
A month ago, someone posted, under Python Docs Bugs, a complaint about the 
difficulty of finding the library ref sub-subsection on string methods. 
"That's because it is section 2.3.6.1, and the table of contents only goes 
to 3 levels."

I followed up the me-to's with an SF bug-report suggesting that the 
sub-sub-section somehow be lifted up a level so it would appear in the TOC.
www.python.org/sf/1514540

This weekend, in response, Andrew Kuchling moved the entire section on 
builtin types to chapter status, which will lift everything in that section 
up a level and make them more visible.

So thanks to Andrew for fixing this.

And a note that the volunteer Python developers sometimes do respond to 
polite comments and suggestions, including those originating from c.l.p. 
And also a note that while eventual posting to the tracker is necessary, I 
think most items by non-experts are best discussed here first, as happened 
with this one.  It certainly did not hurt that I reported that I was one of 
(at least) three agreeing with the OP.

Terry Jan Reedy





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


Re: trouble understanding super()

2006-07-31 Thread John Salerno
Duncan Booth wrote:
> John Salerno wrote:
> 
>> But after super(D, self).met() is called, doesn't that then call both 
>> super(B, self).met() and super(C, self).met()? If so, how does that 
>> avoid calling A.met twice? Or is that not what's happening?
> 
> If you have an instance of a B then super(B,self).met() will call A.met(), 
> but if self is actually an instance of a D, then super(B,self).met() 
> actually calls C.met().
> 
> That is why super needs both the class and the instance: so it can jump 
> sideways across the inheritance diamond instead of always passing calls to 
> the base of the current class.

Oh, I think I get it! So what's happening is this:

1. the MRO in this case is always (D, B, C, A, object)
2. super(D, self).met() looks in B
3. super(B, self).met() looks in C
4. super(C, self).met() looks in A

Right? So it's like making a ladder? I guess my confusion came when I 
thought that a call to super(B, self).met() also called A.met, but I 
guess it stops at C and lets C call it.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Nested function scope problem

2006-07-31 Thread Antoon Pardon
On 2006-07-30, Gerhard Fiedler <[EMAIL PROTECTED]> wrote:
> On 2006-07-30 12:45:50, Antoon Pardon wrote:
>
>>> [...] we'd have to use a common definition of "variable". This is a term
>>> so widely used that I'm not sure there is a useful single definition of
>>> it; do you know one?
>> 
>> A name in a scope to which is attached some value/object. Now whether
>> this attachment is in the form of storage or binding is IMO not
>> that important.
>
> IMO this is not a useful definition of "variable", as it also includes what
> some languages would call a "constant". This definition even includes
> preprocessor macros. Once you try to come up with a definition that does
> not include these, it probably gets trickier.

Sure it is usefull. It may be not 100% formally correct, but often
things that are not 100% formally correct can be better in bringing
an idea accross.

>>> [ ... ]
>> 
>> That depends on what you call the identity. If I had to translate this
>> into C++ it would be something like:
>> 
>>   int *a, *b;
>> 
>>   a = MakeInt(3);
>>   b = a;
>>   b = MakeInt(4);
>
> Yup. But in C/C++ speak, it's more common to call a and b "pointers" rather
> than "variables".

Well in a case like:

  int a, b;

You may call a and b "ints" rather than variables, that doesn't stop
them from being variables.

> Of course they are also sometimes called "pointer
> variables", but not usually "variables". It's of course not technically
> wrong to call the variables, but it's probably rare. And for a reason. 

Well I don't know about who you talk with, but when I was still using
C and other like languages on a daily basis me and my collegues had
no problem using the word variable, just because the type of the
variable happened to a pointer. AFAIK, the C language reference
doesn't make an exception for calling something a variable, based
on the type (pointer or not) of the variable.

> [ ... ]

> Whether Python variables are in fact "variables" probably depends mostly on
> your definition of "variable", and that's IMO a tough one -- a definition
> of "variable" that includes all those language elements that various
> languages call "variables", and nothing else (that's the tough part).
> Whether that definition exists, and whether it includes Python "variables",
> remains to be seen :)

Since Python variables seem to behave essentially the same way as
Lisp and Smalltalk variables and as far as I know "variable" is
the accepted term in those languages for what we are talking about,
I don't see how you can have a definition that includes those
languages but will not include python.

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


Re: Using Python for my web site

2006-07-31 Thread Bruno Desthuilliers
northband wrote:
> Thanks for the info.  Reason why we are interested in PSP is because we
> think our developers would be able to quickly adapt to the migration,
> they are familiar with php and asp.

Yes, I guessed it had do to with something like this. OTOH, the
ServerPage model can quickly lead to a disgusting and barely
maintainable mess of application logic and presentation, while the MVC
approach helps designing and writing much more cleaner code (IMHE). As a
matter of fact, lots of PHP apps turns into some more or less well
backed reimplementation of the MVC model.

> I agree on the windows webserver, we are looking into using FreeBSD
> instead.
> 
> What would postgre's advantage over MySQL be?

PostgreSQL is a mature, rock-solid, full-blown RDBMS. While not as
laughable as it used to be until very recently, MySQL is still barely a
DBMS at all - and our experiences with it is that it breaks down way too
easily and is a king-size PITA to maintain and upgrade. In fact, the
real question IMHO is: what would MySQL advantage over PostgreSQL be ?-)

> I will look into Django.

I can't tell if it'll meets your needs, but I really thinks it's worth
giving it a try.



-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: getting debug from urllib2

2006-07-31 Thread Peter Otten
Ben Edwards wrote:

> Have been experimenting with HTTP stuff in python 2.4 and am having a
> problem getting debug info. If I use utllib.utlopen I get debug but if I
> user utllib2 I do not.  Below is the probram and the output I am
> getting.
> 
> Any insight?

Use the source :-) 

urllib2.build_opener() accepts prebuilt handlers:

import urllib2

url = 'http://www.mozillazine.org/atom.xml'

request = urllib2.Request(url)
opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1))
feeddata = opener.open(request).read()

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


Re: pass parameters in SPYCE

2006-07-31 Thread Jonathan Ellis
kepioo wrote:
> Hi all,
>
> I started to use the so good spyce server. I manage to do all the
> basics, however, I still block on one problem :
>
> How can I pass parameters to a spy page : example
>
> I have an index page :
>
> link1
> link2
> link3
> link4
>
> I want all theses html links to point to process.spy with the value of
> the link as parameter ( equivalent to call process.spy -link1 ).
>
> Is this feasible with html links or I have to use forms and replace my
> links with buttons?

You mean, a href=process.spy?link=1 ?

Jonathan

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


Re: gaierror: (8, 'hostname nor servname provided, or not known')

2006-07-31 Thread faulkner
my boss has a similar problem with his home internet connection in
general. he traced it back to his router, which was in the first couple
generations of routers. how old are the routers you tested this on?
aside from upgrading them, if they are the problem, i can suggest a
workaround.
the first time this exception is raised, your script can automatically
restart itself.
os.system('python -c "import time, os; time.sleep(2);
os.system(\'python yourscriptname.py &\')" &')
sys.exit(1)


Laszlo Nagy wrote:
> Hello,
>
> I asked this question about a week ago, but I did not provide a
> traceback. Here is the traceback:
>
>   File "/usr/local/lib/python2.4/xmlrpclib.py", line 1096, in __call__
> return self.__send(self.__name, args)
>   File "/usr/local/lib/python2.4/xmlrpclib.py", line 1383, in __request
> verbose=self.__verbose
>   File "/usr/local/lib/python2.4/xmlrpclib.py", line 1129, in request
> self.send_content(h, request_body)
>   File "/usr/local/lib/python2.4/xmlrpclib.py", line 1243, in send_content
> connection.endheaders()
>   File "/usr/local/lib/python2.4/httplib.py", line 798, in endheaders
> self._send_output()
>   File "/usr/local/lib/python2.4/httplib.py", line 679, in _send_output
> self.send(msg)
>   File "/usr/local/lib/python2.4/httplib.py", line 646, in send
> self.connect()
>   File "/usr/local/lib/python2.4/httplib.py", line 1072, in connect
> sock.connect((self.host, self.port))
>   File "", line 1, in connect
> gaierror: (8, 'hostname nor servname provided, or not known')
>
> The program is connecting to the same host about 2 times per minute.
> After running for one or two hours, it raises this exception. Once it
> raised this exception, it keeps raising in. (My program is trying to
> connect but it cannot.) Then I restart my program and it works for
> anoter hour or two. I tried the same program on different machines and
> different operating system, but the error is always the same. Please
> help me identify the problem.
> 
> Thanks,
> 
>Laszlo

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


Megawidget Syntax (Tix)

2006-07-31 Thread Al in Dallas
I'm new to Python*. I am having trouble with the Tix NoteBook
megawidget. When I use a simpler megawidget, such as a ButtonBox, I can
add buttons by invoking

.add ('button3', text='Retry')

Unfortunately, with the Notebook, I need access to a subwidget, and all
my attempts have led to error messages. When I try to look up the
megawidget documentation, I can only find example in Tcl, so I'm
confident that if someone explains the syntax of the TixNoteBook
megawidget to me, I should be able to figure it out for all the other
megawidgets on my own. Here's an attempt to add something to the hlist
subwidget:

>>> lnotebook.hlist.add ('wrongsyntax')
Traceback (most recent call last):
  File "", line 1, in ?
  File "C:\Python24\lib\lib-tk\Tix.py", line 863, in add
return self.tk.call(self._w, 'add', entry, *self._options(cnf, kw))
_tkinter.TclError: invalid command name
".12204992.pane.p1.shlist.f1.hlist"

*I evaluated it many years ago (1996) when the only other choices
seemed to be Perl, Tcl, and VB. Unfortunately, my various employers
chose which scripting language would be used, and none of them ever
chose Python. Oddly, I ended up using all of the others.

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


Working with Widget after Instance loses the reference

2006-07-31 Thread Al in Dallas
I made the mistake of creating an instance of a widget and assigning it
to a name I'd already used. Now, if I use root.children or
root.slaves(), I can see the "lost" widget, but can I do anything else
with the string of numbers that shows up when I use root.children? I'd
like to destory the widget, for example. it would be even better if I
could create a new name and have it reference the "lost" widget.

Of course, I can just kill my toplevel and start over.

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


Re: Problem with using unittest module

2006-07-31 Thread Peter Otten
Olivier Langlois wrote:

> I have the following statement in my test :
> 
> self.assertRaises(CDKeyException, ValidationObject.Validate,
> 1001,'NonExistantKey')
> 
> and the test fails as if assertRaises was not catching the thrown
> exception:
> 
> ==
> ERROR: test (DBLookupValidationTests.DBLookupValidationTests)
> --
> Traceback (most recent call last):
>   File
> "C
\Dev\jade.r12sp\src\RVPackages\CDKey\Server\DBLookupValidationTests.py",
> line 64, in test
> self.assertRaises(CDKeyException, ValidationObject.Validate,
> 1001,'NonExistantKey')
>   File "C:\tools\Python\lib\unittest.py", line 320, in failUnlessRaises
> callableObj(*args, **kwargs)
>   File
> "C
\Dev\jade.r12sp\src/Services/local/Home\Scripts/system\CDKey\DBLookupValidation.py",
> line 69, in Validate
> raise CDKeyException, self.logger.error(e) CDKeyException
> 
> Any idea what is happening?

Just a guess: you might have defined a CDKeyException twice...

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


Re: Nested function scope problem

2006-07-31 Thread Bruno Desthuilliers
Antoon Pardon wrote:
(snip)
> Sure it is usefull. It may be not 100% formally correct, but often
> things that are not 100% formally correct can be better in bringing
> an idea accross.

hear hear...

And yet you still fail to understand why I claimed Python didn't have
variables ? Talk about stubborness :(

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list


  1   2   3   >