Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Jure Erznožnik
Look, guys, here's the thing:
In the company I work at we decided to rewrite our MRP system in
Python. I was one of the main proponents of it since it's nicely cross
platform and allows for quite rapid application development. The
language and it's built in functions are simply great. The opposition
was quite strong, especially since the owner cheered for it - .net.

So, recently I started writing a part of this new system in Python. A
report generator to be exact. Let's not go into existing offerings,
they are insufficient for our needs.

First I started on a few tests. I wanted to know how the reporting
engine will behave if I do this or that. One of the first tests was,
naturally, threading. The reporting engine itself will have separate,
semi-independent parts that can be threaded well, so I wanted to test
that.

The rest you know if you read the two threads I started on this group.

Now, the core of the new application is designed so that it can be
clustered so it's no problem if we just start multiple instances on
one server, say one for each available core.

The other day, a coworker of mine said something like: what?!? you've
been using Python for two days "already" and you already say it's got
a major fault?
I kinda aggreed with him, especially since this particular coworker
programmed strictly in Python for the last 6 months (and I haven't due
to other current affairs). There was no way my puny testing could
reveal such a major drawback. As it turns out, I was right. I have
programmed enough threading to have tried enough variations which all
reveal the GIL. Which I later confirmed through searching on the web.

My purpose with developing the reporting engine in Python was twofold:
learn Python as I go and create a native solution which will work out-
of-the-box for all systems we decide to support. Making the thing open
source while I'm at it was a side-bonus.

However:
Since the testing revealed this, shall we say "problem", I am tempted
to just use plain old C++ again. Furthermore, I was also not quite
content with the speed of arithmetic processing of the python engine.
I created some simple aggregating objects that only performed two
additions per pass. Calling them 200K times took 4 seconds. This is
another reason why I'm beginning to think C++ might be a better
alternative. I must admit, had the GIL issue not popped up, I'd just
take the threading benefits and forget about it.

But both things together, I'm thinking I need to rethink my strategy
again.
I may at some point decide that learning cross platform programming is
worth a shot and just write a Python plugin for the code I write. The
final effect will be pretty much the same, only faster. Perhaps I will
even manage to get close to Crystal Reports speed, though I highly
doubt that. But in the end, my Python skill will suffer. I still have
an entire application (production support) to develop in it.

Thanks for all the information and please don't flame each other.
I already get the picture that GIL is a hot subject.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: File Syncing

2009-06-21 Thread dads
On Jun 20, 11:21 am, Lawrence D'Oliveiro  wrote:
> In message 
> [email protected]>, dads wrote:
> > What would I have to learn to be able to sync the text files on each
> > server?
>
> How big is the text file? If it's small, why not have your script read it
> directly from a master server every time it runs, instead of having a local
> copy.

Yeah the text files will never get bigger than a 100k. I don't think
they have a master server but i'll check. Thanks

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


Re: walking a directory with very many files

2009-06-21 Thread Steven D'Aprano
Lawrence D'Oliveiro wrote:

>> Ok, now pipe ls to less, take three days to browse through all the
>> filenames to locate the file you want to see.
> 
> Sounds like you're approaching the issue with a GUI-centric mentality,
> which is completely hopeless at dealing with this sort of situation.

Piping the output of ls to less is a GUI-centric mentality?


-- 
Steven

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


Re: File Syncing

2009-06-21 Thread Lawrence D'Oliveiro
In message , dads wrote:

> What would I have to learn to be able to sync the text files on each
> server?

How big is the text file? If it's small, why not have your script read it 
directly from a master server every time it runs, instead of having a local 
copy.

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


a evaluation of Google-code-prettify

2009-06-21 Thread Xah Lee
For those of you interested in the Google tech of syntax coloring
source code in html on the fly using javascript, i've spent few hours
for a evaluation. See:

• Google-code-prettify Examples
  http://xahlee.org/js/google-code-prettify/index.html

  Xah
∑ http://xahlee.org/

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread OdarR
On 21 juin, 03:27, Jure Erznožnik  wrote:
> Add:
> Carl, Olivier & co. - You guys know exactly what I wanted.
> Others: Going back to C++ isn't what I had in mind when I started
> initial testing for my project.

Do you think multiprocessing can help you seriously ?
Can you benefit from multiple cpu ?

did you try to enhance your code with numpy ?

Olivier
(installed a backported multiprocessing on his 2.5.1 Python, but need
installation of Xcode first)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Newbie queue question

2009-06-21 Thread Jure Erznožnik
On Jun 21, 9:43 am, Чеширский Кот  wrote:
> 1. say me dbf files count?
> 2. why dbf ?

It was just a test. It was the most compatible format I could get
between Python and the business application I work with without using
SQL servers and such.
Otherwise it's of no consequence. The final application will have a
separate input engine that will support multiple databases as input.

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Jure Erznožnik
On Jun 21, 9:32 am, OdarR  wrote:
>
> Do you think multiprocessing can help you seriously ?
> Can you benefit from multiple cpu ?
>
> did you try to enhance your code with numpy ?
>
> Olivier
> (installed a backported multiprocessing on his 2.5.1 Python, but need
> installation of Xcode first)

Multithreading / multiprocessing can help me with my problem. As you
know, database reading is typically I/O bound so it helps to put it in
a separate thread. I might not even notice the GIL if I used SQL
access in the first place. As it is, DBFPY is pretty CPU intensive
since it's a pure Python DBF implementation.
To continue: the second major stage (summary calculations) is
completely CPU bound. Using numpy might or might not help with it.
Those are simple calculations, mostly additions. I try not to put the
entire database in arrays to save memory and so I mostly just add
counters where I can. Soe functions simply require arrays, but they
are more rare, so I guess I'm safe with that. You wouldn't believe how
complex some reports can be. Threading + memory saving is a must and
even so, I'll probably have to implement some sort of serialization
later on, so that the stuff can run on more memory constrained
devices.
The third major stage, rendering engine, is again mostly CPU bound,
but at the same time it's I/O bound as well when outputting the
result.

All three major parts are more or less independent from each other and
can run simultaneously, just with a bit of a delay. I can perform
calculations while waiting for the next record and I can also start
rendering immediately after I have all the data for the first group
available.

I may use multiprocessing, but I believe it introduces more
communication overhead than threads and am so reluctant to go there.
Threads were perfect, other stuff wasn't. To make things worse, no
particular extension / fork / branch helps me here. So if I wanted to
just do the stuff in Python, I'd have to move to Jthon or IronPython
and hope cPython eventually improves in this area. I do actually need
cPython since the other two aren't supported on all platforms my
company intends to support.

The main issue I currently have with GIL is that execution time is
worse when I use threading. Had it been the same, I wouldn't worry too
much about it. Waiting for a permenent solution would be much easier
then...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: raw_input with a pre-compiled data

2009-06-21 Thread Luca
On Sat, Jun 20, 2009 at 6:38 PM, Chris Rebert wrote:
> On Sat, Jun 20, 2009 at 7:17 AM, Luca wrote:
>> Hi all.
>>
>> I need to use a function like the raw_input to read data from user
>> command line, but I really like to pre-compile the choice and I'm not
>> able to do this. There is some other function/module I can use?
>> I wanna to pre-compile the raw_input input line with the current working 
>> path.
>
> What does "pre-compile" mean in this context? It's not clear at all,
> so I can't even understand your question.

I'm really sorry to all that replied... In fact I literally traduced a
concept from italian and the term precompiled was not so clear...

What I mean is this: I wanna that raw_input (or other modules) ask to
the user the data, but some data inserted is already present, to the
user can cancel it with the BACKSPACE key.

Examples below (the "_" is the initial cursor position).

 >>> raw_input("Insert the directory to work: ")
 Insert the directory to work: _

What I need is:
 >>> XXX_raw_input("Insert the directory to work: ", default="/home/john/")
 Insert the directory to work: /home/john_

In the second example a user can cancel the text "/home/john".

I hope this time is more clear, sorry again.

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


Re: Developing GUI applications

2009-06-21 Thread Hendrik van Rooyen
 "Grant Ito"  wrote:

> Hi everyone.
> 
> I'm looking to find out what people are using for an open source wysiwyg GUI 
> developer. I'm running both Linux and Windows but prefer to do my 
> development in Linux. I've got the most experience with Tkinter but am 
> willing to look at wxPython and Tix as well.
> 
> Thus far I've looked into PAGE and SpecTcl. The version of PAGE I've 
> downloaded doesn't quite look like the online manual so I'm wondering about 
> that. SpecTcl seems cool but I can't locate SpecPython by either Erik Brunel 
> or Richard Colley, and the SpecTix page is down as well, as is the 
> GUIBuilder page.
> 
> All the sites I've looked at seem to date back to somewhere between 2002 and 
> 2006. Any help would be much appreciated.

Have a long, hard look at Boa Constructor.
It is a RAD based on wx.
It actually works as advertised.

- Hendrik


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


Re: os.read in non blocking mode of os.open : resource busy error

2009-06-21 Thread Kushal Kumaran
On Wed, Jun 17, 2009 at 7:18 PM, kshama nagaraj wrote:
> Dear all,
>
> I am using os.open to open a tun/tap device and then read data from it.
> I also need to do some other tasks apart from reading from this device. So i
> wish to have the read non blocking.
> I am opening the device in non-block mode using os.O_NONBLOCK .
> But, if i do this, i get an error when i call the os.read a follows:
>
>  File "./tunnel_more1.py", line 305, in main_loop
>     payload = os.read(self.tun_fd,64)
> OSError: [Errno 11] Resource temporarily unavailable
>

From the glibc documentation of read:

`EAGAIN'
  Normally, when no input is immediately available, `read'
  waits for some input.  But if the `O_NONBLOCK' flag is set
  for the file (*note File Status Flags::), `read' returns
  immediately without reading any data, and reports this error.

And from ipython:

In [1]: import errno

In [2]: print errno.EAGAIN
11

That's your error 11.

