Re: Options to integrate Python modules into native windows applications

2005-07-08 Thread Do Re Mi chel La Si Do
Hi !


I use, intensively, Python, via COM & PyWin32, from Paradox (Object-Pal), 
VBScript,  Excel, Word, Internet-explorer, AutoIt, etc.
It is simple, powerful and extensible dynamically.


@-salutations
--
Michel Claveau




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


Re: python nested class

2005-07-08 Thread Roland Heiber
Vedanta Barooah wrote:
> o = mother()
> o.show()
> y=mother.child()
> y.increase(20)
> # this should print 20
> o.show()
> 
> .. is it possible somehow ???

Hi,

this should do what you want:

--- test.py
class mother:
x=0
def __init__(self):
mother.x=1
def show(self):
print mother.x
class child:
def increase(self,num):
mother.x=num

o = mother()
o.show()
y=mother.child()
y.increase(20)
# this should print 20
o.show()

---
 >pythonw -u "test.py"
1
20
 >Exit code: 0

HtH, Roland
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: (Win32 API) callback to Python, threading hiccups

2005-07-08 Thread Gregory Bond
Tim Roberts wrote:

>>>   PyGILState_STATE gil = PyGILState_Ensure();
>>>   result = PyEval_CallObject(my_callback, arglist);   
>>>   PyGILState_Release(gil);
>>>   Py_DECREF(arglist);
>>>   Py_DECREF(result);



>  If someone else holds a reference to "arglist", then the
> DECREF is just a nice, atomic decrement.  If no one else holds a reference
> to "arglist", then it's quite safe to delete it.

What if anothere thread takes the GIL as soon as you release it, and is 
attempting to allcate a new opbject, and (at the same time - you might 
be on a multiprocessor!) your PyDECREF removes the last reference and 
starts freeing objects?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Calculating average time

2005-07-08 Thread Peter Tillotson
have a look at the "timeit" module aswell

GregM wrote:
> Hi,
> I'm hoping that someone can point me in the right direction with this.
> What I would like to do is calculate the average time it takes to load
> a page. I've been searching the net and reading lots but I haven't
> found anything that helps too much. I'm testing our web site and hiting
> +6000 urls per test. Here is a subset of what I'm doing.
> 
> import IEC
> #IE controller from http://www.mayukhbose.com/python/IEC/index.php
> from win32com.client import Dispatch
> import time
> import datetime
> from sys import exc_info, stdout, argv, exit
> failedlinks = []
> links = open(testfile).readlines()
> totalNumberTests = len(links)
> ie = IEC.IEController()
> start = datetime.datetime.today()
> # asctime() returns a human readable time stamp whereas time() doesn't
> startTimeStr = time.asctime()
> for link in links:
> start = datetime.datetime.today()
> ie.Navigate(link)
> end = datetime.datetime.today()
> pagetext = ie.GetDocumentText()
> #check the returned web page for some things
> if not (re.search(searchterm, pagetext):
>failedlinks.append(link)
> ie.CloseWindow()
> finised = datetime.datetime.today()
> finishedTimeStr = time.asctime()
> # then I print out results, times and etc.
> 
> So:
> 1. Is there a better time function to use?
> 
> 2. To calculate the average times do I need to split up min, sec, and
> msec and then just do a standard average calculation or is there a
> better way?
> 
> 3. is there a more efficient way to do this?
> 
> 4. kind of OT but is there any control like this for Mozilla or
> firefox?
> 
> This is not intended to be any sort of load tester just a url
> validation and page check.
> 
> Thanks in advance.
> Greg.
> 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python nested class

2005-07-08 Thread bruno modulix
Roland Heiber wrote:
> Vedanta Barooah wrote:
> 
>> o = mother()
>> o.show()
>> y=mother.child()
>> y.increase(20)
>> # this should print 20
>> o.show()
>>
>> .. is it possible somehow ???
> 
> 
> Hi,
> 
> this should do what you want:
> 
> --- test.py
> class mother:
> x=0
> def __init__(self):
> mother.x=1
> def show(self):
> print mother.x
> class child:
> def increase(self,num):
> mother.x=num
> 
> o = mother()
> o.show()
> y=mother.child()
> y.increase(20)
> # this should print 20
> o.show()


> ---
>>pythonw -u "test.py"
> 1
> 20

This may *not* be what the op want...
#--- test2.py

class mother(object):
x=0
def __init__(self, name):
self.name = name
mother.x=1
def show(self):
print "in %s: %d" % (self.name, mother.x)
class child(object):
def increase(self,num):
mother.x=num

o = mother('o')
o.show()
y=mother.child()
y.increase(20)
# this should print 20
o.show()

o2 = mother('o2')
o2.show()
y2=mother.child()
y2.increase(10)
o2.show()
o.show()


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


Re: mail sending using telnet in python

2005-07-08 Thread Max M
praba kar wrote:
> Dear All,
>   Normally we can send mail using
> telnet in linux. In the following way

> Is it possible to run same thing same manner
> in python?  If possible kindly help me with
> specimen code.  Actually I gone through
> telnetlib module documentation but I cann't
> get solution for it.

Why not just use the smtp module? It's a tad easier.

-- 

hilsen/regards Max M, Denmark

http://www.mxm.dk/
IT's Mad Science
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: mail sending using telnet in python

2005-07-08 Thread Jorgen Grahn
On Fri, 8 Jul 2005 07:49:25 +0100 (BST), praba kar <[EMAIL PROTECTED]> wrote:
> Dear All,
>   Normally we can send mail using
> telnet in linux. In the following way
> [~user]telnet Ipaddress 25
> mail from: [EMAIL PROTECTED]
> 250 o.k(response of from commandline)
...

That is sometimes a very useful trick, but it doesn't always work. SMTP
requires CR-LF line endings, but your example only generates LF. Most mail
servers accept that, but they are not required to, and some don't (qmail?).

> Is it possible to run same thing same manner
> in python?  If possible kindly help me with
> specimen code.  Actually I gone through
> telnetlib module documentation but I cann't
> get solution for it.

When you use the telnet command to do it, you're simply abusing telnet to
get a command-line interface to a TCP socket -- it's really only intended to
talk to a telnet server. . If the 'netcat' utility was more widespread,
everyone would have used it instead.

When you use Python, it doesn't make sense to go through telnetlib. Use
module socket instead.

Or, simply use module smtplib, which also comes with example code (in Python
2.3, at least).

Have fun,
Jorgen

-- 
  // Jorgen GrahnR'lyeh wgah'nagl fhtagn!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python nested class

2005-07-08 Thread Daniel Dittmar
Vedanta Barooah wrote:
> in a python nested class is it possible to change the value of the
> parent class's variable without actually creating an instance of the
> parent class

Python nested classs are like *static* Java nested classes. Non-static 
Java classes are very different in that they have an implicit reference 
to an instance of the enclosing class. This is why you can instantiate 
non-static inner classes only in the context (= non-static method) of a 
specific object. There is no direct equivalent to this in Python, so you 
have to do the steps yourself.

- the constructor takes an additional argument, the 'outer' object, 
which has to be kept in the object:
def __init__ (self, outer, ...):
 self.outer = outer

- when creating the inner object, the outer object must be passed to the 
  constructor
 obj = InnerClass (self)

- the outer object must be explicitely referenced:
 self.outer.increase (20)

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


Re: Pattern question

2005-07-08 Thread bruno modulix
cantabile wrote:
> Hi,
> 
> I'm trying to write a small installer for a server. But this program
> should be able to run in the future under heterogenous environments and
> os (at least linux/windows). I mean, the install will be done either in
> text mode or curses or gtk or tk, either in debian or windows 2000 and
> so on...
> 
> The idea, at the moment, is as follows :
> 
> class Server:
> def __init__(self, params = None):
> self.params = params
> def __getattr__(self, attr):
> return self.params.get(attr, None)
> 
> class Installer:
>  def __init__(self, gui = None):
> self.gui =  gui
> self.srv = None
> 
> def update(self, dict):
> self.srv = Server(dict)
> 
> class Gui:
> def __init__(self, installer = None):
> self.installer = installer
> def main():
> ## Some stuff here calling doIt() when the
> ## user is done with filling various fields
> 
> def doIt(self):
> dict = {"param1":"qwerty", "param2":"uiop"}
> self.installer.update(dict)
> 
> def main():
> inst = Installer()
> gui =  Gui(inst)
> inst.gui = gui
> inst.gui.main()
> 
> ## Here will be the actual install method
> ## ...
> 
> ## An example of accessing srv values:
> print inst.srv.param1, inst.srv.param2
> 
> But, considering this code, I find the 3 first lines of my main() a bit
> heavy. I have to inform inst that it has a 'gui', and Gui that it has an
> 'installer'. I was trying to implement something looking like (very
> roughly) to the Observer pattern (so that the Gui would be totally
> independant from the actual install process).
>  I guess there is something wrong in my approach. Is there a better
> pattern than this one for that kind of stuff ?
> 
> Tanks for your help.

You may want to have a look at the Factory pattern...

# outrageously oversimplified dummy exemple
class Gui(object):
   def __init__(self, installer):
 self.installer = installer

class PosixGui(Gui):
   pass

class Win32Gui(Gui):
   pass

class GuiFactory(object):
   def getGui(self, installer):
  if os.name == 'posix':
 return PosixGui(installer)
  elif os.name == 'win32':
  return Win32Gui(installer)
  else:
  raise "os %s not supported" % os.name

class Installer(object):
   def __init__(self, guiFactory):
  self.gui = guiFactory.getGui(self)

def main():
   inst = Installer(GuiFactory())
   return inst.gui.main()

NB 1:
You may want to hide away the gui stuff:

class Installer(object):
  def __init__(self):
self.gui = GuiFactory().getGui(self)

  def main(self):
return self.gui.main()

def main():
  return Installer().main()


NB 2 :
if it has to run in text mode, you should consider renaming "gui" to
"ui", since a CLI is not really a 'graphical' ui !-)

NB 3 :
I made the GuiFactory a class, but it could also be a simple function.

NB 4 :
there are of course other solutions to the problem, which may or  not be
more appropriate...


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


Re: PyX, matplotlib, 3D & LaTeX

2005-07-08 Thread Francisco Borges

Robert Kern wrote:
> Matthias R. wrote:
> > Unfortunately matplotlib is only a 2D-plotting library.
> >
> > Do you know another one with 3D-capabilities as well?
>
> There's PyX.

Sorry, PyX can't do 3D plots.

---

I like PyX, use it a lot and would suggest it as a beter plotting
library than the ones at Scipy (for as long as you don't need on-screen
plotting).

I just saw matplotlib this week while searching for something that
would do 3D, it seemed pretty nice and it does have many more features
than PyX, is certainly more mature than PyX and more high level.

On the other hand PyX: LaTeX support seems to be way ahead and it can
be used to draw (very funky) figures.

My experience with PyX is that:

1. it takes more lines of code (than what I fell is needed) to do it;
2. it (still) lacks easy ways to do frequent things (like filling)
3. but once you got it done; the figures/plots are *PERFECT*.

Over PyX you must also be aware that:

a) PyX can't (yet) do pie-charts.

b) No, Pyx can't plot 3D (yes, despite using a 3D plot at their
webpage, it does *not* plot 3D).

c) Documentation can be very confusing at times, so start at the
examples;

d) PyX is not stable yet, the last 3 (or 2?) PyX releases were all
backwards incompatible.

Cheers,
Francisco

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


Re: mail sending using telnet in python

2005-07-08 Thread Piet van Oostrum
> praba kar <[EMAIL PROTECTED]> (PK) wrote:

>PK>   Normally we can send mail using
>PK> telnet in linux. In the following way
>PK> [~user]telnet Ipaddress 25

In fact you are using SMTP through the telnet program. So in Python use
the smtplib module.
-- 
Piet van Oostrum <[EMAIL PROTECTED]>
URL: http://www.cs.uu.nl/~piet [PGP E17999C4]
Private email: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PyX, matplotlib, 3D & LaTeX

2005-07-08 Thread Francisco Borges


Francisco Borges wrote:

> 1. it takes more lines of code (than what I fell is needed) to do it;
> 2. it (still) lacks easy ways to do frequent things (like filling)

Sorry, I just realised the piece of nonsense I just wrote...

PyX does fill objects very easily, what it does take lot's of work to
do is to fill the intersection of two objects, or the intersection of a
plot line and some chosen axis. Or is it just that I myself haven't
learned how to do that properly

Cheers,
Francisco

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


Re: Pattern question

2005-07-08 Thread cantabile
bruno modulix a écrit :

> You may want to have a look at the Factory pattern...
> 
> # outrageously oversimplified dummy exemple
> class Gui(object):
>def __init__(self, installer):
>  self.installer = installer
> 
> class PosixGui(Gui):
>pass
> 
> class Win32Gui(Gui):
>pass
> 
> class GuiFactory(object):
>def getGui(self, installer):
>   if os.name == 'posix':
>  return PosixGui(installer)
>   elif os.name == 'win32':
>   return Win32Gui(installer)
>   else:
>   raise "os %s not supported" % os.name
> 
> class Installer(object):
>def __init__(self, guiFactory):
>   self.gui = guiFactory.getGui(self)
> 
> def main():
>inst = Installer(GuiFactory())
>return inst.gui.main()
> 
> NB 1:
> You may want to hide away the gui stuff:
> 
> class Installer(object):
>   def __init__(self):
> self.gui = GuiFactory().getGui(self)
> 
>   def main(self):
> return self.gui.main()
> 
> def main():
>   return Installer().main()
> 

