ANN: PyCon UK Talks and Tutorials List Up

2008-07-29 Thread Fuzzyman
PyCon UK 2008 is the second PyCon event in the UK, and is being held
on 12th to 14th September at the Birmingham Conservatoire.

The conference starts with a day of tutorials on the Friday.  The
timetable for the tutorials day has now been published:

http://www.pyconuk.org/timetable.html

Abstracts for the talks, tutorials and BOFs are also now up:

http://www.pyconuk.org/talk_abstracts.html

The early bird rate is still open (but not for too much longer):

http://www.pyconuk.org/booking.html

We are almost there with the schedule, the plenary sessions will
include Lightning talks as well as keynotes from Mark Shuttleworth and
Ted Leung.

We may be accepting a couple more talks if we can squeeze them in
somewhere. (If you are expecting to give a talk but have not given us
an abstract, then please give it to us ASAP)

Michael Foord and the other PyCon UK Organisers
--
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations.html


Re: seemingly simple list indexing problem

2008-07-29 Thread iu2
On Jul 29, 3:59 am, John Machin [EMAIL PROTECTED] wrote:
 On Jul 29, 8:10 am, John Krukoff [EMAIL PROTECTED] wrote:





  On Mon, 2008-07-28 at 16:24 -0500, Ervan Ensis wrote:
   My programming skills are pretty rusty and I'm just learning Python so
   this problem is giving me trouble.

   I have a list like [108, 58, 68].  I want to return the sorted indices
   of these items in the same order as the original list.  So I should
   return [2, 0, 1]

   For a list that's already in order, I'll just return the indices, i.e.
   [56, 66, 76] should return [0, 1, 2]

   Any help would be appreciated.

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

  If your lists aren't so large that memory is an issue, this might be a
  good place for a variation of decorate, sort, undecorate.

   listToSort = [ 108, 58, 68 ]
   decorated = [ ( data, index ) for index, data in

  enumerate( listToSort ) ] decorated

  [(108, 0), (58, 1), (68, 2)] result = [ None, ] * len( listToSort )
   for sortedIndex, ( ignoredValue, originalIndex ) in

  enumerate( sorted( decorated ) ):
  ...     result[ originalIndex ] = sortedIndex
  ... result

  [2, 0, 1]

 Simpliciter:



  data = [99, 88, 77, 88, 66]
  [x[1] for x in sorted(zip(data, xrange(len(data]
 [4, 2, 1, 3, 0]

 Use case? Think data == database table, result == index ...- Hide quoted text 
 -

 - Show quoted text -

I think it is wrong, using this on my data returns the wrong result
 data = [108, 58, 68, 108]
 [x[1] for x in sorted(zip(data, xrange(len(data]
[1, 2, 0, 3]
--
http://mail.python.org/mailman/listinfo/python-list


Re: interpreter vs. compiled

2008-07-29 Thread Tim Roberts
castironpi [EMAIL PROTECTED] wrote:

In CPython yes.  In IronPython yes:  the parts that are compiled into
machine code are the interpreter, *not user's code*. 

WRONG!  You are WRONG.  At compile time, the Python code is compiled to
an intermediate language.  At run time, the intermediate language (which
is still the user's code, just in another representation) is compiled into
machine language.  It is the user's program, not the interpreter.

It's the exact same process that occurs in a C compiler.  Most C compilers
translate the C program to an intermediate form before finally converting
it to machine language.  The only difference is that, in a C compiler, both
steps occur within the compiler.  In IronPython, the two steps are
separated in time.  There is no other difference.

Without that
step, the interpreter would be running on an interpreter, but that
doesn't get the user's statement 'a= b+ 1' into registers-- it gets
'push, push, add, pop' into registers.

You have a fundamental misunderstanding of the compilation process.
-- 
Tim Roberts, [EMAIL PROTECTED]
Providenza  Boekelheide, Inc.
--
http://mail.python.org/mailman/listinfo/python-list


Re: seemingly simple list indexing problem

2008-07-29 Thread iu2
On Jul 29, 2:26 am, John Krukoff [EMAIL PROTECTED] wrote:
 On Mon, 2008-07-28 at 16:00 -0700, iu2 wrote:
  On Jul 29, 12:10 am, John Krukoff [EMAIL PROTECTED] wrote:
   On Mon, 2008-07-28 at 16:24 -0500, Ervan Ensis wrote:
My programming skills are pretty rusty and I'm just learning Python so
this problem is giving me trouble.

I have a list like [108, 58, 68].  I want to return the sorted indices
of these items in the same order as the original list.  So I should
return [2, 0, 1]

For a list that's already in order, I'll just return the indices, i.e.
[56, 66, 76] should return [0, 1, 2]

Any help would be appreciated.

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

   If your lists aren't so large that memory is an issue, this might be a
   good place for a variation of decorate, sort, undecorate.

listToSort = [ 108, 58, 68 ]
decorated = [ ( data, index ) for index, data in

   enumerate( listToSort ) ] decorated

   [(108, 0), (58, 1), (68, 2)] result = [ None, ] * len( listToSort )
for sortedIndex, ( ignoredValue, originalIndex ) in

   enumerate( sorted( decorated ) ):
   ...     result[ originalIndex ] = sortedIndex
   ... result

   [2, 0, 1]

   --
   John Krukoff [EMAIL PROTECTED]
   Land Title Guarantee Company

  Inspired by your idea and the above one, here is another try:

   a0 = [108, 58, 68, 108, 58]
   a1 = [(x, y) for x, y in enumerate(a0)]

 You know this line is a no-op, right?

   a1
  [(0, 108), (1, 58), (2, 68), (3, 108), (4, 58)]
   a2 = sorted(a1, lambda x, y: cmp(x[1], y[1]))

 If you're going to do the unpacking here for the sort, just use
 enumerate directly. Since this is a simple case, should use the key
 parameter instead of the cmp parameter for speed. Can also use the
 operator module to avoid a bit of lambda overhead:

  import operator
  a2 = sorted( enumerate( a0 ), key = operator.itemgetter( 1 ) )
   a2
  [(1, 58), (4, 58), (2, 68), (0, 108), (3, 108)]
   a3 = [a2.index(x) for x in a1]
   a3
  [3, 0, 2, 4, 1]

  The idea is to make each item unique (by making it a tuple), and then
  apply the naive solution.

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

 Using index is still kinda evil, due to the exponential time required
 since you're rescanning half the list (on average) to find each index
 value.

 --
 John Krukoff [EMAIL PROTECTED]
 Land Title Guarantee Company- Hide quoted text -

 - Show quoted text -

Well, a dictionary can replace the index search

helper_dict = dict(zip(a2, xrange(len(a2
 helper_dict
{(1, 58): 0, (4, 58): 1, (3, 108): 4, (2, 68): 2, (0, 108): 3}

a3 = [helper_dict[x] for x in a1]
 a3
[3, 0, 2, 4, 1]

The performance now should be n*log(n)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Is it allowed to use function results as default arguments ?

2008-07-29 Thread Terry Reedy

To answer the subject line:
param=any expression that can be evaluated when the function is defined
will assign the result of the expression as the default argument object 
for the parameter.


tjr

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


Re: Importing different versions of a module

2008-07-29 Thread henning . vonbargen
Why not set up PYTHONPATH together with other environment variables in
a shell script (bash, or CMD on Windows) and call that shell script
instead of your Python script directly?

This is probably the easiest and still a very powerful and generic
solution for this kind of problem. We do it that way regardless of the
programming language used.

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


Python COM

2008-07-29 Thread birdprince
I have implemented a COM in C++,buy i don't know how to use this COM
in python.
For example: the COM's ProgID is MyCOM1.AdvMethod.this COM have two
interfaces,the default interface's name is IAdvMethod,the second
interface's name is IBasicMethod.
How do i use those interfaces in python.Thank you very much,please
answer my question in code.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python COM

2008-07-29 Thread Diez B. Roggisch

[EMAIL PROTECTED] schrieb:

I have implemented a COM in C++,buy i don't know how to use this COM
in python.
For example: the COM's ProgID is MyCOM1.AdvMethod.this COM have two
interfaces,the default interface's name is IAdvMethod,the second
interface's name is IBasicMethod.
How do i use those interfaces in python.Thank you very much,please
answer my question in code.


http://starship.python.net/crew/theller/comtypes/


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


Re: block/lambda

2008-07-29 Thread Duncan Booth
iu2 [EMAIL PROTECTED] wrote:

 Is it possible to grant Python another syntactic mark, similar to
 triple quotes, that will actually make the enclosed code a compiled
 code, or an anonymous function?
 

Yes, the syntactic mark you are looking for is 'def'.

Your example becomes:

 def dotimes(n, callable):
for i in range(n): callable(i)


 def block(i):
for j in range(i):
print j,
print


 dotimes(5, block)

0
0 1
0 1 2
0 1 2 3

The only thing you asked for that this doesn't do is make 'block' 
anonymous, but actually that is a good thing.


-- 
Duncan Booth http://kupuguy.blogspot.com
--
http://mail.python.org/mailman/listinfo/python-list


Re: Is it allowed to use function results as default arguments ?

2008-07-29 Thread Stef Mientki

Terry Reedy wrote:

To answer the subject line:
param=any expression that can be evaluated when the function is defined
will assign the result of the expression as the default argument 
object for the parameter.



thanks Terry and others,

brings me to one other question:
 I guess this function is only evaluated once, is that correct ?

about os.curdir,
I checked it, it's already a constant ;-)
and because I use afterwards:
  os.path.abspath('.'')
which is identical to
 os.path.getcwd()

about '.' being the current directory,
well I think windows was thrown at the market about 25 years ago,
and since then we don't use '.' anymore ;-)

cheers,
Stef

tjr

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


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


Re: multiple inheritance and __getattr__

2008-07-29 Thread Enrico
Bruno Desthuilliers [EMAIL PROTECTED] ha scritto
nel messaggio news:[EMAIL PROTECTED]
 Indeed. You explicitely raise, so the lookup stops here. You'd need to
 explicitely call on superclass instead to have B.__getattr__ called, ie:

 class A(object):
  def __getattr__(self, name):
  if name == 'a':
  return 1
  return super(A, self).__getattr__(name)

 class B(object):
  def __getattr__(self, name):
  if name == 'b':
  return 2
  return super(B, self).__getattr__(name)

Hi Bruno,
this is an interisting point. Just to understand better: when I raise an
AttributeError the search stops but if I call a superclass (that for my
understanding raises an AttributeError) the search continues. At this point
I suspect that the search is doing something else, like checking if the
class is at the top of the hierarchy. Do you know where I can look for this,
probably in the core code of Python?

  Since A and B are not written by me I can only work on C.

 Really ? You know, Python is a *very* dynamic language. If A and B are
 ordinary Python classes (ie: not builtin types, not C extensions, etc),
 you can monkeypatch them. But that's not necessarily the best thing to
 do (it would require more work than your actual solution).

I know that I can do whatIwant with class A and class B (monkeypatch!) but I
prefer to concentrate on my code and write a clean solution. Thanks for your
help.
Enrico


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


Re: xlrd: error open_workbook

2008-07-29 Thread M.-A. Lemburg

On 2008-07-28 22:22, Fabio Oikawa wrote:

Hello.

I am trying to open an .xls (excel) file using xlrd, but an error message
occurs when I open the workbook.

I can open any other .xls file made by myself (either by MS Excel 2003 SP3
in Windows Vista or by OpenOffice 2.0 in Debian) using the
*open_workbook*function:

wb = xlrd.open_workbook('myworkbook.xls')

but when I try to open a file from one specific site, I get the error
message:

In [2]: wb = xlrd.open_workbook('balanco.xls')

WARNING *** file size (81192) not 512 + multiple of sector size (512)
WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero


This looks like a broken XLS file.

In any case, you're probably better off asking this question on
the python-excel mailing list:

http://groups.google.com.au/group/python-excel?lnk=lihl=en

You might also want to try pyExcelerator:

http://sourceforge.net/projects/pyexcelerator


---
struct.error Traceback (most recent call
last)

/home/oikawa/DB/ipython console

/usr/lib/python2.4/site-packages/xlrd/__init__.py in open_workbook(filename,
logfile, verbos ity, pickleable, use_mmap, file_contents, encoding_override,
formatting_info)
380 bk.parse_globals()
381 else:
-- 382 bk.parse_globals()
383 bk.get_sheets()
384 bk.nsheets = len(bk._sheet_list)

/usr/lib/python2.4/site-packages/xlrd/__init__.py in parse_globals(self)
   1309 self.handle_name(data)
   1310 elif rc == XL_PALETTE:
- 1311 self.handle_palette(data)
   1312 elif rc == XL_STYLE:
   1313 self.handle_style(data)

/usr/lib/python2.4/site-packages/xlrd/formatting.py in handle_palette(book,
data)
550 PALETTE record with %d colours\n, n_colours)
551 fmt = 'xx%di' % n_colours # use i to avoid long integers
-- 552 colours = unpack(fmt, data)
553 assert book.palette_record == [] # There should be only 1
PALETTE record
554 # a colour will be 0xbbggrr

error: unpack str size does not match format

I ran the xlrd in both Windows Vista / Python 2.5 and Debian / Python 2.4.4
and got the same problem, so I suppose there is something wrong with the
.xls files (which can be downloaded at www.fundamentus.com.br -- Dados
Históricos menu -- Balancos em Excel -- choose any company). However, I
need the files in order to create my database system. Actually I want to
build all companies' informations in a mySQL database, and the fastest and
easiest way I found is to download .xls files, to get the data using
xlrd-Python and to add them in the mySQL database. Any sugestions for both
questions? Thanks in advance.


--
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jul 29 2008)
 Python/Zope Consulting and Support ...http://www.egenix.com/
 mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
 mxODBC, mxDateTime, mxTextTools ...http://python.egenix.com/


 Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! 


   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
   Registered at Amtsgericht Duesseldorf: HRB 46611
--
http://mail.python.org/mailman/listinfo/python-list


Re: Attack a sacred Python Cow

2008-07-29 Thread Nikolaus Rath
Bruno Desthuilliers [EMAIL PROTECTED] writes:
 Nikolaus Rath a écrit :
 Michael Torrie [EMAIL PROTECTED] writes:

 (snip)

 In short, unlike what most of the implicit self advocates are
 saying, it's not just a simple change to the python parser to do
 this. It would require a change in the interpreter itself and how it
 deals with classes.


 Thats true. But out of curiosity: why is changing the interpreter such
 a bad thing? (If we suppose for now that the change itself is a good
 idea).

 Because it would very seriously break a *lot* of code ?

Well, Python 3 will break lots of code anyway, won't it?


Best,

   -Nikolaus

-- 
 »It is not worth an intelligent man's time to be in the majority.
  By definition, there are already enough people to do that.«
 -J.H. Hardy

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

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

Re: Questions on 64 bit versions of Python (Thank-you!)

2008-07-29 Thread Tim Golden

[EMAIL PROTECTED] wrote:

Thanks for everyone's feedback - excellent detail - all my questions
have been answered.

BTW: Roel was correct that I got confused over the AMD and Intel naming
conventions regarding the 64 bit versions of Python for Windows. (I
missed that nuance that the Intel build refered to the Itanium vs. the
standard off-the-rack 64 bit version of Intel's 586/686 CPU)


Frankly, I'm very glad you did get confused: I've learnt more
about the various 64-bit architectures in this thread than
I ever thought I'd need to know :)

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


Re: Is it allowed to use function results as default arguments ?

2008-07-29 Thread Steven D'Aprano
On Tue, 29 Jul 2008 09:43:26 +0200, Stef Mientki wrote:

 about '.' being the current directory, well I think windows was thrown
 at the market about 25 years ago, and since then we don't use '.'
 anymore ;-)

No, even Windows uses '.' as the current directory -- at least XP does, I 
haven't tried Vista. 

However, old Classic Mac OS (pre OS-X) used ':' for the current 
directory, so dot isn't universal.


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


ironpython, exception in mscorlib when reading .py file from network share

2008-07-29 Thread mindmind

Hello,

I have a ironpython 1.1.1.0 host in my c# app, and When doing a
  engine.ExecuteFile(file);
i often get the error below, when file is on a network share :
(winXp client , windows ??? server)

21-07-2008 12:47:28 : Traceback (most recent call last):
21-07-2008 12:47:28 :   File c:\sandbox\xxx.cs
21-07-2008 12:47:28 :   File c:\sandboxx\yyy.cs
21-07-2008 12:47:28 :   File mscorlib, line unknown, in ReadAllBytes
21-07-2008 12:47:28 :   File mscorlib, line unknown, in Read
21-07-2008 12:47:28 :   File mscorlib, line unknown, in ReadCore
21-07-2008 12:47:28 :   File mscorlib, line unknown, in WinIOError
21-07-2008 12:47:28 : IOError: The specified network name is no longer
available.
21-07-2008 12:47:28 :

Exception is caught before first line in python is executed.

Other parts of the program is also accessing the network (for copying
files etc), and never fails,
so networks connection is ok (maybe not perfect, but at least
present.)

Is the ExecuteFile reading the contents of the .py file differently
than a copy primitive is (other timeout/retry values) ?

Does anyone have any ideas of how to setup windows , ironpython host
or .NET lib differently, to stop it doing this ? Fallback solution is
to copy file locally before execution, but I would rather fix this.

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


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 28, 8:15 pm, Steven D'Aprano [EMAIL PROTECTED]
cybersource.com.au wrote:
 On Mon, 28 Jul 2008 13:22:37 -0700, Carl Banks wrote:
  On Jul 28, 10:00 am, Steven D'Aprano [EMAIL PROTECTED]
  cybersource.com.au wrote:
  Cutting to the crux of the discussion...

  On Sun, 27 Jul 2008 23:45:26 -0700, Carl Banks wrote:
   I want something where if x will do but a simple explicit test
   won't.

  Explicit tests aren't simple unless you know what type x is. If x could
  be of any type, you can't write a simple test. Does x have a length? Is
  it a number? Maybe it's a fixed-length circular length, and the length
  is non-zero even when it's empty? Who knows? How many cases do you need
  to consider?

  Use case, please.  I'm asking for code, not arguments.  Please give me a
  piece of code where you can write if x that works but a simple
  explicit test won't.

 I gave you a piece of code, actual code from one of my own projects. If
 you wouldn't accept that evidence then, why would you accept it now?

I would accept as evidence something that satisfies my criteria,
which your example did not: it could have easily (and more robustly)
been written with a simple explicit test.  I am looking for one that
can't.

You keep bringing up this notion of more complex with no benefit,
which I'm simply not interested in talking about that at this time,
and I won't respond to any of your points.  I am seeking the answer to
one question: whether if x can usefully do something a simple
explicit test can't.  Everyone already knows that if x requires
fewer keystrokes and parses to fewer nodes.


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


Re: exec(code) not allowing import on top level?

2008-07-29 Thread Steven D'Aprano
On Tue, 29 Jul 2008 03:26:45 +, Peter Teuben wrote:

 if I define a simple string code, with the following contents:
 
 import math
 def foo(x):
return math.sqrt(x)
 
 and i run it using exec(code) in python, math is not known.


Works for me.


 code = import math
... def foo(x):
... return math.sqrt(x)
... 

 exec code 
 foo(25)
5.0

By the way, exec is a statement, not a function, so you don't need the 
brackets.



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


Re: multiple inheritance and __getattr__

2008-07-29 Thread Maric Michaud
Le Monday 28 July 2008 16:48:09 Enrico, vous avez écrit :
 Hi there,
 I have the following situation (I tryed to minimize the code to concentrate

 on the issue):
  class A(object):

  def __getattr__(self, name):
   print 'A.__getattr__'
   if name == 'a': return 1
   raise AttributeError('%s not found in A' % name)

  class B(object):

  def __getattr__(self, name):
   print 'B.__getattr__'
   if name == 'b': return 1
   raise AttributeError('%s not found in B' % name)

 Both classes have a __getattr__ method.

 Now I want to have a class that inherits from both so I write:
  class C(B,A):

  pass

 The problem arise when I try something like this:
  c=C()
  c.a

 A.__getattr__
 1

  c.b

 A.__getattr__

 Traceback (most recent call last):
   File pyshell#47, line 1, in module
 c.b
   File pyshell#42, line 5, in __getattr__
 raise AttributeError('%s not found in A' % name)
 AttributeError: b not found in A

 I was expecting, after a fail in A.__getattr__,  a call to the __getattr__
 method of B but it seems that after A.__getattr__ fails the exception stops
 the flow. So, if I did understand well, B.__getattr__ will be never called
 automatically. I don't know if this has a reason, if it is a design
 choice or what else, any explanation is welcome.


No getattr is a lookup fallback, classes which implement them in a 
non-collaborative way are unlikely to be used for multiple inheritance.
Given how multiple inheritance work and __getattr__ semantic, I was surprised 
it is not that easy to figure out how it could work in a collaborative, and 
how far fromm this are common implementation of __getattr__.
Normally they should be implemented like that :

[89]: class A(object) :
def __getattr__(self, name) :
if name == 'a' : return 'a'
try : g = super(A, self).__getattr__
except : raise AttributeError('no more __getattr__')
return g(name)
   :
   :

[95]: class B(object) :
def __getattr__(self, name) :
if name == 'b' : return 'b'
try : g = super(B, self).__getattr__
except : raise AttributeError('no more __getattr__')
return g(name)
   .:
   .:

[101]: class C(A, B) :
def __getattr__(self, name) :
if name == 'c' : return 'c'
try : g = super(C, self).__getattr__
except : raise AttributeError('no more __getattr__')
return g(name)
   .:
   .:

[107]: C().a
...[107]: 'a'

[108]: C().b
...[108]: 'b'

[109]: C().c
...[109]: 'c'

[110]: C().k
---
AttributeErrorTraceback (most recent call last)

/home/maric/ipython console in module()

/home/maric/ipython console in __getattr__(self, name)

/home/maric/ipython console in __getattr__(self, name)

/home/maric/ipython console in __getattr__(self, name)

AttributeError: no more __getattr__


 Since A and B are not written by me I can only work on C. The solution that
 comes to my mind is to define a __getattr__ also in C and write something

 like:
  class C(A,B):

  def __getattr__(self, name):
   try:
return A.__getattr__(self, name)
   except AttributeError:
return B.__getattr__(self, name)

  c=C()
  c.a

 A.__getattr__
 1

  c.b

 A.__getattr__
 B.__getattr__
 1

 A better solution is welcome.

There is no way to repair those clases for mulitple inheritance except monkey 
patching them. 
The idea of this patch would be :

def collaborative_getattr(class_, old_name) :
old_one = getattr(class_, old_name)
def __getattr__(self, name) :
try : return old_one(self, name)
except AttributeError :
try : g = super(class_, self).__getattr__
except : raise AttributeError('no more __getattr__')
return g(name)

if not getattr(C, '_C_fixed__', False) :
C._C_fixed__ = C.__getattr__
C.__getattr__ = collaborative_getattr(C, '_C_fixed__')


That said, if your class C is a real facade for its ancestors A and B (A and B 
won't appear at all in the hierarchies of your subclasses), your solution is 
near the best one in terms of simplicity-efficiency. I said near the best one 
because your __getattr__ isn't collaborative yet ! :).

-- 
_

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


Re: ironpython, exception in mscorlib when reading .py file from network share

2008-07-29 Thread Fuzzyman
On Jul 29, 9:34 am, mindmind [EMAIL PROTECTED] wrote:
 Hello,

 I have a ironpython 1.1.1.0 host in my c# app, and When doing a
   engine.ExecuteFile(file);
 i often get the error below, when file is on a network share :
 (winXp client , windows ??? server)

 21-07-2008 12:47:28 : Traceback (most recent call last):
 21-07-2008 12:47:28 :   File c:\sandbox\xxx.cs
 21-07-2008 12:47:28 :   File c:\sandboxx\yyy.cs
 21-07-2008 12:47:28 :   File mscorlib, line unknown, in ReadAllBytes
 21-07-2008 12:47:28 :   File mscorlib, line unknown, in Read
 21-07-2008 12:47:28 :   File mscorlib, line unknown, in ReadCore
 21-07-2008 12:47:28 :   File mscorlib, line unknown, in WinIOError
 21-07-2008 12:47:28 : IOError: The specified network name is no longer
 available.
 21-07-2008 12:47:28 :

 Exception is caught before first line in python is executed.

 Other parts of the program is also accessing the network (for copying
 files etc), and never fails,
 so networks connection is ok (maybe not perfect, but at least
 present.)

 Is the ExecuteFile reading the contents of the .py file differently
 than a copy primitive is (other timeout/retry values) ?

 Does anyone have any ideas of how to setup windows , ironpython host
 or .NET lib differently, to stop it doing this ? Fallback solution is
 to copy file locally before execution, but I would rather fix this.

 thx

I don't know the answer - I do know that .NET permissions issues and
accessing network resources are a bit 'weird'. You're likely to get an
answer if you ask on the IronPython mailing list.

Michael Foord
--
http://www.ironpythoninaction.com/
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Heiko Wundram
Am Dienstag, 29. Juli 2008 10:37:45 schrieb Carl Banks:
 You keep bringing up this notion of more complex with no benefit,
 which I'm simply not interested in talking about that at this time,
 and I won't respond to any of your points.  I am seeking the answer to
 one question: whether if x can usefully do something a simple
 explicit test can't.  Everyone already knows that if x requires
 fewer keystrokes and parses to fewer nodes.

Yes, there are quite a lot of use cases. Think of a polymorphic function, 
where the input can be any object that implements the iterator protocol 
(concerning base types, I'm thinking of strings, tuples, lists, dicts and 
sets here, which are all iterable and yield a chain of singular values) and 
you want to check whether the iterable object is empty or not for 
special-casing that.

if x uses the special interface method __nonzero__() if that's implemented 
(which all of the above types implement as returning True iff the container 
yields at least one value when iterated over, i.e., it isn't empty), and 
falls back to a test for __len__() != 0, otherwise x is considered to be 
true.

Now, explicitly comparing x against the five empty values of the container 
types I specified above would be broken design in such a function: when I 
implement a container class myself, which implements the __iter__() and 
__nonzero__() methods, I can directly use it with the polymorphic function I 
wrote, and the special case for an empty container will work out of the box. 
In the case of explicit comparisons, I have to modify the polymorphic 
function to accept my container type in addition to those it already 
processes to be able to special-case the empty container for my type.

I can't dig up a simple example from code I wrote quickly, but because of the 
fact that explicit comparisons always hamper polymorphism (which might not be 
needed initially, but you never know what comes up later, thinking of 
reusability of components), I personally always stick to the idiom if x 
rather than comparing it to an empty value, even when I'm sure that the type 
of x is a singular type.

Additionally, IMHO if x is so much more readable than if x != something.

Just my 2 (euro)cents.

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


Re: Attack a sacred Python Cow

2008-07-29 Thread Iain King
On Jul 29, 5:33 am, Russ P. [EMAIL PROTECTED] wrote:
 On Jul 28, 8:44 pm, alex23 [EMAIL PROTECTED] wrote:

  On Jul 29, 4:46 am, Russ P. [EMAIL PROTECTED] wrote:

   As I said, I could write a pre-processor myself to
   implement it in less than a day.

  So WHY DON'T YOU WRITE IT ALREADY?

 I'm working on something else right now if you don't mind, but I'll
 get to it in good time.

 Conceptually, the matter is simple. All I need to do is to grab the
 first formal argument of each def, then search for occurrences of any
 word in the body of the def that starts with a dot, and insert that
 first argument in front of it.

 I expect the hard part will be breaking up the body of the def into
 words. I could just split each line on white space, except for
 situations like

 x+=.zzz

 So I need to account for the fact that operators do not need to be
 surrounded by spaces. That's the hardest part I can think of off the
 top of my head.

 Maybe I'll encounter an insurmountable problem and realize that the
 idea can't work in general. If so, then so be it. Certainly, no one on
 this thread has anticipated such a problem. Had someone pointed out an
 actual technical problem with the idea, I would have gladly thanked
 them. But I got a load of irrelevant crap instead, not to mention
 being addressed as boy.

  If you're meeting so much resistance to your idea, why not scratch
  your own damn itch and just do it?

  Or doesn't that afford you as many chances to insult others while
  feeling smugly superior?

 This coming from a guy who insulted my reading comprehension ability
 -- when he was the one who was wrong!

Are you actually this stupid?  I mean, you were entertaining while you
were mouthing of and insulting your betters, but now you're gonna
complain the second anyone insults you (and I mean, 'boy' - what an
insult!).  Never mind that you're never gonna get off your ass to
write a PEP, which would be rejected on language design grounds anyway
(as demonstrated by alex23's link - the one you aren't
comprehending).  The most irritating thing is that I like the idea of
being able to use '.x = 10' type notation (and have been for a long
time), but the person arguing for it is an insufferable buffoon who's
too dense to understand a cogent argument, never mind make one.  So
great, thanks, the chances of this (or a VB 'with'-like 'using'
keyword) ever making it into the language get smaller every time you
fire up your keyboard.  Nice work.

Iain

p.s. am looking forward to your post whining about the invalid reasons
your PEP got rejected, in the slim hope you actually write one.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Steven D'Aprano
On Tue, 29 Jul 2008 01:37:45 -0700, Carl Banks wrote:

 On Jul 28, 8:15 pm, Steven D'Aprano [EMAIL PROTECTED]
 cybersource.com.au wrote:
 On Mon, 28 Jul 2008 13:22:37 -0700, Carl Banks wrote:
  On Jul 28, 10:00 am, Steven D'Aprano [EMAIL PROTECTED]
  cybersource.com.au wrote:
  Cutting to the crux of the discussion...

  On Sun, 27 Jul 2008 23:45:26 -0700, Carl Banks wrote:
   I want something where if x will do but a simple explicit test
   won't.

  Explicit tests aren't simple unless you know what type x is. If x
  could be of any type, you can't write a simple test. Does x have a
  length? Is it a number? Maybe it's a fixed-length circular length,
  and the length is non-zero even when it's empty? Who knows? How many
  cases do you need to consider?

  Use case, please.  I'm asking for code, not arguments.  Please give
  me a piece of code where you can write if x that works but a simple
  explicit test won't.

 I gave you a piece of code, actual code from one of my own projects. If
 you wouldn't accept that evidence then, why would you accept it now?
 
 I would accept as evidence something that satisfies my criteria, which
 your example did not: it could have easily (and more robustly) been
 written with a simple explicit test.

Only at the cost of completely ignoring the functional requirements and 
changing the API. In other words: you ignore my code, and invent your own 
imaginary code that does something completely different, then say that 
this imaginary code is better.

And I question your assertion that a simple explicit test is more 
robust. Where's your evidence for that?



 I am looking for one that can't.

If you are writing code that needs to do the right thing with arbitrary 
types, then your so-called simple explicit tests simply can't work. If 
your code isn't expected to deal with arbitrary types, then you've got an 
excellent chance that it will work, because you know what types to expect.

Until somebody passes a type that you didn't expect, and your code fails 
because it makes assumptions about the object.

If you know that you only get lists, then if len(x)!=0 is a perfectly 
good test (apart from being longer to type, harder to read, and slower to 
execute than if x). It will work so long as you only get objects where 
a length of zero is equivalent to being false. That's a good assumption 
to make, but it is an *unnecessary* assumption. Any reasonable object you 
get will know if it is false/nothing or true/something, so why make any 
assumptions? Just ask the object. It knows.


 
 You keep bringing up this notion of more complex with no benefit,
 which I'm simply not interested in talking about that at this time, and
 I won't respond to any of your points.

Of course not.



 I am seeking the answer to one
 question: whether if x can usefully do something a simple explicit
 test can't.

if x is completely type agnostic. You can pass an object of any type to 
it, and it will work. (Excluding objects with buggy methods, naturally.)

Try doing that with one of your so-called simple explicit tests.



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


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Anders J. Munch

Steven D'Aprano wrote:

On Tue, 29 Jul 2008 00:23:02 +, Steven D'Aprano wrote:


Dude. Dude. Just... learn some Python before you embarrass yourself
further.



I'm sorry Anders, that was a needlessly harsh thing for me to say. I 
apologize for the unpleasant tone. 

Still, __nonzero__ is a fundamental part of Python's behaviour. You 
should learn about it.


Hm, first you apologize, then you repeat the insult?  That's no basis for a 
conversation.  Bye from here.


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


Re: block/lambda

2008-07-29 Thread iu2
On Jul 29, 9:36 am, Duncan Booth [EMAIL PROTECTED] wrote:
 iu2 [EMAIL PROTECTED] wrote:
  Is it possible to grant Python another syntactic mark, similar to
  triple quotes, that will actually make the enclosed code a compiled
  code, or an anonymous function?

 Yes, the syntactic mark you are looking for is 'def'.

 Your example becomes:

  def dotimes(n, callable):

         for i in range(n): callable(i)

  def block(i):

         for j in range(i):
                 print j,
         print

  dotimes(5, block)

 0
 0 1
 0 1 2
 0 1 2 3

 The only thing you asked for that this doesn't do is make 'block'
 anonymous, but actually that is a good thing.

 --
 Duncan Boothhttp://kupuguy.blogspot.com

Ok, I've got 2 questions about it:

1. Can you please explain why it is a good thing?
2. Will it be possible in Python 3.0 to do the following:

 def dotimes(n, callable):
for i in range(n): callable()

 def block():
nonlocal i
for j in range(i):
print j,
print

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


Re: ctypes and how to copy data passed to callback

2008-07-29 Thread waldek
On Jul 28, 4:03 pm, Thomas Heller [EMAIL PROTECTED] wrote:
 waldek schrieb:



  Hi,

  I'm trying  to handle data passed to Py Callback which is called from
  C dll. Callback passes data to another thread using Queue module and
  there the data are printed out.

  If data is printed out in a callback itself  it's ok. If I put on
  queue and next get from queue in another thread script prints some
  trash. Looks like the data is released when callback returned. I tired
  to make d = copy.deepcopy(data), but it does not work - I got nothing.
  Any idea why it's happening ?

  - main thread  
  def callback(data, size):
  myqueue.put((data, size))

  mydll = cdll.MyDLL
  cbproto = CFUNCTYPE(c_int, POINTER(c_char), c_int)
  mycallback = cbproto(callback)

  mydll.RegisterCallback(mycallback)

  -- thread listener
  --

  while True:
  data, size = myqueue.get()
  print ***, data[:size]

  --

 I guess your code would work if you change it in this way:

  def callback(data, size):
  myqueue.put(data[:size])
  while True:
  data = myqueue.get()
  print ***, data

 Thomas

Both solutions work fine. The secon is nicer :)

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


Re: Download excel file from web?

2008-07-29 Thread Guilherme Polo
On Tue, Jul 29, 2008 at 1:47 AM, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
 On Jul 28, 6:05 pm, Guilherme Polo [EMAIL PROTECTED] wrote:
 On Mon, Jul 28, 2008 at 9:39 PM, MRAB [EMAIL PROTECTED] wrote:
  On Jul 29, 12:41 am, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
  On Jul 28, 4:20 pm, Guilherme Polo [EMAIL PROTECTED] wrote:

   On Mon, Jul 28, 2008 at 8:04 PM, [EMAIL PROTECTED] [EMAIL PROTECTED] 
   wrote:
On Jul 28, 3:52 pm, Guilherme Polo [EMAIL PROTECTED] wrote:
On Mon, Jul 28, 2008 at 7:43 PM, [EMAIL PROTECTED] [EMAIL 
PROTECTED] wrote:
 On Jul 28, 3:33 pm, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
 On Jul 28, 3:29 pm, Diez B. Roggisch [EMAIL PROTECTED] wrote:

  [EMAIL PROTECTED] schrieb:

   On Jul 28, 3:00 pm, [EMAIL PROTECTED] [EMAIL PROTECTED] 
   wrote:
   Hi - experienced programmer but this is my first Python 
   program.

   This URL will retrieve an excel spreadsheet containing (that 
   day's)
   msci stock index returns.

  http://www.mscibarra.com/webapp/indexperf/excel?priceLevel=0scope=0;...

   Want to write python to download and save the file.

   So far I've arrived at this:

   [quote]
   # import pdb
   import urllib2
   from win32com.client import Dispatch

   xlApp = Dispatch(Excel.Application)

   # test 1
   # xlApp.Workbooks.Add()
   # xlApp.ActiveSheet.Cells(1,1).Value = 'A'
   # xlApp.ActiveWorkbook.ActiveSheet.Cells(2,1).Value = 'B'
   # xlBook = xlApp.ActiveWorkbook
   # xlBook.SaveAs(Filename='C:\\test.xls')

   # pdb.set_trace()
   response = 
   urllib2.urlopen('http://www.mscibarra.com/webapp/indexperf/
   excel?
   priceLevel=0scope=0currency=15style=Csize=36market=1897asOf=Jul
   +25%2C+2008export=Excel_IEIPerfRegional')
   # test 2 - returns check = False
   check_for_data = 
   urllib2.Request('http://www.mscibarra.com/webapp/
   indexperf/excel?
   priceLevel=0scope=0currency=15style=Csize=36market=1897asOf=Jul
   +25%2C+2008export=Excel_IEIPerfRegional').has_data()

   xlApp = response.fp
   print(response.fp.name)
   print(xlApp.name)
   xlApp.write
   xlApp.Close
   [/quote]

   Woops hit Send when I wanted Preview.  Looks like the html 
   [quote] tag
   doesn't work from groups.google.com (nice).

   Anway, in test 1 above, I determined how to instantiate an 
   excel
   object; put some stuff in it; then save to disk.

   So, in theory, I'm retrieving my excel spreadsheet with

   response = urllib2.urlopen()

   Except what then do I do with this?

   Well for one read some of the urllib2 documentation and found 
   the
   Request class with the method has_data() on it.  It returns 
   False.
   Hmm that's not encouraging.

   I supposed the trick to understand what urllib2.urlopen is 
   returning
   to me; rummage around in there; and hopefully find my excel 
   file.

   I use pdb to debug.  This is interesting:

   (Pdb) dir(response)
   ['__doc__', '__init__', '__iter__', '__module__', '__repr__', 
   'close',
   'code', '
   fileno', 'fp', 'geturl', 'headers', 'info', 'msg', 'next', 
   'read',
   'readline', '
   readlines', 'url']
   (Pdb)

   I suppose the members with __*_ are methods; and the names 
   without the
   underbars are attributes (variables) (?).

  No, these are the names of all attributes and methods. read is 
  a method,
  for example.

 right - I got it backwards.

   Or maybe this isn't at all the right direction to take (maybe 
   there
   are much better modules to do this stuff).  Would be happy to 
   learn if
   that's the case (and if that gets the job done for me).

  The docs (http://docs.python.org/lib/module-urllib2.html) are 
  pretty
  clear on this:

  
  This function returns a file-like object with two additional 
  methods:
  

  And then for file-like objects:

 http://docs.python.org/lib/bltin-file-objects.html

  
  read(   [size])
   Read at most size bytes from the file (less if the read 
  hits EOF
  before obtaining size bytes). If the size argument is negative 
  or
  omitted, read all data until EOF is reached. The bytes are 
  returned as a
  string object. An empty string is returned when EOF is 
  encountered
  immediately. (For certain files, like ttys, it makes sense to 
  continue
  reading after an EOF is hit.) Note that this method may call the
  underlying C function fread() more than once in an effort to 
  acquire as
  close to size bytes as possible. Also note that when in 
  non-blocking
  mode, less data than what was requested may be returned, even 
  if no size
  parameter was given.
  

  Diez

 Just stumbled upon .read:

Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Heiko Wundram
Am Dienstag, 29. Juli 2008 11:15:05 schrieb Heiko Wundram:
 I can't dig up a simple example from code I wrote quickly...

Just to get back to that: an example I found where if x (the generic 
__nonzero__() test) will work to test for emptiness/non-emptiness of a 
container, whereas if len(x)  0 (the specific test for this example) 
will not, is my for own integer set type I wrote a while back (which you can 
find on ASPN).

The corresponding set type allows you to create infinitely sized sets of 
integers (which of course are stored as pairs of start,stop-values, so 
the storage itself for the set is bounded), for which len(x) does not have 
a proper meaning anymore, and __len__() is limited to returning a (platform 
dependent) ssize_t anyway IIRC, so even with a bounded set, the length of the 
set might not necessarily be accessible using len(x); that's why the set type 
additionally got a member function called .len() to work around this 
restriction.

I should think is a non-contrieved example where the generic test whether the 
object considers itself True/False (which for containers means 
non-empty/empty) is preferrable over the special case test whether the length 
is positive. A polymorphic function, which for example only accesses the 
first ten members of the container is able to work with an infinite set if it 
uses the generic test, but is not in case it uses len(x)  0.

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


Swap memory in Python ? - three questions

2008-07-29 Thread Robert LaMarca
Hi, 

I am using numpy and wish to create very large arrays.   My system is AMD 64 x 
2 Ubuntu 8.04.  Ubuntu should be 64 bit. I have 3gb RAM and a 15 GB swap drive. 
 

The command I have been trying to use is; 
g=numpy.ones([1000,1000,1000],numpy.int32)

This returns a memory error.  
A smaller array ([500,500,500]) worked fine.. 
Two smaller arrays again crashed the system.

So... I did the math.  a 1000x1000x1000 array at 32 bits should be around 4gb 
RAM... Obviously larger than RAM, but much smaller than the swap drive.

1. So... does Numpy have a really lot of overhead? Or is my system just not 
somehow getting to make use of the 15gb swap area. 
2. Is there a way I can access the swap area, or direct numpy to do so? Or do I 
have to write out my own numpy cache system... 
3. How difficult is it to use data compression internally on numpy arrays? 

thanks very much
Robert
--
http://mail.python.org/mailman/listinfo/python-list


SWIG and char* newb questions :)

2008-07-29 Thread code_berzerker
Hi i'm relatively new to Python and my C/C++ knowledge is near to
None. Having said that I feel justified to ask stupid questions :)

Ok now more seriously. I have question refering to char* used as
function parameters to return values. I have read SWIG manual to find
best way to overcome that, but there are many warnings about memory
leaks and stuff, so I feel confused.

Ok to put it more simply: how to safely define a variable in Python
and have it modified by C/C++ function?
Even better would be a way to make a tuple of return value and out
parameters, but thats probably a lot more work.

Any hint will be appreciated!
--
http://mail.python.org/mailman/listinfo/python-list


Re: SWIG and char* newb questions :)

2008-07-29 Thread Heiko Wundram
Am Dienstag, 29. Juli 2008 12:51:36 schrieb code_berzerker:
 Ok now more seriously. I have question refering to char* used as
 function parameters to return values. I have read SWIG manual to find
 best way to overcome that, but there are many warnings about memory
 leaks and stuff, so I feel confused.

 Ok to put it more simply: how to safely define a variable in Python
 and have it modified by C/C++ function?

At least for strings, this won't work. Python strings are immutable (and 
Python optimizes some things based on this knowledge), and as such you can 
pass a Python string(-object) into a C/C++ function and retrieve its value 
there as a const (!) char* using the PyString_*-API (I have no idea how this 
is encapsulated in SWIG), but cannot/should not modify it (a const_cast is 
almost always a sign of bad programming, anyway).

The only real choice you have is to have your wrapper return a new string 
object, created using one of the PyString_FromString[AndSize] functions. 
Check the Python C-API documentation for more info on this.

Anyway, on a different note, I personally have always found it simpler to not 
use SWIG to generate C extensions for Python, but to use the Python C-API 
directly.

Hope this helps!

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


Re: ironpython, exception in mscorlib when reading .py file from network share

2008-07-29 Thread mindmind

 I don't know the answer - I do know that .NET permissions issues and
 accessing network resources are a bit 'weird'. You're likely to get an
 answer if you ask on the IronPython mailing list.


I had it running through the night, ~100 times, 25 of these gave the
above exception.
Hard to see any pattern.
--
http://mail.python.org/mailman/listinfo/python-list


Questions about asyncore

2008-07-29 Thread Frank Millman
Hi all

I have been using my own home-brewed client/server technique for a
while, using socket and select. It seems to work ok. The server can
handle multiple clients. It does this by creating a new thread for
each connection. Each thread runs its own select loop.

I am making some fairly big changes, so I thought I would look at
asyncore. I modified my program to use asyncore without much trouble,
and it feels nicer. It uses async I/O instead of threading, and it
relieves me of having to run my own select loop.

I have two questions. They both relate to whether I am using the
module as intended. The documentation is rather sparse, and I know
from experience that just getting something working is no guarantee
that I am getting the full benefit.

Firstly, having got asyncore working, I had a look at asynchat. As far
as I can see I get very little benefit from using it. I have already
set up a 'messaging' protocol between server and client, where all
messages consist of 5 digits for the message length, followed by the
message. The message consists of a pickled tuple, where the first
element is a message identifier, and the rest is the message body.

This is how it works in asyncore -

def __init__(self,channel):
[...]
self.msgLength = 0
self.recvData = ''  # temporary buffer

def handle_read(self):
self.recvData += self.recv(8192)
if not self.msgLength:
if len(self.recvData)  5:  # 1st 5 bytes = msg length
return
self.msgLength = int(self.recvData[:5])
self.recvData = self.recvData[5:]
if len(self.recvData)  self.msgLength:
return
data = loads(self.recvData[:self.msgLength])
self.recvData = self.recvData[self.msgLength:]
self.msgLength = 0
[handle data]

This is how I got it working in asynchat -

def __init__(self,channel):
[...]
self.recvData = ''  # temporary buffer
self.set_terminator(5)
self.gotMsgLength = False

def collect_incoming_data(self, data):
self.recvData += data

def found_terminator(self):
if self.gotMsgLength:  # what follows is the message
data = loads(self.recvData)
self.set_terminator(5)
self.gotMsgLength = False
[handle data]
else:  # what follows is the message length
self.set_terminator(int(self.recvData))
self.gotMsgLength = True
self.recvData = ''

It may be slightly neater, but it does not seem worth adding an extra
layer just for that. Does asynchat give me any other benefits I may
have overlooked?

My second question relates to writing a dummy client program to test
the server. I just want to send it some messages and print the
responses. Some messages incorporate data extracted from previous
responses, so I have to wait for the reply before continuing.

I am using asyncore for this as well. However, the only way I can
think of to get it working is to run asyncore.dispatcher in a separate
thread.

To send messages, I append them to a list of messages to be sent. The
dispatcher method writable() returns True if there is anything in the
list, else False.

To receive messages, I run a 'while 1' loop in the main thread, with a
sleep of 0.1, until recvData has something in it.

It works, but it seems odd to use a separate thread, as one of the
points of asyncore is to avoid multi-threading. Is there a better way
to write the client program?

Thanks

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


Re: Python COM

2008-07-29 Thread M�ta-MCI (MVP)

Hi!

Example, with Pywin32:

import win32com.client
moncom = win32com.client.Dispatch('MyCOM1.AdvMethod')
moncom.IAdvMethod(...

See Pywin32 here:  http://sourceforge.net/projects/pywin32/

@-salutations

Michel Claveau

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


Re: Python COM

2008-07-29 Thread Diez B. Roggisch
M�ta-MCI (MVP) wrote:

 Hi!
 
 Example, with Pywin32:
 
 import win32com.client
 moncom = win32com.client.Dispatch('MyCOM1.AdvMethod')
 moncom.IAdvMethod(...
 
 See Pywin32 here:  http://sourceforge.net/projects/pywin32/

That's not working, because the OP has a custom interface, not
IDispatch-based.

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

Re: method decorators and more on decorators

2008-07-29 Thread Themis Bourdenas
On Mon, Jul 28, 2008 at 11:12 AM, Gabriel Genellina
[EMAIL PROTECTED]wrote:

 En Sun, 27 Jul 2008 15:26:39 -0300, Themistoklis Bourdenas 
 [EMAIL PROTECTED] escribió:

  On a related note, as the actual instance method of myclass is not foo
 but
  decorate(foo), why are they called method decorators? This does not
 decorate
  methods, they decorate functions and eventually the decorated functions
  become methods. The name method decorator sounds a bit misleading to me.

 Where have you found it? I've always seen the expression function
 decorator or just decorator, not method decorator.


well a few occurrences of it can be found in PEP 318



  So returning to my original question is there any way I can get the class
  inside decorate()? I guess there is not, but just asking to make sure.

 the class inside decorate? What do you mean? The type of the x instance
 in an x.foo() call? That should be determined inside the wrapped function
 -when it is actually called-.

 Yes, what I was hoping is that it might be possible to get the name of the
class the function is eventually is going to be bound to, but I guess that's
not very likely to be possible. I wanted the name well before the function
is called, actually even before an instance of the class is created. Anyway,
I 've solved my problem with other means. Just out curiosity though, has
there been any talk about actual method decorators? I guess you can work
around them with the introduction of class decorators or even now with
meta-classes, but you have to wrap methods manually with no syntactic sugar.

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

Re: exec(code) not allowing import on top level?

2008-07-29 Thread Peter Otten
Peter Teuben wrote:

 
 if I define a simple string code, with the following contents:
 
 import math
 def foo(x):
return math.sqrt(x)

The 

import math 

statement puts 'math' in the local namespace, and foo looks it up in the
global namespace. This can only work when these namespaces are the same:

 code = 
... import math
... def foo(x):
... return math.sqrt(x)
... print foo(2)
... 
 exec code in {}
1.41421356237
 exec code in {}, {}
Traceback (most recent call last):
  File stdin, line 1, in module
  File string, line 5, in module
  File string, line 4, in foo
NameError: global name 'math' is not defined

You could argue that Python should always look into the local namespace and
then fall back to the global namespace but that would be fruitless extra
work in most cases. I think it can only hapen with exec/eval, and as you
have seen in the other responses even there it works on the module level
because -- tada!

 globals() is locals()
True
 
 and i run it using exec(code) in python, math is not known. But when I
 recode the string as:
 
 def foo(x):
import math
return math.sqrt(x)

Here Python guesses that math is a local variable and that guess is
correct. If you wrote

import math
def foo(x):
return math.sqrt(x)
math = 42

Python would still guess that math is a local name and you would end up with
a runtime exception.

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


Re: interpreter vs. compiled

2008-07-29 Thread alex23
On Jul 29, 2:21 pm, castironpi [EMAIL PROTECTED] wrote:
 On Jul 28, 5:58 pm, Fuzzyman [EMAIL PROTECTED] wrote:
  Well - in IronPython user code gets compiled to in memory assemblies
  which can be JIT'ed.

 I don't believe so.

Uh, you're questioning someone who is not only co-author of a book on
IronPython, but also a developer on one of the first IronPython-based
commercial applications.

I know authorship isn't always a guarantee of correctness, but what
experience do you have with IronPython that makes you so unwilling to
accept the opinion of someone with substantial knowledge of the
subject?

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


Re: SWIG and char* newb questions :)

2008-07-29 Thread code_berzerker
Ok I think I got it:


PyObject* myFuncXXX(char* p_1, int p_2, char* p_3, int p_4)
{
  int res;
  char _host[255] = ;
  int _port;
  res = funcXXX(p_1, p_2, p_3, p_4, _host, _port);

  PyObject* res1 = PyInt_FromLong(res);
  PyObject* res2 = PyString_FromStringAndSize(_host, strlen(_host));
  PyObject* res3 = PyInt_FromLong(_port);

  PyObject* resTuple = PyTuple_New(3);

  PyTuple_SetItem(resTuple, 0, res1);
  PyTuple_SetItem(resTuple, 1, res2);
  PyTuple_SetItem(resTuple, 2, res3);

  return resTuple;
}

It seems to work when I put it into swig's *.i file.

me proud of me.self :D
--
http://mail.python.org/mailman/listinfo/python-list


Re: Swap memory in Python ? - three questions

2008-07-29 Thread Scott David Daniels

Robert LaMarca wrote:
Hi, 

I am using numpy and wish to create very large arrays.   My system is AMD 64 x 2 Ubuntu 8.04.  Ubuntu should be 64 bit. I have 3gb RAM and a 15 GB swap drive.  

The command I have been trying to use is; 
g=numpy.ones([1000,1000,1000],numpy.int32)


This returns a memory error.  
A smaller array ([500,500,500]) worked fine.. 
Two smaller arrays again crashed the system.


So... I did the math.  a 1000x1000x1000 array at 32 bits should be around 4gb 
RAM... Obviously larger than RAM, but much smaller than the swap drive.

1. So... does Numpy have a really lot of overhead? Or is my system just not somehow getting to make use of the 15gb swap area. 
2. Is there a way I can access the swap area, or direct numpy to do so? Or do I have to write out my own numpy cache system... 
3. How difficult is it to use data compression internally on numpy arrays? 


thanks very much
Robert

There are architectural issues that you should not expect (and really
do not want) the libraries / languages / os to handle for you
automatically.  The reason you don't even _want_ an automatic solution
is that the computer has no understanding of the problem you are trying
to solve.  If the machine guesses wrong, it will be doing computations
at I/O speeds, and for 4G of data, that will result in geological
computing times.

On big problems the programming issue is how to break the problem into
tractable sub-problems (of feasible computing size), and how to stitch
those results together.  This is a place to apply human intellect, not
machine effort.  So, sorry, there is no way to solve the problem without
understanding the field it occurs in and the question being addressed
by the code.

--Scott David Daniels
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list


Re: Simplify Code

2008-07-29 Thread Victor Subervi
Thanks. That worked.
Victor


On 7/16/08, Alexandr N Zamaraev [EMAIL PROTECTED] wrote:

 header_sizes = (36, 26, 22, 18, 14, 12)
 if x not in header_sizes:
  raise Exception()
 else:
  h36, h26, h22, h18, h14, h12 = tuple(
line if x == size else '' for x in header_sizes)



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

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

Windows Interpreter

2008-07-29 Thread Victor Subervi
Hi:
I would like to make my windows python interpreter work like my linux one. I
want to be able to cut and paste multiple lines of code. Now I can only
paste one line at a time. I do not want it to indent automatically. How can
I change this?
TIA,
Victor
--
http://mail.python.org/mailman/listinfo/python-list

RTF Parsing

2008-07-29 Thread Victor Subervi
Hi;
I have this code:
def a():
chars = ['\\i0', '\\u0', '\\qc', '\\b0', '\\ql', '\\i', '\\u', '\\b',
'\\yz']
rtf_markup = 'viewkind4\uc1\pard\nowidctlpar\qc\i\f0\fs36 Who is like the
Beast? Who can wage war against him?\par'
for char in chars:
  c = '(?=' + char + ')'
  test = re.search(c, rtf_markup)
  try:
junk = test.group(0)
print char
  except:
pass
which gives this result:
 a()
\qc
\b0
\i
\u
\b

which makes no sense at all. I expected this:
 a()
\qc
\i

Why do I get more than that? Also, if I change this line thus:
c = '(?=' + char + ')[0 ]'
I get this result:
 a()
\b

Why?
TIA,
Victor
--
http://mail.python.org/mailman/listinfo/python-list

Re: Windows Interpreter

2008-07-29 Thread Tim Golden

Victor Subervi wrote:

Hi:
I would like to make my windows python interpreter work like my linux 
one. I want to be able to cut and paste multiple lines of code. 


You can already do this: what are you trying which isn't working?

Now I can only paste one line at a time. 
I do not want it to indent 
automatically. How can I change this?


I realise this is a difficult thing to describe in words,
but I regularly cut and paste multiple lines of code
into my Python interpreter and it doesn't indent 
automatically. Can you give some specific examples of 
what you do and what does or doesn't work?


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


Re: Boolean tests

2008-07-29 Thread Ben Finney
Anders J. Munch [EMAIL PROTECTED] writes:

 Steven D'Aprano wrote:
  I'm sorry Anders, that was a needlessly harsh thing for me to say.
  I apologize for the unpleasant tone.
 
  Still, __nonzero__ is a fundamental part of Python's behaviour.
  You should learn about it.
 
 Hm, first you apologize, then you repeat the insult? That's no basis
 for a conversation. Bye from here.

No, he retracted the *insult* and restated the *advice* as a distinct
statement. I think it's quite worthwhile to help people see the
difference.

-- 
 \   “People are very open-minded about new things, as long as |
  `\ they're exactly like the old ones.” —Charles F. Kettering |
_o__)  |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list

Re: Windows Interpreter

2008-07-29 Thread Victor Subervi
def a():
  chars = ['\\i0', '\\u0', '\\qc', '\\b0', '\\ql', '\\i', '\\u', '\\b',
'\\yz']
  rtf_markup = 'viewkind4\uc1\pard\nowidctlpar\qc\i\f0\fs36 Who is like the
Beast? Who can wage war against him?\par'
  for char in chars:
c = '(?=' + char + ')'
test = re.search(c, rtf_markup)
try:
  junk = test.group(0)
  print char
except:
  pass

Now, I can paste that entire fn in linux. But in windows I have to paste it
line_by_line. Pain in butt! And it indents automatically. How change that
behavior.
TIA,
Victor

On 7/29/08, Tim Golden [EMAIL PROTECTED] wrote:

 Victor Subervi wrote:

 Hi:
 I would like to make my windows python interpreter work like my linux one.
 I want to be able to cut and paste multiple lines of code.


 You can already do this: what are you trying which isn't working?

 Now I can only paste one line at a time. I do not want it to indent
 automatically. How can I change this?


 I realise this is a difficult thing to describe in words,
 but I regularly cut and paste multiple lines of code
 into my Python interpreter and it doesn't indent automatically. Can you
 give some specific examples of what you do and what does or doesn't work?

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

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

backspace problems

2008-07-29 Thread kj


If I'm in the python interactive interpreter, I get a beep when I
hit the backspace key.

I must confess, though, that my terminal is complicated, to put
it mildly: I work on a Mac running Leopard; I open a Terminal
session, and through it I ssh to an Ubuntu server; on this server
I connect to a permanently-running GNU screen session, which has
several multiplexed windows going, all running zsh; it is in this
convoluted environment that I run the python interactive interpreter.[*]

I've determined that the problem occurs only within the GNU screen
session.  GNU screen is one of the coolest Unix programs ever, one
that literally changed the way I work, is there's no way I'll stop
using it.  So I need to figure out how to fix this.

How can I determine the character that the python session is
receiving when I hit the backspace key, and how can I tell it to
handle it as a backward-delete character?

TIA!

kynn

[*] Actually, it gets worse.  My .zshrc file (which gets executed
whenever an interactive shell is started) runs the command

  bindkey '^[[3~' backward-delete-char

because, otherwise my regular zsh interaction would not handle the
backspace key properly.  But the problem I described above occurs
whether this command is executed or not.


-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
--
http://mail.python.org/mailman/listinfo/python-list


Defunct when using subprocess.Popen

2008-07-29 Thread Gordon Maria
Title: Defunct when using subprocess.Popen







Hi!

I hope someone can help me out here!

I'm running a GUI in python which is able to launch a separate python process that will run forever. In rare cases I will want to kill the launched process. Every time I do so, I end up with the process as defunct. Can anybody help me clean it up in a nice way?

My code snippets:
#Launching a separate process (no communication in between the process needed)
# When closing the GUI, the launched program should not be killed.

command = ['test.py',' -c ',config]
process = subprocess.Popen(command, preexec_fn = os.setsid)

On request from GUI I do the following:
os.kill(process.pid,9)

FYI, it is all running on Linux.

All suggestions are appreciated!





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

Defunct when using subprocess.Popen

2008-07-29 Thread Gordon Maria
Title: Defunct when using subprocess.Popen








Hi!

I hope someone can help me out here!

I'm running a GUI in python which is able to launch a separate python process that will run forever. In rare cases I will want to kill the launched process. Every time I do so, I end up with the process as defunct. Can anybody help me clean it up in a nice way?

My code snippets:
#Launching a separate process (no communication in between the process needed)
# When closing the GUI, the launched program should not be killed.

command = ['test.py',' -c ',config]
process = subprocess.Popen(command, preexec_fn = os.setsid)

On request from GUI I do the following:
os.kill(process.pid,9)

FYI, it is all running on Linux.

All suggestions are appreciated!




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

Re: Windows Interpreter

2008-07-29 Thread Tim Golden

Victor Subervi wrote:

def a():
  chars = ['\\i0', '\\u0', '\\qc', '\\b0', '\\ql', '\\i', '\\u', '\\b', 
'\\yz']
  rtf_markup = 'viewkind4\uc1\pard\nowidctlpar\qc\i\f0\fs36 Who is like 
the Beast? Who can wage war against him?\par'

  for char in chars:
c = '(?=' + char + ')'
test = re.search(c, rtf_markup)
try:
  junk = test.group(0)
  print char
except:
  pass

Now, I can paste that entire fn in linux. But in windows I have to paste 
it line_by_line. Pain in butt! And it indents automatically. How change 
that behavior.


Well, I'm not really sure what to say. I've just copied that
whole section with drag-mouse, Ctrl-C. I then opened a new
interpreter window (effectively, Start  Run  python) and
right-clicked over the window. At this point, the lines I
copied were copied in and the function accepted by the
interpreter.

I do have QuickEdit on by default in all by console windows,
but the only difference I expect that to make is that you'd
otherwise have to use the window's System Menu (Alt-Space,
Edit, Paste).

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


Re: Swap memory in Python ? - three questions

2008-07-29 Thread Marc Christiansen
Robert LaMarca [EMAIL PROTECTED] wrote:
 Hi, 
 
 I am using numpy and wish to create very large arrays.   My system is
 AMD 64 x 2 Ubuntu 8.04.  Ubuntu should be 64 bit. I have 3gb RAM and a
 15 GB swap drive.  
 
 The command I have been trying to use is; 
 g=numpy.ones([1000,1000,1000],numpy.int32)
 
 This returns a memory error.  

Works for me on AMD64x2, 2GB RAM, 3GB swap. With much paging of course
;) Process size of python 4019508kB. 

 A smaller array ([500,500,500]) worked fine.. 

About 0.5GB.. no surprise.

 Two smaller arrays again crashed the system.

Crash as in computer reboots? Strange. And you say, that two [500,
500, 500] arrays are two much?

 So... I did the math.  a 1000x1000x1000 array at 32 bits should be
 around 4gb RAM... Obviously larger than RAM, but much smaller than the
 swap drive.

Sounds like either your kernel or python are not 64bit.
For the kernel, have a look at /proc/meminfo, which value you get for
VmallocTotal. I have VmallocTotal: 34359738367 kB.
For python, check sys.maxint. If it's 2147483647, then you have a 32bit
python. Mine says 9223372036854775807.

 1. So... does Numpy have a really lot of overhead? Or is my system
 just not somehow getting to make use of the 15gb swap area. 
No. Yes.

 2. Is there a way I can access the swap area, or direct numpy to do
 so? Or do I have to write out my own numpy cache system... 
 3. How difficult is it to use data compression internally on numpy
 arrays? 
2 + 3: Should not be necessary.

I just tried a 32bit python on my 64bit system, using Numeric instead of
numpy (don't have a 32bit numpy ready):

g=Numeric.zeros([1000,1000,1000],Numeric.Int32)
Traceback (most recent call last):
  File stdin, line 1, in module
MemoryError: can't allocate memory for array

g=Numeric.zeros([1000,1000,500],Numeric.Int32) succeeds.

So it looks like you have a 32bit kernel.

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


Re: Questions about asyncore

2008-07-29 Thread Giampaolo Rodola'
On 29 Lug, 13:09, Frank Millman [EMAIL PROTECTED] wrote:

 Firstly, having got asyncore working, I had a look at asynchat. As far
 as I can see I get very little benefit from using it. I have already
 set up a 'messaging' protocol between server and client, where all
 messages consist of 5 digits for the message length, followed by the
 message. The message consists of a pickled tuple, where the first
 element is a message identifier, and the rest is the message body.

 This is how it works in asyncore -

 def __init__(self,channel):
 [...]
 self.msgLength = 0
 self.recvData = ''  # temporary buffer

 def handle_read(self):
 self.recvData += self.recv(8192)
 if not self.msgLength:
 if len(self.recvData)  5:  # 1st 5 bytes = msg length
 return
 self.msgLength = int(self.recvData[:5])
 self.recvData = self.recvData[5:]
 if len(self.recvData)  self.msgLength:
 return
 data = loads(self.recvData[:self.msgLength])
 self.recvData = self.recvData[self.msgLength:]
 self.msgLength = 0
 [handle data]

 This is how I got it working in asynchat -

 def __init__(self,channel):
 [...]
 self.recvData = ''  # temporary buffer
 self.set_terminator(5)
 self.gotMsgLength = False

 def collect_incoming_data(self, data):
 self.recvData += data

 def found_terminator(self):
 if self.gotMsgLength:  # what follows is the message
 data = loads(self.recvData)
 self.set_terminator(5)
 self.gotMsgLength = False
 [handle data]
 else:  # what follows is the message length
 self.set_terminator(int(self.recvData))
 self.gotMsgLength = True
 self.recvData = ''

 It may be slightly neater, but it does not seem worth adding an extra
 layer just for that. Does asynchat give me any other benefits I may
 have overlooked?

The benefit of asynchat is that it automatically handles the buffering
of both input and output.
Aside from set/found_terminator() the other two methods you could want
to look at are push() and push_with_producer().
push() is a buffered version of asyncore.send(), push_with_producer()
accepts a data-producer object you can use in case you want to deal
with something other than strings (e.g. files, lists, generators, and
so on...).


 My second question relates to writing a dummy client program to test
 the server. I just want to send it some messages and print the
 responses. Some messages incorporate data extracted from previous
 responses, so I have to wait for the reply before continuing.

 I am using asyncore for this as well. However, the only way I can
 think of to get it working is to run asyncore.dispatcher in a separate
 thread.

 To send messages, I append them to a list of messages to be sent. The
 dispatcher method writable() returns True if there is anything in the
 list, else False.

 To receive messages, I run a 'while 1' loop in the main thread, with a
 sleep of 0.1, until recvData has something in it.

 It works, but it seems odd to use a separate thread, as one of the
 points of asyncore is to avoid multi-threading. Is there a better way
 to write the client program?

I'm not sure to understand but I doubt you have to use a thread.
If you have to wait for the reply before continuing just implement
this logic into handle_read() or found_terminator() method.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
--
http://mail.python.org/mailman/listinfo/python-list


Re: backspace problems

2008-07-29 Thread kj
In [EMAIL PROTECTED] kj [EMAIL PROTECTED] writes:

snip

Please ignore my question.  I found a general solution that works
not only for the python interactive interpreter but also for all
programs that have a readline-type interaction.  This solution has
nothing to do with Python, but if anyone's interested, it's here:

http://www.macosxhints.com/article.php?story=20040930002324870query=backspace%2Bdebian

kynn
-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Colin J. Williams

Heiko Wundram wrote:

Am Dienstag, 29. Juli 2008 11:15:05 schrieb Heiko Wundram:

I can't dig up a simple example from code I wrote quickly...


Just to get back to that: an example I found where if x (the generic 
__nonzero__() test) will work to test for emptiness/non-emptiness of a 
container, whereas if len(x)  0 (the specific test for this example) 
will not, is my for own integer set type I wrote a while back (which you can 
find on ASPN).


The corresponding set type allows you to create infinitely sized sets of 
integers (which of course are stored as pairs of start,stop-values, so 
the storage itself for the set is bounded), for which len(x) does not have 
a proper meaning anymore, and __len__() is limited to returning a (platform 
dependent) ssize_t anyway IIRC, so even with a bounded set, the length of the 
set might not necessarily be accessible using len(x); that's why the set type 
additionally got a member function called .len() to work around this 
restriction.


I should think is a non-contrieved example where the generic test whether the 
object considers itself True/False (which for containers means 
non-empty/empty) is preferrable over the special case test whether the length 
is positive. A polymorphic function, which for example only accesses the 
first ten members of the container is able to work with an infinite set if it 
uses the generic test, but is not in case it uses len(x)  0.


(+1)  This an Heiko's previous post sets 
things out clearly.


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


pygtk treview, ListStore not displaying properly

2008-07-29 Thread binaryjesus
hi group i am running into a problem with gtk. i have a treeview that
just displays tabular data (no down arrows or trees etc). it has 5
columns. The tiny problem i am having is that it is just display the
data of the column named `title` in all the colums!

here the pic of the app in action
  http://i36.tinypic.com/2djcqqr.png

the related code of the app is as follows:

self.tv = self.glade.get_widget('treeview1')   #the treeview object

def show_sync_wind(self,obj, data = None):
t = Template.select(Template.q.synced == '0')
self.synclstore = gtk.ListStore(str,str,str,str,str)
x = 0
cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('#', cr);
col.add_attribute(cr, 'markup', 1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(0)
self.tv.append_column(col)
self.sno_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Title', cr);
col.add_attribute(cr, 'markup', 1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(1)
self.tv.append_column(col)
self.title_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Section', cr);
col.add_attribute(cr, 'markup', 1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(2)
self.tv.append_column(col)
self.section_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Category', cr);
col.add_attribute(cr, 'markup', 1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(3)
self.tv.append_column(col)
self.category_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Sync', cr);
col.add_attribute(cr, 'markup', 1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(4)
self.tv.append_column(col)
self.sync_col = col

self.tv.set_model(self.synclstore)
self.tv.set_headers_clickable(True)
#self.tv.set_expander_column(self.title_col)
for y in t:
row =
self.synclstore.append([str(x),y.title,y.section.name,y.category.name,y.synced])
self.synclstore.set(row,0,'0')
self.synclstore.set(row,1,y.title)
self.synclstore.set(row,2,y.section.name)
self.synclstore.set(row,3,y.category.name)
self.synclstore.set(row,4,y.synced)
self.sync_window.show()
--
http://mail.python.org/mailman/listinfo/python-list


Re: Automatically loading and initialising objects from a plugins directory

2008-07-29 Thread kpd
On Jul 25, 7:50 am, Fredrik Lundh [EMAIL PROTECTED] wrote:
 It's a potentially brain-exploding topic,

-that you made very understandable.   Thanks for posting that
explanation and example.
--
http://mail.python.org/mailman/listinfo/python-list


Re: block/lambda

2008-07-29 Thread [EMAIL PROTECTED]

 2. Will it be possible in Python 3.0 to do the following:

  def dotimes(n, callable):

         for i in range(n): callable()

  def block():

         nonlocal i
         for j in range(i):
                 print j,
         print

dotimes seems ok and what is wrong with that function block? You do
not need to specify that i is nonlocal, global i will be used.

 i=10
 def block():
for j in range(i):
print j,
print
 block()
0 1 2 3 4 5 6 7 8 9

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


[unittest] Run setUp only once

2008-07-29 Thread Nikolaus Rath
Hello,

I have a number of conceptually separate tests that nevertheless need
a common, complicated and expensive setup.

Unfortunately, unittest runs the setUp method once for each defined
test, even if they're part of the same class as in

class TwoTests(unittest.TestCase):
def setUp(self):
# do something very time consuming

def testOneThing(self):


def testADifferentThing(self):


which would call setUp twice.


Is there any way to avoid this, without packing all the unrelated
tests into one big function?


Best,

   -Nikolaus

-- 
 »It is not worth an intelligent man's time to be in the majority.
  By definition, there are already enough people to do that.«
 -J.H. Hardy

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

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

Re: block/lambda

2008-07-29 Thread Jean-Paul Calderone

On Tue, 29 Jul 2008 07:26:38 -0700 (PDT), [EMAIL PROTECTED] [EMAIL 
PROTECTED] wrote:



2. Will it be possible in Python 3.0 to do the following:

 def dotimes(n, callable):

for i in range(n): callable()

 def block():

nonlocal i
for j in range(i):
print j,
print


dotimes seems ok and what is wrong with that function block? You do
not need to specify that i is nonlocal, global i will be used.


i=10
def block():

   for j in range(i):
   print j,
   print

block()

0 1 2 3 4 5 6 7 8 9



Python doesn't have dynamic scoping.

  def dotimes(n, callable):
 ... for i in range(n):
 ... callable()
 ...
  def block():
 ... for j in range(i):
 ... print j,
 ... print
 ...
  def f():
 ... dotimes(5, block)
 ...
  f()
 Traceback (most recent call last):
   File stdin, line 1, in ?
   File stdin, line 2, in f
   File stdin, line 3, in dotimes
   File stdin, line 2, in block
 NameError: global name 'i' is not defined
 

The nonlocal keyword in Python 3 won't do this, either.  It's for
referencing names in outer lexical scopes, not outer dynamic scopes.

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


Re: [unittest] Run setUp only once

2008-07-29 Thread Jean-Paul Calderone

On Tue, 29 Jul 2008 16:35:55 +0200, Nikolaus Rath [EMAIL PROTECTED] wrote:

Hello,

I have a number of conceptually separate tests that nevertheless need
a common, complicated and expensive setup.

Unfortunately, unittest runs the setUp method once for each defined
test, even if they're part of the same class as in

class TwoTests(unittest.TestCase):
   def setUp(self):
   # do something very time consuming

   def testOneThing(self):


   def testADifferentThing(self):


which would call setUp twice.


Is there any way to avoid this, without packing all the unrelated
tests into one big function?



   class TwoTests(unittest.TestCase):
   setUpResult = None

   def setUp(self):
   if self.setUpResult is None:
   self.setUpResult = computeIt()

   ...

There are plenty of variations on this pattern.

Jean-Paul




Best,

  -Nikolaus

--
»It is not worth an intelligent man's time to be in the majority.
 By definition, there are already enough people to do that.«
-J.H. Hardy

 PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

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


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

Continuous integration for Python projects

2008-07-29 Thread Hussein B
Hi.
Please correct my if I'm wrong but it seems to me that the major
continuous integration servers (Hudson, CruiseControl, TeamCity ..)
don't support Python based application.
It seems they mainly support Java, .NET and Ruby.
Can I use one of the previous listed servers for Python project?
Thanks.
--
http://mail.python.org/mailman/listinfo/python-list


How do I include a shell variable in my script?

2008-07-29 Thread laredotornado
Hi,

I'm running a Python script on a Solaris 9 machine, invoking the
Python script from ksh, if that matters.  There is an enviornment
variable, $JAVA_HOME, that I would like to include in my script,
replacing /path/to/java/home' with the value of $JAVA_HOME.

java_home='/path/to/java/home'

How do I do this?  If I need to pass a command line argument, so be
it, but I figure there is a more direct way to get the value.

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


Re: Continuous integration for Python projects

2008-07-29 Thread Diez B. Roggisch
Hussein B wrote:

 Hi.
 Please correct my if I'm wrong but it seems to me that the major
 continuous integration servers (Hudson, CruiseControl, TeamCity ..)
 don't support Python based application.
 It seems they mainly support Java, .NET and Ruby.
 Can I use one of the previous listed servers for Python project?

Hudson can, and AFAIK CC as well - they only invoke shell-scripts (at least
hudson does, and CC you can convince doing that using ANT)

So go ahead and use them - shouldn't be much (more) effort than for java
projects.

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


Re: Continuous integration for Python projects

2008-07-29 Thread Jean-Paul Calderone

On Tue, 29 Jul 2008 07:47:35 -0700 (PDT), Hussein B [EMAIL PROTECTED] wrote:

Hi.
Please correct my if I'm wrong but it seems to me that the major
continuous integration servers (Hudson, CruiseControl, TeamCity ..)
don't support Python based application.
It seems they mainly support Java, .NET and Ruby.
Can I use one of the previous listed servers for Python project?
Thanks.


I haven't used CruiseControl or the other CIS you mention, but I
suspect they can probably support Python programs.  The CruiseControl
docs suggest that it supports builder plugins which can do arbitrary
things.

However, one CIS written in Python (which can also handle arbitrary
builds, not just builds of Python software) is buildbot:

  http://buildbot.net/

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


Re: How do I include a shell variable in my script?

2008-07-29 Thread Jerry Hill
On Tue, Jul 29, 2008 at 10:53 AM, laredotornado
[EMAIL PROTECTED] wrote:
 Hi,

 I'm running a Python script on a Solaris 9 machine, invoking the
 Python script from ksh, if that matters.  There is an enviornment
 variable, $JAVA_HOME, that I would like to include in my script,
 replacing /path/to/java/home' with the value of $JAVA_HOME.

 java_home='/path/to/java/home'

import os
java_home = os.environ['JAVA_HOME']

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


Build tool for Python

2008-07-29 Thread Hussein B
Hi.
Apache Ant is the de facto building tool for Java (whether JSE, JEE
and JME) application.
With Ant you can do what ever you want: compile, generate docs,
generate code, packing, deploy, connecting to remote servers and every
thing.
Do we have such a tool for Python projects?
Thank you.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Matthew Fitzgibbons

Carl Banks wrote:

On Jul 28, 8:15 pm, Steven D'Aprano [EMAIL PROTECTED]
cybersource.com.au wrote:

On Mon, 28 Jul 2008 13:22:37 -0700, Carl Banks wrote:

On Jul 28, 10:00 am, Steven D'Aprano [EMAIL PROTECTED]
cybersource.com.au wrote:

Cutting to the crux of the discussion...
On Sun, 27 Jul 2008 23:45:26 -0700, Carl Banks wrote:

I want something where if x will do but a simple explicit test
won't.

Explicit tests aren't simple unless you know what type x is. If x could
be of any type, you can't write a simple test. Does x have a length? Is
it a number? Maybe it's a fixed-length circular length, and the length
is non-zero even when it's empty? Who knows? How many cases do you need
to consider?

Use case, please.  I'm asking for code, not arguments.  Please give me a
piece of code where you can write if x that works but a simple
explicit test won't.

I gave you a piece of code, actual code from one of my own projects. If
you wouldn't accept that evidence then, why would you accept it now?


I would accept as evidence something that satisfies my criteria,
which your example did not: it could have easily (and more robustly)
been written with a simple explicit test.  I am looking for one that
can't.

You keep bringing up this notion of more complex with no benefit,
which I'm simply not interested in talking about that at this time,
and I won't respond to any of your points.  I am seeking the answer to
one question: whether if x can usefully do something a simple
explicit test can't.  Everyone already knows that if x requires
fewer keystrokes and parses to fewer nodes.


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



My use case involves a DAG of filters that pass data (of a variety of 
types--filters just pass on data types they don't understand) between 
them. I can also drop out of the filter chain at any point, using 
critera determined by the filters. These criteria, you guessed it, are 
bound to __nonzero__ in the filter and I determine whether or not to 
continue through the graph using if x. You can't code explicit tests 
if you don't know what the tests even are beforehand. Also, I wanted to 
support builtins (ints and lists in particular) because they can be 
meaningful inputs to filters. Finally, as I add more filters and data 
types, I don't want to go back and mess with the code that decides 
whether or not to break out of the graph.


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


Re: Build tool for Python

2008-07-29 Thread Diez B. Roggisch
Hussein B wrote:

 Hi.
 Apache Ant is the de facto building tool for Java (whether JSE, JEE
 and JME) application.
 With Ant you can do what ever you want: compile, generate docs,
 generate code, packing, deploy, connecting to remote servers and every
 thing.
 Do we have such a tool for Python projects?

distutils and setuptools are used to create distributions of
python-packages, potentially compiling e.g. C or pyrex-sources, and you can
hook into them to create e.g. api-docs.

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


Overloaded Functions

2008-07-29 Thread Tim Henderson
Hi,

So this may have been asked before but i haven't found the answer by
googling so far. My situation is this:

I want this structure for my code:

@overloaded
def sign_auth(secret, salt, auth_normalized):
return __sign_auth(saltedhash_bin(secret, salt), auth_normalized)

@sign_auth.register(str, str)
def sign_auth(secret_hash_normalized, auth_normalized):
return __sign_auth(qcrypt.denormalize(secret_hash_normalized),
auth_normalized)

def __sign_auth(secret_hash_bin, auth_normalized):
auth = qcrypt.denormalize(auth_normalized)
aes = AES.new(secret_hash_bin, AES.MODE_CBC)
plaintext = aes.decrypt(auth)
ciphertext = qcrypt.normalize(xor_in_pi(plaintext))
if debug:
print '\n--sign_auth--'
print qcrypt.normalize(secret_hash_bin)
print qcrypt.normalize(plaintext)
print ciphertext
print '-sign_auth---\n'
return ciphertext

I am using the overloading module from:
http://svn.python.org/view/sandbox/trunk/overload/overloading.py?rev=43727view=log

However it doesn't actually support this functionality. Does any one
know of a decorator that does this? It would be really nice to have a
unified interface into the __sign_auth function for the two different
use cases.

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


DB access without object-relation mapping?

2008-07-29 Thread kj



Python noob here.

I want to write a script that creates and populates a simple Postgres
database.

The word on the street is to use something like SQLAlchemy for
database access in Python, but my experience in the past with
packages that perform automated SQL generation has been awful, so
I always return to lighter-weight solutions that allow me to write
my own SQL.  (E.g. when coding in Perl I've used Perl's DBI package
and drivers, rather than the likes of Class::DBI.)  So what's the
standard Python way to send SQL directly to a Postgres database
and get back results?

TIA!

kynn

-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Build tool for Python

2008-07-29 Thread Tim Henderson
On Jul 29, 11:08 am, Hussein B [EMAIL PROTECTED] wrote:
 Hi.
 Apache Ant is the de facto building tool for Java (whether JSE, JEE
 and JME) application.
 With Ant you can do what ever you want: compile, generate docs,
 generate code, packing, deploy, connecting to remote servers and every
 thing.
 Do we have such a tool for Python projects?
 Thank you.

You might want to take a look at Paver. 
http://www.blueskyonmars.com/projects/paver/

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


Re: DB access without object-relation mapping?

2008-07-29 Thread Tim Henderson
On Jul 29, 11:20 am, kj [EMAIL PROTECTED] wrote:
 Python noob here.

 I want to write a script that creates and populates a simple Postgres
 database.

 The word on the street is to use something like SQLAlchemy for
 database access in Python, but my experience in the past with
 packages that perform automated SQL generation has been awful, so
 I always return to lighter-weight solutions that allow me to write
 my own SQL.  (E.g. when coding in Perl I've used Perl's DBI package
 and drivers, rather than the likes of Class::DBI.)  So what's the
 standard Python way to send SQL directly to a Postgres database
 and get back results?

 TIA!

 kynn

 --
 NOTE: In my address everything before the first period is backwards;
 and the last period, and everything after it, should be discarded.

Hi,

I believe there are a couple of options but pyscopg, and PyGreSQL seem
to be popular.

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


Re: Execution speed question

2008-07-29 Thread Suresh Pillai
On Mon, 28 Jul 2008 16:48:28 +0200, Suresh Pillai wrote:

 Okay, please consider this my one absolutely stupid post for the year.
 I'd like to pretend it never happened but unfortunately the web doesn't
 allow that.  Having never used sets, I unfort read something that lead
 to it, but ...

Okay, got some sleep and what I meant to ask, although equally basic, but 
not silly:

For sets, I presume they are built on top of or like dicts, and there is 
nothing crazy in the low level implementation so that I can be guaranteed 
that if I don't alter the set, then the order, although arbitrary, will 
be maintained in successive iterations over the contents?
--
http://mail.python.org/mailman/listinfo/python-list


Re: Parsing VHDL with python, where to start.

2008-07-29 Thread Wolfgang Grafen

Svenn Are Bjerkem schrieb:

Hi again,

when I get far enough to parse the VHDL (which is not currently the
fact, but I have to look at the work coming up downstream) I will have
to put it into an internal data structure and then write some classes
to handle the MVC between whatever data I have and the PyQt4 widget
that is going to show the block diagram. I own the book Rapig GUI
Programming with Python and Qt by Mark Summerfield and try to read up
on the PyQt way of doing things as I try to make a plan for my
application. I have been looking for possible data structures with
google just to find out that most of the ideas are stored in
proceedings or to conferences or ieee papers not generally available
to me. Is anybody experienced with designing data structures willing
to share some ideas with me? Since I am using the open-source version
of PyQt4, any information will eventually be available to public (if
the app pass the planning stage) if that makes helping out any
easier: :-) There is already an app called Qucs that is running in
Qt-3 and being ported to Qt-4 that is written in C++, but I don't know
how wise it is to just reverse-engineering C++ classes and translate
them into python classes.


For me it is not very clear what you intend to do. After years of 
parsing parts of VHDL from time to time the rapid parsing way for me is 
using regular expressions instead of one of the parser frame works 
because of following reasons:


- It is hard for me to understand those frameworks
- They are very slow
- It is too much work for me to bring them up to work in a sensible way
- Compared with regular expression matching they usually need a lot of 
extra work.


Regular expressions work very well once the validation of the VHDL code 
was done by one of the commercial compilers.


Once you can rely on the code that it is valid VHDL
- Parse it with a regular expression for simple VHDL structures or
- Extract a structure first and analyse that with a set of regular 
expressions


The result can be stored into a combination of lists and dictionaries, 
dependend on the problem.


For processing with other tools the results could be stored into XML 
structures.


PyQt as a widget framework is not useful until here, but of course you 
could display your results in arbitrary graphical ways with PyQt, if you 
rally need to. You should know, printing out an ASCII or XML 
representation is so much more easy and quicker to code so I always 
prefer that. There are even editors/visualizers ready to display XML...


Best regards

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


Re: pygtk treview, ListStore not displaying properly

2008-07-29 Thread binaryjesus
finally i solved it. This for any googler who comes this way

def show_sync_wind(self,obj, data = None):
t = Template.select(Template.q.synced == '0')
self.synclstore = gtk.ListStore(str,str,str,str,str)
x = 0
cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('#', cr);
col.set_attributes(cr, text=0)#-- attaches col to the 0`th 
item
of liststore
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(0)
self.tv.append_column(col)
self.sno_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Title', cr);
col.set_attributes(cr, text=1)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(1)
self.tv.append_column(col)
self.title_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Section', cr);
col.set_attributes(cr, text=2)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(2)
self.tv.append_column(col)
self.section_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Category', cr);
col.set_attributes(cr, text=3)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(3)
self.tv.append_column(col)
self.category_col = col

cr = gtk.CellRendererText()
col = gtk.TreeViewColumn('Sync', cr);
col.set_attributes(cr, text=4)
col.set_expand(True)
col.set_clickable(True)
col.set_resizable(True)
col.set_sort_column_id(4)
self.tv.append_column(col)
self.sync_col = col

self.tv.set_model(self.synclstore)
self.tv.set_headers_clickable(True)
#self.tv.set_expander_column(self.title_col)
for y in t:
x = x+1
row =
self.synclstore.append([str(x),y.title,y.section.name,y.category.name,y.synced])
self.sync_window.show()
--
http://mail.python.org/mailman/listinfo/python-list


Public Pythn Classs, September 9, 2008

2008-07-29 Thread Steve Holden
Holden Web is please to announce its third public Introduction to 
Python class, near Washington DC, from September 9-11.


Further details are available from

  http://holdenweb.com/py/training/

We are also interested in adding to our course repertoire. If you have 
ideas for suitable one-day classes please visit


  http://holdenweb.blogspot.com/2008/07/one-day-python-classes.html

and leave a comment on that page.

regards
 Steve
--
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC  http://www.holdenweb.com/

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


Re: multiple inheritance and __getattr__

2008-07-29 Thread David C. Ullrich
In article [EMAIL PROTECTED],
 Bruno Desthuilliers [EMAIL PROTECTED] wrote:

 Enrico a écrit :
  Hi there,
  I have the following situation (I tryed to minimize the code to concentrate
  on the issue):
  
  class A(object):
   def __getattr__(self, name):
print 'A.__getattr__'
if name == 'a': return 1
raise AttributeError('%s not found in A' % name)
  
  class B(object):
   def __getattr__(self, name):
print 'B.__getattr__'
if name == 'b': return 1
raise AttributeError('%s not found in B' % name)
  
  Both classes have a __getattr__ method.
  Now I want to have a class that inherits from both so I write:
  
  class C(B,A):
   pass
  
  The problem arise when I try something like this:
  c=C()
  c.a
  A.__getattr__
  1
  c.b
  A.__getattr__
  
  Traceback (most recent call last):
File pyshell#47, line 1, in module
  c.b
File pyshell#42, line 5, in __getattr__
  raise AttributeError('%s not found in A' % name)
  AttributeError: b not found in A
 
 That's what I would have expected.
 
  I was expecting, after a fail in A.__getattr__,  a call to the __getattr__
  method of B but it seems that after A.__getattr__ fails the exception stops
  the flow.
 
 Indeed. You explicitely raise, so the lookup stops here.

??? Surely the reason the lookup stops there is that a __getattr__
was _found_. In the code below the lookup is not continuing,
there's a _second_ lookup started by the request for super.__getattr__.

 You'd need to 
 explicitely call on superclass instead to have B.__getattr__ called, ie:
 
 class A(object):
  def __getattr__(self, name):
  if name == 'a':
  return 1
  return super(A, self).__getattr__(name)
 
 class B(object):
  def __getattr__(self, name):
  if name == 'b':
  return 2
  return super(B, self).__getattr__(name)
 
 class C(A, B):
  pass


-- 
David C. Ullrich
--
http://mail.python.org/mailman/listinfo/python-list

Re: Is it allowed to use function results as default arguments ?

2008-07-29 Thread Grant Edwards
On 2008-07-29, Stef Mientki [EMAIL PROTECTED] wrote:

 brings me to one other question:
   I guess this function is only evaluated once, is that correct ?

Yes.

 about '.' being the current directory, well I think windows
 was thrown at the market about 25 years ago, and since then we
 don't use '.' anymore ;-)

Who's we?  I stull use . as the current directory.

-- 
Grant Edwards   grante Yow! Mary Tyler Moore's
  at   SEVENTH HUSBAND is wearing
   visi.commy DACRON TANK TOP in a
   cheap hotel in HONOLULU!
--
http://mail.python.org/mailman/listinfo/python-list


Re: Overloaded Functions

2008-07-29 Thread Gary Herron

Tim Henderson wrote:

Hi,

So this may have been asked before but i haven't found the answer by
googling so far. My situation is this:

I want this structure for my code:

@overloaded
def sign_auth(secret, salt, auth_normalized):
return __sign_auth(saltedhash_bin(secret, salt), auth_normalized)

@sign_auth.register(str, str)
def sign_auth(secret_hash_normalized, auth_normalized):
return __sign_auth(qcrypt.denormalize(secret_hash_normalized),
auth_normalized)

def __sign_auth(secret_hash_bin, auth_normalized):
auth = qcrypt.denormalize(auth_normalized)
aes = AES.new(secret_hash_bin, AES.MODE_CBC)
plaintext = aes.decrypt(auth)
ciphertext = qcrypt.normalize(xor_in_pi(plaintext))
if debug:
print '\n--sign_auth--'
print qcrypt.normalize(secret_hash_bin)
print qcrypt.normalize(plaintext)
print ciphertext
print '-sign_auth---\n'
return ciphertext

I am using the overloading module from:
http://svn.python.org/view/sandbox/trunk/overload/overloading.py?rev=43727view=log

However it doesn't actually support this functionality. Does any one
know of a decorator that does this? It would be really nice to have a
unified interface into the __sign_auth function for the two different
use cases.
  


Are you aware that you can do this kind of thing yourself, without using 
a module/decorator.


def sign_auth(*args):
 if len(args) == 3:
   secret, salt, auth_normalized = args
   return __sign_auth(saltedhash_bin(secret, salt), auth_normalized)
 elif len(args) == 2:
   secret_hash_normalized, auth_normalized = args
   return __sign_auth(qcrypt.denormalize(secret_hash_normalized), 
auth_normalized)

The checks could be more involved, perhaps checking not jsut the nuimber of 
args, but their types, and even their values, before calling __sign_auth(...).


Gary Herron





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


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


Re: DB access without object-relation mapping?

2008-07-29 Thread Paul Boddie
On 29 Jul, 17:20, kj [EMAIL PROTECTED] wrote:

 So what's the
 standard Python way to send SQL directly to a Postgres database
 and get back results?

Take a look at this page:

http://wiki.python.org/moin/DatabaseInterfaces

I've used psycopg2 and pyPgSQL successfully, although pg_proboscis
looks very interesting, too.

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


Re: Overloaded Functions

2008-07-29 Thread Tim Henderson
Yes i am aware of that but I want the code to be self documenting, so
the intent is clear. I actually have an implementation using that
style which you suggest. I would like cleaner style, like the one i
suggested in my first post.

Cheers
Tim Henderson
--
http://mail.python.org/mailman/listinfo/python-list


proxy class and __add__ method

2008-07-29 Thread Magnus Schuster

Hello,
I have written the following small proxy class which I expect to pass all
function calls to the 'original' object:

--- BEGIN ---
class proxy(object):
def __init__( self, subject ):
self.__subject = subject
def __getattr__( self, name ):
return getattr( self.__subject, name )

prx_i=proxy(1)
print hasattr(prx_i,'__add__')
j=prx_i.__add__(1)
k=prx_i+1
--- END ---

Actually the hasattr(prx_i,'__add__') returns True as expected, and
j=prx_i.__add__(1) sets j=2.

But k=prx_i+1 raises a 
type 'exceptions.TypeError': unsupported operand type(s) for +: 'proxy'
and 'int'.

How is this addition different from the previous line j=...? And how can I
modify the proxy class so that all methods are passed on, which are not
explicitly overloaded?

Regards,
Magnus
-- 
View this message in context: 
http://www.nabble.com/proxy-class-and-__add__-method-tp18715799p18715799.html
Sent from the Python - python-list mailing list archive at Nabble.com.

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


Re: Build tool for Python

2008-07-29 Thread Paul Boddie
On 29 Jul, 17:08, Hussein B [EMAIL PROTECTED] wrote:
 Apache Ant is the de facto building tool for Java (whether JSE, JEE
 and JME) application.
 With Ant you can do what ever you want: compile, generate docs,
 generate code, packing, deploy, connecting to remote servers and every
 thing.
 Do we have such a tool for Python projects?

There are quite a few similar tools here:

http://wiki.python.org/moin/ConfigurationAndBuildTools

Having looked at a few such tools recently, I found myself considering
using plain old make for automating various non-compilation-related
activities, but then again, plain Python is actually very good for
automation if you get into the right mindset. Consequently, I've just
written a bunch of functions which run programs, test outputs and
potentially feed those outputs to other programs.

Where most of the available generic tools seem to frustrate is in
their support of the often necessary but complicated behaviour
required to minimise the amount of unnecessary work performed, through
frameworks which seem to obscure the nature of the work itself. I do
understand that it can be awkward to work out which object files need
recompiling due to changes in source files, for example, and that one
doesn't want to see the logic involved reproduced all over the place,
but I do wonder whether the machinery around such matters isn't
sometimes more complicated in these tools as soon as one strays
outside the common cases.

It seems to me that some common build-related primitives implemented
as functions combined with plain Python would be a good enough
combination for a lot of tasks in this domain.

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


Re: Execution speed question

2008-07-29 Thread Diez B. Roggisch
Suresh Pillai wrote:

 On Mon, 28 Jul 2008 16:48:28 +0200, Suresh Pillai wrote:
 
 Okay, please consider this my one absolutely stupid post for the year.
 I'd like to pretend it never happened but unfortunately the web doesn't
 allow that.  Having never used sets, I unfort read something that lead
 to it, but ...
 
 Okay, got some sleep and what I meant to ask, although equally basic, but
 not silly:
 
 For sets, I presume they are built on top of or like dicts, and there is
 nothing crazy in the low level implementation so that I can be guaranteed
 that if I don't alter the set, then the order, although arbitrary, will
 be maintained in successive iterations over the contents?

It is currently that way, but relying on it is certainly to be considered an
implementation detail that might disappear without warning.


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


Re: Continuous integration for Python projects

2008-07-29 Thread Sion Arrowsmith
Diez B. Roggisch [EMAIL PROTECTED] wrote:
Hussein B wrote:
 Please correct my if I'm wrong but it seems to me that the major
 continuous integration servers (Hudson, CruiseControl, TeamCity ..)
 don't support Python based application.
 It seems they mainly support Java, .NET and Ruby.
 Can I use one of the previous listed servers for Python project?
Hudson can, and AFAIK CC as well - they only invoke shell-scripts (at least
hudson does, and CC you can convince doing that using ANT)

You can definitely set up CruiseControl to handle Python, but don't
ask me for details as it was a couple of years and a change of job
ago. I seem to remember it being easier when CC was driving make,
but we had makefiles in any case for building the extension modules
needed -- writing a makefile from scratch might be a bit much.

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

Re: Windows Interpreter

2008-07-29 Thread Victor Subervi
I´ll try that. Back online in a week.
Victor


On 7/29/08, Tim Golden [EMAIL PROTECTED] wrote:

 Victor Subervi wrote:

 def a():
  chars = ['\\i0', '\\u0', '\\qc', '\\b0', '\\ql', '\\i', '\\u', '\\b',
 '\\yz']
  rtf_markup = 'viewkind4\uc1\pard\nowidctlpar\qc\i\f0\fs36 Who is like the
 Beast? Who can wage war against him?\par'
  for char in chars:
c = '(?=' + char + ')'
test = re.search(c, rtf_markup)
try:
  junk = test.group(0)
  print char
except:
  pass

 Now, I can paste that entire fn in linux. But in windows I have to paste
 it line_by_line. Pain in butt! And it indents automatically. How change that
 behavior.


 Well, I'm not really sure what to say. I've just copied that
 whole section with drag-mouse, Ctrl-C. I then opened a new
 interpreter window (effectively, Start  Run  python) and
 right-clicked over the window. At this point, the lines I
 copied were copied in and the function accepted by the
 interpreter.

 I do have QuickEdit on by default in all by console windows,
 but the only difference I expect that to make is that you'd
 otherwise have to use the window's System Menu (Alt-Space,
 Edit, Paste).

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

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

Re: DB access without object-relation mapping?

2008-07-29 Thread kj
In [EMAIL PROTECTED] Tim Henderson [EMAIL PROTECTED] writes:

I believe there are a couple of options but pyscopg, and PyGreSQL seem
to be popular.

Great.  Thanks!

kynn
-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
--
http://mail.python.org/mailman/listinfo/python-list


Re: [unittest] Run setUp only once

2008-07-29 Thread Nikolaus Rath
Jean-Paul Calderone [EMAIL PROTECTED] writes:
 On Tue, 29 Jul 2008 16:35:55 +0200, Nikolaus Rath [EMAIL PROTECTED] wrote:
Hello,

I have a number of conceptually separate tests that nevertheless need
a common, complicated and expensive setup.

Unfortunately, unittest runs the setUp method once for each defined
test, even if they're part of the same class as in

class TwoTests(unittest.TestCase):
def setUp(self):
# do something very time consuming

def testOneThing(self):


def testADifferentThing(self):


which would call setUp twice.


Is there any way to avoid this, without packing all the unrelated
tests into one big function?


class TwoTests(unittest.TestCase):
setUpResult = None

def setUp(self):
if self.setUpResult is None:
self.setUpResult = computeIt()

...

 There are plenty of variations on this pattern.


But at least this variation doesn't work, because unittest apparently
also creates two separate TwoTests instances for the two tests. Isn't
there some way to convince unittest to reuse the same instance instead
of trying to solve the problem in the test code itself?


Best,

   -Nikolaus

-- 
 »It is not worth an intelligent man's time to be in the majority.
  By definition, there are already enough people to do that.«
 -J.H. Hardy

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C
--
http://mail.python.org/mailman/listinfo/python-list

Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 29, 5:27 am, Steven D'Aprano
[EMAIL PROTECTED] wrote:
 On Tue, 29 Jul 2008 01:37:45 -0700, Carl Banks wrote:
  I am looking for one that can't.

 If you are writing code that needs to do the right thing with arbitrary
 types, then your so-called simple explicit tests simply can't work.

I asked for a code example.  You say this is true, but neither you nor
anyone else here has provided useful code that demonstrates it.


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


Newbie Python questions

2008-07-29 Thread LessPaul
I recently discovered Python and see it as a great language to use for
personal projects (and more). I made my living for over a decade as a
coder in C, C++, ADA, Fortran, and Assembly before moving to systems
engineering.

I'm now retired, and would love to code again. I see Python as the
perfect language to get a good program working in a short time. My
question is in regard to GUI platforms. My primary target would be
Windows, but I would also like be able to support Linux and Mac
versions if possible. I'm also interested in using a system that also
has support for pure C++ applications. As such, and after reading many
web pages regarding Python GUIs, I believe I have the candidates
narrowed down to pyQT and wxPython.

The first question -- how steep is the curve to become proficient with
the above GUI packages? If the answer is not very then there is no
need for the following questions as I can try both on for size to see
which I like best. However if it is a sizable investment in time, I'd
like to maximize my efforts and choose the one I'll end up using in
the end.

The biggest hurdle I can see is the cost of the QT licence for
commercial software, though apparently it can be acquired for a
reasonable price via the BlackAdder package. Does purchasing the
BlackAdder also include the needed software support for C++
development? Does the BlackAdder purchase also allow for licence of
standard C++ apps?

Since there appears to be no commercial licencing fee for wxWidgets/
wxPython, the last question is what do I gain from going QT over wx?
I've seen great applications written with both (on my computer I have
the wxPython Digsby and the pyQT apps Mnemosyne and Anki. All seem
to be solid.
--
http://mail.python.org/mailman/listinfo/python-list


Re: [unittest] Run setUp only once

2008-07-29 Thread Jean-Paul Calderone

On Tue, 29 Jul 2008 19:26:09 +0200, Nikolaus Rath [EMAIL PROTECTED] wrote:

Jean-Paul Calderone [EMAIL PROTECTED] writes:

On Tue, 29 Jul 2008 16:35:55 +0200, Nikolaus Rath [EMAIL PROTECTED] wrote:

Hello,

I have a number of conceptually separate tests that nevertheless need
a common, complicated and expensive setup.

Unfortunately, unittest runs the setUp method once for each defined
test, even if they're part of the same class as in

class TwoTests(unittest.TestCase):
   def setUp(self):
   # do something very time consuming

   def testOneThing(self):


   def testADifferentThing(self):


which would call setUp twice.


Is there any way to avoid this, without packing all the unrelated
tests into one big function?



   class TwoTests(unittest.TestCase):
   setUpResult = None

   def setUp(self):
   if self.setUpResult is None:
   self.setUpResult = computeIt()

   ...

There are plenty of variations on this pattern.



But at least this variation doesn't work, because unittest apparently
also creates two separate TwoTests instances for the two tests. Isn't
there some way to convince unittest to reuse the same instance instead
of trying to solve the problem in the test code itself?



Eh sorry, you're right, the above is broken.  `setUpResult` should be
a class attribute instead of an instance attribute.

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


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 29, 5:15 am, Heiko Wundram [EMAIL PROTECTED] wrote:
 I can't dig up a simple example from code I wrote quickly, but because of the
 fact that explicit comparisons always hamper polymorphism

I'm not going to take your word for it.  Do you have code that
demonstrates how if x improves polymorphism relative to simple
explicit tests?


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


iterating by twos

2008-07-29 Thread kj



Is there a special pythonic idiom for iterating over a list (or
tuple) two elements at a time?

I mean, other than

for i in range(0, len(a), 2):
frobnicate(a[i], a[i+1])

?

I think I once saw something like

for (x, y) in forgotten_expression_using(a):
frobnicate(x, y)

Or maybe I just dreamt it!  :)

Thanks!
-- 
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 29, 11:12 am, Matthew Fitzgibbons [EMAIL PROTECTED] wrote:
 Carl Banks wrote:
  On Jul 28, 8:15 pm, Steven D'Aprano [EMAIL PROTECTED]
  cybersource.com.au wrote:
  On Mon, 28 Jul 2008 13:22:37 -0700, Carl Banks wrote:
  On Jul 28, 10:00 am, Steven D'Aprano [EMAIL PROTECTED]
  cybersource.com.au wrote:
  Cutting to the crux of the discussion...
  On Sun, 27 Jul 2008 23:45:26 -0700, Carl Banks wrote:
  I want something where if x will do but a simple explicit test
  won't.
  Explicit tests aren't simple unless you know what type x is. If x could
  be of any type, you can't write a simple test. Does x have a length? Is
  it a number? Maybe it's a fixed-length circular length, and the length
  is non-zero even when it's empty? Who knows? How many cases do you need
  to consider?
  Use case, please.  I'm asking for code, not arguments.  Please give me a
  piece of code where you can write if x that works but a simple
  explicit test won't.
  I gave you a piece of code, actual code from one of my own projects. If
  you wouldn't accept that evidence then, why would you accept it now?

  I would accept as evidence something that satisfies my criteria,
  which your example did not: it could have easily (and more robustly)
  been written with a simple explicit test.  I am looking for one that
  can't.

  You keep bringing up this notion of more complex with no benefit,
  which I'm simply not interested in talking about that at this time,
  and I won't respond to any of your points.  I am seeking the answer to
  one question: whether if x can usefully do something a simple
  explicit test can't.  Everyone already knows that if x requires
  fewer keystrokes and parses to fewer nodes.

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

 My use case involves a DAG of filters that pass data (of a variety of
 types--filters just pass on data types they don't understand) between
 them. I can also drop out of the filter chain at any point, using
 critera determined by the filters. These criteria, you guessed it, are
 bound to __nonzero__ in the filter and I determine whether or not to
 continue through the graph using if x. You can't code explicit tests
 if you don't know what the tests even are beforehand. Also, I wanted to
 support builtins (ints and lists in particular) because they can be
 meaningful inputs to filters. Finally, as I add more filters and data
 types, I don't want to go back and mess with the code that decides
 whether or not to break out of the graph.

Much like in Steven D'Aprano's example, still the only actual code
snippet I've seen, it seems that this can easily be done with a simple
explicit test by having all no-advance filters return None and testing
with if x is not None.  So it doesn't pass my criterion of being not
replaceable with simple explicit test.

Maybe that's not workable for some reason.  Perhaps if you'd post a
code example that shows this, rather than just talking about it, you
might be more persuasive.


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


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 29, 1:30 pm, Carl Banks [EMAIL PROTECTED] wrote:
 On Jul 29, 5:15 am, Heiko Wundram [EMAIL PROTECTED] wrote:

  I can't dig up a simple example from code I wrote quickly, but because of 
  the
  fact that explicit comparisons always hamper polymorphism

 I'm not going to take your word for it.  Do you have code that
 demonstrates how if x improves polymorphism relative to simple
 explicit tests?

And, in case it wasn't obvious, the way to demonstrate that if x
improves polymorphism relative to simple explicit tests would be
posting an example where if x works but a simple explicit test
doesn't.  So don't accuse me of changing the question on you: it's the
same question.

You see, what you are stating and expecting me to take for granted is
exactly what I'm asking for a concrete example of.


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


Re: Parsing VHDL with python, where to start.

2008-07-29 Thread Svenn Are Bjerkem
On Jul 29, 5:14 pm, Wolfgang Grafen [EMAIL PROTECTED]
wrote:

 For me it is not very clear what you intend to do. After years of
 parsing parts of VHDL from time to time the rapid parsing way for me is
 using regular expressions instead of one of the parser frame works
 because of following reasons:

 - It is hard for me to understand those frameworks
 - They are very slow
 - It is too much work for me to bring them up to work in a sensible way
 - Compared with regular expression matching they usually need a lot of
 extra work.

I agree with frameworks being difficult to understand and that is why
I also have been using regular expressions in tcl to parse spice
netlists before. Now I want to parse spice, vhdl and also maybe
verilog. I think I will end up with regular expressions unless I get a
grip on SimpleParse.

The rationale for the whole project has been to finally be able to
view spice and specially vhdl code for projects I work on. This has
been something I have wanted to have for years, without having the
ressources to complete it. There are commercial tools available, but I
was looking for something more open/free that could be maintained
independently of what tools I have at work.

 PyQt as a widget framework is not useful until here, but of course you
 could display your results in arbitrary graphical ways with PyQt, if you
 rally need to. You should know, printing out an ASCII or XML
 representation is so much more easy and quicker to code so I always
 prefer that. There are even editors/visualizers ready to display XML...

PyQt4 doesn't help me parse my sources, but it helps me visualise
them. I did something in tcl/tk to get hierarchical spice netlists
into a tree structure, but extending that app was too much hassle.
PyQt4 offers a lot of functionality once the threshold of learning it
has been passed. It also installs nicely on windows and most linux
distributions offer it ready to install. And I like Qt.

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


I CAN connect socket to any localhost port but I shouldn't be able to

2008-07-29 Thread qvx
Hi,

I don't have server listening on port 8084 but I can open socket to it
(and to many other ports, tested for all8000)

import socket
def test(port):
af, socktype, proto, canonname, sa =
socket.getaddrinfo('localhost', port,
socket.AF_INET, socket.SOCK_STREAM)[0]
s = socket.socket(af, socktype, proto)
s.settimeout(1.0)
s.connect(('localhost', port))
s.close()

# This doesn't throw socket.error, it happily finishes
for x in range(1, 8000):
test(x)


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


Re: iterating by twos

2008-07-29 Thread George Trojan

kj wrote:

Is there a special pythonic idiom for iterating over a list (or
tuple) two elements at a time?

I mean, other than

for i in range(0, len(a), 2):
frobnicate(a[i], a[i+1])

?

I think I once saw something like

for (x, y) in forgotten_expression_using(a):
frobnicate(x, y)

Or maybe I just dreamt it!  :)

Thanks!
I saw the same thing, forgot where though. But I put it in my library. 
Here it is:


# x.py
import itertools

def pairs(seq):
is1 = itertools.islice(iter(seq), 0, None, 2)
is2 = itertools.islice(iter(seq), 1, None, 2)
return itertools.izip(is1, is2)

s = range(9)
for x, y in pairs(s):
print x, y

[EMAIL PROTECTED] python x.py
0 1
2 3
4 5
6 7
--
http://mail.python.org/mailman/listinfo/python-list


Re: Boolean tests [was Re: Attack a sacred Python Cow]

2008-07-29 Thread Carl Banks
On Jul 29, 5:27 am, Steven D'Aprano
[EMAIL PROTECTED] wrote:
 On Tue, 29 Jul 2008 01:37:45 -0700, Carl Banks wrote:
  I would accept as evidence something that satisfies my criteria, which
  your example did not: it could have easily (and more robustly) been
  written with a simple explicit test.

 Only at the cost of completely ignoring the functional requirements and
 changing the API. In other words: you ignore my code, and invent your own
 imaginary code that does something completely different, then say that
 this imaginary code is better.

And, BTW, you keep making unsubstantiated assertions and keep
expecting me to take them at face value.  I'm really not going to take
your word for it that your functional requirements would preclude
the possibility of rewriting it as I said to, unless you provide
details.

Also, your third claim is false since it would have exactly the same
behavior.


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


Re: iterating by twos

2008-07-29 Thread bearophileHUGS
Something like this may be fast enough:

 from itertools import izip
 xpartition = lambda seq, n=2: izip(*(iter(seq),) * n)
 xprimes = (x for x in xrange(2, 100) if all(x % i for i in xrange(2, x)))
 list(xpartition(xprimes))
[(2, 3), (5, 7), (11, 13), (17, 19), (23, 29), (31, 37), (41, 43),
(47, 53), (59, 61), (67, 71), (73, 79), (83, 89)]

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


  1   2   3   >