> I am running my application with GNU Radio on Ubuntu.
>
> Can some one tell me, what is the error? What are the ways to use non
> blocking read?
>
> thanks all for your time and attention.
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Hendrik van Rooyen
"Kay Schluehr"  wrote:

> This implies that people stay defensive concerning concurrency ( like
> me right now ) and do not embrace it like e.g. Erlang does. Sometimes
> there is a radical change in the way we design applications and a
> language is the appropriate medium to express it succinctly.
> Concurrency is one example, writing GUIs and event driven programs in
> a declarative style ( Flex, WPF, JavaFX ) is another one. In
> particular the latter group shows that new skills are adopted rather
> quickly.
> 
> I don't see that a concurrency oriented language has really peaked
> though yet.

I think that this is because (like your link has shown) the problem
is really not trivial, and also because the model that can bring
sanity to the party (independent threads/processes that communicate
with queued messages) is seen as inefficient at small scale.

- Hendrik


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


Re: waling a directory with very many files

2009-06-21 Thread rkl
On Jun 15, 2:35 am, tom  wrote:
> i can traverse adirectoryusing os.listdir() or os.walk(). but if 
> adirectoryhas a very large number of files, these methods produce very
> large objects talking a lot of memory.
>
> in other languages one can avoid generating such an object by walking
> adirectoryas a liked list. for example, in c, perl or php one can
> use opendir() and then repeatedly readdir() until getting to the end
> of the file list. it seems this could be more efficient in some
> applications.
>
> is there a way to do this in python? i'm relatively new to the
> language. i looked through the documentation and tried googling but
> came up empty.

I might be a little late with my comment here.

David Beazley in his PyCon'2008 presentation "Generator Tricks
For Systems Programmers" had this very elegant example of handling an
unlimited numbers of files:


import os, fnmatch

def gen_find(filepat,top):
"""gen_find(filepat,top) - find matching files in directory tree,
   start searching from top

expects: a file pattern as string, and a directory path as string
yields:  a sequence of filenames (including paths)
"""
for path, dirlist, filelist in os.walk(top):
for name in fnmatch.filter(filelist,filepat):
yield os.path.join(path,name)


for file in gen_find('*.py', '/'):
print file
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: waling a directory with very many files

2009-06-21 Thread Tim Golden

rkl wrote:

I might be a little late with my comment here.

David Beazley in his PyCon'2008 presentation "Generator Tricks
For Systems Programmers" had this very elegant example of handling an
unlimited numbers of files:



David Beazley's generator stuff is definitely worth recommending
on. I think the issue here is that: anything which ultimately uses
os.listdir (and os.walk does) is bound by the fact that it will
create a long list of every file before handing it back. Certainly
there are techniques (someone posted a ctypes wrapper for opendir;
I recommended FindFirst/NextFile on Windows) which could be applied,
but those are all outside the stdlib.

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


Re: raw_input with a pre-compiled data

2009-06-21 Thread Peter Otten
Luca wrote:

> On Sat, Jun 20, 2009 at 6:38 PM, Chris Rebert wrote:
>> On Sat, Jun 20, 2009 at 7:17 AM, Luca wrote:
>>> Hi all.
>>>
>>> I need to use a function like the raw_input to read data from user
>>> command line, but I really like to pre-compile the choice and I'm not
>>> able to do this. There is some other function/module I can use?
>>> I wanna to pre-compile the raw_input input line with the current working
>>> path.
>>
>> What does "pre-compile" mean in this context? It's not clear at all,
>> so I can't even understand your question.
> 
> I'm really sorry to all that replied... In fact I literally traduced a

With "traduced" you stumbled upon another false friend ;)

http://it.wikipedia.org/wiki/Falso_amico

> concept from italian and the term precompiled was not so clear...
> 
> What I mean is this: I wanna that raw_input (or other modules) ask to
> the user the data, but some data inserted is already present, to the
> user can cancel it with the BACKSPACE key.
> 
> Examples below (the "_" is the initial cursor position).
> 
>  >>> raw_input("Insert the directory to work: ")
>  Insert the directory to work: _
> 
> What I need is:
>  >>> XXX_raw_input("Insert the directory to work: ",
>  >>> default="/home/john/")
>  Insert the directory to work: /home/john_
> 
> In the second example a user can cancel the text "/home/john".
> 
> I hope this time is more clear, sorry again.


import readline

def input_default(prompt, default):
def startup_hook():
readline.insert_text(default)
readline.set_startup_hook(startup_hook)
try:
return raw_input(prompt)
finally:
readline.set_startup_hook(None)

print input_default("directory? ", default="/home/john")

The cmd module may also be worth having a look.

Peter

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Stefan Behnel
Christian Heimes wrote:
> Hard computations gain more speed from carefully crafted C or Fortran
> code that utilizes features like the L1 and L2 CPU cache, SIMD etc. or
> parallelized algorithms. If you start sharing values between multiple
> cores you have a serious problem.
> 
> Oh, and use NumPy for the job ;)
[...]
> It *is* a well known limitation of Python. All the nice 'n shiny syntax
> and features are coming with a cost. Python is a powerful language and
> good tool for lots of stuff. But Python is and will never become the
> übertool that solves every problem perfectly. At some point you need a
> different tool to get the raw power of your machine. C (and perhaps
> Fortran) are the weapons of choice for number crunching.

Well, and there's always Cython to the rescue when you need it.

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Stefan Behnel
Jure Erznožnik wrote:
> On Jun 20, 1:36 am, [email protected] (Aahz) wrote:
>> You should put up or shut up -- I've certainly seen multi-core speedup
>> with threaded software, so show us your benchmarks!
>> --
> 
> Sorry, no intent to offend anyone here. Flame wars are not my thing.
> 
> I have shown my benchmarks. See first post and click on the link.
> That's the reason I started this discussion.
> 
> All I'm saying is that you can get threading benefit, but only if the
> threading in question is implemented in C plugin.
> I have yet to see pure Python code which does take advantage of
> multiple cores. From what I read about GIL, this is simply impossible
> by design.

Well, CPython is written in C. So running Python code in CPython will
necessarily run C code (whatever "plugin" means in your post above). If
that C code frees the GIL or not depends on the parts of CPython or
external packages that you use. And there are many parts that free the GIL
and will thus benefit (sometimes heavily) from threading and
multiple-cores, and there are also many parts that do not free the GIL and
will therefore not (or likely not) benefit from multiple-cores.

Claiming that "pure Python code does not free the GIL" in the context of
CPython when you define "pure Python code" as code that does not depend on
C code is plain flawed.

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Jeremy Sanders
Jesse Noller wrote:

> Sorry, you're incorrect. I/O Bound threads do in fact, take 
advantage
> of multiple cores.

I don't know whether anyone else brought this up, but it looks 
like Python has problems with even this form of threading

http://www.dabeaz.com/python/GIL.pdf

It's certainly a very interesting read if you're interested in 
this subject.

-- 
Jeremy Sanders
http://www.jeremysanders.net/

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


MemoryError c/vcompiler.h:745: Fatal Python error (Psycopg2)

2009-06-21 Thread Luis P. Mendes
Hi,

I have a program that uses a lot of resources: memory and cpu but it 
never returned this error before with other loads:

"""
MemoryError
c/vcompiler.h:745: Fatal Python error: psyco cannot recover from the 
error above
Aborted
""" 
The last time I checked physical RAM while the script was running, it was 
used in about 75% and there is no reason (based in other runs of the 
program) for it to surpass 80% (maximum).

$ python -V
Python 2.5.2

Pyscopg2 is version 2.0.8

I use Linux, Kernel 2.6.24.5-smp #2 SMP
with a Core2 CPU T5500  @ 1.66GHz and 3GB of RAM

I could not find this error.  What does this mean?

Is this a bug of Python? of Psycopg2?

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


Re: Inheritance and forward references (prototypes)

2009-06-21 Thread Lorenzo Di Gregorio
On 21 Jun., 01:54, Dave Angel  wrote:
> LorenzoDiGregoriowrote:
> > On Jun 20, 8:43 pm, Dave Angel  wrote:
>
> >>LorenzoDiGregoriowrote:
>
> >>> Hi,
>
> >>> I'm wondering what would be the preferred way to solve the following
> >>> forward reference problem:
>
> >>> ---
> >>> class BaseA(object):
> >>>     def __init__(self):
> >>>         return
>
> >>> class DebugA(BaseA):
> >>>     def __init__(self):
> >>>         return
>
> >>> # here I would have a prototype of class A which is the same as class
> >>> BaseA
>
> >>> class B(object):
> >>>     def __init__(self):
> >>>         self.obj =()
> >>>         return
>
> >>> if __name__ ="__main__":
> >>> #    class A(BaseA): # Uncomment this for using BaseA objects
> >>> #       pass
> >>>     class A(DebugA): # Uncomment this for using DebugA objects
> >>>         pass
> >>> ---
>
> >>> I can figure out some ways to fix this but none seems satisfying.
> >>> Either they are too specific or too cumbersome.
> >>> A runtime redefinition of class A does not seem to work either.
> >>> What would be the most "pythonesque" solution other than sorting out
> >>> the class order?
>
> >>> Best Regards,
> >>>Lorenzo
>
> >> You haven't shown us any problem.  class B works fine with a forward
> >> reference to A.  Now if you were trying to subclass A before defining
> >> it, that'd be a problem.  Or if you were trying to make an instance of B
> >> before defining A.
>
> >> Better put some code together with enough meat to actually show a
> >> symptom.  And tell us what sys.version says.  I'm testing with   2.6.2
> >> (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)], running
> >> on Win XP.- Hide quoted text -
>
> >> - Show quoted text -
>
> > Thank you for your help: I'm working on a rather large source, but I
> > think I have isolated the problem now.
> > This listing generates an error:
>
> > ---
> > class BaseA(object):
> >     def __init__(self):
> >         return
>
> > class DebugA(BaseA):
> >     def __init__(self):
> >         return
>
> > class B(object):
> >     def __init__(self,test=A()):
> >         self.obj =()
> >         return
>
> > if __name__ ="__main__":
> > #    class A(BaseA): # Uncomment this for using BaseA objects
> > #        pass
> >      class A(DebugA): # Uncomment this for using DebugA objects
> >          pass
> > ---
>
> > The error happens because Python apparently evaluates the named
> > arguments before running the script.
> > I think I have read something about this some (long) time ago but I
> > can't find it anymore.
>
> > Suggestions?
>
> > BTW, my Python version is 2.6.1 (with latest PyDev).
>
> > Thx!
> >Lorenzo
>
> This error is caused because a default argument uses class A.  Default
> arguments of class methods are evaluated during the definition of the
> class, and not later when the class is instantiated.  Thus the problem.
>
> To work around that specific problem, you may want to use the following:
>
> class B(object):
>     def __init__(self,test=None):
>         if test==None:
>             test = A()
>         self.obj =()
>         return
>
> This is actually different than what you had, since what you had would
> have used the same A() object for all instances of B that didn't supply
> their own test() parameter.  Maybe that's what you wanted, and maybe
> not, but default arguments set to mutable values are frequently a bug.
>
> But I'm wondering if you're just looking for problems.  Why not put the
> commented switch early in the file, and test for it wherever you need to
> use it?
>
> import  x, y, z
> _debug = False
> #_debug = True
>
> then as soon as  BaseA and DebugA are defined, do the following:
>
> if _debug:
>     class A(DebugA):
>         pass
> else:
>     class A(BaseA)
>         pass- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