Thanks for this, Bruno. It is much more elegant and adaptable than my
first attempt.
> 
> NB 2 :
> if it has to run in text mode, you should consider renaming "gui" to
> "ui", since a CLI is not really a 'graphical' ui !-)

You're right :))

> NB 3 :
> I made the GuiFactory a class, but it could also be a simple function.

> NB 4 :
> there are of course other solutions to the problem, which may or  not be
> more appropriate...
> 

Thanks a lot for these detailed explanations.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Scipy - Latex Annotations in plots

2005-07-08 Thread Brian Elmegaard
"Matthias R." <[EMAIL PROTECTED]> writes:

> Unfortunately matplotlib is only a 2D-plotting library.
> 
> Do you know another one with 3D-capabilities as well?
> That would be very nice, 

You can quite easily write a function that produces metapost
code. Featpost is the best 3d-lib for that, afaik.

The good thing is that you get plot that work in both latex and
pdflatex and integrates completely with latex text.

-- 
Brian (remove the sport for mail)
http://www.et.web.mek.dtu.dk/Staff/be/be.html
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: urllib2 - basic authentication and the put and delete methods

2005-07-08 Thread deelan
news.corp.adobe.com wrote:
(...)
> 
> But despite much searching, I have yet to discover how to then use PUT and 
> DELETE to copy files / delete files on the server.

i believe you have to use httplib for that:


examples here:


basically you pass auth headers whie
using PUT/DELETE verbs:

## untested! ##

headers = {
   "Authorization": authheader # your base 64 str
}
conn.request("PUT", "/your/url/here", body, headers)

HTH,
deelan.

-- 
deelan, #1 fan of adriana lima!





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


Re: f*cking re module

2005-07-08 Thread paron
That is so handy!! Thanks!

Ron

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


Re: f*cking re module

2005-07-08 Thread François Pinard
[Mike Meyer]

> Steven D'Aprano <[EMAIL PROTECTED]> writes:
>
> > Is there any possible sequence of bytes that will not be a valid
> > Perl expression or operator?

Perl has lots of syntax, and good warning facilities, it is not so bad.

> [...] TECO, where guessing what your name did as a command sequence
> was a popular past time?

Yes, this is much more likely to be meaningful!  Yet, don't laugh at
this venerable editor.  Remember that Emacs started as an *E*xtended set
of TECO *mac*ros, as its name still say. :-)

I once worked with a PL/I compiler (on a big IBM mainframe), which was
trying to be helpful by spitting pages of:

Error SUCH AND SUCH, assuming that THIS AND THIS was meant.

and continuing compilation nevertheless.  It was a common joke to say
that PL/I would compile some random valid program out of any garbage!

-- 
François Pinard   http://pinard.progiciels-bpi.ca
-- 
http://mail.python.org/mailman/listinfo/python-list


Query

2005-07-08 Thread Girish




Hi,
 
Can we control keyboard and mouse actions using 
python scripts in Linux environment?
plz do reply.
 
Regards
Girish 
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Use cases for del

2005-07-08 Thread George Sakkis
"Ron Adam" <[EMAIL PROTECTED]> wrote:

> Here's something interesting:
>
> import time
>
> x = None
> t = time.time()
> for i in range(100):
>  if x==None:
>  pass
> print 'None:',time.time()-t
>
> x = 'to-end'
> t = time.time()
> for i in range(100):
>  if x=='to-end':
>  pass
> print 'String:',time.time()-t
>
>  >>>
> None: 0.4673515
> String: 0.36133514
>
>
> Of course the difference this would make on a single call in practically
> Nill.
>

How about using the right way of comparing with None ?

x = None
t = time.time()
for i in range(100):
  if x is None:
  pass
print 'is None:',time.time()-t

I get:

None: 0.54952316
String: 0.498000144958
is None: 0.45047684

> Anyway, time to call it a night so tomorrow I don't make anymore silly
> mistakes on comp.lang.python. :)

That would be a great idea ;-) An even greater idea would be to give up
on this "None should mean undefined" babble; it looks like a solution
looking for a problem and it raises more complications than it actually
solves (assuming it does actually solve anything, which is not quite
obvious).

> Cheers,
> Ron

Cheers,
George

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


Re: Query

2005-07-08 Thread Jeff Epler
python-xlib includes an implementation of the xtest extension, which is
enabled on most users' X servers, and can be used to send arbitrary
keyboard or mouse events.

jeff


pgpo7pqhBafPe.pgp
Description: PGP signature
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Python Module Exposure

2005-07-08 Thread Thomas Lotze
Jacob Page wrote:

> better-named,

Just a quick remark, without even having looked at it yet: the name is not
really descriptive and runs a chance of misleading people. The example I'm
thinking of is using zope.interface in the same project: it's customary to
name interfaces ISomething.

-- 
Thomas

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


Obj.'s writing self-regeneration script ?

2005-07-08 Thread Bas Michielsen
Hello,

Is there a good/standard way of having (composite)
objects write a Python script which will regenerate
the very same object ?

This problem arises when I construct, for example,
a "ComputationalProblem" object, possibly through
an object editor GUI, importing data structures
from external geometric and material modelers etc.
Once the object has been constructed, one wants to
write it to a file on disk, for example to do the
computations later on.

In order to help users, familiar with the
(in)famous "input-file monolithic-code output-file"
sequence I would like to have this diskfile take
the form of recognisable and editable Python code
(instead of a "dump" solution with Pickle for
example).

I think there are problems with uniqueness and
ordering of the component instantiations.
I was thinking of something like a depth-first
recursive write-script() on the object's
attributes using the __class__ 's to construct
generic names for the instantiations.

Has anyone given this a thought already ?

Thank you in advance for any remarks,

-- 
Bas Michielsen
ONERA, Electromagnetics and Radar Department
2, avenue Edouard Belin, 31055 TOULOUSE cedex, France
Tel. (++33)(0)5 62 25 26 77
Fax. (++33)(0)5 62 25 25 77

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


Re: pickle alternative

2005-07-08 Thread TZOTZIOY
On 4 Jul 2005 19:45:07 -0700, rumours say that [EMAIL PROTECTED]
might have written:

>Time and space efficiency, and security do not have to be mutually
>exclusive features of a serializer. Python does not provide, in the
>standard library, a serializer which can work safely with untrusted
>data which is time and space efficient. The proposed gherkin module
>goes some way to achieving this. The format is simple enough to
>easily write interoperable implementations across platforms.

I cannot readily check the source code because your web server listens
on port 82 (we're behind a strict firewall), so I don't know if my
following question has a reason to exist, but there we go:

Have you considered basing your module on xdrlib, which is more of a
cross-language standard?
-- 
TZOTZIOY, I speak England very best.
"Dear Paul,
please stop spamming us."
The Corinthians
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Ann: The first PyWeek Python Game Programming Competition

2005-07-08 Thread Lee Harr
> See the competition timetable (including competition dates in various 
> timezones), rules, sign-up (commencing 6th August) at:
>
>   http://www.mechanicalcat.net/tech/PyWeek
>


Sounds like fun.

One thing. From the website ...

> Clip Art
> note:
> more links welcome

How about:
http://www.openclipart.org/
-- 
http://mail.python.org/mailman/listinfo/python-list


Trainee Developer / Consultant Vacancy at ReportLab, London

2005-07-08 Thread John J. Lee
Vacancy at ReportLab, London

ReportLab develop enterprise reporting and document generation solutions
using cutting-edge Python technology, and have a growing business with an
excellent blue chip customer base.  You may also know us from our open
source PDF and graphics library...

We have a job opening for one trainee I.T. consultant working in our
solutions team.  Full time junior positions based in our Wimbledon
(London, England) office.

We are already interviewing, so a quick response is essential!

Full details are at http://www.reportlab.com/careers.html

Reply to [EMAIL PROTECTED]


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


Re: Polling, Fifos, and Linux

2005-07-08 Thread Andreas Kostyrka
On Thu, Jul 07, 2005 at 10:21:19PM -0700, Jacob Page wrote:
> Jeremy Moles wrote:
> > This is my first time working with some of the more lower-level python
> > "stuff." I was wondering if someone could tell me what I'm doing wrong
> > with my simple test here?
> > 
> > Basically, what I need is an easy way for application in userspace to
> > simply echo values "down" to this fifo similar to the way proc files are
> > used. Is my understanding of fifo's and their capabilities just totally
> > off base?
> 
> You shouldn't need to use select.poll(), unless I'm missing something. 
> I was able to get the following to work:
Ok, you miss something ;) The program you proposed does busy waiting
and without a time.sleep call will consume 100% CPU time :(

Actually, with a named fifo the situation gets even nastier:

import os, select, time

fifo = os.open("fifo", os.O_RDONLY)

while True:
print "SELECT", select.select([fifo],[],[])
string = os.read(fifo, 1)
if len(string):
print string
else:
nf = os.open("fifo", os.O_RDONLY)
os.close(fifo)
fifo = nf
# Perhaps add a delay under an else

The problem is, that select (and poll) show a End-Of-File condition by returning
ready to read. But on a FIFO, when the first client terminates, the reading
end goes into a EOF state till somebody else reopens the fifo for writing.

[This bit of wisdom comes Advanced Programming in the UNIX Environment by 
W.R. Stevens p. 400: 'If we encounter the end of file on a descriptor, that
descriptor is considered readbale by select.']

closing the old descriptor must be done after opening a new one, or else you
get a tiny moment where a O_WRONLY client is not able to open the file.
This way there is always a reading client of the fifo.

Andreas


> 
> -=-=-
> 
> import os
> 
> fifo = os.open("fifo", os.O_RDONLY | os.O_NONBLOCK)
> 
> while True:
>  string = os.read(fifo, 1)
>  if len(string):
>  print string
>  # Perhaps add a delay under an else
> 
> -=-=-
> 
> The Python script, when run, does nothing until you put data into the 
> fifo from another process.  Then it immediately spits the data out, 
> character by character.
> 
> I'm assuming that you've already created the fifo and that it's in the 
> current working directory.
> -- 
> http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Outlook COM: how to create a MailItem from a .msg file

2005-07-08 Thread Guy Lateur
Yes! I finally got it to work. I've written a VBscript which I'll call from 
python. It uses Outlook.Redemption's SafeMailItem. No need to use IMAP or 
whatever services.

Only weird thing is it doesn't put the msg in the Inbox, as I intended, but 
in the Drafts folder. Well, never mind that, it's a temp object anyway.

Here's the code:

Dim sItem, oItem
Dim myDestBox, myNS, myOL

Set myOL = CreateObject("Outlook.Application")
Set myNS = myOL.GetNamespace("MAPI")
Set sItem = CreateObject("Redemption.SafeMailItem")

Set myDestBox = myNS.GetDefaultFolder(6)
Set oItem = myDestBox.Items.Add(0)

sItem.Item = oItem
sItem.Import 
"H:\Inhoud-iedereen\Inhoud-Guy\app\BBProject\data\test\Leemarchitect.msg", 3
sItem.Save



Cheers,
g




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


Snakespell

2005-07-08 Thread [EMAIL PROTECTED]
I used to use Snakespell from scriptfoundry to do spellchecking on my
website (www.peterbe.com/search?q=pyton) but now that I've moved server
and wiped the old machine I forgot to take with me the Snakespell code.

www.scriptfoundry.com where it used to live seems to have expired.

Does anybody know where I can get hold of this? (or even send a tgz to
me)

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


Re: Windows Cmd.exe Window

2005-07-08 Thread Peter Herndon
Giles, you keep mentioning syntax errors as the (/a) cause of the
problem.  I suggest you avoid such problems, so that the import sethook
approach, et al. will actually work.  The easiest thing to do is to run
PyChecker on your script prior to executing it.  PyChecker will catch
your syntax errors (and a whole host of other things, some of which are
actual problems, some not) and let you know where they are.  With that
simple bit of testing, the other approaches that rely on a
syntactically-correct script will work, because you will have corrected
the syntax errors.

You *will* have corrected the syntax errors, right?  :)

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


[ANN] pkpgcounter v1.55 is out

2005-07-08 Thread Jerome Alet
Hi there,

I'm pleased to announce the immediate availability of pkpgcounter v1.55

pkpgcounter is a 100% Python written, GNU GPLed, Page Description Language
(PDL) parser.

pkpgcounter's goal is to compute and display the number of pages needed to
print documents. 

pkpgcounter was part of the PyKota print quota and accounting software
since 2003, but is now available separately.

pkpgcounter currently recognizes the following formats :

- PostScript (both DSC compliant and binary)
- PDF
- PCLXL (aka PCL6)
- PCL3/4/5 (sometimes depends on the driver used)
- ESC/P2
- TIFF
- DVI
- OpenOffice.org Writer
- OpenOffice.org Impress

more info :

  http://www.librelogiciel.com/software/pkpgcounter/action_Presentation

comments are welcome

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


Re: Options to integrate Python modules into native windows applications

2005-07-08 Thread Philippe C. Martin
Hi,

Thanks for your answers,

has anyone also used .net for Python ?

Regards,

Philipe



Philippe C. Martin wrote:

> Hi,
> 
> I am looking for the pros and cons as to how to integrate a Python module
> into a Windows native application.
> 
> So far I have looked at
> 
> 1) coding the C wrapper myself
> 2) using Pyrex
> 3) go for pywin32 and COM
> 
> Thanks,
> 
> Philippe

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


Re: Obj.'s writing self-regeneration script ?

2005-07-08 Thread Jerome Alet
Hi,

