Re: Creating a function to make checkbutton with information from a list?

2007-05-12 Thread Peter Otten
Thomas Jansson wrote:

> Dear all
> 
> I am writing a program with tkinter where I have to create a lot of
> checkbuttons. They should have the same format but should have
> different names. My intention is to run the functions and the create
> all the buttons with the names from the list.
> 
> I now the lines below doesn't work, but this is what I have so far. I
> don't really know how call the element in the dict use in the for
> loop. I tried to call +'item'+ but this doesn't work.
> 
> def create_checkbox(self):
>self.checkbutton = ["LNCOL", "LFORM", "LPOT", "LGRID",  "LERR",
> "LCOMP"]
>for item in self.checkbutton:
>   self.+'item'+Checkbutton = Chekcbutton(frame, onvalue='t',
> offvalue='f', variable=self.+'item'+)
>   self.+'item'+Checkbutton.grid()
> 
> How should I do this?

You /could/ use setattr()/getattr(), but for a clean design putting the
buttons (or associated variables) into a dictionary is preferrable.

def create_checkbuttons(self):
button_names = ["LNCOL", "LFORM", "LPOT", "LGRID",  "LERR", "LCOMP"]
self.cbvalues = {}
for row, name in enumerate(button_names):
v = self.cbvalues[name] = IntVar()
cb = Checkbutton(self.frame, variable=v)
label = Label(self.frame, text=name)
cb.grid(row=row, column=0)
label.grid(row=row, column=1)

You can then find out a checkbutton's state with

self.cbvalues[name].get()

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


Setting thread priorities

2007-05-12 Thread John Nagle
   There's no way to set thread priorities within Python, is there?
We have some threads that go compute-bound, and would like to
reduce their priority slightly so the other operations, like
accessing the database and servicing queries, aren't slowed
as much.

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


Re: keyword checker - keyword.kwlist

2007-05-12 Thread tom
[EMAIL PROTECTED] kirjoitti:
> Gabriel Genellina kirjoitti:
>> En Thu, 10 May 2007 17:03:13 -0300, <[EMAIL PROTECTED]> escribió:
>> my_input = raw_input("...").strip()
>>
>> as Peter Otten suggested before
>>
>> --Gabriel Genellina
>>
> Ok, it seems to work with strip(). Thanks for your help.
> 
> Do you guys have any clue why mine previous code doesn't work?
Oh, repr() function revealed the issue. Thank you all!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: keyword checker - keyword.kwlist

2007-05-12 Thread tom
Gabriel Genellina kirjoitti:
> En Thu, 10 May 2007 17:03:13 -0300, <[EMAIL PROTECTED]> escribió:
> my_input = raw_input("...").strip()
> 
> as Peter Otten suggested before
> 
> --Gabriel Genellina
> 
Ok, it seems to work with strip(). Thanks for your help.

Do you guys have any clue why mine previous code doesn't work?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Interesting list Validity (True/False)

2007-05-12 Thread [EMAIL PROTECTED]
On May 12, 11:02�pm, Steven D'Aprano
<[EMAIL PROTECTED]> wrote:
> On Sat, 12 May 2007 18:43:54 -0700, [EMAIL PROTECTED] wrote:
> > On May 12, 8:10?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> >> On Sat, 2007-05-12 at 17:55 -0700, [EMAIL PROTECTED] wrote:
> >> > On May 12, 12:56?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> >> > > On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
> >> > > > if arg==True:
>
> >> > > > tests the type property (whether a list is a boolean).
>
> >> > > That sounds nonsensical and incorrect. Please explain what you mean.
>
> >> > 
> >> > Sec 2.2.3:
> >> > Objects of different types, except different numeric types and
> >> > different string types, never compare equal;
> >> > 
>
> I should point out that only applies to built-in types, not custom classes.
>
> >> That doesn't explain what you mean. How does "if arg==True" test whether
> >> "a list is a boolean"?
>
>  type(sys.argv)
> > 
>  type(True)
> > 
>
> That still doesn't make sense. However, using my incredible psychic
> ability to read between the lines, I think what Mensanator is trying (but
> failing) to say is that "if arg==True" first tests whether arg is of type
> bool, and if it is not, it knows they can't be equal. That's not actually
> correct. We can check this:
>
> >>> import dis
> >>> def test(arg):
>
> ... � � return arg == True
> ...>>> dis.dis(test)
>
> � 2 � � � � � 0 LOAD_FAST � � � � � � � �0 (arg)
> � � � � � � � 3 LOAD_GLOBAL � � � � � � �0 (True)
> � � � � � � � 6 COMPARE_OP � � � � � � � 2 (==)
> � � � � � � � 9 RETURN_VALUE
>
> As you can see, there is no explicit type test. (There may or may not be
> an _implicit_ type test, buried deep in the Python implementation of the
> COMPARE_OP operation, but that is neither here nor there.)
>
> Also, since bool is a subclass of int, we can do this:
>
> >>> 1.0+0j == �True
>
> True
>
> > Actually, it's this statement that's non-sensical.
>
> > 
> > "if arg==True" tests whether the object known as arg is equal to the
> > object known as True.
> > 
>
> Not at all, it makes perfect sense. X == Y always tests whether the
> argument X is equal to the object Y regardless of what X and Y are.

Except for the exceptions, that's why the statement is wrong.

>
> > None of these four examples are "equal" to any other.
>
> That's actually wrong, as you show further down.

No, it's not, as I show further down.

>
>
>
>
>
>  a = 1
>  b = (1,)
>  c = [1]
>  d = gmpy.mpz(1)
>
>  type(a)
> > 
>  type(b)
> > 
>  type(c)
> > 
>  type(d)
> > 
>  a==b
> > False
>  b==c
> > False
>  a==d
> > True
>
> See, a and d are equal.

No, they are not "equal". Ints and mpzs should NEVER
be used together in loops, even though it's legal. The ints
ALWAYS have to be coerced to mpzs to perform arithmetic
and this takes time...LOTS of it. The absolute stupidest
thing you can do (assuming n is an mpz) is:

while n >1:
if n % 2 == 0:
n = n/2
else:
n = 3*n + 1

You should ALWAYS do:

ZED = gmpy.mpz(0)
ONE = gmpy.mpz(1)
TWO = gmpy.mpz(2)
TWE = gmpy.mpz(3)

while n >ONE:
if n % TWO == ZED:
n = n/TWO
else:
n = TWE*n + ONE

This way, no coercion is performed.

>
> > And yet a==d returns True. So why doesn't b==c
> > also return True, they both have a 1 at index position 0?
>
> Why should they return true just because the contents are the same?

Why should the int 1 return True when compared to mpz(1)?

a = [1]
b = [1]

returns True for a==b? After all, it returns false if b is [2],
so it looks at the content in this case. So for numerics,
it's the value that matters, not the type. And this creates
a false sense of "equality" when a==d returns True.

> A bag
> of shoes is not the same as a box of shoes, even if they are the same
> shoes.

Exactly. For the very reason I show above. The fact that the int
has the same shoes as the mpz doesn't mean the int should be
used, it has to be coerced.

> Since both lists and tuples are containers, neither are strings or
> numeric types, so the earlier rule applies: they are different types, so
> they can't be equal.

But you can't trust a==d returning True to mean a and d are
"equal". To say the comparison means the two objects are
equal is misleading, in other words, wrong. It only takes one
turd to spoil the whole punchbowl.

>
> gmpy.mpz(1) on the other hand, is both a numeric type and a custom class.
> It is free to define equal any way that makes sense, and it treats itself
> as a numeric type and therefore says that it is equal to 1, just like 1.0
> and 1+0j are equal to 1.

They are equal in the mathematical sense, but not otherwise.
And to think that makes no difference is to be naive.

>
> --
> Steven

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

Re: __dict__ for instances?

2007-05-12 Thread half . italian
On May 12, 5:20 pm, Ivan Voras <[EMAIL PROTECTED]> wrote:
> While using PyGTK, I want to try and define signal handlers
> automagically, without explicitly writing the long dictionary (i.e. I
> want to use signal_autoconnect()).
>
> To do this, I need something that will inspect the current "self" and
> return a dictionary that looks like:
>
> {
>   "method_name" : self.method_name
>
> }
>
> Class.__dict__ does something very similar, but when I use it, either
> I'm doing something wrong or it doesn't return methods bound to "self",
> and python complains a wrong number of arguments is being passed to the
> methods (one instead of two).
>
> instance.__dict__ on the other hand returns an empty dictionary.
>
> This looks like it should be easy, but I can't find the solution :(
>
> --
> (\__/)
> (O.o)
> (> < )
>
> This is Bunny.
> Copy Bunny into your signature to help him on his way to world domination!
>
>  signature.asc
> 1KDownload

I think you want "dir(instance)"  __dict__ returns the instance
variables and values as a dictionary, but doesn't return methods.
dir() returns a list of the instance's methods and variables.  Then
you'd need to iterate over the list with type() looking for instance
methods

instance = Class.Class()
dict = {}
methods = [f for f in dir(instance) if str(type(instance.f)) == ""]
for m in methods:
dict[m.name] = m

The above is untested. I'm sure there is a better way to do this.

~Sean

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


Re: Read from Windows Address Book (.wab file format) ?

2007-05-12 Thread 詹光耀
On May 13, 3:57 am, rynt <[EMAIL PROTECTED]> wrote:
> On May 12, 11:30 am, 詹光耀 <[EMAIL PROTECTED]> wrote:
>
> > Hi all!
>
> > I wonder if there's any Python module that could read from .wab file.
> > I googled but found nothing useful. Any idea? Thanks :)
>
> > Rio
>
> Hi Rio,
>
> Don't know if there's a python module for this, but this link,
>
> http://msdn2.microsoft.com/en-us/library/ms629361.aspx
>
> defines the MS API for the address book, so you could roll your own.
>
> If all you need is to read the data though, you could export the
> address data into a CSV file (Python DOES have a module for this) or
> VCard format.  IIRC, someone on this newsgroup was talking about VCard
> just the other day.
>
> HTH
>
> rynt

Hi Rynt,

Thanks for your help :) I looked the MSDN page but it seemed that at
least I need Windows to use its DLL, while unfortunately I'm on Linux.
I need to read (and later write) .wab from other Win users.

CSV is fine, and that's how I am doing it right now. The problem is I
cannot automate the process of exporting .wab to .csv on Linux. Also,
I lose all the identity-property mapping in .wab since .csv is really
a flat 2D table.

Any other suggesions? :)


Rio

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

Re: Interesting list Validity (True/False)

2007-05-12 Thread Steven D'Aprano
On Sat, 12 May 2007 18:43:54 -0700, [EMAIL PROTECTED] wrote:

> On May 12, 8:10?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
>> On Sat, 2007-05-12 at 17:55 -0700, [EMAIL PROTECTED] wrote:
>> > On May 12, 12:56?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
>> > > On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
>> > > > if arg==True:
>>
>> > > > tests the type property (whether a list is a boolean).
>>
>> > > That sounds nonsensical and incorrect. Please explain what you mean.
>>
>> > 
>> > Sec 2.2.3:
>> > Objects of different types, except different numeric types and
>> > different string types, never compare equal;
>> > 