I had also thought of using "None" (or whatever else) as a marker but
I was curious to find out whether there are better ways to supply an
object with standard values as a default argument.
In this sense, I was looking for problems ;-)

Of course the observation that "def" is an instruction and no
declaration changes the situation: I would not have a new object being
constructed for every instantiation with no optional argument, because
__init__ gets executed on the instantiation but test=A() gets executed
on reading 'def'.

At this point I think there is no other way than using a marker as
suggested above multiple times, if I want to supply a new object with
default values for non-passed arguments.

Anybody with a better idea?
-- 
http://mail.python.org/mailman/listinfo/python-list


Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread Piet van Oostrum
I notice that I see several postings on news:comp.lang.python that are
replies to other postings that I don't see. Examples are the postings by
Dennis Lee Bieber  that I am replying to (but I
break the thread on purpose). For example the posting with Message-ID:
 references:
<[email protected]> which is
not present on my news server. I have been wondering why these
disappear, and I noticed the following in the Dennis Lee Bieber posting: 
On Sat, 20 Jun 2009 11:48:21 -0600, Vincent Davis
 declaimed the following in
gmane.comp.python.general:

So apparently some of these come through gmane.comp.python.general.

So my question is: would this be the cause of these disappearing
postings? Are postings on gmane.comp.python.general not relayed to
comp.lang.python? Are they relayed to the python mailing list? I find it
quite disturbing that sometimes only half of a discussion is visible.
-- 
Piet van Oostrum 
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: [email protected]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Rich comparison methods don't work in sets?

2009-06-21 Thread Gustavo Narea
Hi, everyone.

OK, I got it  now! The value of the hash is not decisive, as __eq__
will still be called when the hashes match. It's like a filter, for
performance reasons.

It's really nice, I just tried it and it worked.

Thank you very, very much!!

Cheers,

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


Re: MemoryError c/vcompiler.h:745: Fatal Python error (Psycopg2)

2009-06-21 Thread Lie Ryan
Luis P. Mendes wrote:
> Hi,
> 
> I have a program that uses a lot of resources: memory and cpu but it 
> never returned this error before with other loads:
> 
> """
> MemoryError
> c/vcompiler.h:745: Fatal Python error: psyco cannot recover from the 
> error above
> Aborted
> """ 
> The last time I checked physical RAM while the script was running, it was 
> used in about 75% and there is no reason (based in other runs of the 
> program) for it to surpass 80% (maximum).
> 
> $ python -V
> Python 2.5.2
> 
> Pyscopg2 is version 2.0.8
> 
> I use Linux, Kernel 2.6.24.5-smp #2 SMP
> with a Core2 CPU T5500  @ 1.66GHz and 3GB of RAM
> 
> I could not find this error.  What does this mean?
> 
> Is this a bug of Python? of Psycopg2?
> 
> Luis

Have you tried running without psyco? Psyco increases memory usage quite
significantly.

If it runs well without psyco, you can try looking at your code and
selectively psyco parts that need the speed boost the most.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Inheritance and forward references (prototypes)

2009-06-21 Thread Lie Ryan
Lorenzo Di Gregorio wrote:
> I had also thought of using "None" (or whatever else) as a marker but
> I was curious to find out whether there are better ways to supply an
> object with standard values as a default argument.
> In this sense, I was looking for problems ;-)
> 
> Of course the observation that "def" is an instruction and no
> declaration changes the situation: I would not have a new object being
> constructed for every instantiation with no optional argument, because
> __init__ gets executed on the instantiation but test=A() gets executed
> on reading 'def'.
> 
> At this point I think there is no other way than using a marker as
> suggested above multiple times, if I want to supply a new object with
> default values for non-passed arguments.

Using None as default for mutable default argument is the common idiom
for the problem you're having.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: MemoryError c/vcompiler.h:745: Fatal Python error (Psycopg2)

2009-06-21 Thread Luis P. Mendes
Sun, 21 Jun 2009 13:04:59 +, Lie Ryan escreveu:

> Luis P. Mendes wrote:
>> Hi,
>> 
>> I have a program that uses a lot of resources: memory and cpu but it
>> never returned this error before with other loads:
>> 
>> """
>> MemoryError
>> c/vcompiler.h:745: Fatal Python error: psyco cannot recover from the
>> error above
>> Aborted
>> """
>> The last time I checked physical RAM while the script was running, it
>> was used in about 75% and there is no reason (based in other runs of
>> the program) for it to surpass 80% (maximum).
>> 
>> $ python -V
>> Python 2.5.2
>> 
>> Pyscopg2 is version 2.0.8
>> 
>> I use Linux, Kernel 2.6.24.5-smp #2 SMP with a Core2 CPU T5500  @
>> 1.66GHz and 3GB of RAM
>> 
>> I could not find this error.  What does this mean?
>> 
>> Is this a bug of Python? of Psycopg2?
>> 
>> Luis
> 
> Have you tried running without psyco? Psyco increases memory usage quite
> significantly.
> 
> If it runs well without psyco, you can try looking at your code and
> selectively psyco parts that need the speed boost the most.

I really need Psyco (use version 1.6 - forgot to mention earlier) to 
speed up the code.
The part that consumes more memory is the one that needs Psyco the most.

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


question about c++ and python

2009-06-21 Thread Issa Kamar
Dear Sirs;

I'm a PhD student,i have a question i wish if you can help me really.I'm 
working in Linux ubuntu 8.10,i have a c++ file which i need to connect this 
file to a python file and run it,i wish really if u can send me the method that 
can help me to do this and really I'm very thankful.

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


Re: class or instance method

2009-06-21 Thread Paul Johnston
Hi,

> class class_or_instance(object):
>     def __init__(self, fn):
...

This works a treat, thank-you.

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


Re: MemoryError c/vcompiler.h:745: Fatal Python error (Psycopg2)

2009-06-21 Thread Lie Ryan
Luis P. Mendes wrote:
> Sun, 21 Jun 2009 13:04:59 +, Lie Ryan escreveu:
>> Have you tried running without psyco? Psyco increases memory usage quite
>> significantly.
>>
>> If it runs well without psyco, you can try looking at your code and
>> selectively psyco parts that need the speed boost the most.
> 
> I really need Psyco (use version 1.6 - forgot to mention earlier) to 
> speed up the code.
> The part that consumes more memory is the one that needs Psyco the most.

Yeah, but try running without psyco first and see if the problem is
really caused by psyco. If it still produces an error, then we can rule
out psyco as the root cause of the problem.

Selective psyco-ing can reduce the amount of memory psyco uses and may
just be slightly slower than full boosting (and sometimes it may
actually become faster in memory constrained situation as less swapping
is needed).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: question about c++ and python

2009-06-21 Thread Diez B. Roggisch

Issa Kamar schrieb:

Dear Sirs;

I'm a PhD student,i have a question i wish if you can help me really.I'm 
working in Linux ubuntu 8.10,i have a c++ file which i need to connect this 
file to a python file and run it,i wish really if u can send me the method that 
can help me to do this and really I'm very thankful.


If you send me money, I will send you the code.

Otherwise, I suggest you start googling a bit and find out how to map 
C++-classes to Python. There is an abundance of information on that 
topic out there. Popular options include SWIG, Boost::Python and SIP, 
the latter I can only recommend from personal experience.


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


Re: KeyboardInterrupt eats my error and then won't be caught

2009-06-21 Thread Philip Semanchuk


On Jun 20, 2009, at 10:21 PM, greg wrote:


Philip Semanchuk wrote:

Best of all, PyErr_CheckSignals() doesn't interfere with a Python-  
level signal handler if one is set.


Ah, I hadn't realised that you were doing this in C
code, and I was trying to think of a Python-level
solution.

For C code, the solution you give sounds like a
good one.

My only misgiving is that the user might expect to
get a KeyboardInterrupt in response to Ctrl-C, so
it might be better to just let it propagate instead
of turning it into a different exception.


I completely agree. The simple solution (for me) is to handle all  
return codes of EINTR the same way which is to raise posix_ipc.Error  
with the message "The wait was interrupted by a signal". But that  
loses information. KeyboardInterrupt is very specific while  
posix_ipc.Error is generic and even parsing the message doesn't tell  
much more.


When my C code sees EINTR, I will probably raise KeyboardError when I  
see that and add a specific posix_ipc.SignalError to raise in other  
EINTR circumstances.



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


python needs a tutorial for install and setup on a Mac