Le Fri, 08 Jul 2005 15:16:21 +0200, Bas Michielsen a écrit :

> Is there a good/standard way of having (composite)
> objects write a Python script which will regenerate
> the very same object ?

I've done something like this for the ReportLab toolkit.

Last time I checked, this was still part of the project under
the name "pycanvas". You use a pycanvas.Canvas() instance
just like you would use a canvas.Canvas() instance, but you can decide to
regenerate an equivalent Python source program to your original program
when rendering.

The docstring explains how to use it. Also
reportlab/test/test_pdfgen_pycanvas.py shows if it works or not.

NB : this is not generic code, but maybe this can help you.

bye

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


ANN: python-constraint 1.0

2005-07-08 Thread Gustavo Niemeyer

Overview


**python-constraint** [1]_ is a Python module offering solvers for
Constraint Solving Problems (CSPs) over finite domains in simple
and pure Python. CSP is class of problems which may be represented
in terms of variables (`a`, `b`, ...), domains (`a in [1, 2, 3]`, ...),
and constraints (`a < b`, ...).

. [1] http://codespeak.net/~niemeyer/constraint/


Examples


Basic
-

Here is a basic interactive example::
 
>>> from constraint import *
>>> problem = Problem()
>>> problem.addVariable("a", [1,2,3])
>>> problem.addVariable("b", [4,5,6])
>>> problem.getSolutions()
[{'a': 3, 'b': 6}, {'a': 3, 'b': 5}, {'a': 3, 'b': 4},
 {'a': 2, 'b': 6}, {'a': 2, 'b': 5}, {'a': 2, 'b': 4},
 {'a': 1, 'b': 6}, {'a': 1, 'b': 5}, {'a': 1, 'b': 4}]

>>> problem.addConstraint(lambda a, b: a*2 == b,
  ("a", "b"))
>>> problem.getSolutions()
[{'a': 3, 'b': 6}, {'a': 2, 'b': 4}]

>>> problem = Problem()
>>> problem.addVariables(["a", "b"], [1, 2, 3])
>>> problem.addConstraint(AllDifferentConstraint())
>>> problem.getSolutions()
[{'a': 3, 'b': 2}, {'a': 3, 'b': 1}, {'a': 2, 'b': 3},
 {'a': 2, 'b': 1}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3}]


Rooks
-

Here is an example solving the classical rooks problem::

problem = Problem()
numpieces = 8
cols = range(numpieces)
rows = range(numpieces)
problem.addVariables(cols, rows)
for col1 in cols:
for col2 in cols:
if col1 < col2:
problem.addConstraint(lambda row1, row2: row1 != row2,
  (col1, col2))
solutions = problem.getSolutions()


Magic squares
-

And here is an example solving a 4x4 magic square::

problem = Problem()
problem.addVariables(range(0, 16), range(1, 16+1))
problem.addConstraint(AllDifferentConstraint(), range(0, 16))
problem.addConstraint(ExactSumConstraint(34), [0,5,10,15])
problem.addConstraint(ExactSumConstraint(34), [3,6,9,12])
for row in range(4):
problem.addConstraint(ExactSumConstraint(34),
  [row*4+i for i in range(4)])
for col in range(4):
problem.addConstraint(ExactSumConstraint(34),
  [col+4*i for i in range(4)])
solutions = problem.getSolutions()



Features


The following solvers are available:

- Backtracking solver
- Recursive backtracking solver
- Minimum conflicts solver

Predefined constraint types currently available:

- FunctionConstraint
- AllDifferentConstraint
- AllEqualConstraint
- ExactSumConstraint
- MaxSumConstraint
- MinSumConstraint
- InSetConstraint
- NotInSetConstraint
- SomeInSetConstraint
- SomeNotInSetConstraint


-
Documentation
-

There's documentation for the module at:

- http://codespeak.net/~niemeyer/constraint/doc/



Download


**python-constraint** may be found at the following
address:

- http://codespeak.net/~niemeyer/constraint/files/

-
Subversion repository
-

Available at:

- http://codespeak.net/svn/user/niemeyer/constraint/


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


Re: Obj.'s writing self-regeneration script ?

2005-07-08 Thread Bas Michielsen
Jerome Alet wrote:
> Hi,
> 
> Le Fri, 08 Jul 2005 15:16:21 +0200, Bas Michielsen a écrit :
> 
> 
>>Is there a good/standard way of having (composite)
>>objects write a Python script which will regenerate
>>the very same object ?
> 
> 
> I've done something like this for the ReportLab toolkit.
> 
> Last time I checked, this was still part of the project under
> the name "pycanvas". You use a pycanvas.Canvas() instance
> just like you would use a canvas.Canvas() instance, but you can decide to
> regenerate an equivalent Python source program to your original program
> when rendering.
> 
> The docstring explains how to use it. Also
> reportlab/test/test_pdfgen_pycanvas.py shows if it works or not.
> 
> NB : this is not generic code, but maybe this can help you.
> 
> bye
> 
> Jerome Alet

Thank you very much, I will have a look at it.

Bas


-- 
Bas Michielsen
ONERA, Electromagnetics and Radar Department
2, avenue Edouard Belin, 31055 TOULOUSE cedex, France
Tel. (++33)(0)5 62 25 26 77
Fax. (++33)(0)5 62 25 25 77

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


psycopg simplest problem

2005-07-08 Thread Glauco
I'm rebuilding my old library i've done some year ago using python and 
postgres.

My problem is to do a middle layer over pycopg for eliminate type 
casting problem in postgres in all direction.

i've resolved this doing a C extension in python and manipulating only 
string and int in my application.

this is my example:
import sqlvar

sql = """insert into mytable (myint, mytext, maydate)
  values
  (%d,%s,%s);""" % (sqlvar.number(myvalue1), 
sqlvar.text(myvalue2), sqlvar.date(myvalue3) )

all problem concerning quoting, " ' -> ''", null, None, 0, empty string 
is solved by the sqlvar lib.


I want to eliminate this problem forever, i want to manipulate only 
correct type as DateTime obj in my application so i want to arrive at 
this solution:


sql = """insert into mytable (myint, mytext, maydate)
  values
  (%s,%s,%s);""" % (myvalue1, myvalue2, myvalue3)

without all time check for none, empty string and so on...

I've seen API of psycopg and some procedure for the solution but all are 
too spaghetti for me.

I'm only with this problem ?


Glauco


-- 

  \\\|///
\\  - -  //
 (  @ @  )
+-oOOo-( )-oOOo--+
||
| I have a dream that one day this nation will rise up and   |
|   live out the true meaning of its creed: "We hold these   |
|   truths to be self-evident:that all men are created equal.|
| I have a dream that one day on the red hills of Georgia|
|   the sons of former slaves and the sons of former |
|   slaveowners will be able to sit down together at a table |
|   of brotherhood.  |
| I have a dream that one day even the state of Mississippi, |
|   a desert state, sweltering with the heat of injustice|
|   and oppression, will be transformed into an oasis of |
|   freedom and justice. |
| I have a dream that my four children will one day live in  |
|   a nation where they will not be judged by the color of   |
|   their skin but by the content of their character.|
| I have a dream today.  |
||
|Martin Luther King, Jr  28 Ago 1963 |
++
|glauco(at)uriland.it|
|  www.uriland.it  .oooOICQ: 115323690   |
+- (   )-- Oooo.-+
 \ ((   )
  \_)) /
(_/
-- 
http://mail.python.org/mailman/listinfo/python-list


Learning Python - IM Wiki

2005-07-08 Thread Jorge Louis De Castro



Hello,
 
I am a Java Developer that has been learning Python 
by doing simple things. I am loving this initial vibe I'm getting 
out of Python. However, because I feel programmers of a 
certain languages bring with them certain vices when moving to other 
languages, I'd like to have feedback from seasoned Python programmers regarding 
my code.
Using some socket examples I've googled here and 
there I wrote a very simple Instant-Messaging-wannabe program.
Is there some sort of a Wiki where I could post the 
code and have advice on what, how and where to improve? Or should I post the 
code it here?
Actually, I'll post it below and if anyone knows of 
a better place to do something like this I'll do it there.
Next I'm changing the client to include a server 
thread listening instead of polling the server.
 
Regards
jorge
 
 
SIMPLE IM CLIENT
 
import socket, threading, time, msvcrt
 
print "Please enter the following 
information"_url = raw_input("URL: ")_port = raw_input("Port: 
")print "Starting IIM client on port: " + _port
 
socketOut = socket.socket(socket.AF_INET, 
socket.SOCK_STREAM)socketOut.connect((_url, int(_port)))
 
# clear screen here
 
print "Enter your user details"_from = 
raw_input("User id: ")_to = raw_input("Buddy id: ")
 
print '\n'print "Connecting to 
server..."print '\n'
 
# send user details and receive 
responsesocketOut.sendall('@@@'+_from+'##'+_to)response = 
socketOut.recv(8192)
 
def listener():    while 
1:    
time.sleep(5)    
socketOut.sendall('$$$'+_from)    
response = socketOut.recv(8192)    if 
response != " 
":    print 
"\n" + response
 
if response == 'AUTH_OK':    data = 
""    th = 
threading.Thread(target=listener)    
th.setDaemon(1)    th.start()    print 
"Background polling thread started"    while 1:
 
    if 
msvcrt.kbhit():    
ch = msvcrt.getche()    
else:    ch = 
None    if 
ch:    if ch 
!= 
'\r':    
data += ch    
else:    
print 
'\n'    
socketOut.sendall('###'+_from+'##'+data)    
response = 
socketOut.recv(8192)    
if response != " 
":    
print 
response    
data = ""
 
else:    print "Auhentication 
failed!"    
socketOut.close()
 
 
 
 
SIMPLE IM SERVER
 
import SocketServer
 
_port = 8881_clients = {}
 
# a connected clientclass Client:    # queue of 
messages sent to this client    queue = 
[]    def __init__(self, _sock, _src, 
_dest):    print "Creating IM 
client"    self.socket = 
_sock    print "Incoming socket: %s" 
% self.socket    self.user = 
_src    print "Username: " + 
self.user    # buddies should be a 
list    self.buddy = 
_dest    print "Buddy: " + 
self.buddy    print "Created IM 
client"
 
# the server handling requestsclass 
Broker(SocketServer.BaseRequestHandler):    def 
handle(self):    print "Connected 
from", self.client_address    while 
True:    
receivedData = 
self.request.recv(8192)    
if not 
receivedData:    
break    
    # if 
handshake packet, extract client 
details    if 
receivedData.startswith('@@@',0,3):    
print "Received handshake 
packet"    
# strip handshake 
code    
receivedData = receivedData.replace('@@@', '', 
1).lstrip()    
l = 
receivedData.split('##',1)    
socket = 
self.request    
src = 
"">    
dest = 
l[1]    
c = Client(socket, src, 
dest)    
# use username as key on 
hashmap    
_clients[src] = 
c    
# send success 
message    
socket.sendall('AUTH_OK')    
print "Client " + src + " authenticated"
 
    # if 
polling packet, extract sender details and send 
messages    
if 
receivedData.startswith('$$$',0,3):    
# strip polling 
message    
print "Received polling 
packet"    
src = "" '', 
1).lstrip()    
# only poll if more than 1 
user    
if len(_clients) > 
1:    
    