I should point out that only applies to built-in types, not custom classes.


>> That doesn't explain what you mean. How does "if arg==True" test whether
>> "a list is a boolean"?
> 
 type(sys.argv)
> 
 type(True)
> 


That still doesn't make sense. However, using my incredible psychic
ability to read between the lines, I think what Mensanator is trying (but
failing) to say is that "if arg==True" first tests whether arg is of type
bool, and if it is not, it knows they can't be equal. That's not actually
correct. We can check this:

>>> import dis
>>> def test(arg):
... return arg == True
...
>>> dis.dis(test)
  2   0 LOAD_FAST0 (arg)
  3 LOAD_GLOBAL  0 (True)
  6 COMPARE_OP   2 (==)
  9 RETURN_VALUE


As you can see, there is no explicit type test. (There may or may not be
an _implicit_ type test, buried deep in the Python implementation of the
COMPARE_OP operation, but that is neither here nor there.)

Also, since bool is a subclass of int, we can do this:

>>> 1.0+0j ==  True
True





> Actually, it's this statement that's non-sensical.
> 
> 
> "if arg==True" tests whether the object known as arg is equal to the
> object known as True.
> 

Not at all, it makes perfect sense. X == Y always tests whether the
argument X is equal to the object Y regardless of what X and Y are.

 
> None of these four examples are "equal" to any other.

That's actually wrong, as you show further down.

 
 a = 1
 b = (1,)
 c = [1]
 d = gmpy.mpz(1)

 type(a)
> 
 type(b)
> 
 type(c)
> 
 type(d)
> 
 a==b
> False
 b==c
> False
 a==d
> True

See, a and d are equal.

 
> And yet a==d returns True. So why doesn't b==c
> also return True, they both have a 1 at index position 0?

Why should they return true just because the contents are the same? A bag
of shoes is not the same as a box of shoes, even if they are the same
shoes. Since both lists and tuples are containers, neither are strings or
numeric types, so the earlier rule applies: they are different types, so
they can't be equal.

gmpy.mpz(1) on the other hand, is both a numeric type and a custom class.
It is free to define equal any way that makes sense, and it treats itself
as a numeric type and therefore says that it is equal to 1, just like 1.0
and 1+0j are equal to 1.


-- 
Steven.

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


Re: How to cleanly pause/stop a long running function?

2007-05-12 Thread Michael Tobis
> Doing a Ctrl+C
> interrupt would be a not-so-clean-way of performing such a thing, and
> it would quit the application altogether. I'd rather have the function
> return a status object of what it has accomplished thus far.

Just in case you are unaware that you can explicitly handle ^C in your
python code, look up the KeyboardInterrupt exception.

mt

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


Re: How to cleanly pause/stop a long running function?

2007-05-12 Thread Steven D'Aprano
On Sat, 12 May 2007 13:51:05 -0700, Basilisk96 wrote:

> Suppose I have a function that may run for a long time - perhaps from
> several minutes to several hours. An example would be this file
> processing function:
> 
> import os
> def processFiles(startDir):
> for root, dirs, files in os.walk(startDir):
> for fname in files:
> if fname.lower().endswith(".zip"):
> # ... do interesting stuff with the file here ...
> 
> Imagine that there are thousands of files to process. This could take
> a while. How can I implement this so that the caller can pause or
> interrupt this function, and resume its program flow?

I don't think there really is what I would call a _clean_ way, although
people may disagree about what's clean and what isn't.

Here's a way that uses global variables, with all the disadvantages that
entails:

last_dir_completed = None
restart = object()  # a unique object

def processFiles(startDir):
global last_dir_completed
if startDir is restart:
startDir = last_dir_completed
for root, dirs, files in os.walk(startDir):
for fname in files:
if fname.lower().endswith(".zip"):
# ... do interesting stuff with the file here ...
last_Dir_completed = root



Here's another way, using a class. Probably not the best way, but a way.

class DirLooper(object):
def __init__(self, startdir):
self.status = "new"
self.startdir = startdir
self.root = startdir
def run(self):
if self.status == 'new':
self.loop(self.startdir)
elif self.status == 'finished':
print "nothing to do"
else:
self.loop(self.root)
def loop(self, where):
self.status = "started"
for self.root, dirs, files in os.walk(where):
# blah blah blah... 


Here's another way, catching the interrupt:

def processFiles(startDir):
try:
for root, dirs, files in os.walk(startDir):
# blah blah blah ...
except KeyboardInterrupt:
do_something_with_status()


You can fill in the details :)


As for which is "better", I think the solution using a global variable is
the worst, although it has the advantage of being easy to implement. I
think you may need to try a few different implementations and judge for
yourself. 


-- 
Steven.

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


[ANN] PyYAML-3.05: YAML parser and emitter for Python

2007-05-12 Thread Kirill Simonov

 Announcing PyYAML-3.05


A new bug fix release of PyYAML is now available:

http://pyyaml.org/wiki/PyYAML


Changes
===

* Windows binary packages were built with LibYAML trunk.
* Fixed a bug that prevent processing a live stream of YAML documents in
  timely manner (Thanks edward(at)sweetbytes(dot)net).
* Fixed a bug when the path in add_path_resolver contains boolean values
  (Thanks jstroud(at)mbi(dot)ucla(dot)edu).
* Fixed loss of microsecond precision in timestamps
  (Thanks edemaine(at)mit(dot)edu).