2009-06-21 Thread Vincent Davis
I am running python on a mac and when I was getting going it was difficult
to setup information. Specifically how modify bash_profile, how pythonpath
works and how to set it up. how to switch between python versions. How/where
to install modules if you have multiple installed versions. I am thinking
about this from perspective  of a new pythoner (is there a word for a person
who programs in python). I think many new pythoners may be like me and don't
mess with the underling UNIX on a mac.
My question/suggestion is that there be a nice tutorial for this. I am
wiling to contribute much but I am still somewhat new to python and may need
help with some details. Also where should this be posted, how do I post it.
Do other think there is a need? Any willing to help?
But of course I may have missed a great tutorial out there if so I think It
needs to be easier to findor I need to learn how to look.

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


docs error for PyBuffer_FillInfo?

2009-06-21 Thread Diez B. Roggisch
I'm trying to wrap a C++-lib with SIP & need to return a buffer-object 
from one method.


I'm on python2.6 (OS X, but that doesn't matter I guess), and

http://docs.python.org/c-api/buffer.html#Py_buffer

gives a signature like this:

int PyBuffer_FillInfo(Py_buffer *view, void *buf, Py_ssize_t len, int 
readonly, int infoflags)¶


However, the abstract.h of the Python-installation has this:

 PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, 
void *buf,

   Py_ssize_t len, int readonly,
   int flags);



And obviously enough, compiling my wrapper fails because there is an 
argument missing.


So, I'm in need for a guide on how to use PyBuffer_FillInfo properly - 
all I've got is a void* and a total size of the buffer.


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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Aahz
In article <[email protected]>,
=?windows-1252?Q?Jure_Erzno=9Enik?=   wrote:
>
>So, recently I started writing a part of this new system in Python. A
>report generator to be exact. Let's not go into existing offerings,
>they are insufficient for our needs.
>
>First I started on a few tests. I wanted to know how the reporting
>engine will behave if I do this or that. One of the first tests was,
>naturally, threading. The reporting engine itself will have separate,
>semi-independent parts that can be threaded well, so I wanted to test
>that.

This is not something that I would expect Python threads to provide a
performance boost for.  I would expect that if it were a GUI app, it
would improve responsiveness, properly designed.  If performance were a
goal, I would start by profiling it under a single-threaded design and
see where the hotspots were, then either choose one of several options
for improving performance or go multi-process.

Note that I'm generally one of the Python thread boosters (unlike some
people who claim that Python threads are worthless), but I also never
claim that Python threads are good for CPU-intensive operations (which
report generation is), *except* for making GUI applications more
responsive.
-- 
Aahz ([email protected])   <*> http://www.pythoncraft.com/

"as long as we like the same operating system, things are cool." --piranha
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Aahz
In article ,
Jeremy Sanders   wrote:
>Jesse Noller wrote:
>>
>> Sorry, you're incorrect. I/O Bound threads do in fact, take advantage
>> of multiple cores.
>
>I don't know whether anyone else brought this up, but it looks 
>like Python has problems with even this form of threading
>
>http://www.dabeaz.com/python/GIL.pdf

Most of us have already seen this.  It's a good point, but IME writing
multi-threaded apps for multi-core machines, I think one should be
careful to avoid reading too much into it.
-- 
Aahz ([email protected])   <*> http://www.pythoncraft.com/

"as long as we like the same operating system, things are cool." --piranha
-- 
http://mail.python.org/mailman/listinfo/python-list


urllib2 urlopen takes too much time

2009-06-21 Thread Filip Gruszczyński
I have encountered a performance problem using suds, which was traced
down to _socket.recv. I am calling some web services and each of them
uses about 0.2 sec and 99% of this time is spent on urllib2.urlopen,
while the rest of the call is finished in milliseconds. Because of
this, my web app works really slow, especially when it must do many ws
calls. I could of course decrease the number of calls and do a lot of
caching (which would be quite perilous and I wouldn't like to delve
into this), but it seems as treating symptoms, rather than the illness
itself.

The machine I am connecting to through ws is in the same building, the
connection should be really fast and mostly it is - except for using
suds. Is it possible, that I could done something wrong and it hangs
on this socket for too long? Have anyone encountered similar problems?
Oh, and we did some profiling using also other tool written in C#,
that also uses those web services and it worked much faster, so it
doesn't seem to be connection problem.

-- 
Filip Gruszczyński
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: generator expression works in shell, NameError in script

2009-06-21 Thread guthrie
On Jun 18, 11:28 pm, greg  wrote:
> nn wrote:
> > This is certainly an odd one. This code works fine under 2.6 but fails
> > in Python 3.1.
>
> class x:
>
> > ...     lst=[2]
> > ...     gen=[lst.index(e) for e in lst]
>
> In 3.x it was decided that the loop variables in a list
> comprehension should be local, and not leak into the
> surrounding scope. This was implemented by making the
> list comprehension into a nested function.
>
> Unfortunately this leads to the same unintuitive
> behaviour as a genexp when used in a class scope.
>
-- I don't get this - the only local loop variable is "e", not lst.
And lst is used twice in the generator expression, which is being
complained about?

It would generally be the case that a nested function would have
access to its enclosing scope.

In any case, even if/when the current behavior is explained or
rationalized, it certainly appears un-intuitive, and that is another
level of "error"! :-)
-- 
http://mail.python.org/mailman/listinfo/python-list


urllib2 content-type headers

2009-06-21 Thread TYR
I have a little application that wants to send data to a Google API.
This API requires an HTTP header to be set as follows:

Authorization: GoogleLogin auth=[value of auth token goes here]