# use username as key on 
hashmap    
_clients[src] = 
c    
if len(c.queue) < 
1:    
c.socket.sendall(" 
")    
else:    
msgs = 
""    
for q in 
c.queue:    
msgs += q + 
'\n'    
# send queued 
messages    
c.socket.sendall(msgs)    
c.queue = 
[]    
print "Sent all pending messages for " + 
c.user    
else:    
socket.sendall(" ")
 
    # if 
message packet, extract data and append to target 
queue    if 
receivedData.startswith('###',0,3):    
print "Received message 
packet"    
receivedData = receivedData.replac

Re: Outlook COM: how to create a MailItem from a .msg file

2005-07-08 Thread Guy Lateur
python version:



import win32com.client

myOL = win32com.client.Dispatch("Outlook.Application")
myNS = myOL.GetNamespace("MAPI")
sItem = win32com.client.Dispatch("Redemption.SafeMailItem")

myDestBox = myNS.GetDefaultFolder(6)
oItem = myDestBox.Items.Add(0)

sItem.Item = oItem
sItem.Import("H:\\Inhoud-iedereen\\Inhoud-Guy\\app\\BBProject\\data\\test\\Leemarchitect.msg",
 
3)
sItem.Save()



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


Re: psycopg simplest problem

2005-07-08 Thread Gerhard Haering
On Fri, Jul 08, 2005 at 04:23:50PM +0200, Glauco wrote:
> [...]
> My problem is to do a middle layer over pycopg for eliminate type 
> casting problem in postgres in all direction.
> 
> i've resolved this doing a C extension in python and manipulating only 
> string and int in my application.
> 
> this is my example:
> import sqlvar
> 
> sql = """insert into mytable (myint, mytext, maydate)
>   values
>   (%d,%s,%s);""" % (sqlvar.number(myvalue1), 
> sqlvar.text(myvalue2), sqlvar.date(myvalue3) )
> 
> all problem concerning quoting, " ' -> ''", null, None, 0, empty string 
> is solved by the sqlvar lib. [...]

Instead of quoting Python values yourself appropriately for each type,
just let the DB-API module do its work. Use parametrized queries and
then supply the arguments to the query:

cur = con.cursor()
intVal = 42
textVal = "Jason's house"
dateVal = datetime.date(2005, 7, 8)
cur.execute("""
insert into mytable(myint, mytext, mydate)
values (%s, %s, %s)
""", (intval, textVal, dateVal))

The execute(many) method has an optional second parameter, which is a
tuple of values for your parametrized query.

There are different styles to parametrize queries among the various
DB-API modules. psycopg uses the pyformat one, where you just use %s as
placeholders.

It will happily quote all Python values of types int, str, date, float,
etc.  for you. It's also possible to teach it how to quote other custom
data types, but you'll normally not need this.

HTH,

-- Gerhard
-- 
Gerhard Häring - [EMAIL PROTECTED] - Python, web & database development


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

Re: f*cking re module

2005-07-08 Thread Rocco Moretti
François Pinard wrote:

> I once worked with a PL/I compiler (on a big IBM mainframe), which was
> trying to be helpful by spitting pages of:
> 
> Error SUCH AND SUCH, assuming that THIS AND THIS was meant.
> 
> and continuing compilation nevertheless.  It was a common joke to say
> that PL/I would compile some random valid program out of any garbage!

We may laugh now (and then), but it was likely a valid design decision 
at the time. If you're running a job on "big iron", depending on the 
situation, you might have had only a block of a few hours on a 
timeshared system, perhaps unattended. If the compiler refused to 
continue, the rest of your block might have been wasted. (At the very 
least, you would have had to sign up for an additional block later.)

If your program had only minor errors, there was likely a good chance 
that the compiler might guess correctly, and your program would compile 
to what you wanted in the first place. If not, by continuing on, the 
compiler can flag additional errors later in your code, allowing you to 
fix those bugs sooner. (Instead of choking on the first one and refusing 
to continue.)

Error-checking-by-compiling only "works" if you have cheap computing 
power you can run attended. (Can you imagine what TDD would be like if 
you had to wait 24+ hrs between code executions?)

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


Re: Lisp development with macros faster than Python development?..

2005-07-08 Thread Kay Schluehr


[EMAIL PROTECTED] schrieb:
> I've been reading the beloved Paul Graham's "Hackers and Painters".
> He claims he developed a web app at light speed using Lisp and lots
> of macros.

Yes, Paul is a postmodern hero who reininvents himself and his language
every day and with every program:

"Experienced Lisp programmers divide up their programs differently. As
well as top-down design, they follow a principle which could be called
bottom-up design-- changing the language to suit the problem. In Lisp,
you don't just write your program down toward the language, you also
build the language up toward your program. As you're writing a program
you may think "I wish Lisp had such-and-such an operator." So you go
and write it. Afterward you realize that using the new operator would
simplify the design of another part of the program, and so on. Language
and program evolve together."

http://www.paulgraham.com/progbot.html

Remark: The same may be claimed about Forth.

This might be a great self experience for some "great hackers" but just
annoying for others who used to work with modular standard librarys and
think that the border of the language and an application should be
somehow fixed to enable those. 

Kay

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


[PythonWin] how to stop execution in interactive window?

2005-07-08 Thread siggy2
Hi All,
(sorry for my bad english)
  I wrote a __tiny__ and __stupid__ recursive script directly into
pythonwin
interactive window with a time.sleep(1) and a print before each
recursion...
I should have taken a closer look at the ending condition (never
satisfied!),
anyway I was quite confident that a control-C would have stopped the
intepreter as it is (incidentally?) when this break sequence is entered
during a screen-i/o of the python interpreter in a CMD prompt...
Instead I discovered my pythonwin session no more responding even
though the output shows that it was still working correctly... and my
other
open files in pythonwin still needing to be saved - my salvation was
that
while I was searching a solution with google, after 984 nested call
~ more than a quarter later, the recursion stack was full and
an exception was raised! ;-P).
So my question is: is there a keystroke combination to stop the
interpreter
in pythonwin interactive window? Or even better
Is there a "pythonwin interactive window" keystrokes list?
(btw: I remember an old post explaining the keystroke to
reset interactive window memory without being forced to
close and open pythonwin - very usefull but I could not find it
anymore...)
TIA!
bye,
   PiErre

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


Python Windows Install Problem (Error #2755)

2005-07-08 Thread Carl, Andrew
Title: Python Windows Install Problem (Error #2755)







    Please find attached a PDF file (removed due to size) containing (2) print-screen images of an error (Code # 2755) occuring during attempted installation of python for windows, version 2.4.1 (on PC using MS2000). Any help would be appreciated!

Thanks,

    Andy Carl



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

Re: import Help Needed - Newbie

2005-07-08 Thread Dan
On 7/7/2005 5:50 PM, GregM wrote:
> A search on google for odbchelper resulted in:
> http://linux.duke.edu/~mstenner/free-docs/diveintopython-3.9-1/py/odbchelper.py
> 
> I think this will help you.
> Greg.
> 

That is the previous example which worked for me fine.  I have this code 
on a network drive so is this why I can't import it as a module?

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


Re: Use cases for del

2005-07-08 Thread Scott David Daniels
Ron Adam wrote:
> Here's something interesting:
> 
> import time
> 
> x = None
> t = time.time()
> for i in range(100):
> if x==None:
> pass
> print 'None:',time.time()-t
> 
> x = 'to-end'
> t = time.time()
> for i in range(100):
> if x=='to-end':
> pass
> print 'String:',time.time()-t
> 
>  >>>
> None: 0.4673515
> String: 0.36133514
> 
> 
> Of course the difference this would make on a single call in practically 
> Nill.
> 
> Anyway, time to call it a night so tomorrow I don't make anymore silly 
> mistakes on comp.lang.python. :)
> 
> Cheers,
> Ron
> 

Try this:
import time
def timed(number):
 nreps = ereps = [None] * number
 t0 = time.time()
 x = None
 for i in ereps:
 if x == None:
 pass
 x = 'to-' + 'end' # make sure equal string, not identical string
 for i in nreps:
 if x == None:
 pass
 t1 = time.time()
 for i in ereps:
 if x == 'to-end':
 pass
 x = None
 for i in nreps:
 if x == 'to-end':
 pass
 t2 = time.time()
 x = None
 for i in ereps:
 if x is None:
 pass
 x = 'to-end'  # magic unnecessary here.
 for i in nreps:
 if x is None: pass
 return t0, t1, t2, time.time()

t0, t1, t2, t3 = timed(100)
print '== None:', t1 - t0
print '== String:', t2 - t1
print 'is None:', t3 - t2
===
== None: 0.57868665
== String: 0.594000101089
is None: 0.3123624

Testing for None should be an is-test (not just for speed). In
older pythons the == result wasn't necessarily same as is-test.
This made sense to me after figuring out NULL in database stuff.
is-test will always work for None despite the other half.  Not
so for bogus objects like:

 >>> class WildCard(object):
 def __eq__(self, other):
 return True

 >>> (WildCard() is None), (None is WildCard())
(False, False)
 >>> (WildCard() == None), (None == WildCard())
(True, True)

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


Re: psycopg simplest problem

2005-07-08 Thread Glauco
Gerhard Haering wrote:
> On Fri, Jul 08, 2005 at 04:23:50PM +0200, Glauco wrote:
> 
>>[...]
>>My problem is to do a middle layer over pycopg for eliminate type 
>>casting problem in postgres in all direction.
>>
>>i've resolved this doing a C extension in python and manipulating only 
>>string and int in my application.
>>
>>this is my example:
>>import sqlvar
>>
>>sql = """insert into mytable (myint, mytext, maydate)
>>  values
>>  (%d,%s,%s);""" % (sqlvar.number(myvalue1), 
>>sqlvar.text(myvalue2), sqlvar.date(myvalue3) )
>>
>>all problem concerning quoting, " ' -> ''", null, None, 0, empty string 
>>is solved by the sqlvar lib. [...]
> 
> 
> Instead of quoting Python values yourself appropriately for each type,
> just let the DB-API module do its work. Use parametrized queries and
> then supply the arguments to the query:
> 
> cur = con.cursor()
> intVal = 42
> textVal = "Jason's house"
> dateVal = datetime.date(2005, 7, 8)
> cur.execute("""
> insert into mytable(myint, mytext, mydate)
> values (%s, %s, %s)
> """, (intval, textVal, dateVal))
> 
> The execute(many) method has an optional second parameter, which is a
> tuple of values for your parametrized query.
> 
> There are different styles to parametrize queries among the various
> DB-API modules. psycopg uses the pyformat one, where you just use %s as
> placeholders.
> 
> It will happily quote all Python values of types int, str, date, float,
> etc.  for you. It's also possible to teach it how to quote other custom
> data types, but you'll normally not need this.
> 
> HTH,
> 
> -- Gerhard

Gerhard thank you very much, this example explain me some idea, but 
anyway don't resolve the core question.
In you example when dateVal is a None or textVal is none.
argument x must be DateTime, not None.
so i must manipulate for the empty string or None cases



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


Re: f*cking re module

2005-07-08 Thread Kay Schluehr
jwaixs schrieb:
> arg... I've lost 1.5 hours of my precious time to try letting re work
> correcty.

1.5 hours are not enough for understanding regular expressions. But to
be honest: I never had the patience to learn them accurately and I
guess I will never do so as well as I don't ever learn sed or awk or
Perl. When my brain hit regexp syntax the first time I thought about
writing a little language that translates readable Python expressions
in awkward regexps as an intermediary language which gets finally
compiled into a finite state-machine descriptions. Fortunately I was
not the first one who considered his mental weakness/aesthetic
repulsion as a virtue:

http://home.earthlink.net/~jasonrandharper/reverb.py

I never took time for a critical review. The module just worked for my
purposes.

Kay

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


Re: Pattern question

2005-07-08 Thread Scott David Daniels
cantabile wrote:
> bruno modulix a écrit :
>>You may want to have a look at the Factory pattern...
>> ... demo of class Factory ...

Taking advantage of Python's dynamic nature, you could simply:
 # similarly outrageously oversimplified dummy example
 class Gui(object):
def __init__(self, installer):
self.installer = installer

 class PosixGui(Gui):
 pass

 class Win32Gui(Gui):
 pass

 if os.name == 'posix':
 makeGui = PosixGui
 elif os.name == 'win32':
 makeGui = Win32Gui
 else:
 raise "os %s not supported" % os.name


 class Installer(object):
 def __init__(self, guiFactory):
 self.gui = guiFactory(self)

 def main():
 inst = Installer(makeGui)
 return inst.gui.main()

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


Re: [PythonWin] how to stop execution in interactive window?

2005-07-08 Thread F. GEIGER
Right-click on the Pythonwin icon in the tray and select "Break into running
code".

HTH
Franz GEIGER


<[EMAIL PROTECTED]> schrieb im Newsbeitrag
news:[EMAIL PROTECTED]
> Hi All,
> (sorry for my bad english)
>   I wrote a __tiny__ and __stupid__ recursive script directly into
> pythonwin
> interactive window with a time.sleep(1) and a print before each
> recursion...
> I should have taken a closer look at the ending condition (never
> satisfied!),
> anyway I was quite confident that a control-C would have stopped the
> intepreter as it is (incidentally?) when this break sequence is entered
> during a screen-i/o of the python interpreter in a CMD prompt...
> Instead I discovered my pythonwin session no more responding even
> though the output shows that it was still working correctly... and my
> other
> open files in pythonwin still needing to be saved - my salvation was
> that
> while I was searching a solution with google, after 984 nested call
> ~ more than a quarter later, the recursion stack was full and
> an exception was raised! ;-P).
> So my question is: is there a keystroke combination to stop the
> interpreter
> in pythonwin interactive window? Or even better
> Is there a "pythonwin interactive window" keystrokes list?
> (btw: I remember an old post explaining the keystroke to
> reset interactive window memory without being forced to
> close and open pythonwin - very usefull but I could not find it
> anymore...)
> TIA!
> bye,
>PiErre
>


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


Re: Options to integrate Python modules into native windows applications

2005-07-08 Thread Do Re Mi chel La Si Do
Re Hi !


I had only test (little) Python for .Net ; OK, it's run. It is possible to 
make winform from Python. And I had try to use Python for .Net from my 
COM-server, and from VBscript. OK also.

Plus,  I had try to call my Python-server-COM, from C# : OK it's run.  C# 
can use Python.

And, I had try to make, in Internet-Explorer, a page, with Html+javascript, 
who call the Python-server-COM, and at the same time, contains an 
object-assembly dotNET, who call also the server-COM. It is twisted, but 
it's run OK (that opens two sessions of the server-COM, which communicate by 
mmap).

* sorry for my bad english *


@-salutations

Michel Claveau




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


socket code

2005-07-08 Thread ronpro
Hello,

I'm trying to create a broadcast socket in some portable code (windows XP & 
mandrake linux).  When I run the following lines through idle:

import socket
s = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
s.connect( ('', 17100) )

On windows, connect() returns and I have a broadcast socket to which I can 
write.  One LINUX connect() just tells me 'Permission denied'.

Does anybody know why?  Any thoughts on how I can get around this?  I have to 
transmitt data to an old system.  The system only reads broadcast data on port 
17100.

Thanks for the input.

Ron Provost

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


Re: Use cases for del

2005-07-08 Thread Daniel Dittmar
Scott David Daniels wrote:
> Testing for None should be an is-test (not just for speed). In
> older pythons the == result wasn't necessarily same as is-test.
> This made sense to me after figuring out NULL in database stuff.

NULL in SQL databases has nothing to do with Python None. I'm quite sure 
that None == None always returned boolean true.

In a SQL database, NULL = NULL will always return NULL, which is prety 
much the same as FALSE. Except for NOT, AS NOT NULL is NULL.

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