* Fixed loading an empty YAML stream.
* A number of smaller fixes and improvements
  (see http://pyyaml.org/wiki/PyYAML#History for more details).


Resources
=

PyYAML homepage: http://pyyaml.org/wiki/PyYAML
PyYAML documentation: http://pyyaml.org/wiki/PyYAMLDocumentation

TAR.GZ package: http://pyyaml.org/download/pyyaml/PyYAML-3.05.tar.gz
ZIP package: http://pyyaml.org/download/pyyaml/PyYAML-3.05.zip
Windows installer:
http://pyyaml.org/download/pyyaml/PyYAML-3.05.win32-py2.3.exe
http://pyyaml.org/download/pyyaml/PyYAML-3.05.win32-py2.4.exe
http://pyyaml.org/download/pyyaml/PyYAML-3.05.win32-py2.5.exe

PyYAML SVN repository: http://svn.pyyaml.org/pyyaml
Submit a bug report: http://pyyaml.org/newticket?component=pyyaml

YAML homepage: http://yaml.org/
YAML-core mailing list: http://lists.sourceforge.net/lists/listinfo/yaml-core


About PyYAML


YAML is a data serialization format designed for human readability and
interaction with scripting languages.  PyYAML is a YAML parser and
emitter for Python.

PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
support, capable extension API, and sensible error messages.  PyYAML
supports standard YAML tags and provides Python-specific tags that allow
to represent an arbitrary Python object.

PyYAML is applicable for a broad range of tasks from complex
configuration files to object serialization and persistance.


Example
===

>>> import yaml

>>> yaml.load("""
... name: PyYAML
... description: YAML parser and emitter for Python
... homepage: http://pyyaml.org/wiki/PyYAML
... keywords: [YAML, serialization, configuration, persistance, pickle]
... """)
{'keywords': ['YAML', 'serialization', 'configuration', 'persistance',
'pickle'], 'homepage': 'http://pyyaml.org/wiki/PyYAML', 'description':
'YAML parser and emitter for Python', 'name': 'PyYAML'}

>>> print yaml.dump(_)
name: PyYAML
homepage: http://pyyaml.org/wiki/PyYAML
description: YAML parser and emitter for Python
keywords: [YAML, serialization, configuration, persistance, pickle]


Copyright
=

The PyYAML module is written by Kirill Simonov <[EMAIL PROTECTED]>.

PyYAML is released under the MIT license.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Interesting list Validity (True/False)

2007-05-12 Thread [EMAIL PROTECTED]
On May 12, 8:10?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> On Sat, 2007-05-12 at 17:55 -0700, [EMAIL PROTECTED] wrote:
> > On May 12, 12:56?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> > > On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
> > > > if arg==True:
>
> > > > tests the type property (whether a list is a boolean).
>
> > > That sounds nonsensical and incorrect. Please explain what you mean.
>
> > 
> > Sec 2.2.3:
> > Objects of different types, except different numeric types and
> > different string types, never compare equal;
> > 
>
> That doesn't explain what you mean. How does "if arg==True" test whether
> "a list is a boolean"?

>>> type(sys.argv)

>>> type(True)



Actually, it's this statement that's non-sensical.


"if arg==True" tests whether the object known as arg is equal to the
object known as True.


None of these four examples are "equal" to any other.

>>> a = 1
>>> b = (1,)
>>> c = [1]
>>> d = gmpy.mpz(1)
>>>
>>> type(a)

>>> type(b)

>>> type(c)

>>> type(d)

>>> a==b
False
>>> b==c
False
>>> a==d
True

And yet a==d returns True. So why doesn't b==c
also return True, they both have a 1 at index position 0?

>>> x = [1]
>>> y = [1]
>>> x==y
True


>
> --
> Carsten Haesehttp://informixdb.sourceforge.net


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


Problems with thread safety

2007-05-12 Thread Sven Rech
Hi,

In my C program, I want to use python scripts. This scripts should also
have the ability to start threads.

So at the initilisation phase I do:
PyEval_InitThreads();
PyEval_ReleaseLock();

With the second call I want to release lock, for that the python threads
can also do their work.

But then, when I call a method in a script which starts a thread then, I
get the following error:
Fatal Python error: PyEval_AcquireThread: non-NULL old thread state
Aborted (core dumped)

What did I wrong?

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


Re: Interesting list Validity (True/False)

2007-05-12 Thread Carsten Haese
On Sat, 2007-05-12 at 17:55 -0700, [EMAIL PROTECTED] wrote:
> On May 12, 12:56?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> > On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
> > > if arg==True:
> >
> > > tests the type property (whether a list is a boolean).
> >
> > That sounds nonsensical and incorrect. Please explain what you mean.
> 
> 
> Sec 2.2.3:
> Objects of different types, except different numeric types and
> different string types, never compare equal;
> 

That doesn't explain what you mean. How does "if arg==True" test whether
"a list is a boolean"?

-- 
Carsten Haese
http://informixdb.sourceforge.net


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


Re: How to cleanly pause/stop a long running function?

2007-05-12 Thread Adam Atlas
On May 12, 4:51 pm, Basilisk96 <[EMAIL PROTECTED]> wrote:
> Suppose I have a function that may run for a long time - perhaps from
> several minutes to several hours. An example would be this file
> processing function:
>
> import os
> def processFiles(startDir):
> for root, dirs, files in os.walk(startDir):
> for fname in files:
> if fname.lower().endswith(".zip"):
> # ... do interesting stuff with the file here ...
>
> Imagine that there are thousands of files to process. This could take
> a while. How can I implement this so that the caller can pause or
> interrupt this function, and resume its program flow? Doing a Ctrl+C
> interrupt would be a not-so-clean-way of performing such a thing, and
> it would quit the application altogether. I'd rather have the function
> return a status object of what it has accomplished thus far.
>
> I have heard about threads, queues, and asynchronous programming, but
> am not sure which is appropriate for this and how to apply it. Perhaps
> the above function should be a method of a class that inherits from
> the appropriate handler class? Any help will be appreciated.
>
> -Basilisk96

Consider using generators.
http://docs.python.org/tut/node11.html#SECTION0011100

This way, whatever part of your program calls this function can
completely control the iteration. Maybe you can have it yield status
information each time.

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


Re: Thread-safe dictionary

2007-05-12 Thread tuom . larsen
On May 12, 11:40 am, "Martin v. Löwis" <[EMAIL PROTECTED]> wrote:
> > - in __getitem__, does it release the lock after returning the item?
>
> Yes, it does.
>
> > - wouldn't it be better to use threading.RLock, mutex, ... instead?
>
> Better in what sense? Performance-wise? Semantically? Performance-wise,
> the best thing would be to do
>
> safe_dict = dict
>
> because the builtin dict is already thread-safe unless user-defined
> __hash__ or __eq__ methods get invoked (in which case the dictionary
> still works correctly - it's only that it may get modified while
> __hash__ or __eq__ is running).
>
> Semantically, it would be better to use a threading.RLock, if you
> expect that __hash__ or __eq__ may access the dictionary recursively.
>
> Regards,
> Martin

Thank you!

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


Re: Video: Professor of Physics Phd at Cal Tech says: 911 Inside Job

2007-05-12 Thread schoenfeld . one
On Apr 29, 2:44 am, War Office <[EMAIL PROTECTED]> wrote:
> Why can't any of you just discuss the fact that free-fall collapse of
> this building contradicts the laws of physics?

Why do you assume he's even capable of doing so? He's just a crackpot,
but he's in the unfortunate majority.

> Why do you all have to avoid the topic and rather go on a character
> assassination which is totally abhorent to scientific method?

That is the new "scientific method".

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


Re: Interesting list Validity (True/False)

2007-05-12 Thread [EMAIL PROTECTED]
On May 12, 12:56?pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
> > if arg==True:
>
> > tests the type property (whether a list is a boolean).
>
> That sounds nonsensical and incorrect. Please explain what you mean.


Sec 2.2.3:
Objects of different types, except different numeric types and
different string types, never compare equal;


>
> "if arg==True" tests whether the object known as arg is equal to the
> object known as True.
>
> Regards,
>
> --
> Carsten Haesehttp://informixdb.sourceforge.net


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


Re: ctree data

2007-05-12 Thread John Machin
On May 13, 7:05 am, Carl K <[EMAIL PROTECTED]> wrote:
> A friend needs to convert c-tree plus data to MySql.  I can to the "to MySql
> part, but need some help with the "from c-tree."  If I just wanted to get this
> done, I would hunt down the ODBC driver and use some MSy thing.  But I am 
> trying
> to hone my Python skills, but right now I am in over my head, thus this post. 
>  I
> think with a little boost I will be able to make it all come together.  (well,
> little boost may be an understatement - I have no clue how close/far I am from
> what I need.)
>
> My searching around has come up with a few ways to use Python to read the 
> data:
>
> 1. pull what I need from some other py code that uses c-tree:
>
> http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/services...http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/scripts/...
>
>  12 a,b,c = ZipCode.Get()
>  13 print "Zip code is ", a
>  14 print "State is ", b
>  15 print "City is ", c
>
> I am sure this is what I want.  I just haven't figured out where to start.
>
> 2. "Pyrex"  to create Python bindings to C API with minimal C knowledge.  I 
> took
> C and did a few little utilities on my own in the 90's.  plus I can make a
> tarball.  today I am not sure I even qualify for "minimal."
>
> 3. the C API is present as a shared object (.so), use it from Python with
> ctypes.   I have no idea what that means.
>
> 4. odbc - I am actually not thrilled about using the ctree odbc driver in any
> environment, because someone else who tried to use it on some other data a few
> years ago said it was flaky, and support was next to useless.
>
> 5, get someone who knows perl to do it 
> usinghttp://cpan.uwinnipeg.ca/htdocs/Db-Ctree/Db/Ctree.html- This just shows 
> what
> lengths I am willing to go to.  but I really don't want to start learning 
> perl.
>

Possible option 6: Find out if there is (a) a ctree utility program
that dumps a ctree table to a flat file in documented easily-parsed
format plus (b) a method of getting the metadata for each column
(type, decimal places, etc) if that info is not already available from
(a).

It's entirely possible that SQL "select * from the_table" will do (a)
for you, if the output is given with full precision, and there's a
method of getting the columns delimited properly.

HTH,
John

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


__dict__ for instances?

2007-05-12 Thread Ivan Voras
While using PyGTK, I want to try and define signal handlers
automagically, without explicitly writing the long dictionary (i.e. I
want to use signal_autoconnect()).

To do this, I need something that will inspect the current "self" and
return a dictionary that looks like:

{
  "method_name" : self.method_name
}

Class.__dict__ does something very similar, but when I use it, either
I'm doing something wrong or it doesn't return methods bound to "self",
and python complains a wrong number of arguments is being passed to the
methods (one instead of two).

instance.__dict__ on the other hand returns an empty dictionary.

This looks like it should be easy, but I can't find the solution :(

-- 
(\__/)
(O.o)
(> < )

This is Bunny.
Copy Bunny into your signature to help him on his way to world domination!



signature.asc
Description: OpenPGP digital signature
-- 
http://mail.python.org/mailman/listinfo/python-list

Licence for webchecker module?

2007-05-12 Thread Kevin Walzer
I want to use webchecker.py (distributed in Tools/webchecker of the 
Python source code tarball) in a project, but there is no license listed 
in any of the scripts that I can see. Is this code covered by the 
standard Python license?

-- 
Kevin Walzer
Code by Kevin
http://www.codebykevin.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Basic question

2007-05-12 Thread sturlamolden
On May 12, 6:18 pm, "Cesar G. Miguel" <[EMAIL PROTECTED]> wrote:

> Am I missing something?

Python for loops iterates over the elements in a container. It is
similar to Java's "for each" loop.

for j in range(10):
  print j
  if(True):
   j=j+2
   print 'interno',j

Is equivalent to:

int[] range = {0,1,2,3,4,5,6,7,8,9};
for (int j : range) {
   system.out.writeln(j);
   if (true) {
 j += 2;
 system.out.writeln("iterno" + j);
   }
}

If I remember Java correctly...




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


Re: ctree data

2007-05-12 Thread Terry Reedy

"Carl K" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
|A friend needs to convert c-tree plus data to MySql.  I can to the "to 
MySql
| part, but need some help with the "from c-tree."  If I just wanted to get 
this
| done, I would hunt down the ODBC driver and use some MSy thing.  But I am 
trying
| to hone my Python skills,
| My searching around has come up with a few ways to use Python to read the 
data:
|
| 1. pull what I need from some other py code that uses c-tree:
|
| 
http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/services/PythonScript/PythonTranslate.h?view=markup
| 
http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/scripts/TestZipCodes.py?view=markup
|
| 12 a,b,c = ZipCode.Get()
| 13 print "Zip code is ", a
| 14 print "State is ", b
| 15 print "City is ", c
|
| I am sure this is what I want.  I just haven't figured out where to 
start.
|
| 2. "Pyrex"  to create Python bindings to C API with minimal C knowledge. 
I took
| C and did a few little utilities on my own in the 90's.  plus I can make 
a
| tarball.  today I am not sure I even qualify for "minimal."
|
| 3. the C API is present as a shared object (.so), use it from Python with
| ctypes.   I have no idea what that means.
[snip]

I personally would start with either 1 or 3, but probably 3 since the skill 
of using ctypes is transferable to other problems and I want to learn it 
anyway.  Ctypes is a foreign function interface (FFI) module.  It is new in 
the Python stdlib with 2.5 but has been around as a 3rd party module much 
longer.  With a specification of the C API in hand, you should be able to 
write Python functions that call functions in the shared library.  Ctypes 
handles the interconversion of Python and C datatypes and the calling 
details.

I would start with the simplest thing that you can verify working: open 
database, get some info that you can print, so you know you really opened 
it, and close database.

Terry Jan Reedy




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


Re: Dynamic subclassing ?

2007-05-12 Thread Alex Martelli
manatlan <[EMAIL PROTECTED]> wrote:

> I've got an instance of a class, ex :
> 
> b=gtk.Button()
> 
> I'd like to add methods and attributes to my instance "b".
> I know it's possible by hacking "b" with setattr() methods. But i'd
> like to do it with inheritance, a kind of "dynamic subclassing",
> without subclassing the class, only this instance "b" !
> 
> In fact, i've got my instance "b", and another class "MoreMethods"
> 
> class MoreMethods:
> def  sayHello(self):
>   print "hello"
> 
> How could i write ...
> 
> "b = b + MoreMethods"
> 
> so "b" will continue to be a gtk.Button, + methods/attributs of
> MoreMethods (it's what i call "dynamic inheritance") ...so, things
> like this should work :
> 
> - b.set_label("k")
> - b.sayHello()
> 
> I can't find the trick, but i'm pretty sure it's possible in an easy
> way.

I think what you're asking for is totally weird, and with just about
zero advantages compared with several saner alternatives that have
already been proposed in this thread and that you have rejects, but
sure, it's possible:

def addaclass(aninst, onemoreclass):
aninst.__class__ = type(aninst.__aclass__.__name__,
(aninst.__aclass__, onemoreclass), {})


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


Re: Basic question

2007-05-12 Thread Alex Martelli
Cesar G. Miguel <[EMAIL PROTECTED]> wrote:

> On May 12, 3:40 pm, Dmitry Dzhus <[EMAIL PROTECTED]> wrote:
> > > Actually I'm trying to convert a string to a list of float numbers:
> > > str = '53,20,4,2' to L = [53.0, 20.0, 4.0, 2.0]
> >
> > str="53,20,4,2"
> > map(lambda s: float(s), str.split(','))
> >
> > Last expression returns: [53.0, 20.0, 4.0, 2.0]
> > --
> > Happy Hacking.
> >
> > Dmitry "Sphinx" Dzhushttp://sphinx.net.ru
> 
> Nice!

As somebody else alredy pointed out, the lambda is supererogatory (to
say the least).


> The following also works using split and list comprehension (as
> suggested in a brazilian python forum):
> 
> ---
> L = []
> file = ['5,1378,1,9', '2,1,4,5']
> str=''
> for item in file:
>   L.append([float(n) for n in item.split(',')])

The assignment to str is useless (in fact potentially damaging because
you're hiding a built-in name).

L = [float(n) for item in file for n in item.split(',')]

is what I'd call Pythonic, personally (yes, the two for clauses need to
be in this order, that of their nesting).


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


Re: Bug? import cp1252

2007-05-12 Thread John Machin
On May 13, 3:33 am, "Méta-MCI" <[EMAIL PROTECTED]>
wrote:
> Hi!
>
> I've a problem with these 2 scripts:
>
> file aaa.py (write in ANSI/cp1252):

What is "ANSI/cp1252"???

>
> # -*- coding: cp1252 -*-
>
> compo={}
>
> compo['pxrtf']= {
>  'fichier': "pxrtf.py",
>  'description': "Génération de fichiers RTF"
>   }
>
> file bbb.py (write in ANSI/cp1252):
>
> # -*- coding: cp1252 -*-
>
> import aaa
>
> With run bbb.py, I see:
>
> Traceback (most recent call last):
>   File "D:\dev\python\bbb.py", line 3, in 
> import aaa
>   File "D:\dev\python\aaa.py", line 3
>
> ^
> SyntaxError: invalid syntax
>
> (run directly aaa.py give no problem)
>
> (Python 2.5.1 + win_XP-SP2_french)
>
> BUT, if I write the file  aaa.py  in UTF-8, with 1st line:# -*- coding:
> utf-8 -*-
> the problem is removed  (file bbb.py stay in ANSI/cp1252)
>
> Bug? or am I wrong?
>
> @-salutations
>

Michel, I can't reproduce this -- Python 2.5.1, Windows XP Pro SP2

Given that the syntax error seems to be pointing to a blank empty
line, I suspect that's there's some invisible character in the file.
This would be likely not to show up when we view your file through a
web browser or news client. I suggest that you show us *exactly* what
you've got:

print open('aaa.py', 'rb').read()

HTH,
John

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


Re: Newbie look at Python and OO

2007-05-12 Thread walterbyrd
>
> You started this thread with a list of conceptual problems you were
> having. Are they now cleared up?
>

Yes. Thank you, and everybody else. I'm still learning, and still
getting used to Python. But, I understand the concepts that I was
having trouble with before.



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


Re: Optimizing numpy

2007-05-12 Thread sturlamolden
On May 12, 10:52 pm, Gerdus van Zyl <[EMAIL PROTECTED]> wrote:
> I have the following, that is used to convert pixel data and thus
> should be as fast as possible:
>
> b = numpy.ndarray (shape=(w,h,4), dtype=numpy.uint8)
>
> a = numpy.frombuffer(buf, numpy.uint8)
> a.shape = (w, h, 3)
>
> b[:,:,0] = a[:,:,2]
> b[:,:,1] = a[:,:,1]
> b[:,:,2] = a[:,:,0]
> b[:,:,3] = 255

You can express this as:

b[:,:,0:3] = a[:,:,2:-1:-1]
b[:,:,3] = 255


> Can anyone tell me if there is a faster way? Will making use of
> weave.blitz or pyrex help?


If you are going to use wave, then don't bother with weave.blitz use
wave.inline instead. You'll need something like this:

code = """
   register char a0, a1, a2;
   for (int i=0; ihttp://mail.python.org/mailman/listinfo/python-list


Re: Popen and wget, problems

2007-05-12 Thread Rob Wolfe
"Jesse" <[EMAIL PROTECTED]> writes:

> Hi all, I have a problem using wget and Popen. I hope someone can help.
>
>
> -- Problem --
> I want to use the command:
> wget -nv -O "dir/cpan.txt" "http://search.cpan.org";
> and capture all it's stdout+stderr.
> (Note that option -O requires 'dir' to be existing before wget is executed)
>
> Popen doesn't work, while os.system and shell do. Popen will give the error:
> dir/cpan.txt: No such file or directory
>
> While os.system and shell will give the correct result:
> 06:52:40 URL:http://search.cpan.org/ [3657/3657] -> "dir1/cpan.txt" [1]

[...]

> -- Python Code using Popen with cmd arg list --
> # imports
> import os
> from subprocess import Popen, PIPE
>
> # vars and create dir
> cmd_set = ['wget', '-nv', '-O dir/cpan.txt', 'http://search.span.org']
> cmd = ' '.join(cmd_set)
> print "cmd: " + cmd
> try:
> os.makedirs('dir')
> except:
> print 'dir already exists'
>
>
> # execute using Popen (does NOT work)
> proc = Popen(cmd_set, stdout=PIPE, stderr=PIPE)
> return_code = proc.wait()
> if return_code == 0:
> print "Success:\n%s" % (proc.stdout.read() + proc.stderr.read())
> else:
> print "Failure %s:\n%s" % (return_code, proc.stderr.read() +
> proc.stdout.read())
>
>
> # execute using os.system (does work)
> os.system(cmd)
>
>
> -- Python code output of Popen --
> Failure 1:
> dir/cpan.txt: No such file or directory
>
>
> -- Question --
> Why is Popen unable to correctly execute the wget, while os.system can?

I don't know exactly why in this case Popen doesn't work,
but the counterpart of os.system is Popen with option shell=True
and the first parameter should be a string instead of list.
That seems to work:
proc = Popen("wget -nv -O dir/cpan.txt http://search.span.org";, 
  shell=True, stdout=PIPE, stderr=PIPE)

and this variant seems to work too:
cmd_set = ['wget', '-nv', '-O', 'dir/cpan.txt', 'http://search.span.org']

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


Re: mmap thoughts

2007-05-12 Thread Nikita the Spider
In article <[EMAIL PROTECTED]>,
 "James T. Dennis" <[EMAIL PROTECTED]> wrote:

>* There don't seem to be any currently maintained SysV IPC
>  (shm, message, and semaphore) modules for Python.  I guess some
>  people have managed to hack something together using ctypes;
>  but I haven't actually read, much less tested, any of that code.

http://NikitaTheSpider.com/python/shm/


Enjoy =)

-- 
Philip
http://NikitaTheSpider.com/
Whole-site HTML validation, link checking and more
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Basic question

2007-05-12 Thread Kirk Job Sluder
"Cesar G. Miguel" <[EMAIL PROTECTED]> writes:

> I've been studying python for 2 weeks now and got stucked in the
> following problem:
>
> for j in range(10):
>   print j
>   if(True):
>j=j+2
>print 'interno',j
>
> What happens is that "j=j+2" inside IF does not change the loop
> counter ("j") as it would in C or Java, for example.

Granted this question has already been answered in parts, but I just 
wanted to elaborate.

Although the python for/in loop is superficially similar to C and Java
for loops, they work in very different ways. Range creates a list
object that can create an iterator, and the for/in construct under the
hood sets j to the results of iterator.next().  The equivalent
completely untested java would be something like:

public ArrayList range(int n){
a = new ArrayList; //Java 1.5 addition I think.
for(int x=0,x
> Am I missing something?
>
> []'s
> Cesar
>

-- 
Kirk Job Sluder
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple Python REGEX Question

2007-05-12 Thread James T. Dennis
johnny <[EMAIL PROTECTED]> wrote:
> I need to get the content inside the bracket.

> eg. some characters before bracket (3.12345).
> I need to get whatever inside the (), in this case 3.12345.
> How do you do this with python regular expression?

 I'm going to presume that you mean something like:

I want to extract floating point numerics from parentheses
embedded in other, arbitrary, text.

 Something like:

>>> given='adfasdfafd(3.14159265)asdfasdfadsfasf'
>>> import re
>>> mymatch = re.search(r'\(([0-9.]+)\)', given).groups()[0]
>>> mymatch
'3.14159265'
>>> 

 Of course, as with any time you're contemplating the use of regular
 expressions, there are lots of questions to consider about the exact
 requirements here.  What if there are more than such pattern?  Do you
 only want the first match per line (or other string)?  (That's all my
 example will give you).  What if there are no matches?  My example
 will raise an AttributeError (since the re.search will return the
 "None" object rather than a match object; and naturally the None
 object has no ".groups()' method.

 The following might work better:

>>> mymatches = re.findall(r'\(([0-9.]+)\)', given).groups()[0]
>>> if len(mymatches):
>>> ...

 ... and, of couse, you might be better with a compiled regexp if
 you're going to repeast the search on many strings:

num_extractor = re.compile(r'\(([0-9.]+)\)')
for line in myfile:
for num in num_extractor(line):
pass
# do whatever with all these numbers


-- 
Jim Dennis,
Starshine: Signed, Sealed, Delivered

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


ctree data

2007-05-12 Thread Carl K
A friend needs to convert c-tree plus data to MySql.  I can to the "to MySql 
part, but need some help with the "from c-tree."  If I just wanted to get this 
done, I would hunt down the ODBC driver and use some MSy thing.  But I am 
trying 
to hone my Python skills, but right now I am in over my head, thus this post.  
I 
think with a little boost I will be able to make it all come together.  (well, 
little boost may be an understatement - I have no clue how close/far I am from 
what I need.)

My searching around has come up with a few ways to use Python to read the data:

1. pull what I need from some other py code that uses c-tree:

http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/services/PythonScript/PythonTranslate.h?view=markup
http://oltp-platform.cvs.sourceforge.net/oltp-platform/OLTPP/scripts/TestZipCodes.py?view=markup

 12 a,b,c = ZipCode.Get()
 13 print "Zip code is ", a
 14 print "State is ", b
 15 print "City is ", c

I am sure this is what I want.  I just haven't figured out where to start.

2. "Pyrex"  to create Python bindings to C API with minimal C knowledge.  I 
took 
C and did a few little utilities on my own in the 90's.  plus I can make a 
tarball.  today I am not sure I even qualify for "minimal."

3. the C API is present as a shared object (.so), use it from Python with 
ctypes.   I have no idea what that means.

4. odbc - I am actually not thrilled about using the ctree odbc driver in any 
environment, because someone else who tried to use it on some other data a few 
years ago said it was flaky, and support was next to useless.

5, get someone who knows perl to do it using 
http://cpan.uwinnipeg.ca/htdocs/Db-Ctree/Db/Ctree.html - This just shows what 
lengths I am willing to go to.  but I really don't want to start learning perl.

TIA
Carl K
-- 
http://mail.python.org/mailman/listinfo/python-list


Bug? import cp1252

2007-05-12 Thread M�ta-MCI
Hi!

I've a problem with these 2 scripts:


file aaa.py (write in ANSI/cp1252):

# -*- coding: cp1252 -*-

compo={}

compo['pxrtf']= {
 'fichier': "pxrtf.py",
 'description': "Génération de fichiers RTF"
  }



file bbb.py (write in ANSI/cp1252):

# -*- coding: cp1252 -*-

import aaa



With run bbb.py, I see:

Traceback (most recent call last):
  File "D:\dev\python\bbb.py", line 3, in 
import aaa
  File "D:\dev\python\aaa.py", line 3

^
SyntaxError: invalid syntax



(run directly aaa.py give no problem)


(Python 2.5.1 + win_XP-SP2_french)




BUT, if I write the file  aaa.py  in UTF-8, with 1st line:# -*- coding: 
utf-8 -*-
the problem is removed  (file bbb.py stay in ANSI/cp1252)



Bug? or am I wrong?



@-salutations

Michel Claveau



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


Optimizing numpy

2007-05-12 Thread Gerdus van Zyl
I have the following, that is used to convert pixel data and thus
should be as fast as possible:

b = numpy.ndarray (shape=(w,h,4), dtype=numpy.uint8)

a = numpy.frombuffer(buf, numpy.uint8)
a.shape = (w, h, 3)

b[:,:,0] = a[:,:,2]
b[:,:,1] = a[:,:,1]
b[:,:,2] = a[:,:,0]
b[:,:,3] = 255

Can anyone tell me if there is a faster way? Will making use of
weave.blitz or pyrex help?

Thank You.

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


How to cleanly pause/stop a long running function?

2007-05-12 Thread Basilisk96
Suppose I have a function that may run for a long time - perhaps from
several minutes to several hours. An example would be this file
processing function:

import os
def processFiles(startDir):
for root, dirs, files in os.walk(startDir):
for fname in files:
if fname.lower().endswith(".zip"):
# ... do interesting stuff with the file here ...

Imagine that there are thousands of files to process. This could take
a while. How can I implement this so that the caller can pause or
interrupt this function, and resume its program flow? Doing a Ctrl+C
interrupt would be a not-so-clean-way of performing such a thing, and
it would quit the application altogether. I'd rather have the function
return a status object of what it has accomplished thus far.

I have heard about threads, queues, and asynchronous programming, but
am not sure which is appropriate for this and how to apply it. Perhaps
the above function should be a method of a class that inherits from
the appropriate handler class? Any help will be appreciated.

-Basilisk96

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


Re: design question

2007-05-12 Thread idaku2
On May 12, 9:34 pm, Bjoern Schliessmann  wrote:

> In principle, this is legal.
>
> But OTOH, how could a ShoppingCart "buy" something? In my world,
> Buyers "buy" when using ShoppingCarts.

Yes, I don't know either.  I got this assignment for my homework, and
in UML diagram class ShoppingCart has method buy(), and the class
Buyer doesn't have any methods, only attribute ShoppingCart, and I
must simulate/implement online shopping.  In my world buyers buy too,
just wanna check with somebody with more experience.  :)

Thank you both.

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


Re: package rating system for the Cheese Shop

2007-05-12 Thread cbtube03
On May 12, 2:49 pm, Steven Bethard <[EMAIL PROTECTED]> wrote:
> [EMAIL PROTECTED] wrote:
> > Is there a package rating system for the Cheese Shop, like how Perl
> > has cpanratings (http://cpanratings.perl.org/)?
>
> I don't know CPAN, but maybe this is what you're looking for:
>
>  http://www.cheeserater.com/
>
> ?
>
> STeVe

Thanks for the link STeVe. Yes, this is the sort of thing I was
looking for. Looks like there's no way to actually leave comments on a
package though; just a (+) or (-) rating. No way to say something
like, "I like x, y, and z about this package, but n, m, and especially
o need to get fixed" though.

One strength of cpanratings is you can leave those comments. A well-
written review comment, like "I used this package, and here's how it
worked out ... If you need , you might try  instead of this one." is much more valuable than a thumbs-up or
thumbs-down.

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


Re: Read from Windows Address Book (.wab file format) ?

2007-05-12 Thread rynt
On May 12, 11:30 am, 詹光耀 <[EMAIL PROTECTED]> wrote:
> Hi all!
>
> I wonder if there's any Python module that could read from .wab file.
> I googled but found nothing useful. Any idea? Thanks :)
>
> Rio

Hi Rio,

Don't know if there's a python module for this, but this link,

http://msdn2.microsoft.com/en-us/library/ms629361.aspx

defines the MS API for the address book, so you could roll your own.

If all you need is to read the data though, you could export the
address data into a CSV file (Python DOES have a module for this) or
VCard format.  IIRC, someone on this newsgroup was talking about VCard
just the other day.

HTH

rynt


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

Re: Creating a function to make checkbutton with information from a list?

2007-05-12 Thread half . italian
On May 12, 11:04 am, Thomas Jansson <[EMAIL PROTECTED]> wrote:
> Dear all
>
> I am writing a program with tkinter where I have to create a lot of
> checkbuttons. They should have the same format but should have
> different names. My intention is to run the functions and the create
> all the buttons with the names from the list.
>
> I now the lines below doesn't work, but this is what I have so far. I
> don't really know how call the element in the dict use in the for
> loop. I tried to call +'item'+ but this doesn't work.
>
> def create_checkbox(self):
>self.checkbutton = ["LNCOL", "LFORM", "LPOT", "LGRID",  "LERR",
> "LCOMP"]
>for item in self.checkbutton:
>   self.+'item'+Checkbutton = Chekcbutton(frame, onvalue='t',
> offvalue='f', variable=self.+'item'+)
>   self.+'item'+Checkbutton.grid()
>
> How should I do this?
>
> Kind regards
> Thomas Jansson

You can use exec("self." + name + " = " + value) to do what you want,
but then you need to exec() each time you want to access the
variable.  I think it is much better to create a class.

Here's what I came up with:

from Tkinter import *

class Window(Frame):
def __init__(self, parent=None):
Frame.__init__(self,parent=None)
self.names = ["LNCOL", "LFORM", "LPOT", "LGRID",  "LERR", 
"LCOMP",
"Sean"]
self.checkbuttons = []

self.f = Frame(root)
for name in self.names:
self.checkbuttons.append(CButton(parent=self.f, 
name=name,
default="f"))

self.f.pack(side="top",padx=5, pady=5)


class CButton(object):
def __init__(self, parent=None, name=None, default=None):
self.name = name
self.parent = parent
self.variable = StringVar()
self.variable.set(default)
self.checkbutton = None
self.create_checkbox(name)

def create_checkbox(self,name):
f = Frame(self.parent)
Label(f, text=name).pack(side="left")
self.checkbutton  = Checkbutton(f, onvalue='t', offvalue='f',
variable=self.variable)
self.checkbutton.bind("", self.state_changed)
self.pack()
f.pack()

def pack(self):
self.checkbutton.pack()

def state_changed(self, event=None):
print "%s: %s" % (self.name, self.variable.get())

if __name__ == '__main__':
root = Tk()
Window().mainloop()

~Sean

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


Re: [Newbie] design question

2007-05-12 Thread Bjoern Schliessmann
[EMAIL PROTECTED] wrote:
> Suppose I have class ShoppingCart which has one method called
> buy(), and class Buyer who has one reference to ShoppingCart... 
> Can I also have method buy() in class Buyer, which will then
> called ShoppingCard.buy(), and also do some other stuff?  Is this
> legal design pattern, have methods with same name?

In principle, this is legal.

But OTOH, how could a ShoppingCart "buy" something? In my world,
Buyers "buy" when using ShoppingCarts.

Regards,


Björn

-- 
BOFH excuse #445:

Browser's cookie is corrupted -- someone's been nibbling on it.

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


Re: package rating system for the Cheese Shop

2007-05-12 Thread Steven Bethard
[EMAIL PROTECTED] wrote:
> Is there a package rating system for the Cheese Shop, like how Perl
> has cpanratings (http://cpanratings.perl.org/)?

I don't know CPAN, but maybe this is what you're looking for:

 http://www.cheeserater.com/

?

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


Re: Basic question

2007-05-12 Thread Cesar G. Miguel
On May 12, 3:40 pm, Dmitry Dzhus <[EMAIL PROTECTED]> wrote:
> > Actually I'm trying to convert a string to a list of float numbers:
> > str = '53,20,4,2' to L = [53.0, 20.0, 4.0, 2.0]
>
> str="53,20,4,2"
> map(lambda s: float(s), str.split(','))
>
> Last expression returns: [53.0, 20.0, 4.0, 2.0]
> --
> Happy Hacking.
>
> Dmitry "Sphinx" Dzhushttp://sphinx.net.ru

Nice!

The following also works using split and list comprehension (as
suggested in a brazilian python forum):

---
L = []
file = ['5,1378,1,9', '2,1,4,5']
str=''
for item in file:
L.append([float(n) for n in item.split(',')])
---

Thank you for all suggestions!

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


Re: Dynamic subclassing ?

2007-05-12 Thread Steven Bethard
manatlan wrote:
> I've got an instance of a class, ex :
> 
> b=gtk.Button()
> 
> I'd like to add methods and attributes to my instance "b".
> I know it's possible by hacking "b" with setattr() methods. But i'd
> like to do it with inheritance, a kind of "dynamic subclassing",
> without subclassing the class, only this instance "b" !
> 
> In fact, i've got my instance "b", and another class "MoreMethods"
> 
> class MoreMethods:
> def  sayHello(self):
>   print "hello"
> 
> How could i write ...
> 
> "b = b + MoreMethods"

You can simply bind the methods you want to add to the Button instance. 
That means doing the equivalent of ``b.sayHello = sayHello.__get__(b)``. 
For example::

 >>> class Button(object):
 ... def set_label(self, label):
 ... print 'setting label:', label
 ...
 >>> def add_methods(obj, cls):
 ... for name, value in cls.__dict__.items():
 ... if callable(value) and hasattr(value, '__get__'):
 ... setattr(obj, name, value.__get__(obj, type(obj)))
 ...
 >>> b = Button()
 >>> b.set_label('k')
 setting label: k
 >>> b.say_hello()
 Traceback (most recent call last):
   File "", line 1, in 
 AttributeError: 'Button' object has no attribute 'say_hello'
 >>> class MoreMethods(object):
 ... def say_hello(self):
 ... print 'hello'
 ...
 >>> add_methods(b, MoreMethods)
 >>> b.set_label('m')
 setting label: m
 >>> b.say_hello()
 hello

HTH,

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


Re: Basic question

2007-05-12 Thread Grant Edwards
On 2007-05-12, Dmitry Dzhus <[EMAIL PROTECTED]> wrote:

> str="53,20,4,2"
> map(lambda s: float(s), str.split(','))

There's no need for the lambda.

  map(float,str.split(','))

Does exactly the same thing.

-- 
Grant Edwards   grante Yow!  I feel like I am
  at   sharing a "CORN-DOG" with
   visi.comNIKITA KHRUSCHEV...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Basic question

2007-05-12 Thread Grant Edwards
On 2007-05-12, Cesar G. Miguel <[EMAIL PROTECTED]> wrote:

> Actually I'm trying to convert a string to a list of float numbers:
> str = '53,20,4,2' to L = [53.0, 20.0, 4.0, 2.0]

>>> str = '53,20,4,2'

>>> [float(w) for w in str.split(',')]

[53.0, 20.0, 4.0, 2.0]

>>> map(float,str.split(','))

[53.0, 20.0, 4.0, 2.0]

-- 
Grant Edwards   grante Yow!  I want you to
  at   MEMORIZE the collected
   visi.compoems of EDNA ST VINCENT
   MILLAY... BACKWARDS!!
-- 
http://mail.python.org/mailman/listinfo/python-list


package rating system for the Cheese Shop

2007-05-12 Thread cbtube03
Is there a package rating system for the Cheese Shop, like how Perl
has cpanratings (http://cpanratings.perl.org/)?

Do you think it would be useful?

I see that we already have Cheesecake (http://pycheesecake.org/) for
rating a package's kwalitee (like Perl's CPANTS). But browsing the
Cheese Shop, I don't see a way to view or sort by Cheesecake rating...
How can I see the kwalitee ratings of the packages at the Cheese Shop?

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


Re: Basic question

2007-05-12 Thread Dmitry Dzhus

> Actually I'm trying to convert a string to a list of float numbers:
> str = '53,20,4,2' to L = [53.0, 20.0, 4.0, 2.0]

str="53,20,4,2"
map(lambda s: float(s), str.split(','))

Last expression returns: [53.0, 20.0, 4.0, 2.0]
-- 
Happy Hacking.

Dmitry "Sphinx" Dzhus
http://sphinx.net.ru
-- 
http://mail.python.org/mailman/listinfo/python-list


Read from Windows Address Book (.wab file format) ?

2007-05-12 Thread 詹光耀
Hi all!

I wonder if there's any Python module that could read from .wab file.
I googled but found nothing useful. Any idea? Thanks :)

Rio

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


Re: Basic question

2007-05-12 Thread Cesar G. Miguel
On May 12, 3:09 pm, Karlo Lozovina <[EMAIL PROTECTED]> wrote:
> Cesar G. Miguel wrote:
> > -
> > L = []
> > file = ['5,1378,1,9', '2,1,4,5']
> > str=''
> > for item in file:
> >j=0
> >while(j >   while(item[j] != ','):
> >  str+=item[j]
> >  j=j+1
> > if(j>= len(item)): break
>
> >   if(str != ''):
> > L.append(float(str))
> >  str = ''
>
> >   j=j+1
>
> > print L
> > But I'm not sure this is an elegant pythonic way of coding :-)
>
> Example:
>
> In [21]: '5,1378,1,9'.split(',')
> Out[21]: ['5', '1378', '1', '9']
>
> So, instead of doing that while-based traversal and parsing of `item`,
> just split it like above, and use a for loop on it. It's much more
> elegant and pythonic.
>
> HTH,
> Karlo.

Great! Now it looks better :-)

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


Re: preferred windows text editor?

2007-05-12 Thread Josiah Carlson
T. Crane wrote:
> Right now I'm using Notepad++.  What are other people using?

If you are looking for editors written in Python (that are generally 
multiplatform using wxPython), there are a few listed: 
http://wiki.wxpython.org/wxPythonPit_Apps .

If you are looking for editors with Python support, there is a listing 
on the Python wiki: http://wiki.python.org/moin/PythonEditors

I use PyPE (http://pype.sf.net) for most of my editing needs.

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


Re: [Newbie] design question

2007-05-12 Thread Daniel Nogradi
> Suppose I have class ShoppingCart which has one method called buy(),
> and class Buyer who has one reference to ShoppingCart...  Can I also
> have method buy() in class Buyer, which will then called
> ShoppingCard.buy(), and also do some other stuff?  Is this legal
> design pattern, have methods with same name?

Yes, something like this is perfectly fine.

class ShoppingCart( object ):
def buy( self ):
print 'buy in shoppingcart'

class Buyer( object ):
def __init__( self, cart ):
self.cart = cart

def buy( self ):
print 'buy in buyer'
self.cart.buy( )
print 'some extra stuff'

acart = ShoppingCart( )
abuyer = Buyer( cart=acart )
abuyer.buy( )


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


Re: Basic question

2007-05-12 Thread Karlo Lozovina
Cesar G. Miguel wrote:

> -
> L = []
> file = ['5,1378,1,9', '2,1,4,5']
> str=''
> for item in file:
>j=0
>while(j   while(item[j] != ','):
>  str+=item[j]
>  j=j+1
>if(j>= len(item)): break
> 
>   if(str != ''):
>L.append(float(str))
>  str = ''
> 
>   j=j+1
> 
> print L
> But I'm not sure this is an elegant pythonic way of coding :-)

Example:

In [21]: '5,1378,1,9'.split(',')
Out[21]: ['5', '1378', '1', '9']

So, instead of doing that while-based traversal and parsing of `item`, 
just split it like above, and use a for loop on it. It's much more 
elegant and pythonic.

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


Creating a function to make checkbutton with information from a list?

2007-05-12 Thread Thomas Jansson
Dear all

I am writing a program with tkinter where I have to create a lot of
checkbuttons. They should have the same format but should have
different names. My intention is to run the functions and the create
all the buttons with the names from the list.

I now the lines below doesn't work, but this is what I have so far. I
don't really know how call the element in the dict use in the for
loop. I tried to call +'item'+ but this doesn't work.

def create_checkbox(self):
   self.checkbutton = ["LNCOL", "LFORM", "LPOT", "LGRID",  "LERR",
"LCOMP"]
   for item in self.checkbutton:
  self.+'item'+Checkbutton = Chekcbutton(frame, onvalue='t',
offvalue='f', variable=self.+'item'+)
  self.+'item'+Checkbutton.grid()

How should I do this?

Kind regards
Thomas Jansson

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


[Newbie] design question

2007-05-12 Thread idaku2
Hi all

Suppose I have class ShoppingCart which has one method called buy(),
and class Buyer who has one reference to ShoppingCart...  Can I also
have method buy() in class Buyer, which will then called
ShoppingCard.buy(), and also do some other stuff?  Is this legal
design pattern, have methods with same name?

Thanks in advance.

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


Re: Basic question

2007-05-12 Thread Cesar G. Miguel
On May 12, 2:45 pm, Basilisk96 <[EMAIL PROTECTED]> wrote:
> On May 12, 12:18 pm, "Cesar G. Miguel" <[EMAIL PROTECTED]> wrote:
>
>
>
> > I've been studying python for 2 weeks now and got stucked in the
> > following problem:
>
> > for j in range(10):
> >   print j
> >   if(True):
> >j=j+2
> >print 'interno',j
>
> > What happens is that "j=j+2" inside IF does not change the loop
> > counter ("j") as it would in C or Java, for example.
>
> > Am I missing something?
>
> > []'s
> > Cesar
>
> What is your real intent here? This is how I understand it after
> reading your post: you want to create a loop that steps by an
> increment of 2. If that's the case, then:
>
> >>> for j in range(0,10,2):
>
> ... print j
> ...
> 0
> 2
> 4
> 6
> 8
>
> would be a simple result.
>
> Cheers,
> -Basilisk96

Actually I'm trying to convert a string to a list of float numbers:
str = '53,20,4,2' to L = [53.0, 20.0, 4.0, 2.0]

As some of you suggested, using while it works:

-
L = []
file = ['5,1378,1,9', '2,1,4,5']
str=''
for item in file:
   j=0
   while(j= len(item)): break

  if(str != ''):
 L.append(float(str))
 str = ''

  j=j+1

print L
-

But I'm not sure this is an elegant pythonic way of coding :-)

Thanks for all suggestions!

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


Re: searching algorithm

2007-05-12 Thread aaronwmail-usenet
On May 10, 1:26 pm, Gigs_ <[EMAIL PROTECTED]> wrote:
> Hi all!
>
> I have text file (english-croatian dictionary) with words in it in 
> alphabetical
> order.
> This file contains 17 words in this format:
> english word: croatian word

Let's assume it's okay to have all the data in memory.
In my experience the very fastest way to do what you
want is to store the strings in a sorted list and use
the binary search library module bisect.  I once compared this
with doing something similar with tries and it was
much faster.  It's also the most simple way to do it, which
is nice too :).
  -- Aaron Watters

===
never eat anything bigger than your head -- kliban


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


Re: Interesting list Validity (True/False)

2007-05-12 Thread Carsten Haese
On Fri, 2007-05-11 at 14:26 -0700, [EMAIL PROTECTED] wrote:
> if arg==True:
> 
> tests the type property (whether a list is a boolean).

That sounds nonsensical and incorrect. Please explain what you mean.

"if arg==True" tests whether the object known as arg is equal to the
object known as True.

Regards,

-- 
Carsten Haese
http://informixdb.sourceforge.net


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


Re: Problems with grid() layout under tkinter

2007-05-12 Thread Thomas Jansson
I found the error - some of the widgets belonged to "master" and some
to "frame". So glad I found that Error - that took forever! :D

Kind regards
Thomas Jansson

On 11 Maj, 23:06, Thomas Jansson <[EMAIL PROTECTED]> wrote:
> Dear all
>
> I am trying to make a small wrapper program for textbased program and
> it is going well but I have one problem. Namely that I simply do not
> understand how this grid thing work. I have assigned every widget a
> specific placement in a grid but when I am running the program it
> looks very strange. I hope you can help me.
>
> A example of the 
> programhttp://tjansson.dyndns.dk/apache2-default/strange-grid.jpg
> and the codehttp://tjansson.dyndns.dk/tjansson/gui.py
>
> Kind regards
> Thomas Jansson


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


Re: Basic question

2007-05-12 Thread Basilisk96
On May 12, 12:18 pm, "Cesar G. Miguel" <[EMAIL PROTECTED]> wrote:
> I've been studying python for 2 weeks now and got stucked in the
> following problem:
>
> for j in range(10):
>   print j
>   if(True):
>j=j+2
>print 'interno',j
>
> What happens is that "j=j+2" inside IF does not change the loop
> counter ("j") as it would in C or Java, for example.
>
> Am I missing something?
>
> []'s
> Cesar

What is your real intent here? This is how I understand it after
reading your post: you want to create a loop that steps by an
increment of 2. If that's the case, then:

>>> for j in range(0,10,2):
... print j
...
0
2
4
6
8

would be a simple result.

Cheers,
-Basilisk96

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


Re: Finally started on python..

2007-05-12 Thread Marc 'BlackJack' Rintsch
In <[EMAIL PROTECTED]>, Roger Gammans
wrote:

> I found myself using this sort of code a bit in one of my recent
> scripts
>  class Something:
>   def Entries(self):
>sort=self._data.keys()
>  sort.sort()
>  for i in sort:
> yield i
> 
> IS this preferable to just returning the sort array from the function
> or not? Which is more runtime efficent.

I see no benefit for a generator here as the whole list mus be build for
sorting anyway.  If you still want return an iterable here it could be
written this way:

class Something(object):
def iter_entries(self):
return iter(sorted(self._data.keys()))

Just leave out the `iter()` call to return a sorted list.

If you want to make `Something` objects iterable over the sorted keys,
change the method name to `__iter__()`.  Then you can use `Something`
objects like this:

something = Something()
# Puts some entries into `something`.
for entry in something:
print entry

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


Drawing Text on a Path

2007-05-12 Thread Hugo Ferreira
Hi everyone,

I need to draw some curved text on an image. I've digged both PIL and
aggdraw documentation for this kind of feature, but found nothing.
However, AGG itself does support rendering text along a path, but I
can't seem to figure out how to deal with the API/Wrapper
differences...

Could someone give me an hand here?

Thanks in advance!

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


Re: Basic question

2007-05-12 Thread Dmitry Dzhus

> "j=j+2" inside IF does not change the loop
> counter ("j")

You might be not truly catching the idea of Python `for` statements
sequence nature. It seems that 
will make things quite clear.

> The suite may assign to the variable(s) in the target list; this
> does not affect the next item assigned to it.

In C you do not specify all the values the "looping" variable will be
assigned to, unlike (in the simplest case) you do in Python.

-- 
Happy Hacking.

Dmitry "Sphinx" Dzhus
http://sphinx.net.ru
-- 
http://mail.python.org/mailman/listinfo/python-list


Finally started on python..

2007-05-12 Thread Roger Gammans

Hi,

Having known about python since around the turn of the century , 
I finally found a (actually two) reason to learn it. 

Python seems to have moved on a little since the 1.5.2 release
covered in the reference book (Essential Python) I bought way back when
so I could learn it when the time came but it seems to be mainly backward
compatible - is there anything that likely to catch me out -
I use linux, so heavy use of an upto date pydoc has filled the gaps
so far.

I do however have a couple of questions:-

1) A nice simple language query :
I found myself using this sort of code a bit in one of my recent
scripts
 class Something:
def Entries(self):
   sort=self._data.keys()
   sort.sort()
   for i in sort:
  yield i

IS this preferable to just returning the sort array from the function
or not? Which is more runtime efficent.

Does it change if the last line was yield self._data[i] instead as
that would require a map() in the function ?

2)
I've ended up coding a new wrapper for reading in data structures
from XML files (it wraps xml.sax) so that ctor are call on each end
tag with the XML Objects contents.

Does the python communitity have something like Perl's CPAN and 
is there already something there taht does this or would it
be something that I could give back? Is there a naming
convention for such modules in python - I couldn't easly detect
one looking at the library which whip with python in Debian.

Sorry, for asking so much in a first post but I thought both
queries were link with by relative newby status.

TTFN
-- 
Roger.  Home| http://www.sandman.uklinux.net/
Master of Peng Shui.  (Ancient oriental art of Penguin Arranging)
Work|Independent Sys Consultant | http://www.computer-surgery.co.uk/
So what are the eigenvalues and eigenvectors of 'The Matrix'? --anon
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamic subclassing ?

2007-05-12 Thread Daniel Nogradi
> > > I've got an instance of a class, ex :
> >
> > > b=gtk.Button()
> >
> > > I'd like to add methods and attributes to my instance "b".
> > > I know it's possible by hacking "b" with setattr() methods. But i'd
> > > like to do it with inheritance, a kind of "dynamic subclassing",
> > > without subclassing the class, only this instance "b" !
> >
> > > In fact, i've got my instance "b", and another class "MoreMethods"
> >
> > > class MoreMethods:
> > > def  sayHello(self):
> > >   print "hello"
> >
> > > How could i write ...
> >
> > > "b = b + MoreMethods"
> >
> > > so "b" will continue to be a gtk.Button, + methods/attributs of
> > > MoreMethods (it's what i call "dynamic inheritance") ...so, things
> > > like this should work :
> >
> > > - b.set_label("k")
> > > - b.sayHello()
> >
> > > I can't find the trick, but i'm pretty sure it's possible in an easy
> > > way.
> >
> > How about:
> >
> > class MoreMethods:
> > def  sayHello(self):
> > print "hello"
> >
> > class myButton( gtk.Button, MoreMethods ):
> > pass
> >
> > b = myButton( )
> >
> > isinstance( b, gtk.Button )  # True
> > b.sayHello( )  # "hello"
>
> yes, but it needs to recreate an instance (of mybutton) ...
> i can't do that, in my context.
> The only things i've got is my instance "b" (which can be whatever
> object).
> i'd like to add methods/attributes to this instance, by adding a
> heritage of another class.

I think that is not possible, at least in a simple way (there might be
a complicated way of messing with the MRO). Please anyone correct me
if I was wrong.

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


Re: Dynamic subclassing ?

2007-05-12 Thread Karlo Lozovina
manatlan wrote:

> I can't find the trick, but i'm pretty sure it's possible in an easy
> way.

It's somewhat easy, boot looks ugly to me. Maybe someone has a more 
elegant solution:

In [6]: import new

In [13]: class Button:
: def buttonFunc(self):
: pass

In [14]: class ExtensionClass:
: def extendedMethod(self):
: pass

In [15]: hybrid = new.instance(Button, 
Button.__dict__.update(ExtensionClass.__dict__))

In [17]: dir(hybrid)
Out[17]: ['__doc__', '__module__', 'buttonFunc', 'extendedMethod']

Seems to do what you want it to do.

HTH,
Karlo.









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


Re: need help with python

2007-05-12 Thread BartlebyScrivener
I'm not sure how you installed Python, or how you are using it, but I
made something last year to help Windows XP users who are brand new to
Python and can't get things to run, etc.

You might try either jumping into somewhere midway, or if you keep
having trouble, uninstall whatever you installed and start over using
this:

http://www.richarddooling.com/index.php/2006/03/14/python-on-xp-7-minutes-to-hello-world/

If that link breaks, use this:

http://tinyurl.com/w7wgp

Good luck.

rd


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


Re: Dynamic subclassing ?

2007-05-12 Thread manatlan
On 12 mai, 18:38, "Daniel Nogradi" <[EMAIL PROTECTED]> wrote:
> > I've got an instance of a class, ex :
>
> > b=gtk.Button()
>
> > I'd like to add methods and attributes to my instance "b".
> > I know it's possible by hacking "b" with setattr() methods. But i'd
> > like to do it with inheritance, a kind of "dynamic subclassing",
> > without subclassing the class, only this instance "b" !
>
> > In fact, i've got my instance "b", and another class "MoreMethods"
>
> > class MoreMethods:
> > def  sayHello(self):
> >   print "hello"
>
> > How could i write ...
>
> > "b = b + MoreMethods"
>
> > so "b" will continue to be a gtk.Button, + methods/attributs of
> > MoreMethods (it's what i call "dynamic inheritance") ...so, things
> > like this should work :
>
> > - b.set_label("k")
> > - b.sayHello()
>
> > I can't find the trick, but i'm pretty sure it's possible in an easy
> > way.
>
> How about:
>
> class MoreMethods:
> def  sayHello(self):
> print "hello"
>
> class myButton( gtk.Button, MoreMethods ):
> pass
>
> b = myButton( )
>
> isinstance( b, gtk.Button )  # True
> b.sayHello( )  # "hello"

yes, but it needs to recreate an instance (of mybutton) ...
i can't do that, in my context.
The only things i've got is my instance "b" (which can be whatever
object).
i'd like to add methods/attributes to this instance, by adding a
heritage of another class.

> Daniel
thanks

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


Re: Basic question

2007-05-12 Thread Arnaud Delobelle
On May 12, 5:18 pm, "Cesar G. Miguel" <[EMAIL PROTECTED]> wrote:
> I've been studying python for 2 weeks now and got stucked in the
> following problem:
>
> for j in range(10):
>   print j
>   if(True):
>j=j+2
>print 'interno',j
>
> What happens is that "j=j+2" inside IF does not change the loop
> counter ("j") as it would in C or Java, for example.
>
> Am I missing something?

Yes you are :)

"for j in range(10):..." means:
   1. Build a list [0,1,2,3,4,5,6,7,8,9]
   2. For element in this list (0, then 1, then 2,...), set j to that
value then execute the code inside the loop body

To simulate "for(; ; ) "
you have to use while in Python:


while :



Of course in most case it would not be the "pythonic" way of doing
it :)

--
Arnaud

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


Re: Basic question

2007-05-12 Thread Karlo Lozovina
Cesar G. Miguel wrote:

> for j in range(10):
>   print j
>   if(True):
>j=j+2
>print 'interno',j
> 
> What happens is that "j=j+2" inside IF does not change the loop
> counter ("j") as it would in C or Java, for example.
> Am I missing something?

If you want that kind of behaviour then use a `while` construct:

j = 0
while j < 5:
 print j
 if True:
 j = j + 3
 print '-- ', j

If you use a for loop, for each pass through the foor loop Python 
assigns next item in sequence to the `j` variable.

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


Re: Basic question

2007-05-12 Thread Gary Herron
Cesar G. Miguel wrote:
> I've been studying python for 2 weeks now and got stucked in the
> following problem:
>
> for j in range(10):
>   print j
>   if(True):
>j=j+2
>print 'interno',j
>
> What happens is that "j=j+2" inside IF does not change the loop
> counter ("j") as it would in C or Java, for example.
>
> Am I missing something?
>
> []'s
> Cesar
>
>   
Nope. The loop counter will be assigned successively through the list of 
integers produced by range(10). Inside the loop, if you change j, then 
from that point on for that pass through the body, j will have that 
value. But such an action will not change the fact that next pass 
through the loop, j will be assigned the next value in the list.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamic subclassing ?

2007-05-12 Thread Daniel Nogradi
> I've got an instance of a class, ex :
>
> b=gtk.Button()
>
> I'd like to add methods and attributes to my instance "b".
> I know it's possible by hacking "b" with setattr() methods. But i'd
> like to do it with inheritance, a kind of "dynamic subclassing",
> without subclassing the class, only this instance "b" !
>
> In fact, i've got my instance "b", and another class "MoreMethods"
>
> class MoreMethods:
> def  sayHello(self):
>   print "hello"
>
> How could i write ...
>
> "b = b + MoreMethods"
>
> so "b" will continue to be a gtk.Button, + methods/attributs of
> MoreMethods (it's what i call "dynamic inheritance") ...so, things
> like this should work :
>
> - b.set_label("k")
> - b.sayHello()
>
> I can't find the trick, but i'm pretty sure it's possible in an easy
> way.

How about:

class MoreMethods:
def  sayHello(self):
print "hello"

class myButton( gtk.Button, MoreMethods ):
pass

b = myButton( )

isinstance( b, gtk.Button )  # True
b.sayHello( )  # "hello"


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


Basic question

2007-05-12 Thread Cesar G. Miguel
I've been studying python for 2 weeks now and got stucked in the
following problem:

for j in range(10):
  print j
  if(True):
   j=j+2
   print 'interno',j

What happens is that "j=j+2" inside IF does not change the loop
counter ("j") as it would in C or Java, for example.

Am I missing something?

[]'s
Cesar

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


Re: path stuff

2007-05-12 Thread BartlebyScrivener
On May 9, 1:11 pm, fscked <[EMAIL PROTECTED]> wrote:
> I am walking some directories looking for a certain filename pattern.
> This part works fine, but what if I want to exclude results from a
> certain directory being printed?

You might find this thread helpful

http://tinyurl.com/2guk3l

Note how the backup dirs are excluded.

Highly recommend Python Cookbook, too.

rd

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


Re: Dynamic subclassing ?

2007-05-12 Thread manatlan
On 12 mai, 17:00, Bruno Desthuilliers
<[EMAIL PROTECTED]> wrote:
> manatlan a écrit :
>
> > I've got an instance of a class, ex :
>
> > b=gtk.Button()
>
> > I'd like to add methods and attributes to my instance "b".
> > I know it's possible by hacking "b" with setattr() methods.
>
> You don't even need setattr() here, you can set the attributes directly.
>
>
>
> > But i'd
> > like to do it with inheritance, a kind of "dynamic subclassing",
> > without subclassing the class, only this instance "b" !
>
> > In fact, i've got my instance "b", and another class "MoreMethods"
>
> > class MoreMethods:
> > def  sayHello(self):
> >   print "hello"
> You don't necessarily need subclassing here. What you want is a typical
> use case of the Decorator pattern:
>
> class MoreMethods(object):
>def __init__(self, button):
>  self._button = button
>
>def  sayHello(self):
>  print "hello"
>
>def __getattr__(self, name):
>  return getattr(self._button, name)
>
>def __setattr__(self, name, value):
>  if name in dir(self._button):
>setattr(self._button, name, value)
>  else:
>object.__setattr__(self, name, value)
>
> b = MoreMethods(gtk.Button())
> b.set_label("k")
> b.say_hello()

except that "b" is not anymore a "gtk.Button", but a "MoreMethods"
instance ...
i'd like that "b" stay a "gtk.Button" ...

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


Re: Dynamic subclassing ?

2007-05-12 Thread Bruno Desthuilliers
manatlan a écrit :
> I've got an instance of a class, ex :
> 
> b=gtk.Button()
> 
> I'd like to add methods and attributes to my instance "b".
> I know it's possible by hacking "b" with setattr() methods.

You don't even need setattr() here, you can set the attributes directly.


> But i'd
> like to do it with inheritance, a kind of "dynamic subclassing",
> without subclassing the class, only this instance "b" !
> 
> In fact, i've got my instance "b", and another class "MoreMethods"
> 
> class MoreMethods:
> def  sayHello(self):
>   print "hello"
> 
> How could i write ...
> 
> "b = b + MoreMethods"
> 
> so "b" will continue to be a gtk.Button, + methods/attributs of
> MoreMethods (it's what i call "dynamic inheritance") ...so, things
> like this should work :
> 
> - b.set_label("k")
> - b.sayHello()
> 
> I can't find the trick, but i'm pretty sure it's possible in an easy
> way.

You don't necessarily need subclassing here. What you want is a typical 
use case of the Decorator pattern:

class MoreMethods(object):
   def __init__(self, button):
 self._button = button

   def  sayHello(self):
 print "hello"

   def __getattr__(self, name):
 return getattr(self._button, name)

   def __setattr__(self, name, value):
 if name in dir(self._button):
   setattr(self._button, name, value)
 else:
   object.__setattr__(self, name, value)

b = MoreMethods(gtk.Button())
b.set_label("k")
b.say_hello()

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


Re: find out all threads?

2007-05-12 Thread Tim Williams
On 11/05/07, Sven Rech <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I have a written a C program which makes use of python embedding.
> I want to find out all threads that a loaded module has started.
> But I can't find anything about this in the docs. Is it possible?
>

Without details of your module, its dificult to say,  maybe

t_count = threading.activeCount()
or
t_count = threading.enumerate()

will do what you need
-- 
http://mail.python.org/mailman/listinfo/python-list


Dynamic subclassing ?

2007-05-12 Thread manatlan
I've got an instance of a class, ex :

b=gtk.Button()

I'd like to add methods and attributes to my instance "b".
I know it's possible by hacking "b" with setattr() methods. But i'd
like to do it with inheritance, a kind of "dynamic subclassing",
without subclassing the class, only this instance "b" !

In fact, i've got my instance "b", and another class "MoreMethods"

class MoreMethods:
def  sayHello(self):
  print "hello"

How could i write ...

"b = b + MoreMethods"

so "b" will continue to be a gtk.Button, + methods/attributs of
MoreMethods (it's what i call "dynamic inheritance") ...so, things
like this should work :

- b.set_label("k")
- b.sayHello()

I can't find the trick, but i'm pretty sure it's possible in an easy
way.
Help is welcome
thanx

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


Re: Simulating simple electric circuits

2007-05-12 Thread Arnaud Delobelle
On May 11, 10:02 pm, Bjoern Schliessmann  wrote:
[...]
> P.S.: If anyone happens to be interested in details, just ask, I'll
> post some code.

I'm interested! I was tempted to have a go at it after your initial
post, it sounded like a nice little project :)

--
Arnaud

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


Popen and wget, problems

2007-05-12 Thread Jesse
Hi all, I have a problem using wget and Popen. I hope someone can help.


-- Problem --
I want to use the command:
wget -nv -O "dir/cpan.txt" "http://search.cpan.org";
and capture all it's stdout+stderr.
(Note that option -O requires 'dir' to be existing before wget is executed)

Popen doesn't work, while os.system and shell do. Popen will give the error:
dir/cpan.txt: No such file or directory

While os.system and shell will give the correct result:
06:52:40 URL:http://search.cpan.org/ [3657/3657] -> "dir1/cpan.txt" [1]



-- Background info about wget --
-Option -nv: -nv, --no-verbose turn off verboseness, without 
being quiet.
-Option -O: -O,  --output-document=FILEwrite documents to FILE.

Note that wget requires any directories in the file-path of option -O to be 
existing before the wget command is executed.


-- Python Code using Popen with cmd arg list --
# imports
import os
from subprocess import Popen, PIPE

# vars and create dir
cmd_set = ['wget', '-nv', '-O dir/cpan.txt', 'http://search.span.org']
cmd = ' '.join(cmd_set)
print "cmd: " + cmd
try:
 os.makedirs('dir')
except:
 print 'dir already exists'


# execute using Popen (does NOT work)
proc = Popen(cmd_set, stdout=PIPE, stderr=PIPE)
return_code = proc.wait()
if return_code == 0:
 print "Success:\n%s" % (proc.stdout.read() + proc.stderr.read())
else:
 print "Failure %s:\n%s" % (return_code, proc.stderr.read() + 
proc.stdout.read())


# execute using os.system (does work)
os.system(cmd)


-- Python code output of Popen --
Failure 1:
 dir/cpan.txt: No such file or directory


-- Question --
Why is Popen unable to correctly execute the wget, while os.system can?



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


Re: Thread-safe dictionary

2007-05-12 Thread Martin v. Löwis
> - in __getitem__, does it release the lock after returning the item?

Yes, it does.

> - wouldn't it be better to use threading.RLock, mutex, ... instead?

Better in what sense? Performance-wise? Semantically? Performance-wise,
the best thing would be to do

safe_dict = dict

because the builtin dict is already thread-safe unless user-defined
__hash__ or __eq__ methods get invoked (in which case the dictionary
still works correctly - it's only that it may get modified while
__hash__ or __eq__ is running).

Semantically, it would be better to use a threading.RLock, if you
expect that __hash__ or __eq__ may access the dictionary recursively.

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


Re: stealth screen scraping with python?

2007-05-12 Thread Thomas Wittek
[EMAIL PROTECTED] schrieb:
> I am screen scraping a large volume of data from Yahoo Finance each
> evening, and parsing with Beautiful Soup.
> 
> I was wondering if anyone could give me some pointers on how to make
> it less obvious to Yahoo that this is what I am doing, as I fear that
> they probably monitor for this type of activity, and will soon ban my
> IP.

Use anonymizing proxies:
http://www.google.com/search?q=proxies+OR+proxy+anonymous+OR+anonymizing

-- 
Thomas Wittek
http://gedankenkonstrukt.de/
Jabber: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python Binding

2007-05-12 Thread Georg Grabler
You are completely right wihtin this. It's some time i didn't reply, but
i've taken a look on pyrex and swig now which did cost me some time, and
they really make it easier. SWIG provides more possibilities and bindings
for other languages too, though - i must say i've been faster with pyrex,
for some reason it fits me better.

I'd like to use swig, but for some reason i've troubles defining a
completely new type, so a type which is not a wrapper type, but a type
provided to python.

Kind regards,
Georg

Stefan Behnel wrote:

> STiAT wrote:
>> Why do you all suggest other things than the way suggested by python?
> 
> Because going to Paris is not the only way to get french bread?
> 
> Why would you want to write all that ugly glue code by hand that Pyrex
> generates for free? Module descriptors? Class descriptors? Method
> descriptors? Reference counting? That's what Pyrex saves you from.
> Honestly.
> 
> From what I read in your mail, that's exactly the kind of thing you're
> having trouble with. Wouldn't you prefer concentrating on your real code
> instead?
> 
> 
>> I havn't got a real problem writing the code in C, actually, it looked
>> as if it would give me several possibilities i wouldn't have with
>> pyrex (like binding more library functions to one provided python
>> function and so on).
> 
> No idea what you mean in your parentheses, but I don't think there are
> many "possibilities" you "wouldn't have with Pyrex".
> 
> We used Pyrex to write lxml, a wrapper around the huge API of libxml2 and
> libxslt. It's some 11000 lines of Pyrex code by now, but the generated C
> code is some 67000 lines in total. Even if it's somewhat verbose and
> generic in places, I wouldn't have wanted to write that by hand.
> 
> Stefan

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


Re: logging module and threading

2007-05-12 Thread Vinay Sajip
On May 12, 1:53 am, Ross Boylan <[EMAIL PROTECTED]> wrote:
>
> I'm also puzzled by how the logger hierarchy works.  The docs say that
> everything that is logged by the kids is also logged by the parent.
> That would seem to defeat what I'm trying to do above, since the
> parent would get each logged event right away.  
> However,logging.getLogger("a").error("test")
> produces only a single log message indicating an associated object of "a".
> The docs lead me to expect that I'd see one message from "a" and
> another from root.
>
> When I add handlers (e.g., FileHandlers) I do get the message recorded
> by each.
>
> Can anyone explain what's going on?
>

The Logger hierarchy works, in a nutshell, as follows: events passed
to a logger propagate up the hierarchy until either the root, or a
logger whose propagate attribute is set to a false value, is reached.
At each step (i.e. logger) in the propagation, any handlers attached
to that logger are offered the chance to handle the message - which
means different things depending on the handler. If you add e.g. a
FileHandler to the root logger and another to a logger named "a.b.c"
and then log something to "a.b.c", then two handlers will each handle
the message, leading to multiple output of the same event. You also
don't need to buffer up messages in different threads - if your
messages contain both the log event time and the thread id (which can
be achieved by having %(asctime)s or %(relativeCreated)d and %
(thread)d or %(threadName)s in your format string), then you can
simply sort the output to group your messages together. (And since
threads sometimes interact, it's often useful to see the raw output in
time order.) If you do want to buffer events, MemoryHandler will do
the trick. And it takes a target handler rather than logger, because
it's acting as a buffer for another handler, for events which have
already been entered into the system.

If you're new to logging, you need to separate the ideas behind
loggers and handlers in the scheme of things. Loggers are things which
application developers use to register events of interest in their
application, with an indication of importance (level) and an ability
to filter on that. Handlers are things used by developers or admins to
send information about the events to different audiences - e.g.
critical errors might be emailed to someone while less critical errors
are sent to console or log files.

Best regards,

Vinay Sajip

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


Re: matplotlib: howto set title of whole window?

2007-05-12 Thread dmitrey
No, it's just another one title
it produces a figure with name "Figure 1" but I should somehow replace
the string.
It is possible in MATLAB via
 set(figureHandler, 'Name', 'my_string_here')

D.

On May 12, 2:52 am, [EMAIL PROTECTED] wrote:
> On May 11, 3:44 pm, dmitrey <[EMAIL PROTECTED]> wrote:
>
> > hi all,
> > does anyone know howto set title of whole window? (I mean not just
> > area above plot but string in the same line where buttons 'close',
> > 'iconify', 'fullscreen' are situated)
>
> Use coordinates to set a title for the current figure.
> E.g.,
>
> from pylab import *
> from matplotlib.font_manager import FontProperties
>
> figtitle = 'This is my title above all subplots'
>
> t = gcf().text(0.5,
> 0.95, figtitle,
> horizontalalignment='center',
> fontproperties=FontProperties(size=16))
>
> subplot(121)
> subplot(122)
> show()
>
> --
> Hope this helps,
> Steven


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