Unfortunately, I'm getting nothing but 400 Bad Requests. I suspect
this is due to an unfeature of urllib2. Notably, although you can use
urllib2.Request's add_header method to append a header, the
documentation (http://docs.python.org/library/urllib2.html) says that:

remember that a few standard headers (Content-Length, Content-Type and
Host) are added when the Request is passed to urlopen() (or
OpenerDirector.open()).

And:

Note that there cannot be more than one header with the same name, and
later calls will overwrite previous calls in case the key collides.

To put it another way, you cannot rely on Content-Type being correct
because whatever you set it to explicitly, urllib2 will silently
change it to something else which may be wrong, and there is no way to
stop it. What happened to "explicit is better than implicit"?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: urllib2 content-type headers

2009-06-21 Thread Philip Semanchuk


On Jun 21, 2009, at 12:01 PM, TYR wrote:


I have a little application that wants to send data to a Google API.
This API requires an HTTP header to be set as follows:

Authorization: GoogleLogin auth=[value of auth token goes here]

Unfortunately, I'm getting nothing but 400 Bad Requests. I suspect
this is due to an unfeature of urllib2. Notably, although you can use
urllib2.Request's add_header method to append a header, the
documentation (http://docs.python.org/library/urllib2.html) says that:

remember that a few standard headers (Content-Length, Content-Type and
Host) are added when the Request is passed to urlopen() (or
OpenerDirector.open()).

And:

Note that there cannot be more than one header with the same name, and
later calls will overwrite previous calls in case the key collides.

To put it another way, you cannot rely on Content-Type being correct
because whatever you set it to explicitly, urllib2 will silently
change it to something else which may be wrong, and there is no way to
stop it. What happened to "explicit is better than implicit"?



Hi TYR,

I'm confused, are you having a problem with the Content-Type or  
Authorization headers?


Some suggestions --
- Try sending the request to a server you control so you can see what  
it is actually receiving. Maybe urllib2 isn't overwriting your header  
at all, but you're sending (e.g.) a misconfigured auth token.


- Use a protocol sniffer like Wireshark to see what's going out over  
the wire


- Urrlib2 automates some things for you (like building headers), but  
as with all automated magic sometimes it's not what you want. The  
httplib module offers finer control over HTTP conversations. You might  
want to use httplib to debug this problem even if you find you don't  
need it in your final solution.



good luck
Philip





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


Re: docs error for PyBuffer_FillInfo?

2009-06-21 Thread Christian Heimes
Diez B. Roggisch wrote:
> 
> And obviously enough, compiling my wrapper fails because there is an
> argument missing.
> 
> So, I'm in need for a guide on how to use PyBuffer_FillInfo properly -
> all I've got is a void* and a total size of the buffer.

The second argument points to the (optional) object for that you are
creating the view. The code in Object/stringobject.c is a good example:

static int
string_buffer_getbuffer(PyStringObject *self, Py_buffer *view, int flags)
{
return PyBuffer_FillInfo(view, (PyObject*)self,
 (void *)self->ob_sval, Py_SIZE(self),
 1, flags);
}

Christian

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


os.system vs subprocess

2009-06-21 Thread Nate
I get different behavior with os.system and subprocess (no surprise
there I guess), but I was hoping for some clarification, namely why.

If I type this directly into the command window:

java -Xms128M -Xmx512M -jar gmapcreator.jar -dfile=censettings.xml >
mapoutput.txt

mapoutput.txt stores the output:
Command line mode: input file=censettings.xml
1358 files will be created in C:\Documents and Settings\Nate\Desktop
\freqanalysis\tilefiles\CENSUS1-tiles
1358 tiles created out of 1358 in 16 seconds

If I execute said command with subprocess, the output is not written
to mapoutput.txt - the output just appears in the command window.

If I execute said command with os.system, the output is written to
mapoutput.txt like I expected.

In reality all I want to do is access the first two lines of the above
output before the process finishes, something which I haven't been
able to manage with subprocess so far.  I saw that somehow I might be
able to use os.read(), but this is my first attempt at working with
pipes/processes, so I'm a little overwhelmed.

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


Re: Status of Python threading support (GIL removal)?

2009-06-21 Thread Paul Rubin
"Hendrik van Rooyen"  writes:
> I think that this is because (like your link has shown) the problem
> is really not trivial, and also because the model that can bring
> sanity to the party (independent threads/processes that communicate
> with queued messages) is seen as inefficient at small scale.

That style works pretty well in Python and other languages.  The main
gripe about it for Python is the subject of this thread, i.e. the GIL.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system vs subprocess

2009-06-21 Thread Chris Rebert
On Sun, Jun 21, 2009 at 10:12 AM, Nate wrote:
> I get different behavior with os.system and subprocess (no surprise
> there I guess), but I was hoping for some clarification, namely why.
>
> If I type this directly into the command window:
>
> java -Xms128M -Xmx512M -jar gmapcreator.jar -dfile=censettings.xml >
> mapoutput.txt
>
> mapoutput.txt stores the output:
> Command line mode: input file=censettings.xml
> 1358 files will be created in C:\Documents and Settings\Nate\Desktop
> \freqanalysis\tilefiles\CENSUS1-tiles
> 1358 tiles created out of 1358 in 16 seconds
>
> If I execute said command with subprocess, the output is not written
> to mapoutput.txt - the output just appears in the command window.

Show us the subprocess version of you code. People tend to not get the
parameters quite right if they're not familiar with the library.

Cheers,
Chris
-- 
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread Chris Rebert
On Sun, Jun 21, 2009 at 5:25 AM, Piet van Oostrum wrote:
> I notice that I see several postings on news:comp.lang.python that are
> replies to other postings that I don't see. Examples are the postings by
> Dennis Lee Bieber  that I am replying to (but I

As addressed in an earlier thread, Mr. Bieber chooses to set a Usenet
header (X-Noarchive) in his postings that suppresses their permanent
archiving (and often the archiving of replies to his posts).

I would direct you to the thread, but it looks like it wasn't archived. :P

Cheers,
Chris
-- 
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: raw_input with a pre-compiled data

2009-06-21 Thread Dave Angel

Peter Otten wrote:

Luca wrote:

  

On Sat, Jun 20, 2009 at 6:38 PM, Chris Rebert wrote:


On Sat, Jun 20, 2009 at 7:17 AM, Luca wrote:
  

Hi all.

I need to use a function like the raw_input to read data from user
command line, but I really like to pre-compile the choice and I'm not
able to do this. There is some other function/module I can use?
I wanna to pre-compile the raw_input input line with the current working
path.


What does "pre-compile" mean in this context? It's not clear at all,
so I can't even understand your question.
  

I'm really sorry to all that replied... In fact I literally traduced a



With "traduced" you stumbled upon another false friend ;)

http://it.wikipedia.org/wiki/Falso_amico

  

concept from italian and the term precompiled was not so clear...

What I mean is this: I wanna that raw_input (or other modules) ask to
the user the data, but some data inserted is already present, to the
user can cancel it with the BACKSPACE key.

Examples below (the "_" is the initial cursor position).

 >>> raw_input("Insert the directory to work: ")
 Insert the directory to work: _

What I need is:
 >>> XXX_raw_input("Insert the directory to work: ",
 >>> default="/home/john/")
 Insert the directory to work: /home/john_

In the second example a user can cancel the text "/home/john".

I hope this time is more clear, sorry again.




import readline

def input_default(prompt, default):
def startup_hook():
readline.insert_text(default)
readline.set_startup_hook(startup_hook)
try:
return raw_input(prompt)
finally:
readline.set_startup_hook(None)

print input_default("directory? ", default="/home/john")

The cmd module may also be worth having a look.

Peter


  
The readline module is specific to Unix implementations.  I don't know 
what OS the OP was using.



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


Re: Meta question: disappearing posts

2009-06-21 Thread Piet van Oostrum
> Chris Rebert  (CR) wrote:

>CR> On Sun, Jun 21, 2009 at 5:25 AM, Piet van Oostrum wrote:
>>> I notice that I see several postings on news:comp.lang.python that are
>>> replies to other postings that I don't see. Examples are the postings by
>>> Dennis Lee Bieber  that I am replying to (but I

>CR> As addressed in an earlier thread, Mr. Bieber chooses to set a Usenet
>CR> header (X-Noarchive) in his postings that suppresses their permanent
>CR> archiving (and often the archiving of replies to his posts).

>CR> I would direct you to the thread, but it looks like it wasn't archived. :P

Actually, I do see Mr. Bieber's posts, but not the ones he replies to.
And I am not talking about the archives but about the regular NNTP
server, although the retention period somewhere along the path could be
so low that posts disappear before they reach us. Anyway, as I saw gmane
mentioned in the replies I wondered if that would have something to do
with the problem.
-- 
Piet van Oostrum 
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: [email protected]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system vs subprocess

2009-06-21 Thread Nate
On Jun 21, 2:12 pm, Chris Rebert  wrote:
> On Sun, Jun 21, 2009 at 10:12 AM, Nate wrote:
> > I get different behavior with os.system and subprocess (no surprise
> > there I guess), but I was hoping for some clarification, namely why.
>
> > If I type this directly into the command window:
>
> > java -Xms128M -Xmx512M -jar gmapcreator.jar -dfile=censettings.xml >
> > mapoutput.txt
>
> > mapoutput.txt stores the output:
> > Command line mode: input file=censettings.xml
> > 1358 files will be created in C:\Documents and Settings\Nate\Desktop
> > \freqanalysis\tilefiles\CENSUS1-tiles
> > 1358 tiles created out of 1358 in 16 seconds
>
> > If I execute said command with subprocess, the output is not written
> > to mapoutput.txt - the output just appears in the command window.
>
> Show us the subprocess version of you code. People tend to not get the
> parameters quite right if they're not familiar with the library.
>
> Cheers,
> Chris
> --http://blog.rebertia.com- Hide quoted text -
>
> - Show quoted text -

Here it is:

gmapcreator = subprocess.Popen("java -Xms128M -Xmx512M -jar
gmapcreator.jar -dfile=censettings.xml", stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: urllib2 content-type headers

2009-06-21 Thread Miles Kaufmann

On Jun 21, 2009, at 12:01 PM, TYR wrote:


Unfortunately, I'm getting nothing but 400 Bad Requests. I suspect
this is due to an unfeature of urllib2. Notably, although you can use
urllib2.Request's add_header method to append a header, the
documentation (http://docs.python.org/library/urllib2.html) says that:

remember that a few standard headers (Content-Length, Content-Type and
Host) are added when the Request is passed to urlopen() (or
OpenerDirector.open()).

And:

Note that there cannot be more than one header with the same name, and
later calls will overwrite previous calls in case the key collides.

To put it another way, you cannot rely on Content-Type being correct
because whatever you set it to explicitly, urllib2 will silently
change it to something else which may be wrong, and there is no way to
stop it. What happened to "explicit is better than implicit"?


Those headers are added (by AbstractHTTPHandler.do_request_) only if  
they are missing.


-Miles

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


Re: generator expression works in shell, NameError in script

2009-06-21 Thread Miles Kaufmann

On Jun 19, 2009, at 8:45 AM, Bruno Desthuilliers wrote:

>>> class Foo(object):
... bar = ['a', 'b', 'c']
... baaz = list((b, b) for b in bar)

but it indeed looks like using bar.index *in a generator expression*  
fails (at least in 2.5.2) :


>>> class Foo(object):
... bar = ['a', 'b', 'c']
... baaz = list((bar.index(b), b) for b in bar)
...
Traceback (most recent call last):
 File "", line 1, in 
 File "", line 3, in Foo
 File "", line 3, in 
NameError: global name 'bar' is not defined


The reason that the first one works but the second fails is clearer if  
you translate each generator expression to the approximately  
equivalent generator function:


class Foo(object):
bar = ['a', 'b', 'c']
def _gen(_0):
for b in _0:
yield (b, b)
baaz = list(_gen(iter(bar))

# PEP 227: "the name bindings that occur in the class block
# are not visible to enclosed functions"
class Foo(object):
bar = ['a', 'b', 'c']
def _gen(_0):
for b in _0:
yield (bar.index(b), b)
baaz = list(_gen(iter(bar))

-Miles

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


Re: os.system vs subprocess

2009-06-21 Thread Christian Heimes
Nate wrote:
> gmapcreator = subprocess.Popen("java -Xms128M -Xmx512M -jar
> gmapcreator.jar -dfile=censettings.xml", stdin=subprocess.PIPE,
> stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Try this:

gmapcreator = subprocess.Popen(
["java", "-Xms128M", "-Xmx512M", "-jar", "gmapcreator.jar",
"-dfile=censettings.xml"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)

out, err = gmapcreator.communicate("stdin input")

The subprocess doesn't use the shell so you have to apply the command as
a list of strings.

Do you really need stdin, stdout and stderr as pipes? If you aren't
carefully with the API your program can block.

Christian

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


Re: Can I replace this for loop with a join?

2009-06-21 Thread Paul Watson
On Mon, 2009-04-13 at 17:03 +0200, WP wrote:
> Hello, I have dictionary {1:"astring", 2:"anotherstring", etc}
> 
> I now want to print:
> "Press 1 for astring"
> "Press 2 for anotherstring" etc
> 
> I could do it like this:
> dict = {1:'astring', 2:'anotherstring'}
> for key in dict.keys():
>  print 'Press %i for %s' % (key, dict[key])
> 
> Press 1 for astring
> Press 2 for anotherstring
> 
> but can I use a join instead?
> 
> Thanks for any replies!
> 
> - WP

In addition to the comments already made, this code will be quite broken
if there is ever a need to localize your package in another language.

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


Re: docs error for PyBuffer_FillInfo?

2009-06-21 Thread Diez B. Roggisch

Christian Heimes schrieb:

Diez B. Roggisch wrote:

And obviously enough, compiling my wrapper fails because there is an
argument missing.

So, I'm in need for a guide on how to use PyBuffer_FillInfo properly -
all I've got is a void* and a total size of the buffer.


The second argument points to the (optional) object for that you are
creating the view. The code in Object/stringobject.c is a good example:

static int
string_buffer_getbuffer(PyStringObject *self, Py_buffer *view, int flags)
{
return PyBuffer_FillInfo(view, (PyObject*)self,
 (void *)self->ob_sval, Py_SIZE(self),
 1, flags);
}


But doesn't this mean the docs are faulty? Shall I report a bug?

And I have to say that the docs are anything but clear to me. As I said, 
I've got a method


void *lock(readonly=True)

as part of a C++-library. So, all I've got is a void-pointer and a 
length (through another method).


But I'm unsure about how to allocate the view - just with malloc? What 
about reference-counting, do I have to increment it?


A self-contained example in the docs would be great. Any pointers?

Thanks,

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


Re: Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread Terry Reedy

Piet van Oostrum wrote:

I notice that I see several postings on news:comp.lang.python that are
replies to other postings that I don't see. Examples are the postings by
Dennis Lee Bieber  that I am replying to (but I
break the thread on purpose). For example the posting with Message-ID:
 references:
<[email protected]> which is
not present on my news server. I have been wondering why these
disappear, and I noticed the following in the Dennis Lee Bieber posting: 
On Sat, 20 Jun 2009 11:48:21 -0600, Vincent Davis

 declaimed the following in
gmane.comp.python.general:

So apparently some of these come through gmane.comp.python.general.


I am posting and reading thru gmane and generally see no problem. 
Sometimes I do see replies before the posting being replied.


Sometimes certain posts get 'echoed' about week after the original 
posting date.  If a reply gets echoed, but not the original, and one 
missed both originally, that can look weird.


tjr



So my question is: would this be the cause of these disappearing
postings? Are postings on gmane.comp.python.general not relayed to
comp.lang.python? Are they relayed to the python mailing list? I find it
quite disturbing that sometimes only half of a discussion is visible.


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


GNUstep and Python

2009-06-21 Thread Paul Watson
Has anyone used GNUstep?

In addition to Objective-C, there are Java and Ruby bindings.

Has anyone created a Python binding to GNUstep?

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


RE: RE: Good books in computer science?

2009-06-21 Thread Phil Runciman
->From: Bob Martin [mailto:[email protected]] 
-.Sent: Thursday, 18 June 2009 6:07 p.m.
-Subject: Re: RE: Good books in computer science?

-in 117815 20090617 221804 Phil Runciman  wrote:
->Because it reminds me of when things went badly wrong. IBM360, Von Neumann =
->architecture, no hardware stacks ...
->
->IMHO Burroughs and ICL had better approaches to OS design back then but had=
->less resources to develop their ideas.=20
->
->However, mainly this period marked a transition from the excitement and dis=
->covery phase of computing to commercial power plays and take-overs. The bes=
->t ideas in a field tend to get lost in the melee of competition. Early comp=
->uters were rooted in academia and there was a lot of cross fertilisation of=
->ideas and approaches. IMHO commerce affected layers of the stack where it =
->had no useful contribution to make. Vertical integration warred against sou=
->nd architecture.
->
->The book has an important message and I recommend that people read it. The =
->book is to me, and possibly only me, an icon representing when things went =
->wrong.


-Well, it's an opinion, but certainly not one I would agree with!
-AFAIAC the IBM 360 got everything right, which is why the instruction set is 
still
-going strong 45 years later (I've used it for every one of those 45 years). 

Yes, I was afraid someone would use that sort of argument. Sadly, having the 
best
instruction set does not lead to commercial success. If it did then Interdata 
would
still be with us. They used IBM360 instructions.

How many instruction sets have you used? I have used at least 9.(I nearly missed
the DG Nova). KDF9 had the best set for general computing that I had the 
privilege
of using but that is not to say it was the best. The Burroughs B series or 
PDP11 may
have been better... and doubtless there are many more candidates.

What I can say is that for scientific/engineering calculations the RPN of KDF9 
was
Great because assembler was no harder than using algol60 for the calculations 
part of
the problems I worked on.

Oh yes, I even used assembler on the IBM360 series. It was a 360/50. The 
experience
Did impact on the force of my observations! FWIW I learned it using the 
training material
For the ICL System 4 which was superior to IBM's. The ICL System 4 was not a 
success...
despite its instruction set. ;-)

-AFAIAC the IBM 360 got everything right
How many known bugs did the OS end up with? I know it hit 50,000+ and counting. 
LOL

Suffice to say we are on a journey and Python is part of the scenery.


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


Re: Inheritance and forward references (prototypes)

2009-06-21 Thread Scott David Daniels

Lorenzo Di Gregorio wrote:

On 21 Jun., 01:54, Dave Angel  wrote:

...
class B(object):
def __init__(self,test=None):
if test==None:
test = A()
self.obj =()
return

...
I had also thought of using "None" (or whatever else) as a marker but
I was curious to find out whether there are better ways to supply an
object with standard values as a default argument.
In this sense, I was looking for problems ;-)

Of course the observation that "def" is an instruction and no
declaration changes the situation: I would not have a new object being
constructed for every instantiation with no optional argument, because
__init__ gets executed on the instantiation but test=A() gets executed
on reading 'def'


If what you are worrying about is having a single default object, you
could do something like this:

class B(object):
_default = None

def __init__(self, test=None):
if test is None:
test = self._default
if test is None:
B._default = test = A()
...


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


Re: GNUstep and Python

2009-06-21 Thread Diez B. Roggisch

Paul Watson schrieb:

Has anyone used GNUstep?

In addition to Objective-C, there are Java and Ruby bindings.

Has anyone created a Python binding to GNUstep?


There is the pyobjc-binding for OSX, maybe that's suitable for GNUStep.

Diez

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


Re: class or instance method

2009-06-21 Thread Scott David Daniels

Hrvoje Niksic wrote:

...
class class_or_instance(object):
def __init__(self, fn):
self.fn = fn
def __get__(self, obj, cls):
if obj is not None:
return lambda *args, **kwds: self.fn(obj, *args, **kwds)
else:
return lambda *args, **kwds: self.fn(cls, *args, **kwds)
...


Just to polish a bit:

import functools

class ClassOrInstance(object):
def __init__(self, fn):
self._function = fn
self._wrapper = functools.wraps(fn)

def __get__(self, obj, cls):
return self._wrapper(functools.partial(self._function,
   cls if obj is None else obj))


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


Re: class or instance method

2009-06-21 Thread Miles Kaufmann

On Jun 21, 2009, at 5:23 PM, Scott David Daniels wrote:

Hrvoje Niksic wrote:

...
class class_or_instance(object):
   def __init__(self, fn):
   self.fn = fn
   def __get__(self, obj, cls):
   if obj is not None:
   return lambda *args, **kwds: self.fn(obj, *args, **kwds)
   else:
   return lambda *args, **kwds: self.fn(cls, *args, **kwds)
...


Just to polish a bit:

   import functools

   class ClassOrInstance(object):
   def __init__(self, fn):
   self._function = fn
   self._wrapper = functools.wraps(fn)

   def __get__(self, obj, cls):
   return self._wrapper(functools.partial(self._function,
  cls if obj is None else obj))




from types import MethodType

class ClassOrInstance(object):
def __init__(self, func):
self._func = func

def __get__(self, obj, cls):
return MethodType(self._func, cls if obj is None else obj, cls)


-Miles

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


Re: Can I replace this for loop with a join?

2009-06-21 Thread Ben Finney
Paul Watson  writes:

> On Mon, 2009-04-13 at 17:03 +0200, WP wrote:
> > dict = {1:'astring', 2:'anotherstring'}
> > for key in dict.keys():
> >  print 'Press %i for %s' % (key, dict[key])
> 
> In addition to the comments already made, this code will be quite
> broken if there is ever a need to localize your package in another
> language.

How is this code especially broken? AFAICT, it merely needs the strings
marked for translation, which is the best i18n situation any regular
program can hope for anyway.

-- 
 \   “Crime is contagious… if the government becomes a lawbreaker, |
  `\  it breeds contempt for the law.” —Justice Louis Brandeis |
_o__)  |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system vs subprocess

2009-06-21 Thread Nate
On Jun 21, 3:49 pm, Christian Heimes  wrote:
> Nate wrote:
> > gmapcreator = subprocess.Popen("java -Xms128M -Xmx512M -jar
> > gmapcreator.jar -dfile=censettings.xml", stdin=subprocess.PIPE,
> > stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>
> Try this:
>
> gmapcreator = subprocess.Popen(
>     ["java", "-Xms128M", "-Xmx512M", "-jar", "gmapcreator.jar",
>     "-dfile=censettings.xml"], stdin=subprocess.PIPE,
>     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>
> out, err = gmapcreator.communicate("stdin input")
>
> The subprocess doesn't use the shell so you have to apply the command as
> a list of strings.
>
> Do you really need stdin, stdout and stderr as pipes? If you aren't
> carefully with the API your program can block.
>
> Christian

Christian,

Thanks for your response. Related to this talk about shells, maybe you
could point me towards a resource where I could read about how windows
commands are processed w/w/o shells?  I guess I assumed all subprocess
commands were intepreted by the same thing, cmd.exe., or perhaps the
shell.

I guess this also ties in with me wondering what the whole subprocess
Popen instantiation encompassed (the __init__ of the subprocess.Popen
class?).

I don't think I need stdin, stdout, stderr as pipes, I just was faced
with several options for how to capture these things and I chose
subprocess.PIPE.  I could also os.pipe my own pipes, or create a file
descriptor in one of a couple of ways, right?  I'm just unclear on
which method is preferable for me.  All I want to do is pull the first
2 lines from the output before gmapcreator.jar finishes.  The first 2
lines of output are always the same except a few numbers.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread Steven D'Aprano
Piet van Oostrum wrote:

> I notice that I see several postings on news:comp.lang.python that are
> replies to other postings that I don't see.

I see the same problem.

I suspect it's because of over-vigorous spam filtering from Usenet
providers. Some even block everything from anyone using Google Groups. It's
quite frustrating, to have perfectly valid Python-related posts go missing
while dozens of posts offering to sell well-known brands of shoes and
watches are delivered.


-- 
Steven

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


Re: os.system vs subprocess

2009-06-21 Thread Christian Heimes
Nate wrote:
> Thanks for your response. Related to this talk about shells, maybe you
> could point me towards a resource where I could read about how windows
> commands are processed w/w/o shells?  I guess I assumed all subprocess
> commands were intepreted by the same thing, cmd.exe., or perhaps the
> shell.

The subprocess module never uses the shell unless you tell it so. On
Unix the modules uses fork() the exec*() familiy to create a new
process. On Windows it's the CreateProcess() api.

If you want to read about the Windows stuff then have fun at
http://msdn.microsoft.com/ ;)

> I guess this also ties in with me wondering what the whole subprocess
> Popen instantiation encompassed (the __init__ of the subprocess.Popen
> class?).

It does *a lot* of stuff. The subprocess module tries very hard to
create an easy to use interface that abstracts all OS specific traps
very well. Most of the subprocess module is written in Python but that
doesn't mean it's easy to understand. Have fun again!

> I don't think I need stdin, stdout, stderr as pipes, I just was faced
> with several options for how to capture these things and I chose
> subprocess.PIPE.  I could also os.pipe my own pipes, or create a file
> descriptor in one of a couple of ways, right?  I'm just unclear on
> which method is preferable for me.  All I want to do is pull the first
> 2 lines from the output before gmapcreator.jar finishes.  The first 2
> lines of output are always the same except a few numbers.

os.pipe() are suffering from the same issue as subprocess.PIPE. In fact
the PIPE constant tells subprocess to use OS specific pipes. If you
don't read from all pipes simultaneously one pipe may get filled up to
its buffer limit and both programs block.

As long as you use just one PIPE or the communicate() method then
nothing can get wrong.

Christian

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


Re: dynamically associate radio buttons with droplists

2009-06-21 Thread Aahz
In article ,
Leo Brugud   wrote:
>
>Not being very familiar with python, nor with cgi/http,  I intend to
>have 3 of buttons in a webpage, each of them is associate with a file
>(so I have 3 files, too)
>
>What I would like to have is, when users choose a button, the droplist
>update automatically to load the contents of the associated file.
>
>Can someone educate me the approach of this?

Are you trying to do this without requiring the user to click the submit
button?  If yes, you need to learn JavaScript (although I think there are
web frameworks that will auto-generate the JavaScript, you need to know
JavaScript in order to do debugging).
-- 
Aahz ([email protected])   <*> http://www.pythoncraft.com/

"as long as we like the same operating system, things are cool." --piranha
-- 
http://mail.python.org/mailman/listinfo/python-list


pyinstaller

2009-06-21 Thread Arlie
Newbie here using Python 2.6.2 on MS WinXP Pro SP3. I'm trying create
an frozen exec and was able to generate and exe file.

python D:\pyinstaller-1.3\Makespec.py -F myprog.py
python D:\pyinstaller-1.3\Build.py myprog.spec --paths=D:
\pyinstaller-1.3;D:\PROJECTS\pyproject

but when I ran "myprog.exe" i get this:

Traceback (most recent call last):
  File "", line 2, in 
  File "D:\pyinstaller-1.3\iu.py", line 312, in importHook
mod = _self_doimport(nm, ctx, fqname)
  File "D:\pyinstaller-1.3\iu.py", line 398, in doimport
exec co in mod.__dict__
  File "D:\PROJECTS\python.paging.system.client
\buildpaging_system_client\out1.p
yz/MySQLdb", line 19, in 
  File "D:\pyinstaller-1.3\iu.py", line 312, in importHook
mod = _self_doimport(nm, ctx, fqname)
  File "D:\pyinstaller-1.3\iu.py", line 382, in doimport
mod = director.getmod(nm)
  File "D:\pyinstaller-1.3\iu.py", line 215, in getmod
mod = owner.getmod(nm)
  File "D:\pyinstaller-1.3\iu.py", line 77, in getmod
mod = imp.load_module(nm, fp, attempt, (ext, mode, typ))
ImportError: _mysql: init failed
~~~

I have to source files namely:
   myprog.py
   mp3.py

This is the content of spec file:

a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'),
os.path.join(HOMEPATH,'support\\useUnicode.py'), 'myprog.py'],
 pathex=['D:\\PROJECTS\\pyproject'])
pyz = PYZ(a.pure)
exe = EXE( pyz,
  a.scripts,
  a.binaries,
  name='myprog.exe',
  debug=False,
  strip=False,
  upx=False,
  console=True )

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


Re: Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread greg

Dennis Lee Bieber wrote:


unless one is reading from a server
that interprets X-no-archive to mean "delete before reading".


Can't be too careful with security. Destroy it,
memorize it and then read it!

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


Re: pyinstaller

2009-06-21 Thread Arlie
Renamed the project directory.

from

...
File "D:\PROJECTS\python.paging.system.client
\buildpaging_system_client\out1.p
...

to

...
File "D:\PROJECTS\pyproject
\buildpyproject\out1.p
...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: generator expression works in shell, NameError in script

2009-06-21 Thread greg

guthrie wrote:


-- I don't get this - the only local loop variable is "e", not lst.


Yes, but the whole list comprehension gets put into
a nested function, including the part that evaluates
lst. (It's not strictly *necessary* to do that, but
that's the way it happens to be implemented at the
moment.)


It would generally be the case that a nested function would have
access to its enclosing scope.


Usually, but class namespaces are a special case --
they're not considered to be enclosing scopes, even
though textually they're written that way.


it certainly appears un-intuitive


It is, but it's hard to see what could be done to
improve the situation without introducing worse
problems.

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


Re: pyinstaller

2009-06-21 Thread Arlie
Imported files in myprog.py:

import MySQLdb
import os # works on Windows or Linux, also Vista
import os.path
import time
import mp3

~~~

Content of mp3.py:

# -*- coding: utf-8 -*-
#Michel Claveau

import time
from ctypes import windll, c_buffer

class mci:
def __init__(self):
self.w32mci = windll.winmm.mciSendStringA
self.w32mcierror = windll.winmm.mciGetErrorStringA

def send(self,commande):
buffer = c_buffer(255)
errorcode = self.w32mci(str(commande),buffer,254,0)
if errorcode:
return errorcode, self.get_error(errorcode)
else:
return errorcode,buffer.value

def get_error(self,error):
error = int(error)
buffer = c_buffer(255)
self.w32mcierror(error,buffer,254)
return buffer.value

def directsend(self, txt):
(err,buf)=self.send(txt)
if err != 0:
print'Error',str(err),'sur',txt,':',buf
return (err,buf)

###
def play(mp3file):

xmci=mci()
xmci.directsend('open "' + mp3file + '" alias toto')
xmci.directsend('set toto time format milliseconds')
err,buf=xmci.directsend('status toto length ')
#print 'Duree du fichier : ',buf,' millisecondes'
soundlength = int(buf) / 1000
err,buf=xmci.directsend('play toto from 0 to '+str(buf))
#time.sleep(int(buf)/1000)
time.sleep(soundlength + 1)
xmci.directsend('close toto')
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: pyinstaller

2009-06-21 Thread Arlie
Content of warnmyprog.txt:

W: no module named posix (conditional import by os)
W: no module named optik.__all__ (top-level import by optparse)
W: no module named readline (delayed, conditional import by cmd)
W: no module named readline (delayed import by pdb)
W: no module named pwd (delayed, conditional import by posixpath)
W: no module named org (top-level import by pickle)
W: no module named ctypes.windll (top-level import by mp3)
W: no module named ctypes.c_buffer (top-level import by mp3)
W: no module named posix (delayed, conditional import by iu)
W: no module named fcntl (conditional import by subprocess)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
W: no module named optik.__version__ (top-level import by optparse)
W: no module named fcntl (top-level import by tempfile)
W: __all__ is built strangely at line 0 - collections (C:\Python26\lib
\collections.pyc)
W: delayed  exec statement detected at line 0 - collections (C:
\Python26\lib\collections.pyc)
W: delayed conditional __import__ hack detected at line 0 - doctest (C:
\Python26\lib\doctest.pyc)
W: delayed  exec statement detected at line 0 - doctest (C:
\Python26\lib\doctest.pyc)
W: delayed conditional __import__ hack detected at line 0 - doctest (C:
\Python26\lib\doctest.pyc)
W: delayed  __import__ hack detected at line 0 - encodings (C:
\Python26\lib\encodings\__init__.pyc)
W: __all__ is built strangely at line 0 - optparse (D:
\pyinstaller-1.3\optparse.pyc)
W: delayed  __import__ hack detected at line 0 - ctypes (C:
\Python26\lib\ctypes\__init__.pyc)
W: delayed  __import__ hack detected at line 0 - ctypes (C:
\Python26\lib\ctypes\__init__.pyc)
W: __all__ is built strangely at line 0 - dis (C:\Python26\lib
\dis.pyc)
W: delayed  eval hack detected at line 0 - os (C:\Python26\lib\os.pyc)
W: __all__ is built strangely at line 0 - __future__ (C:\Python26\lib
\__future__.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest
(C:\Python26\lib\unittest.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest
(C:\Python26\lib\unittest.pyc)
W: __all__ is built strangely at line 0 - tokenize (C:\Python26\lib
\tokenize.pyc)
W: delayed  exec statement detected at line 0 - bdb (C:\Python26\lib
\bdb.pyc)
W: delayed  eval hack detected at line 0 - bdb (C:\Python26\lib
\bdb.pyc)
W: delayed  eval hack detected at line 0 - bdb (C:\Python26\lib
\bdb.pyc)
W: delayed  __import__ hack detected at line 0 - pickle (C:
\Python26\lib\pickle.pyc)
W: delayed  __import__ hack detected at line 0 - pickle (C:
\Python26\lib\pickle.pyc)
W: delayed conditional exec statement detected at line 0 - iu (D:
\pyinstaller-1.3\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu (D:
\pyinstaller-1.3\iu.pyc)
W: delayed  eval hack detected at line 0 - gettext (C:\Python26\lib
\gettext.pyc)
W: delayed  __import__ hack detected at line 0 - optik.option_parser
(D:\pyinstaller-1.3\optik\option_parser.pyc)
W: delayed conditional eval hack detected at line 0 - warnings (C:
\Python26\lib\warnings.pyc)
W: delayed conditional __import__ hack detected at line 0 - warnings
(C:\Python26\lib\warnings.pyc)
W: __all__ is built strangely at line 0 - optik (D:
\pyinstaller-1.3\optik\__init__.pyc)
W: delayed  exec statement detected at line 0 - pdb (C:\Python26\lib
\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:
\Python26\lib\pdb.pyc)
W: delayed  eval hack detected at line 0 - pdb (C:\Python26\lib
\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:
\Python26\lib\pdb.pyc)
W: delayed  eval hack detected at line 0 - pdb (C:\Python26\lib
\pdb.pyc)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: os.system vs subprocess

2009-06-21 Thread Lawrence D'Oliveiro
In message , Christian 
Heimes wrote:

> The subprocess doesn't use the shell ...

It can if you tell it to.

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


RE: RE: Good books in computer science?

2009-06-21 Thread Lawrence D'Oliveiro
In message , Phil 
Runciman wrote:

> What I can say is that for scientific/engineering calculations the RPN of
> KDF9 was Great because assembler was no harder than using algol60 for the
> calculations part of the problems I worked on.

Unfortunately, we had to learn the hard way that machine instruction sets 
must be designed for efficiency of execution, not ease of use by humans. 
Stack-based architectures, for all their charm, cannot match register-based 
ones in this regard.

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


Re: Meta question: disappearing posts (was Re: calculating a self.value, self.randomnum = normalvariate(x, y))

2009-06-21 Thread Aahz
In article ,
Piet van Oostrum   wrote:
>
>I notice that I see several postings on news:comp.lang.python that are
>replies to other postings that I don't see. 

As stated previously, my suspicion is that at least some is caused by a
problem with MIME messages and the mail->news gateway on python.org.
-- 
Aahz ([email protected])   <*> http://www.pythoncraft.com/

"as long as we like the same operating system, things are cool." --piranha
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: File Syncing

2009-06-21 Thread Tim Roberts
dads  wrote:

>On Jun 20, 11:21 am, Lawrence D'Oliveiro central.gen.new_zealand> wrote:
>> In message >
>> [email protected]>, dads wrote:
>> > What would I have to learn to be able to sync the text files on each
>> > server?
>>
>> How big is the text file? If it's small, why not have your script read it
>> directly from a master server every time it runs, instead of having a local
>> copy.
>
>Yeah the text files will never get bigger than a 100k. I don't think
>they have a master server but i'll check. Thanks

He's suggesting that you just PICK one and make that the master server.
-- 
Tim Roberts, [email protected]
Providenza & Boekelheide, Inc.
-- 
http://mail.python.org/mailman/listinfo/python-list


Idioms and Anti-Idioms Question

2009-06-21 Thread Ben Charrow
I have a question about the "Using Backslash to Continue Statements" in the 
howto "Idioms and Anti-Idioms in Python" 
(http://docs.python.org/howto/doanddont.html#using-backslash-to-continue-statements) 



It says:

"...if the code was:

value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] \
+ calculate_number(10, 20)*forbulate(500, 360)

then it would just be subtly wrong."

What is subtly wrong about this piece of code?  I can't see any bugs and can't 
think of subtle gotchas (e.g. the '\' is removed or the lines become separated, 
because in both cases an IndentationError would be raised).


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


Re: Good books in computer science?

2009-06-21 Thread Chris Jones
On Sun, Jun 14, 2009 at 06:42:50PM EDT, Lawrence D'Oliveiro wrote:
> In message , Chris 
> Jones wrote:

> > Vivaldi vs. Mozart
> > 
> > And the latter especially had definitely mastered his editor. Just
> > think of the sheer volume of the coding he managed during his short
> > life.
> > 
> > Not many bugs either…
> 
> I thought Vivaldi did more. The style of music was such that they
> could virtually sketch it out in shorthand, and leave it to the
> copyists to expand to proper notation for the musicians to play. I
> imagine that it was also the job of copyists to fix the typos.

100 years before Frederick W. Taylor was born..?

Vivaldi ran a school for musically-minded young women, I heard, so his
alumni may have pitched in. Mozart on the other hand, pretty much must
have spent his days coding. It has been estimated that the fastest
copyist would need years to manually reproduce the sum total of his
manuscripts.

Mind you, that's only stuff I read years ago, and even though I looked
around a bit, I have no evidence to corroborate.

> In other words, high productivity was a direct consequence of adoption
> of a cookie-cutter style.

It looks like we pretty much agree.

You make it sound like it was Vivaldi who invented Pacbase. :-)

Maybe I'm nitpicking, but the one thing I don't understand is how you
practice programming. 

The term makes obvious sense when you're talking about your golf swing,
acquiring competitive driving skills, playing tetris.. 

But programming..?? 

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


Re: Idioms and Anti-Idioms Question

2009-06-21 Thread Steven D'Aprano
On Mon, 22 Jun 2009 00:14:50 -0400, Ben Charrow wrote:

> I have a question about the "Using Backslash to Continue Statements" in
> the howto "Idioms and Anti-Idioms in Python"
> (http://docs.python.org/howto/doanddont.html#using-backslash-to-
continue-statements)
> 
> 
> It says:
> 
> "...if the code was:
> 
> value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] \
>  + calculate_number(10, 20)*forbulate(500, 360)
> 
> then it would just be subtly wrong."
> 
> What is subtly wrong about this piece of code?  I can't see any bugs and
> can't think of subtle gotchas (e.g. the '\' is removed or the lines
> become separated, because in both cases an IndentationError would be
> raised).


As examples go, it's pretty lousy because you can't just copy and paste 
it into an interpreter session and see for yourself. However, with some 
helper objects:


def forbulate(*args):
return [1]

def calculate_number(*args):
return 2

class K: pass

foo = K()
foo.bar = lambda: {'first': [1, 2, 3]}
baz = K()
baz.quux = lambda *args: [3]*10

value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] \
+ calculate_number(10, 20)*forbulate(500, 360)


I can run the example. I confirm that it works without a space after the 
line continuation character. Using Python 2.5, if I put a space after the 
backslash I get 

SyntaxError: unexpected character after line continuation character

followed by 

IndentationError: unexpected indent


So I don't understand the claim that the code is "subtly wrong" either. 
It looks to me like it's obviously wrong.



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


Re: Idioms and Anti-Idioms Question

2009-06-21 Thread Lie Ryan
Ben Charrow wrote:
> I have a question about the "Using Backslash to Continue Statements" in
> the howto "Idioms and Anti-Idioms in Python"
> (http://docs.python.org/howto/doanddont.html#using-backslash-to-continue-statements)
> 
> 
> It says:
> 
> "...if the code was:
> 
> value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] \
> + calculate_number(10, 20)*forbulate(500, 360)
> 
> then it would just be subtly wrong."
> 
> What is subtly wrong about this piece of code?  I can't see any bugs and
> can't think of subtle gotchas (e.g. the '\' is removed or the lines
> become separated, because in both cases an IndentationError would be
> raised).

The preferred style is to put the binary operators before the line-break
(i.e. the line break is after the operators):

value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] + \
calculate_number(10, 20)*forbulate(500, 360)

and even more preferrable is NOT to use explicit line break at all;
relying on implicit breaking with parentheses since then you won't need
to worry about empty lines:

value = (foo.bar()['first'][0]*baz.quux(1, 2)[5:9] +
 calculate_number(10, 20)*forbulate(500, 360)
)

although, in a formula that is so complex, the most preferable way is to
separate them so they won't need to take more than a single line:

a = foo.bar()['first'][0]
b = baz.quux(1, 2)[5:9]
c = calculate_number(10, 20)
d = forbulate(500, 360)
value = a*b + c*d

of course, a, b, c, d should be substituted with a more helpful names.

The following is an extract from PEP 8:

"""
The preferred way of wrapping long lines is by using Python's implied
line continuation inside parentheses, brackets and braces.  If
necessary, you can add an extra pair of parentheses around an
expression, but sometimes using a backslash looks better.  Make sure to
indent the continued line appropriately.  The preferred place to break
around a binary operator is *after* the operator, not before it.
"""
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Re: Help: Group based synchronize decorator

2009-06-21 Thread Vishal Shetye
Thanks.

- vishal
> -Original Message-
> Sent: Friday, June 19, 2009 3:15 PM
> To: [email protected]
> Subject: Python-list Digest, Vol 69, Issue 214
> 
> Message: 6
> Date: Fri, 19 Jun 2009 10:53:27 +0200
> From: Piet van Oostrum 
> To: [email protected]
> Subject: Re: Help: Group based synchronize decorator
> Message-ID: 
> Content-Type: text/plain; charset=us-ascii
> 
> > Vishal Shetye (VS) wrote:
> 
> >VS> I want to synchronize calls using rw locks per 'group' and my
> implementation is similar to
> >VS> http://code.activestate.com/recipes/465057/
> >VS> except that I have my own Lock implementation.
> 
> >VS> All my synchronized functions take 'whatGroup' as param. My lock
> considers 'group' while deciding on granting locks through acquire.
> 
> >VS> What I could come up with is:
> >VS> - decorator knows(assumes) first param to decorated functions is
> always 'whatGroup'
> >VS> - decorator passes this 'whatGroup' argument to my lock which is used
> in acquire logic.
> 
> >VS> Is it ok to make such assumptions in decorator?
> 
> As long as you make sure that all decorated functions indeed adhere to
> that assumption there is nothing wrong with it.
> --
> Piet van Oostrum 
> URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
> Private email: [email protected]

DISCLAIMER
==
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: RE: RE: Good books in computer science?

2009-06-21 Thread Bob Martin
in 118305 20090621 214008 Phil Runciman  wrote:

>How many instruction sets have you used? I have used at least 9.

IBM 1401
IBM 1410
IBM 7090/7094
IBM 1620
IBM 360
IBM System/7
IBM 1130
IBM 1800
IBM Series/1
Intel 8080 etc
Motorola 6800 etc
Texas 9900 (my second favourite)
plus a bunch of IBM microprocessor cards (eg Woodstock).


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