Re: PyX, matplotlib, 3D & LaTeX

2005-07-08 Thread Fernando Perez
Francisco Borges wrote:

> I like PyX, use it a lot and would suggest it as a beter plotting
> library than the ones at Scipy (for as long as you don't need on-screen
> plotting).

FWIW, the plotting support in scipy is essentially unmaintained and abandoned,
since the advent of matplotlib.  It hasn't been officially deprecated, though
I'm wondering if perhaps we should do that just to save users the aggravation.

> I just saw matplotlib this week while searching for something that
> would do 3D, it seemed pretty nice and it does have many more features
> than PyX, is certainly more mature than PyX and more high level.

I use both extensively, so I can comment a bit: matplotlib is a fantastic
_plotting_ library, and it has very extensive support for doing all kinds of
plotting-related things easily and with high output quality.  As of v. 0.82,
its latex support is on-par with Pyx's, since now you can set it to do _all_
your text rendering (including ticks, numbers, etc.) via latex.  It gets a bit
slower (much like pyx), but the quality is perfect (it's true latex running
underneath).

Besides, matplotlib provides widgets for on-screen rendering and embedding into
GUI applications, something which can be very important, and outside pyx's
domain of interest.

Where pyx shines is for generating what I call 'diagrams' for lack of a better
term: drawings that don't fall well into the model of 'plot these data points
at these coordinates' but that rather involve algorithmically-driven
positioning of geometric elements.  This power is best seen (despite my poor
description) by just looking at the pyx examples page, which shows how even
relatively complex diagrams can be done in pyx with very little code, and give
stunning results.

While you can plot with pyx, and draw with matplotlib, I feel that they each
have their strengths, and I use both.  I love both, and I feel they complement
each other extremely well.

For 3d plotting in python, VTK and mayavi are my workhorses, and I'm quite
happy with that solution so far.

> On the other hand PyX: LaTeX support seems to be way ahead and it can
> be used to draw (very funky) figures.

[have a look at recent matplotlib for proper latex]

Cheers,

f

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


Re: socket code

2005-07-08 Thread Grant Edwards
On 2005-07-08, <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I'm trying to create a broadcast socket in some portable code (windows XP & 
> mandrake linux).  When I run the following lines through idle:
>
> import socket
> s = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
> s.connect( ('', 17100) )
>
> On windows, connect() returns and I have a broadcast socket to
> which I can write.  One LINUX connect() just tells me
> 'Permission denied'.
>
> Does anybody know why?  Any thoughts on how I can get around
> this?  I have to transmitt data to an old system.  The system
> only reads broadcast data on port 17100.

Didn't we just answer this question for you two weeks ago?

http://groups-beta.google.com/group/comp.lang.python/browse_frm/thread/6447ef29cf613660/dcdc52690aa562e1

-- 
Grant Edwards   grante Yow!  I'm RELIGIOUS!! I
  at   love a man with a
   visi.comHAIRPIECE!! Equip me with
   MISSILES!!
-- 
http://mail.python.org/mailman/listinfo/python-list


file handling in a server (.py) file using xmlrpc

2005-07-08 Thread uwb

I've got a call to glob in a .py file sitting in an apache cgi-bin directory
which refuses to work while the exact same code works from a python console
session.

I'm guessing that in order to read or write files from any sort of a script
file sitting in the cgi-bin directory on a server, something has to be set
to allow such activity.  I'd appreciate it if anybody with as clue as to
what that was could tell me about it.  



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


Compiler error recovery [was: Re: f*cking re module]

2005-07-08 Thread François Pinard
[Rocco Moretti]
> François Pinard wrote:

> > I once worked with a PL/I compiler (on a big IBM mainframe), which was
> > trying to be helpful by spitting pages of:

> > Error SUCH AND SUCH, assuming that THIS AND THIS was meant.

> > and continuing compilation nevertheless.  It was a common joke to say
> > that PL/I would compile some random valid program out of any garbage!

> We may laugh now (and then), but it was likely a valid design decision
> at the time. [...] Error-checking-by-compiling only "works" if you
> have cheap computing power you can run attended. (Can you imagine what
> TDD would be like if you had to wait 24+ hrs between code executions?)

Of course, all granted.[1]

The only way to be really productive, in those times, was to round-robin
oneself between a dozen simultaneous projects, or so, pushing on each
one in turn while concentrating hard to avoid spoiling one run, before
resubmitting that project and moving to the next.  This kind of seek for
productivity was somehow exhausting for the mind.

Nowadays, things are infinitely easier.  Even if easier, Python is sadly
"original" in stopping at the first syntax error, probably for avoiding
all concerns about error recovery, which is not always an easy matter.
I suspect it might be easier with Python than with many other languages.


[1] PL/I was aggressively aiming both syntactic and semantic recovery.

-- 
François Pinard   http://pinard.progiciels-bpi.ca
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Modules for inclusion in standard library?

2005-07-08 Thread Gregory Piñero
Has anyone recommended ftputil?  Either add that to the library or
make the existing ftp module more high level would be my suggestion.

http://www.sschwarzer.net/python/python_software.html 

-Greg


On 7 Jul 2005 05:38:28 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED] > wrote:
> 1. LDAP module should be included in the base distro.
> 2. DNS library really should be included in the base library, I emailed
> Anthony Baxter and he replied, saying it was almost done.
> 3. Ipython would be nice
>
> --
> http://mail.python.org/mailman/listinfo/python-list 
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: f*cking re module

2005-07-08 Thread Mike Meyer
Rocco Moretti <[EMAIL PROTECTED]> writes:
> François Pinard wrote:
> If your program had only minor errors, there was likely a good chance
> that the compiler might guess correctly, and your program would
> compile to what you wanted in the first place. If not, by continuing
> on, the compiler can flag additional errors later in your code,
> allowing you to fix those bugs sooner. (Instead of choking on the
> first one and refusing to continue.)
>
> Error-checking-by-compiling only "works" if you have cheap computing
> power you can run attended. (Can you imagine what TDD would be like if
> you had to wait 24+ hrs between code executions?)

Yeah, but how many modern compilers give up after only one error? Most
compilers will reset the parser to a known state, and keep on trying
to parse the input. The none state may be erronious, leading to bogus
errors - possibly lots of them! - but at least it keeps trying. They
don't have to try to do DWIM to do this; they just have to have a
reasonable way to reset.

I only know one compiler that punts after the first error. Even with
lots of cheap computing power, it's still very annoying.

Come to think of it, Python does this, doesn't it? For some reason,
that doesn't annoy me. Maybe because I don't think of it as a
edit/compile/run cycle, but as an edit/run cycle, and I expect those
stop after one errror.

   http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: file handling in a server (.py) file using xmlrpc

2005-07-08 Thread Jeremy Jones
uwb wrote:

>I've got a call to glob in a .py file sitting in an apache cgi-bin directory
>which refuses to work while the exact same code works from a python console
>session.
>
>I'm guessing that in order to read or write files from any sort of a script
>file sitting in the cgi-bin directory on a server, something has to be set
>to allow such activity.  I'd appreciate it if anybody with as clue as to
>what that was could tell me about it.  
>
>
>
>  
>
So, what do you mean "refuses to work"?  Is the cgi script not executing 
at all?  Spitting out an error?  If so, what error?  (And is it an error 
to the browser calling the cgi script, or in your apache logs?)

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


Re: VC++ linking problem

2005-07-08 Thread Miki Tebeka
Hello J,

> I will put a hold on compiling the latest version until I really have to.
> I will probably switch to VC 7 before that.
You can use the (free) MinGW  compiler (www.mingw.org). It can build
extension that link to Python 2.4.
Just use distutils setup.py and run 'python setup.py build_ext -c mingw32'

HTH.
--

Miki Tebeka <[EMAIL PROTECTED]>
http://tebeka.bizhat.com
The only difference between children and adults is the price of the toys


pgp2AzDhXSn5B.pgp
Description: PGP signature
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Use cases for del

2005-07-08 Thread Roy Smith
Daniel Dittmar  <[EMAIL PROTECTED]> wrote:
> In a SQL database, NULL = NULL will always return NULL, which is prety 
> much the same as FALSE. Except for NOT, AS NOT NULL is NULL.

SQL's NULL is very much akin to the IEEE NaN (not quite, but close).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: map/filter/reduce/lambda opinions and background unscientific mini-survey

2005-07-08 Thread Steven Bethard
Christopher Subich wrote:
> Ron Adam wrote:
>> I think the association of (lambda) to [list_comp] is a nice 
>> distinction.  Maybe a {dictionary_comp} would make it a complete set. ;-)
> 
> Yeah, dictionary comprehensions would be an interesting feature. :) 
> Syntax might be a bit unwieldy, though, and I doubt they'd be used often 
> enough to be worth implementing, but still neat.

Dict comprehensions were recently rejected:
 http://www.python.org/peps/pep-0274.html
The reason, of course, is that dict comprehensions don't gain you much 
at all over the dict() constructor plus a generator expression, e.g.:
 dict((i, chr(65+i)) for i in range(4))

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


[ANNOUNCE] pysudoku 0.1

2005-07-08 Thread Glenn Hutchings
Announcing PySuDoku version 0.1, yet another Sudoku program written in
Python.  But this one has features that I don't see in any of the others:

  * Cute interactive solving mode via Tkinter.
  * Puzzle generation option, for making your own puzzles.
  * Nicely packaged for installation via distutils.

Sudoku, for the remaining 27 people in the world who don't know already, is
a logic puzzle where you have to fill in the numbers in a 9x9 grid so that
each row, column and 3x3 box has exactly one of the numbers 1-9 in them.

You can get pysudoku at:

http://www.freewebtown.com/zondo/programs

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


Having trouble importing against PP2E files

2005-07-08 Thread Charles Krug
List:

I'm trying to use the example files from Programming Python, 2nd Ed.

I've copied them into c:\Python24\Examples\PP2E.

Launching any of the examples programs by themselves seems to work
spiffily.

Using regedit, I appended "c:\Python24\Examples\PP2E" to Pythonpath

from the immediate window, executing the line:

from PP2E.launchmodes import PortableLauncher

Raises the exception:

Import Error: no module named PP2E.launchmodes

However if I copy launchmodes.py into my work directory, it imports
successfully.

Both "Examples" above and "Examples\PP2E" contain the __init__.py file.

Obviously, I'm missing a setup step here.

What magic do I need to perform to get Python to find modules in the
Examples heirarchy?

Is there any way to check from the immediate window where Python will
search for modules?  Pythonpath appears to be correct, but the file
isn't importing unless I copy it to the current directory.

Thanx


Charles

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


Re: Snakespell

2005-07-08 Thread Skip Montanaro

peter> I used to use Snakespell from scriptfoundry to do spellchecking
peter> on my website (www.peterbe.com/search?q=pyton) but now that I've
peter> moved server and wiped the old machine I forgot to take with me
peter> the Snakespell code.

peter> www.scriptfoundry.com where it used to live seems to have expired.

peter> Does anybody know where I can get hold of this? (or even send a
peter> tgz to me)

Try the Wayback Machine:

http://www.archive.org/

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


Re: Learning Python - IM Wiki

2005-07-08 Thread Miki Tebeka
Hello Jorge,

>Is there some sort of a Wiki where I could post the code and have
>advice on what, how and where to improve? Or should I post the code it
>here?
You can always get help here, the Python community is *very* helpful.

If you prefer a Wiki, try www.wikispaces.org for free Wiki hosting.

Bye.
--

Miki Tebeka <[EMAIL PROTECTED]>
http://tebeka.bizhat.com
The only difference between children and adults is the price of the toys


pgp87cLo0bTVM.pgp
Description: PGP signature
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Seeking IDE

2005-07-08 Thread Nick Vargish
"Jags" <[EMAIL PROTECTED]> writes:

>   If you don't like that, you could use any of the following editors:
> EditPlus, TextPad, UltraEdit, WingIDE, Komodo (from ActiveState) or
> jEdit. All these are Windows based.

Komodo is available for Linux and  Windows, and ActiveState will be
releasing a version for OS X later this  year.

jEdit claims to run on many platforms since it's written in Java. 

WingIDE has downloads for Linux, OS X, and Windows.

Personally, I favor (X)Emacs and zsh for my DE, but I'm one of those
people who prefer a looser coupling between tools than you typically
get with a monolithic IDE.

Nick

-- 
Nick Vargish :: http://nick.vargish.org


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


can't start new thread

2005-07-08 Thread jdonnell
I'm at a loss on this one. I have a multithreaded script that gets
'thread.error: can't start new thread' errors seemingly randomly. I
just got it right after starting the script when it was trying to
create the 5th thread. Usually the script will run for a while before
throwing this error, but sometimes it throws it right away.

This script has worked without a problem for months, but I did make
some changes to it recently. I don't see how those changes would cause
this error though. It's also on a VPS so it's possible that they
changed something in the OS. Does anyone have any suggestions about
possible causes of this error?

I'm using Python 2.2.3 on a custom vps version of FC1.

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


Re: Options to integrate Python modules into native windows applications

2005-07-08 Thread Philippe C. Martin
Thanks Michel et salutations.

Your english is fine.

A+

Philippe



Do Re Mi chel La Si Do wrote:

> Re Hi !
> 
> 
> I had only test (little) Python for .Net ; OK, it's run. It is possible to
> make winform from Python. And I had try to use Python for .Net from my
> COM-server, and from VBscript. OK also.
> 
> Plus,  I had try to call my Python-server-COM, from C# : OK it's run.  C#
> can use Python.
> 
> And, I had try to make, in Internet-Explorer, a page, with
> Html+javascript, who call the Python-server-COM, and at the same time,
> contains an object-assembly dotNET, who call also the server-COM. It is
> twisted, but it's run OK (that opens two sessions of the server-COM, which
> communicate by mmap).
> 
> * sorry for my bad english *
> 
> 
> @-salutations
> 
> Michel Claveau

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


Re: Learning Python - IM Wiki

2005-07-08 Thread gene tani
The python tutor good for this

http://mail.python.org/mailman/listinfo/tutor

Miki Tebeka wrote:
> Hello Jorge,
>
> >Is there some sort of a Wiki where I could post the code and have
> >advice on what, how and where to improve? Or should I post the code it
> >here?
> You can always get help here, the Python community is *very* helpful.
>
> If you prefer a Wiki, try www.wikispaces.org for free Wiki hosting.
>
> Bye.
> --
> 
> Miki Tebeka <[EMAIL PROTECTED]>
> http://tebeka.bizhat.com
> The only difference between children and adults is the price of the toys

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


Re: distutils is able to handle...

2005-07-08 Thread François Pinard
[George Sakkis]

> I would suggest SCons (http://www.scons.org/), a modern
> make/automake/autoconf replacement that uses python for its
> configuration files instead of yet another cryptic half-baked
> mini-language or XML.

Python might not be the most legible way to describe what a Makefile
has to describe, it asks for more syntax that we really need.  On the
other hand, it is convenient having Python handy for extending the
capabilities of your description file, that is, having Python has a
provisional, supplementary card, instead the only and mandatory one.

I'm exploring with some pleasure Bram Moolenaar's A-A-P tool (see
http://www.a-a-p.org).  This is implemented in Python, but does not
force people into Python syntax for Makefiles.  It might be a nicer
compromise.  As usual from Bram, documentation is abundant and useful.

-- 
François Pinard   http://pinard.progiciels-bpi.ca
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Snakespell

2005-07-08 Thread [EMAIL PROTECTED]
Tried that. They don't store the .tar.gz file. It becomes a blank page.

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


Re: Polling, Fifos, and Linux

2005-07-08 Thread Donn Cave
In article <[EMAIL PROTECTED]>,
 Andreas Kostyrka <[EMAIL PROTECTED]> wrote:
> On Thu, Jul 07, 2005 at 10:21:19PM -0700, Jacob Page wrote:
> > Jeremy Moles wrote:
> > > This is my first time working with some of the more lower-level python
> > > "stuff." I was wondering if someone could tell me what I'm doing wrong
> > > with my simple test here?
> > > 
> > > Basically, what I need is an easy way for application in userspace to
> > > simply echo values "down" to this fifo similar to the way proc files are
> > > used. Is my understanding of fifo's and their capabilities just totally
> > > off base?
> > 
> > You shouldn't need to use select.poll(), unless I'm missing something. 
> > I was able to get the following to work:

> Ok, you miss something ;) The program you proposed does busy waiting
> and without a time.sleep call will consume 100% CPU time :(

I don't doubt that it would, but that's because he (like the
original poster) open the file with O_NONBLOCK.  From my point
of view that's a self-inflicted injury, but if you start from
the assumption that O_NONBLOCK is needed for some reason, then
the poll makes sense.  In normal blocking mode, select+read is
identical to plain read for any kind of file that supports select.

> Actually, with a named fifo the situation gets even nastier:
> 
> import os, select, time
> 
> fifo = os.open("fifo", os.O_RDONLY)
> 
> while True:
> print "SELECT", select.select([fifo],[],[])
> string = os.read(fifo, 1)
> if len(string):
> print string
> else:
> nf = os.open("fifo", os.O_RDONLY)
> os.close(fifo)
> fifo = nf
> # Perhaps add a delay under an else
> 
> The problem is, that select (and poll) show a End-Of-File condition by 
> returning
> ready to read. But on a FIFO, when the first client terminates, the reading
> end goes into a EOF state till somebody else reopens the fifo for writing.
> 
> [This bit of wisdom comes Advanced Programming in the UNIX Environment by 
> W.R. Stevens p. 400: 'If we encounter the end of file on a descriptor, that
> descriptor is considered readbale by select.']
> 
> closing the old descriptor must be done after opening a new one, or else you
> get a tiny moment where a O_WRONLY client is not able to open the file.
> This way there is always a reading client of the fifo.

OK, but in more detail, what happens in these two scenarios?
In your version, what happens when the writer opens a pipe
pipe that the reader is about to close?  Who reads the data?

On the other hand, if you close the pipe first, what happens
to the writer who happens to try to open the pipe at that moment?

Luckily, as far as I know, we don't have to worry about the
first one, since if data could be lost in this way it would
be much more complicated to close a file descriptor without
running this risk.

But I don't see the second one as much of a problem either.
The writer blocks - so?

Now, what would really be useful is a way for the writer to
detect whether open will block, and potentially time out.

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


pygtk does ... ?

2005-07-08 Thread Thomas Bartkus
I am experimenting (flailing around?) with glade and python.  Both under MS
Windows and Linux.

I understand why I want to "import gtk"
It gives me access to the critical gui program loop
   gtk.main() and main_quit()

I am also very grateful for
  import gtk.glade
This lets me open my xml format glade file
   gtk.glade.XML("MyGladeFile.glade")
full of defined gtk widgets and the function
   signal_autoconnect(dic)
which lets me hang my Python callback routines onto those gtk widgets.

Whew!  At least I've gotten started. It sure wasn't easy.

The question is -
   What the heck is the pygtk library for?

help(pygtk) tells me not much more than -
   "Python bindings for the GTK+ widget set"

Why would I want to "import pygtk" with it's single function
"require(version)"?
What is it supposed to do?  Where does it fit in?

Or does it fit in at all?
Thomas Bartkus





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


Re: Lisp development with macros faster than Python development?..

2005-07-08 Thread Kirk Job Sluder
"Kay Schluehr" <[EMAIL PROTECTED]> writes:

> This might be a great self experience for some "great hackers" but just
> annoying for others who used to work with modular standard librarys and
> think that the border of the language and an application should be
> somehow fixed to enable those. 

In what way do lisp macros prevent the creation of modular libraries?
Common Lisp does does have mechanisms for library namespaces, and in
practice a macro contained within a library is not that much different
from a function contained in a library or a class contained in a
library.

Macros just provide another mechanism for creating useful
domain-specific abstractions.  The primary advantage to macros is that
you can create abstractions with functionality that is not easily
described as either a function or a class definition.


> Kay 

-- 
Kirk Job-Sluder
"The square-jawed homunculi of Tommy Hilfinger ads make every day an
existential holocaust."  --Scary Go Round
-- 
http://mail.python.org/mailman/listinfo/python-list


FORTRAN like formatting

2005-07-08 Thread Einstein, Daniel R
Title: FORTRAN like formatting






Hi,


Sorry for this, but I need to write ASCII from my Python to be read by FORTRAN and the formatting is very important. Is there any way of doing anything like:

write(*,'(3(" ",1pe20.12))') (variable)


In other words, I want three columns 20 spaces long, with 12 digits after the decimal and so on and so forth.


What I am really looking for is some general indication of how to do such formatting in Python.


Any help?


Dan



Daniel R Einstein, PhD
Biological Monitoring and Modeling
Pacific Northwest National Laboratory
P.O. Box 999; MSIN P7-59
Richland, WA 99352
Tel: 509/ 376-2924
Fax: 509/376-9064
[EMAIL PROTECTED]




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

Re: Python Module Exposure

2005-07-08 Thread Jacob Page
Thomas Lotze wrote:
> Jacob Page wrote:
> 
>>better-named,
> 
> Just a quick remark, without even having looked at it yet: the name is not
> really descriptive and runs a chance of misleading people. The example I'm
> thinking of is using zope.interface in the same project: it's customary to
> name interfaces ISomething.

I've thought of IntervalSet (which is a very long name), IntSet (might 
be mistaken for integers), ItvlSet (doesn't roll off the fingers), 
ConSet, and many others.  Perhaps IntervalSet is the best choice out of 
these.  I'd love any suggestions.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: file handling in a server (.py) file using xmlrpc

2005-07-08 Thread uwb
Jeremy Jones wrote:

> uwb wrote:
> 
>>I've got a call to glob in a .py file sitting in an apache cgi-bin
>>directory which refuses to work while the exact same code works from a
>>python console session.
>>
>>I'm guessing that in order to read or write files from any sort of a
>>script file sitting in the cgi-bin directory on a server, something has to
>>be set
>>to allow such activity.  I'd appreciate it if anybody with as clue as to
>>what that was could tell me about it.
>>
>>
>>
>>  
>>
> So, what do you mean "refuses to work"?  Is the cgi script not executing
> at all?  Spitting out an error?  If so, what error?  (And is it an error
> to the browser calling the cgi script, or in your apache logs?)
> 
> Jeremy Jones


The script executes, no error messages, but the glob call turns up nothing
while the identical call running from a console does in fact turn up files
names as expected.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: FORTRAN like formatting

2005-07-08 Thread Cyril BAZIN
Hello,

I don't anderstand very well Fortran syntax, but want you say
something like that:

def toTable(n1, n2, n3):
return "%20s%20s%20s"%tuple(["%.12f"%x for x in [n1, n2, n3]])


Example:
>>> import math
>>> toTable(math.pi, 10, 8.2323)
'  3.141592653590 10.  8.2323'

If it is not that, please could you give an example of input and
output of your code?

Cyril

On 7/8/05, Einstein, Daniel R <[EMAIL PROTECTED]> wrote:
>  
> 
> Hi, 
> 
> Sorry for this, but I need to write ASCII from my Python to be read by
> FORTRAN and the formatting is very important. Is there any way of doing
> anything like: 
> 
> write(*,'(3(" ",1pe20.12))') (variable) 
> 
> In other words, I want three columns 20 spaces long, with 12 digits after
> the decimal and so on and so forth. 
> 
> What I am really looking for is some general indication of how to do such
> formatting in Python. 
> 
> Any help? 
> 
> Dan 
>  
> 
> Daniel R Einstein, PhD
>  Biological Monitoring and Modeling
>  Pacific Northwest National Laboratory
>  P.O. Box 999; MSIN P7-59
>  Richland, WA 99352
>  Tel: 509/ 376-2924
>  Fax: 509/376-9064
>  [EMAIL PROTECTED] 
>  
> --
> http://mail.python.org/mailman/listinfo/python-list
> 
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Legacy data parsing

2005-07-08 Thread gov
Hi,

I've just started to learn programming and was told this was a good
place to ask questions :)

Where I work, we receive large quantities of data which is currently
all printed on large, obsolete, dot matrix printers.  This is a problem
because the replacement parts will not be available for much longer.

So I'm trying to create a program which will capture the fixed width
text file data and convert as well as sort the data (there are several
different report types) into a different format which would allow it to
be printed normally, or viewed on a computer.

I've been reading up on the Regular Expression module and ways in which
to manipulate strings however it has been difficult to think of a way
in which to extract an address.

Here's an example of the raw text that I have to work with:


ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:


FOR/POUR AL/LA:  20
  CORR TYP:  A1B 2C3  P:3 CHNGD/CHANG
  LANG: E CONS/REGR: ###
  MRS XXX X XXX
  ### X ST  DD   TYP:   P:6
CHNGD/CHANG
  MONCTON NBLANG: E CONS/REGR:
###
MRS XXX X  XXX
#

###-###-#

ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:


FOR/POUR AL/LA:  30
  BOTH TYP:  A1B 2D3  P:3 CHNGD/CHANG
  LANG: E CONS/REGR: ###
  MISS  X
  ###  ST
  MONCTON NB

EARNINGS VITAL INFORMATION/RENSEIGNEMENTS ESSENTIELS SUR LES GAINS:
***

(the # = any number, and the X's are just regular text)
I would like to extract the address information, but the two different
text objects on the right hand side are difficult to remove.  I think
it would be easier if I could just extract a fixed square of
information, but I don't have a clue as to how to go about it.

If anyone could give me suggestions as to methods in sorting this type
of data, it would be appreciated.

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


Re: file handling in a server (.py) file using xmlrpc

2005-07-08 Thread Jeremy Jones
uwb wrote:

>Jeremy Jones wrote:
>
>  
>
>>uwb wrote:
>>
>>
>>
>>>I've got a call to glob in a .py file sitting in an apache cgi-bin
>>>directory which refuses to work while the exact same code works from a
>>>python console session.
>>>
>>>I'm guessing that in order to read or write files from any sort of a
>>>script file sitting in the cgi-bin directory on a server, something has to
>>>be set
>>>to allow such activity.  I'd appreciate it if anybody with as clue as to
>>>what that was could tell me about it.
>>>
>>>
>>>
>>> 
>>>
>>>  
>>>
>>So, what do you mean "refuses to work"?  Is the cgi script not executing
>>at all?  Spitting out an error?  If so, what error?  (And is it an error
>>to the browser calling the cgi script, or in your apache logs?)
>>
>>Jeremy Jones
>>
>>
>
>
>The script executes, no error messages, but the glob call turns up nothing
>while the identical call running from a console does in fact turn up files
>names as expected.
>  
>
Wild guess, but I'm thinking your webserver process doesn't have 
permissions to look in your directory. 

Following is alternating root shell and IPython shell:

[EMAIL PROTECTED]:~ # chmod 777 /bam
[EMAIL PROTECTED]:~ # ls -ld /bam
drwxrwxrwx  2 root root 96 Jul  8 14:53 /bam

In [4]: glob.glob("/bam/*txt")
Out[4]: ['/bam/foo.txt', '/bam/bar.txt']

[EMAIL PROTECTED]:~ # chmod 000 /bam
[EMAIL PROTECTED]:~ # ls -ld /bam
d-  2 root root 96 Jul  8 14:53 /bam

In [5]: glob.glob("/bam/*txt")
Out[5]: []


HTH,

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


Re: Legacy data parsing

2005-07-08 Thread Jeremy Jones
gov wrote:

>Hi,
>
>  
>


>If anyone could give me suggestions as to methods in sorting this type
>of data, it would be appreciated.
>
>  
>
Maybe it's overkill, but I'd *highly* recommend David Mertz's excellent 
book "Text Processing in Python": http://gnosis.cx/TPiP/  Don't know 
what all you're needing to do, but that small snip smells like it needs 
a state machine which this book has an excellent, simple one in (I 
think) chapter 4. 

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


Re: Legacy data parsing

2005-07-08 Thread Miki Tebeka
Hello gov,

> Here's an example of the raw text that I have to work with:
> 
> 
> ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:
> 
> 
> FOR/POUR AL/LA:  20
>   CORR TYP:  A1B 2C3  P:3 CHNGD/CHANG
>   LANG: E CONS/REGR: ###
>   MRS XXX X XXX
>   ### X ST  DD   TYP:   P:6
> CHNGD/CHANG
>   MONCTON NBLANG: E CONS/REGR:
> ###
> MRS XXX X  XXX
> #
> 
> ###-###-#
> 
> ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:
> 
> 
> FOR/POUR AL/LA:  30
>   BOTH TYP:  A1B 2D3  P:3 CHNGD/CHANG
>   LANG: E CONS/REGR: ###
>   MISS  X
>   ###  ST
>   MONCTON NB
> 
> EARNINGS VITAL INFORMATION/RENSEIGNEMENTS ESSENTIELS SUR LES GAINS:
> ***
> 
> (the # = any number, and the X's are just regular text)
> I would like to extract the address information, but the two different
> text objects on the right hand side are difficult to remove.  I think
> it would be easier if I could just extract a fixed square of
> information, but I don't have a clue as to how to go about it.
> 
> If anyone could give me suggestions as to methods in sorting this type
> of data, it would be appreciated.
Maybe regular expression are too difficult for this. I'd try one of the
parsing toolkits (such as PLY, PyParsing ...), it might be more suitable
for the job.

HTH.
--

Miki Tebeka <[EMAIL PROTECTED]>
http://tebeka.bizhat.com
The only difference between children and adults is the price of the toys


pgpcPcZBclyGq.pgp
Description: PGP signature
-- 
http://mail.python.org/mailman/listinfo/python-list

Defending Python

2005-07-08 Thread Charlie Calvert
I perhaps rather foolishly wrote two article that mentioned Python as a 
good alternative language to more popular tools such as C# or Java. I 
encountered more resistance than I had expected. If someone who really 
knows a lot about Python would like to go over to the CodeFez website 
and defend Python a bit better than I can, that would be appreciated.

The articles are called "The War of the Virtual Bills," and "Ranking 
Languages: Fear as a Career Move."

Here are the links:

http://www.codefez.com

http://www.codefez.com/Home/tabid/36/articleType/ArticleView/articleId/135/RankingLanguagesFearasaCareerMove.aspx

http://www.codefez.com/Home/tabid/36/articleType/ArticleView/articleId/134/TheWaroftheVirtualBills.aspx

Thanks.

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


qustion about build Python on the Solaris 9

2005-07-08 Thread Hu, Bizhong








Greeting to All:

 

I am trying to build python-2.4.1 on the sun solairs 9 on
SPARC hardware as a 64 bits application.

I have all the compiler switch setup and python build is
completed. But when the makefile try to 

Run python setup.py command, It coredumped. My question is
that is anyone know if python can

Be build as 64 bits application on SPARC ???

 

Thanks in advance.

 

Regards

 

Bizhong






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

Re: f*cking re module

2005-07-08 Thread George Sakkis
"Mike Meyer" <[EMAIL PROTECTED]> wrote:

> I only know one compiler that punts after the first error. Even with
> lots of cheap computing power, it's still very annoying.
>
> Come to think of it, Python does this, doesn't it? For some reason,
> that doesn't annoy me. Maybe because I don't think of it as a
> edit/compile/run cycle, but as an edit/run cycle, and I expect those
> stop after one errror.

Yes, the very short edit/run cycle is one reason. A second one is that
syntax errors are in general a pretty small percentage compared to
runtime errors (at least for anyone that has been using python for a
week or more), so even if the syntax checker did report all of them at
once it wouldn't make much difference in the overall debugging time.
Third, at least one editor (Komodo) reports syntax error on the fly as
you edit and this helps saving a few seconds now and then.

George

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


Re: Use cases for del

2005-07-08 Thread Ron Adam
George Sakkis wrote:

> 
> How about using the right way of comparing with None ?
> 
> x = None
> t = time.time()
> for i in range(100):
>   if x is None:
>   pass
> print 'is None:',time.time()-t
> 
> I get:
> 
> None: 0.54952316
> String: 0.498000144958
> is None: 0.45047684

Yep, that occurred to me after I posted.  :-)



>>Anyway, time to call it a night so tomorrow I don't make anymore silly
>>mistakes on comp.lang.python. :)
> 
> 
> That would be a great idea ;-) An even greater idea would be to give up
> on this "None should mean undefined" babble; it looks like a solution
> looking for a problem and it raises more complications than it actually
> solves (assuming it does actually solve anything, which is not quite
> obvious).

Already gave up on it as a serious idea quite a while ago and said so in 
several posts.

 From two days ago... in this same thread ... I said.

 >>Yes, I agree using None as an alternative to delete currently is 
 >>unacceptable.

Cheers,
Ron

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


Re: Having trouble importing against PP2E files

2005-07-08 Thread Elmo Mäntynen
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Charles Krug wrote:
> List:
> 
> I'm trying to use the example files from Programming Python, 2nd Ed.
> 
> I've copied them into c:\Python24\Examples\PP2E.
> 
> Launching any of the examples programs by themselves seems to work
> spiffily.
> 
> Using regedit, I appended "c:\Python24\Examples\PP2E" to Pythonpath
> 
> from the immediate window, executing the line:
> 
> from PP2E.launchmodes import PortableLauncher
> 
> Raises the exception:
> 
> Import Error: no module named PP2E.launchmodes
> 
> However if I copy launchmodes.py into my work directory, it imports
> successfully.
> 
> Both "Examples" above and "Examples\PP2E" contain the __init__.py file.
Are both Examples and PP2E packages? In python if a folder is meant to
represent a package it should iclude the above mentioned file
__init__.py and by saying the above your suggesting that PP2E is a
package inside the package Examples.
> 
> Obviously, I'm missing a setup step here.
> 
> What magic do I need to perform to get Python to find modules in the
> Examples heirarchy?
> 
> Is there any way to check from the immediate window where Python will
> search for modules?  Pythonpath appears to be correct, but the file
> isn't importing unless I copy it to the current directory.
> 
> Thanx
> 
> 
> Charles
> 
If the above is correct, you should append the pythonpath with
c:\Python24\ and refer to the wanted .py with Examples.PP2E.launchmodes.
As such the import statement obviously should be "from
Examples.PP2E.launchmodes import PortableLauncher". If the above isn't
the case and there is still something unclear about this, reply with a
more detailed post about the situation.

Elmo
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCztd7ctNFyQJObrsRAuXNAJwLF94iM0IwkJVHLUOo1EEBYQg6FACfQFfE
jcxspYU80N5MSZB9uqhbBh4=
=YquD
-END PGP SIGNATURE-
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Legacy data parsing

2005-07-08 Thread Christopher Subich
gov wrote:
> Hi,
> 
> I've just started to learn programming and was told this was a good
> place to ask questions :)
> 
> Where I work, we receive large quantities of data which is currently
> all printed on large, obsolete, dot matrix printers.  This is a problem
> because the replacement parts will not be available for much longer.
> 
> So I'm trying to create a program which will capture the fixed width
> text file data and convert as well as sort the data (there are several
> different report types) into a different format which would allow it to
> be printed normally, or viewed on a computer.

Are these reports all of the same page-wise format, with fixed-width 
columns?  If so, then the suggestion about a state machine sounds good 
-- just run a state machine to figure out which linetype you're on, then 
extract the fixed width fields via slices.

name = line[x:y]

If that doesn't work, then pyparsing or DParser might work for you as a 
more general-purpose parser.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: map/filter/reduce/lambda opinions and background unscientific mini-survey

2005-07-08 Thread George Sakkis
"Steven Bethard" <[EMAIL PROTECTED]> wrote:

> Christopher Subich wrote:
> > Ron Adam wrote:
> >> I think the association of (lambda) to [list_comp] is a nice
> >> distinction.  Maybe a {dictionary_comp} would make it a complete set. ;-)
> >
> > Yeah, dictionary comprehensions would be an interesting feature. :)
> > Syntax might be a bit unwieldy, though, and I doubt they'd be used often
> > enough to be worth implementing, but still neat.
>
> Dict comprehensions were recently rejected:
>  http://www.python.org/peps/pep-0274.html
> The reason, of course, is that dict comprehensions don't gain you much
> at all over the dict() constructor plus a generator expression, e.g.:
>  dict((i, chr(65+i)) for i in range(4))

Sure, but the same holds for list comprehensions: list(i*i for i in
xrange(10)). The difference is historic I guess; list comprehensions
preceded generator expressions and so they cannot be removed, at least
not before 3.0. I wonder if they will/should be in the language when
the constraint of backwards compatibility is lifted. IMO they should
not (TIOOWTDI, uniformity among builtin data structures, not
overwhelmingly more useful than set or dict comprehensions), but
there's a long way till that day.

George

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


Re: file handling in a server (.py) file using xmlrpc

2005-07-08 Thread uwb
Jeremy Jones wrote:

>>The script executes, no error messages, but the glob call turns up nothing
>>while the identical call running from a console does in fact turn up files
>>names as expected.
>>  
>>
> Wild guess, but I'm thinking your webserver process doesn't have
> permissions to look in your directory.
> 
> Following is alternating root shell and IPython shell:
> 
> [EMAIL PROTECTED]:~ # chmod 777 /bam
> [EMAIL PROTECTED]:~ # ls -ld /bam
> drwxrwxrwx  2 root root 96 Jul  8 14:53 /bam
> 
> In [4]: glob.glob("/bam/*txt")
> Out[4]: ['/bam/foo.txt', '/bam/bar.txt']
> 
> [EMAIL PROTECTED]:~ # chmod 000 /bam
> [EMAIL PROTECTED]:~ # ls -ld /bam
> d-  2 root root 96 Jul  8 14:53 /bam
> 
> In [5]: glob.glob("/bam/*txt")
> Out[5]: []
> 
> 
> HTH,
> 
> Jeremy Jones


Thanks!  Thing does work when I do globs of the local apache directories.



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


Re: Legacy data parsing

2005-07-08 Thread Thomas Bartkus
"gov" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hi,
>
> I've just started to learn programming and was told this was a good
> place to ask questions :)
>
> Where I work, we receive large quantities of data which is currently
> all printed on large, obsolete, dot matrix printers.  This is a problem
> because the replacement parts will not be available for much longer.
>
> So I'm trying to create a program which will capture the fixed width
> text file data and convert as well as sort the data (there are several
> different report types) into a different format which would allow it to
> be printed normally, or viewed on a computer.

Text file data has no concept of "fixed width".  Somewhere in your system,
text file data is being thrown at your dot matrix printer.  It would seem a
trivial exercise to simply plug in a newer and probably inexpensive
replacement printer.

  What am I missing here?

> I've been reading up on the Regular Expression module and ways in which
> to manipulate strings however it has been difficult to think of a way
> in which to extract an address.
>
> Here's an example of the raw text that I have to work with:
>


How are you intercepting this text data?
Are you replacing your old printer with a Python speaking computer?
How will you deliver this data to your Python program?

> (the # = any number, and the X's are just regular text)
> I would like to extract the address information, but the two different
> text objects on the right hand side are difficult to remove.  I think
> it would be easier if I could just extract a fixed square of
> information, but I don't have a clue as to how to go about it.

Assuming you know how your Python code will "see" this data -

You would need no more than standard Python string handling to perform these
tasks.

There is no concept of a "fixed square" here.  This is a continuous stream
of (probably ascii) characters. If you could pick the data up from a file,
you would use readline() to build a list of individual lines.  If you were
picking the data from a serial port, you might assemble the whole thing into
one big string and use split(/n)  to build your list of lines.

Once you had a full record (print page?) as a list of individual lines you
could identify each line by it's position in the list *if*, as is likely,
each item arrives at the same line position.  If not, your code can read
each line and test.  For example:
The line
"###"
Seems to immediately precede several address lines
"MRS XXX X  XXX"
"#"
":
"###-###-#"

If you can rely on this you would know that the line "###" is
immediately followed by several lines of an address - up until the empty
line.  And you can look at each of those address lines and use trim() to
remove leading and trailing blanks.

Similarly, the line that begins "  LANG:" would seem to immediately precede
another address.

None of this is particularly difficult with standard Python.
But then - if we are merely replacing an old printer -

We are already working way too hard!
Thomas Bartkus





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


Re: qustion about build Python on the Solaris 9

2005-07-08 Thread Trent Mick
[Hu, Bizhong wrote]
> My question is that is
> anyone know if python can
> Be build as 64 bits application on SPARC ???

I don't know of any reason why not. I haven't built for *64-bit* SPARC
yet but Python builds fine 32-bit on SPARC and build fine 64-bit on a
number of other platforms (linux-x86_64, linux-ia64, win64-ia64,
win64-x64, 64-bit AIX).


Trent

-- 
Trent Mick
[EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Options to integrate Python modules into native windows applications

2005-07-08 Thread Do Re Mi chel La Si Do
Hi !

>>> Your english is fine.
Ce n'est pas mon anglais. Babelfish m'a beaucoup aidé.

@-salutations
-- 
Michel Claveau
mél : http://cerbermail.com/?6J1TthIa8B
sites : http://mclaveau.com   http://bergoiata.org   http://ponx.org





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

Re: Use cases for del

2005-07-08 Thread Ron Adam
George Sakkis wrote:

> I get:
> 
> None: 0.54952316
> String: 0.498000144958
> is None: 0.45047684

What do yo get for "name is 'string'" expressions?

Or is that a wrong way too?


On my system testing "if string is string" is slightly faster than "if 
True/ if False" expressions.

But the actual different is so small as to be negligible.  I'm just kind 
of curious why testing is objects isn't just as fast as testing is string?

Cheers,
Ron

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


Re: Legacy data parsing

2005-07-08 Thread [EMAIL PROTECTED]


>
> Where I work, we receive large quantities of data which is currently
> all printed on large, obsolete, dot matrix printers.  This is a problem
> because the replacement parts will not be available for much longer.
>
> So I'm trying to create a program which will capture the fixed width
> text file data and convert as well as sort the data (there are several
> different report types) into a different format which would allow it to
> be printed normally, or viewed on a computer.
>

Do you have access to the programs that generate these reports?  If so,
its probably a simple fixed format, and you can pull the fields out
with the slice operator (eg name = line[30:40]) -- no regular
expressions necessary.  I've done this in a couple of cases, and its
easy *if* you know exactly what the report format is.

Or, consider using another tool.  I've also used Monarch (a purchased
program) for parsing reports, and its works well on most formats.

Brian.

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


Re: python nested class

2005-07-08 Thread George Sakkis
"Daniel Dittmar" <[EMAIL PROTECTED]> wrote:

> Vedanta Barooah wrote:
> > in a python nested class is it possible to change the value of the
> > parent class's variable without actually creating an instance of the
> > parent class
>
> Python nested classs are like *static* Java nested classes. Non-static
> Java classes are very different in that they have an implicit reference
> to an instance of the enclosing class. This is why you can instantiate
> non-static inner classes only in the context (= non-static method) of a
> specific object. There is no direct equivalent to this in Python, so you
> have to do the steps yourself.
>
> - the constructor takes an additional argument, the 'outer' object,
> which has to be kept in the object:
> def __init__ (self, outer, ...):
>  self.outer = outer
>
> - when creating the inner object, the outer object must be passed to the
>   constructor
>  obj = InnerClass (self)
>
> - the outer object must be explicitely referenced:
>  self.outer.increase (20)
>
> Daniel

Or you can automate these steps and make implicit the reference to the
outer object using a descriptor:

#== Test =

def test():
class Outer:
def __init__(self,x): self.x = x

# if python gets class decorators someday,
# an inner class could be specified simply by:
[EMAIL PROTECTED]
class Inner:
def __init__(self, y): self.y = y
def sum(self):  return self.x + self.y
# as of python 2.4
Inner = innerclass(Inner)

outer = Outer(1)
inner = outer.Inner(2)
assert inner.sum() == 3
# outer.x, inner.x, inner.__outer__.x refer to the same object
outer.x = 4; assert inner.sum() == 6
inner.x = 10; assert inner.sum() == 12
inner.__outer__.x = -1; assert inner.sum() == 1
# an inner class must be bounded to an outer class instance
try: Outer.Inner(0)
except AttributeError, e: pass #print e
else: assert False

#===

def innerclass(cls):
'''Class decorator for making a class behave as a Java (non-static)
inner class.

Each instance of the decorated class is associated with an instance
of its enclosing class. The outer instance is referenced implicitly
when an attribute lookup fails in the inner object's namespace. It
can also be referenced explicitly through the property '__outer__'
of the inner instance.
'''
if hasattr(cls, '__outer__'):
raise TypeError('Existing attribute "__outer__" '
'in inner class')
class InnerDescriptor(object):
def __get__(self, outer, outercls):
if outer is None:
raise AttributeError('An enclosing instance that '
 'contains %s.%s is required' %
 (cls.__name__, cls.__name__))
clsdict = cls.__dict__.copy()
# explicit read-only reference to the outer instance
clsdict['__outer__'] = property(lambda s: outer)
# implicit lookup in the outer instance
clsdict['__getattr__'] = lambda s,attr: getattr(outer,attr)
def __setattr__(this, attr, value):
# setting an attribute in the inner instance sets the
# respective outer instance if and only if the
# attribute is already defined in the outer instance
if hasattr(outer, attr): setattr(outer,attr,value)
else: super(this.__class__,this).__setattr__(attr,
 value)
clsdict['__setattr__'] = __setattr__
return type(cls.__name__, cls.__bases__, clsdict)
return InnerDescriptor()


Regards,
George

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


pylize 1.2b released

2005-07-08 Thread Christopher Arndt
pylize 1.2b relased

More than three years after the last release I finally pulled myself 
together and am now happy to announce a maintenance release for pylize 
that also brings some new features. From time to time I have been 
receiving questions and comments from users, which indicated that there 
are still people, who find this program useful. I hope, those will find 
this new release beneficial.


What's new?

- switched template system to EmPy
- fixed JavaScript keyboard event handling
- fixed windows installation routine
- added Spanish translation
- added Italian translation
- page layout now works (mostly) without using tables
- cleaned up CSS
- cleaned up templates
- refactored code somewhat


What is pylize?

pylize is a Python script that makes the creation of on-screen 
presentations a matter of a few minutes. It generates a template master 
document, which you can edit with your favourite text or HTML editor. 
The master document is then processed by pylize to generate HTML files 
for every slide plus a file for the table of contents. You can view the 
presentation with any CSS-capable webbrowser.


Download and further information:

 


Author:

 Christopher Arndt <[EMAIL PROTECTED]>

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


removing list comprehensions in Python 3.0

2005-07-08 Thread Steven Bethard
George Sakkis wrote:
 > "Steven Bethard" <[EMAIL PROTECTED]> wrote:
 >> Dict comprehensions were recently rejected:
 >>  http://www.python.org/peps/pep-0274.html
 >> The reason, of course, is that dict comprehensions don't gain you
 >> much at all over the dict() constructor plus a generator expression,
 >> e.g.:
 >> dict((i, chr(65+i)) for i in range(4))
 >
 > Sure, but the same holds for list comprehensions: list(i*i for i in
 > xrange(10)). The difference is historic I guess; list comprehensions
 > preceded generator expressions and so they cannot be removed, at least
 > not before 3.0. I wonder if they will/should be in the language when
 > the constraint of backwards compatibility is lifted. IMO they should
 > not (TIOOWTDI, uniformity among builtin data structures, not
 > overwhelmingly more useful than set or dict comprehensions), but
 > there's a long way till that day.

I think the jury's still out on this one:

* Alex Martelli expects list comprehensions to be removed. [1]
* Robert Kern wants list comprehensions removed. [2]
* Raymond Hettinger encourages continued use of list comprehensions [3]
* Jeremy Bowers thinks list comprehensions should stay. [4]

I only searched a few relatively recent threads in c.l.py, so there are 
probably more, but it looks to me like the final decision will have to 
be made by a pronouncement from Guido.

[1]http://groups-beta.google.com/group/comp.lang.python/msg/f5613c00cb8c9539
[2]http://groups-beta.google.com/group/comp.lang.python/msg/b2cf0cd72d53fbe5
[3]http://groups-beta.google.com/group/comp.lang.python/msg/781dfab03701dd18
[4]http://groups-beta.google.com/group/comp.lang.python/msg/771a47d9eb24c863
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Legacy data parsing

2005-07-08 Thread Bengt Richter
On 8 Jul 2005 11:31:14 -0700, "gov" <[EMAIL PROTECTED]> wrote:

>Hi,
>
>I've just started to learn programming and was told this was a good
>place to ask questions :)
>
>Where I work, we receive large quantities of data which is currently
>all printed on large, obsolete, dot matrix printers.  This is a problem
>because the replacement parts will not be available for much longer.
>
>So I'm trying to create a program which will capture the fixed width
>text file data and convert as well as sort the data (there are several
>different report types) into a different format which would allow it to
>be printed normally, or viewed on a computer.
>
>I've been reading up on the Regular Expression module and ways in which
>to manipulate strings however it has been difficult to think of a way
>in which to extract an address.
>
>Here's an example of the raw text that I have to work with:
>
>
>ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:
>
>
>FOR/POUR AL/LA:  20
>  CORR TYP:  A1B 2C3  P:3 CHNGD/CHANG
>  LANG: E CONS/REGR: ###
>  MRS XXX X XXX
>  ### X ST  DD   TYP:   P:6
>CHNGD/CHANG
>  MONCTON NBLANG: E CONS/REGR:
>###
>MRS XXX X  XXX
>#
>
>###-###-#
>
>ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:
>
>
>FOR/POUR AL/LA:  30
>  BOTH TYP:  A1B 2D3  P:3 CHNGD/CHANG
>  LANG: E CONS/REGR: ###
>  MISS  X
>  ###  ST
>  MONCTON NB
>
>EARNINGS VITAL INFORMATION/RENSEIGNEMENTS ESSENTIELS SUR LES GAINS:
>***
>
>(the # = any number, and the X's are just regular text)
>I would like to extract the address information, but the two different
>text objects on the right hand side are difficult to remove.  I think
>it would be easier if I could just extract a fixed square of
>information, but I don't have a clue as to how to go about it.
>
>If anyone could give me suggestions as to methods in sorting this type
>of data, it would be appreciated.
>
If this is all fixed-width font characters and fixed record formats, you
might get some ideas about extracting a "fixed square". I re-joined the
strings of the fixed square with '\n'.join() to print it,
but you could extract data from the lines in various ways with regexes and such.

I used your data example and added some under the alternate header.
(Not tested beyond what you see ;-)

< legacy_data_parsing.py 
>---
data = """\
ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:


FOR/POUR AL/LA:  20
  CORR TYP:  A1B 2C3  P:3 CHNGD/CHANG
  LANG: E CONS/REGR: ###
  MRS XXX X XXX
  ### X ST  DD   TYP:   P:6
CHNGD/CHANG
  MONCTON NBLANG: E CONS/REGR:
###
MRS XXX X  XXX
#

###-###-#

ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:


FOR/POUR AL/LA:  30
  BOTH TYP:  A1B 2D3  P:3 CHNGD/CHANG
  LANG: E CONS/REGR: ###
  MISS  X
  ###  ST
  MONCTON NB

EARNINGS VITAL INFORMATION/RENSEIGNEMENTS ESSENTIELS SUR LES GAINS:
***
1  [Don't know what   [<- 1,34 This is a box of
2  goes in this kind   text with top/left
3  of record, but this character row/col 1,34
4  is some text to showand bottom/right at 4,62 ->]
5  how it might get
6  extracted]

"""

record_headers = [
"""\
ADDRESS INFORMATION/RENSEIGNEMENTS SUR L'ADRESSE:
""",
"""\
EARNINGS VITAL INFORMATION/RENSEIGNEMENTS ESSENTIELS SUR LES GAINS:
"""
]

import re
recsplitter = re.compile('('+ '|'.join(map(re.escape,record_headers))+')')
def extract_block(tl, br, data):
lines = [s.ljust(br[1]+1) for s in data.splitlines()]
return '\n'.join([line[tl[1]:br[1]+1] for line in lines[tl[0]:br[0]+1]])

for i, hdr_or_body in enumerate(recsplitter.split(data)):
if i==0:
print '='*10, 'file prefix', '='*30
data_type = ''
elif i%2:
print '='*10, 'record hdr', '='*30
data_type = hdr_or_body
else:
print '='*10, 'record data', '='*30
print hdr_or_body
print '='*10
if not i%2 and data_type == record_headers[1]: # EARNINGS etc
print ' earnings record right block '
print extract_block((1,34),(4,62), hdr_or_body)
print ''
-

Produces:

[15:33] C:\pywk\clp>py24 legacy_data_parsing.py
== file prefix ==


Re: removing list comprehensions in Python 3.0

2005-07-08 Thread Kay Schluehr
Steven Bethard schrieb:

> I think the jury's still out on this one:
>
> * Alex Martelli expects list comprehensions to be removed. [1]
> * Robert Kern wants list comprehensions removed. [2]
> * Raymond Hettinger encourages continued use of list comprehensions [3]
> * Jeremy Bowers thinks list comprehensions should stay. [4]
>
> I only searched a few relatively recent threads in c.l.py, so there are
> probably more, but it looks to me like the final decision will have to
> be made by a pronouncement from Guido.

Well, I want to offer a more radical proposal: why not free squared
braces from the burden of representing lists at all? It should be
sufficient to write

>>> list()
list()

After being free one can use them for other purposes e.g. replacing the
ugly @ decorator character by the lovely [ .. ] notation or other
important features no one never trusted to implement waiting for the
right syntax sugar. More than this round braces together with lists can
be considered as a concession to the LISP programmer who was repelled
from Python by the decision to eliminate functional programming
features. 

Kay

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


  1   2   >