Re: How to say $a=$b->{"A"} ||={} in Python?

2007-08-17 Thread Sébastien Buchoux
beginner a écrit :
> Hi All.
>
> I'd like to do the following in more succint code:
>
> if k in b:
> a=b[k]
> else:
> a={}
> b[k]=a
>
> a['A']=1
>
>
> In perl it is just one line: $a=$b->{"A"} ||={}.
>
> Thanks,
> Geoffrey
>
>   
One solution I often use in such cases:

try:
a = b[k]
except KeyError: #or except IndexError: if b is a list/tuple and not a dict
a = {}
b[k] = a

a['A'] = 1

Indeed, exceptions are handled faster than "if/else" loops. As it was 
mentionned earlier, One neat solution in Perl may not be the perfect one 
in Python.

Cheers,

Sébastien
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: (sort of) deterministic timing in Python

2007-08-17 Thread Hendrik van Rooyen

 "Paul Rubin"  wrote:


>[EMAIL PROTECTED] (John Fisher) writes:
>> mark start time
>> start event
>> event finishes
>> count time until next interval
>> start second event…
>>
>> rather than this:
>>
>> start event
>> event finishes
>> sleep for interval
>> start second event
>> ...
>> So how do I accomplish this in Python with a minimum of labour?
>
>Normally I'd use something like:
>
>   from time import time
>
>   t0 = time()
>   start event ... event finishes
>   t1 = time()
>   elapsed = t1 - t0
>   sleep(interval - elapsed)
>   start second event ...
>
>Am I missing something?

Not much - only beware of cases when elapsed is greater than
interval - not sure what time.sleep(negative_number) does.

- Hendrik

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


Re: python socket usage

2007-08-17 Thread Bryan Olson
Oğuz Yarımtepe wrote:
> As i read pickle module is Python-spesific. I need to talk with a Java 
> application and get the infortion that it will send. What i do right now is 
> listening a socket and reding the string that is sent by the java 
> application. So the java application is sending a string and i am reading and 
> parsing it and getting the related infortion i need. A more professional way 
> may be the reading the object itself. Is it possible to get the array for ex. 
> object that is sent from the Java application with sockets?

No. Sockets send and receive byte. Any transfer of higher-level
object values requires the sender to encode the values into bytes,
and the receiver to parse the bytes to construct an object; even
then the result is a value copy, not the object itself.

For many kinds of objects, there are libraries available to do
the encoding and parsing. If you need reference semantics, there
are "object request brokers".

Say more about your problem, and there's a good chance you'll
get more useful answers.


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

Re: to property or function in class object

2007-08-17 Thread Steve Holden
james_027 wrote:
> hi,
> 
> i am very new to python, not knowing much about good design. I have an
> object here for example a Customer object, where I need to retrieve a
> info which has a number of lines of code to get it.
> 
> my question is weather what approach should I use? to use the property
> which is from the python new class style as I understand or simple use
> function that will return the the info I needed.
> 
> class Customer(object):
> 
> current_balance = property(fget=_get_current_balance)
> 
This will need to go down below the definition of _get_current_balance()
  if you want to avoid an error in compilation.

> def _get_current_balance(self):
># coding here
> 
> or
> 
> def get_current_balance(self):
># coding here
> 
> While both approach would get the job done, I don't know much about
> the performance, benefits, design philosophy between the two approach.
> Any lecture will be very appreciated.
> 
It's pretty much a matter of choice when the method to retrieve the
value doesn't take any arguments. If it *does* take arguments then you
can't use a property.

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd   http://www.holdenweb.com
Skype: holdenweb  http://del.icio.us/steve.holden
--- Asciimercial --
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
--- Thank You for Reading -

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


Air conditioners for cars!

2007-08-17 Thread fritz
Have a problem with car air conditioner, go here

http://car-air-conditioning.blogspot.com/

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


Guitars, tabs, amps and more

2007-08-17 Thread Lepi Duja
Reviews of latest models of best guitars, fender, gibson, yamaha, and
many more, with pictures and prices.

http://pro-guitars.blogspot.com/


And if you want to win a free guitar go here

http://freeguitars.blogspot.com/

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


Re: clarification

2007-08-17 Thread Thomas Jollans
On Friday 17 August 2007, Beema shafreen wrote:
> hi everybody,
> i have a file with data separated by tab
> mydata:
> fhl1fkh2
> dfp1chk1
> mal3alp14
> mal3moe1
> mal3spi1
> mal3bub1
> mal3bub3
> mal3mph1
> mal3mad3
> hob1nak1
> hob1wsp1
> hob1rad3
> cdr2cdc13
> cdr2cdc2
> shows these two are separated by tab represented as columns
> i have to check the common data between these two coloumn1 an coloumn2
> my code:
> data = []
> data1 = []
> result = []
> fh = open('sheet1','r')
> for line in fh.readlines():
> splitted = line.strip().split('\t')
> data.append(splitted[0])
> data1.append(splitted[1])
> for k in data:
> if k in data1:
> result.append(k)
> print result
> fh.close()
>
> can you tell me problem with my script and what should is do for this

No, I have not tested it. You tell us the problem, and we might understand the 
situation better than you.

-- 
  Regards,   Thomas Jollans
GPG key: 0xF421434B may be found on various keyservers, eg pgp.mit.edu
Hacker key :
v4sw6+8Yhw4/5ln3pr5Ock2ma2u7Lw2Nl7Di2e2t3/4TMb6HOPTen5/6g5OPa1XsMr9p-7/-6
-- 
http://mail.python.org/mailman/listinfo/python-list


Tuned cars!!!

2007-08-17 Thread carairconditionersmail
If you like tuned cars, come here, you will fond many interesting
stuff

http://tuning-styling.blogspot.com/

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


Re: clarification

2007-08-17 Thread Laurent Pointal
Thomas Jollans a écrit :
> On Friday 17 August 2007, Beema shafreen wrote:
>> hi everybody,
>> i have a file with data separated by tab
>> mydata:
>> fhl1fkh2

>> shows these two are separated by tab represented as columns
>> i have to check the common data between these two coloumn1 an coloumn2
>> my code:
>> data = []
>> data1 = []
>> result = []
>> fh = open('sheet1','r')
>> for line in fh.readlines():
>> splitted = line.strip().split('\t')
>> data.append(splitted[0])
>> data1.append(splitted[1])
>> for k in data:
>> if k in data1:
>> result.append(k)
>> print result
>> fh.close()

Use set data type for data and data1 (you fill them with an algo like th 
one you wrote - just use add() in place of appen()) then use set 
intersection to get common data.

See doc for set data type:
http://docs.python.org/lib/types-set.html

Would look like (not tested):
data = set()
data1 = set()
fh = open('sheet1','r')
for line in fh.readlines():
 splitted = line.strip().split('\t')
 data.add(splitted[0])
 data1.add(splitted[1])

result = data.intersection(data1)
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: clarification

2007-08-17 Thread Laurent Pointal
Laurent Pointal a écrit :

[cleaning]
fh = open('sheet1')
for line in fh:
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: advice about `correct' use of decorator

2007-08-17 Thread Laszlo Nagy

>>
>> Are you developing a website or a GUI program?
>>
>>
> It will be used in a web development. It is an important point?
Yes, I think. Unless you use AJAX. :-) Most web sites work this way:

user clicks -> request to server -> process on server -> response

I would rather enclose the whole handler in try/except and raise a 
custom PermissionDenied exception when the user has inscuficient 
permissions. There are problems with a decorator used for authorization. 
The context needs to be determined. E.g. which user is accessing the 
method? (It can be hard to tell if the method is part of a thread object 
that lies in a thread pool and is shared between simultaneous 
clients...) Also it might be that the method's purpose is to change 
objects of the same class, and the user has permission to modify one 
object but not the other. In this case, authorization must be done 
inside the function call... How do you express this with a decorator?

These are just ideas. You should analyze your problem and make your 
decision. If you only want to restrict access to functions, then 
probably using decorators is perfect.

Best,

   Laszlo

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


passing variables and values to texboxdisplays

2007-08-17 Thread yadin
hi!
Can any one tell me why is it that i can't see my second frame and why
is the value of freq not Appended in the First frame ...thanks
I know it is wx python  but it has to do with passing variables.thanks

import wx

def create(parent):
return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1FREQ, wxID_FRAME1FREQDISP,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(4)]

class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
  pos=wx.Point(380, 179), size=wx.Size(241, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
  label='frequency disp', name='staticText1', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13), style=0)

self.freqdisp = wx.TextCtrl(id=wxID_FRAME1FREQDISP,
name='freqdisp',
  parent=self, pos=wx.Point(104, 24), size=wx.Size(100,
21),
  style=0, value='')

self.freq = wx.Button(id=wxID_FRAME1FREQ, label='get freq',
name='freq',
  parent=self, pos=wx.Point(24, 56), size=wx.Size(184,
23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1FREQ)

def __init__(self, parent):
self._init_ctrls(parent)

def OnButton1Button(self, event):

def create(parent):
return Frame2(parent)
[wxID_FRAME2, wxID_FRAME2FREQ, wxID_FRAME2FREQDISP,
wxID_FRAME2STATICTEXT1,] = [wx.NewId() for _init_ctrls in range(4)]

class Frame2:
def __init__(self):
#
wx.Frame.__init__(self, id=wxID_FRAME2, name='',
parent=prt,
  pos=wx.Point(400, 179), size=wx.Size(300, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame2')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 =
wx.StaticText(id=wxID_FRAME2STATICTEXT1,
  label='frequency goes here first',
name='staticText2', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13),
style=0)

self.freqdisp2 = wx.TextCtrl(id=wxID_FRAME2FREQDISP,
name='freqdisp2',
  parent=self, pos=wx.Point(104, 24),
size=wx.Size(100, 21),
  style=0, value=' ')

self.freq = wx.Button(id=wxID_FRAME2FREQ, label='get
freq', name='freq',
  parent=self, pos=wx.Point(24, 56),
size=wx.Size(184, 23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton2Button,
id=wxID_FRAME2FREQ)

def __init__(self, parent):
self._init_ctrls(parent)
def OnButton2Button(self, event):
freqdisp.Append('this is it 24HZ!')



if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()

app.MainLoop()

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


Re: advice about `correct' use of decorator

2007-08-17 Thread BJörn Lindqvist
On 8/16/07, Gerardo Herzig <[EMAIL PROTECTED]> wrote:
> @is_logued_in
> def change_pass():
> bla
> bla
>
> And so on for all the other functions who needs that the user is still
> loged in.
>
> where obviosly the is_logued_in() function will determine if the dude is
> still loged in, and THEN execute change_pass(). If the dude is not loged
> in, change_pass() is NOT executed at all. Instead, it will be redirected
> to the `login' screen.

I think this is redundant use of a decorator. You can achieve the
exact same effect by writing:

def is_logued_in():
if not user.is_logged_in():
raise NotLoggedInError

It costs you one more line, but reduces complexity. And if you are
worried about that extra line you can put it in a function.

-- 
mvh Björn
-- 
http://mail.python.org/mailman/listinfo/python-list


Naming dictionaries recursively

2007-08-17 Thread TYR
I'd like to do something like this; iterate through a file which
consists of data stored in dictionary format, one dict on each line,
and read each line into a new dict using one of the values in the dict
as its name...

for example:

stuff = open('data.txt')
 for eachLine in stuff:
  name{}
   name = eachLine
and then do something clever to extract the value of the key
(name) from the line and use it as the dictionary's name.

A line from data.txt would look like this: {'name' : Bob, 'species' :
Humboldt, 'colour' : red, 'habits' : predatory}. Aim is to call one of
them by name, and merge the values in that dictionary into a string
pulled from another source.

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


Re: Naming dictionaries recursively

2007-08-17 Thread [EMAIL PROTECTED]
On Aug 17, 7:38 am, TYR <[EMAIL PROTECTED]> wrote:
> I'd like to do something like this; iterate through a file which
> consists of data stored in dictionary format, one dict on each line,
> and read each line into a new dict using one of the values in the dict
> as its name...
>
> for example:
>
> stuff = open('data.txt')
>  for eachLine in stuff:
>   name{}
>name = eachLine
> and then do something clever to extract the value of the key
> (name) from the line and use it as the dictionary's name.
>
> A line from data.txt would look like this: {'name' : Bob, 'species' :
> Humboldt, 'colour' : red, 'habits' : predatory}. Aim is to call one of
> them by name, and merge the values in that dictionary into a string
> pulled from another source.

I'm not sure I follow exactly what you want to do, but you can always
use eval for each line in that file.

But, if the line you provided for testing is one that actually comes
from the file, you'll have to patch it before you eval the line.  I
think this regexp will work.  Be careful though, it assumes that all
values are whole words, that is they don't have spaces in them.

# This is far from ideal, but you get what you pay for :).
re.sub(r':\s*(\w+)(,|})', r"': '\1'\2", line)

Anyway, after you've cleaned up your input line this ought to work:
d = eval(line)

Also, if you're building the input file from within a python program,
maybe you should consider the pickle module.

That ought to give you a good start...

jw

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


Re: Naming dictionaries recursively

2007-08-17 Thread Marc 'BlackJack' Rintsch
On Fri, 17 Aug 2007 12:38:16 +, TYR wrote:

> I'd like to do something like this; iterate through a file which
> consists of data stored in dictionary format, one dict on each line,
> and read each line into a new dict using one of the values in the dict
> as its name...

Store the dictionaries in a dictionary with that value as key.

> A line from data.txt would look like this: {'name' : Bob, 'species' :
> Humboldt, 'colour' : red, 'habits' : predatory}. Aim is to call one of
> them by name, and merge the values in that dictionary into a string
> pulled from another source.

So the tougher problem seems to be parsing those lines.  That is not a
valid Python dictionary unless the names `Bob`, `Humboldt`, `red`, and
`predatory` are not already defined.  So you can't just ``eval`` it.

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


Downloading multiple csv files from a website

2007-08-17 Thread tkpmep
I'd like to download data from the website
http://www.russell.com/Indexes/performance/daily_values_US.asp. On
this web page, there are links to a number of .csv files, and I'd like
to download all of them automatically each day. The file names are not
visible on the page, but if I click on a link, a csv file opens in
Excel. I've searched this group and looked into urllib, but have not
found functions or code snippets that will allow me to download and
rename each file. Would someone kindly point me to appropriate
libraries/functions and/or code snippets that will get me started?

Thanks in advance

Thomas Philips

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


Re: clarification

2007-08-17 Thread Scott David Daniels
Laurent Pointal wrote:
> Thomas Jollans a écrit :
>> On Friday 17 August 2007, Beema shafreen wrote:
>>> hi everybody,
>>> i have a file with data separated by tab
>>> mydata:
>>> fhl1fkh2
> 
>>> shows these two are separated by tab represented as columns
>>> i have to check the common data between these two coloumn1 an coloumn2
>>> my code:
>>> data = []
>>> data1 = []
>>> result = []
>>> fh = open('sheet1','r')
>>> for line in fh.readlines():
>>> splitted = line.strip().split('\t')
>>> data.append(splitted[0])
>>> data1.append(splitted[1])
>>> for k in data:
>>> if k in data1:
>>> result.append(k)
>>> print result
>>> fh.close()
> 
> Use set data type for data and data1 (you fill them with an algo like th 
> one you wrote - just use add() in place of appen()) then use set 
> intersection to get common data.
> 
> See doc for set data type:
> http://docs.python.org/lib/types-set.html
> 
> Would look like (not tested):
> data = set()
> data1 = set()
> fh = open('sheet1','r')
> for line in fh.readlines():
> splitted = line.strip().split('\t')
> data.add(splitted[0])
> data1.add(splitted[1])
> 
> result = data.intersection(data1)

   lefts = set()
   rights = set()
   with open('sheet1', 'r') as fh:
   for line in fh:
   trimmed = line.strip()
   if trimmed: # Skip blanks (file end often looks like that)
   left, right = line.strip().split('\t')
   lefts.add(left)
   rights.add(right)
   result = lefts & rights

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

Question on SPE and pwintypes.dll

2007-08-17 Thread Gerry
   I'm running SPE 8.3.c under XP, on a new PC.

   The files for SPE and Python were copied to the new machine, but
the OS wasn't migrated, so the registry didn't know about either.

   I reinstalled Python 2.5.1, and Python seems fine.

   I made a shortcut to SPE.pyw.  Clicking on the shortcut gives an
error pop-up, application failed to start cannot find pwintypes.dll.
When I click "OK", SPE seems to start normally.

   Any idea what's up?  Googling for pwintypes.dll didn't give me any
hits.

   Gerry

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


Need to generate some functions.

2007-08-17 Thread Steven W. Orr
Given a list of names

ll = ("n1", "n2", "n3", "n4")

I want to create a pair of functions based off of each name. An example of 
what I want to happen would look like this:

def mkn1dict(address):
 return {'Address': address, 'Control': SOME_CONST}

def mkn1Classobj(address):
 return Classobj( mkn1classobj(address) )

I know how to do this in a preprocessor, but I'd like to do it directly in 
python. Can this be done?

TIA


-- 
Time flies like the wind. Fruit flies like a banana. Stranger things have  .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: How to say $a=$b->{"A"} ||={} in Python?

2007-08-17 Thread beginner
On Aug 17, 2:35 am, Sébastien Buchoux <[EMAIL PROTECTED]> wrote:
> beginner a écrit :
>
>
>
> > Hi All.
>
> > I'd like to do the following in more succint code:
>
> > if k in b:
> > a=b[k]
> > else:
> > a={}
> > b[k]=a
>
> > a['A']=1
>
> > In perl it is just one line: $a=$b->{"A"} ||={}.
>
> > Thanks,
> > Geoffrey
>
> One solution I often use in such cases:
>
> try:
> a = b[k]
> except KeyError: #or except IndexError: if b is a list/tuple and not a dict
> a = {}
> b[k] = a
>
> a['A'] = 1
>
> Indeed, exceptions are handled faster than "if/else" loops. As it was
> mentionned earlier, One neat solution in Perl may not be the perfect one
> in Python.
>
> Cheers,
>
> Sébastien- Hide quoted text -
>
> - Show quoted text -

Wow. This solution is interesting. I'll try this. Thanks.

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

Re: How to say $a=$b->{"A"} ||={} in Python?

2007-08-17 Thread beginner
On Aug 16, 11:02 pm, "Carsten Haese" <[EMAIL PROTECTED]> wrote:
> On Fri, 17 Aug 2007 03:15:10 -, beginner wrote
>
> > On Aug 16, 9:32 pm, Carsten Haese <[EMAIL PROTECTED]> wrote:
> > > What is the best solution in Perl need not be the best solution in
> > > Python. In Python you should just use a tuple as your dict key, i.e.
> > > a[k1,k2] = v, unless you have some other constraints you're not telling
> > > us.
>
> > > HTH,
>
> > > --
> > > Carsten Haesehttp://informixdb.sourceforge.net
>
> > I use tuples this way all the time. It is indeed very neat.  But it
> > is not a replacement for double hash-table.  If I want to retrieve
> > information just by K1, it is not efficient to index on (K1, K2).
>
> If you have to look up all values associates with k1 and any k2, you're right,
> that's not efficient. That would fall under "other constraints you're not
> telling us." I'm not a mind reader.
>
> -Carsten

Yeah, I should have mentioned that I actually want to group the data
by K1 and then by K2.

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


best GUI library for vector drawing program

2007-08-17 Thread chewie54
Hello,

What would be the best cross-platform GUI library to use for a vector
based CAD program ( something like Visio on Windows )   WxWidgets,
Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
draw and edit in a window that looks like a page of paper so WYSIWYG
is very important,  and I need to save the drawings in vector based
file formats like PS, EPS,  SVG, as well as image formats like jpg,
png, and gif.  Also, the images need to be high resolution so that
they can be pasted into various other programs in Windows OS,  and
Linux OS,  and the Mac OS.

Thanks in advance,
Dan

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


Re: best GUI library for vector drawing program

2007-08-17 Thread Victor Bazarov
chewie54 wrote:
> What would be the best cross-platform GUI library to use for a vector
> based CAD program ( something like Visio on Windows )   WxWidgets,
> Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> draw and edit in a window that looks like a page of paper so WYSIWYG
> is very important,  and I need to save the drawings in vector based
> file formats like PS, EPS,  SVG, as well as image formats like jpg,
> png, and gif.  Also, the images need to be high resolution so that
> they can be pasted into various other programs in Windows OS,  and
> Linux OS,  and the Mac OS.

You might actually consider asking in the 'comp.graphics' hierarchy
instead of the language newsgroups.

V
-- 
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask 


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


Re: Downloading multiple csv files from a website

2007-08-17 Thread kyosohma
On Aug 17, 8:08 am, [EMAIL PROTECTED] wrote:
> I'd like to download data from the 
> websitehttp://www.russell.com/Indexes/performance/daily_values_US.asp. On
> this web page, there are links to a number of .csv files, and I'd like
> to download all of them automatically each day. The file names are not
> visible on the page, but if I click on a link, a csv file opens in
> Excel. I've searched this group and looked into urllib, but have not
> found functions or code snippets that will allow me to download and
> rename each file. Would someone kindly point me to appropriate
> libraries/functions and/or code snippets that will get me started?
>
> Thanks in advance
>
> Thomas Philips

This link shows how to extract a list of URLs:
http://www.java2s.com/Code/Python/Network/ExtractlistofURLsinawebpage.htm

and this one shows how to download:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/83208

Mike

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


Re: how to pass a custom object to re.search?

2007-08-17 Thread Lawrence Oluyede
<[EMAIL PROTECTED]> wrote:
> Is it possible to make what I want (to pass a custom object to
> re.search)?

Try to implement __str__() for your object and provide a string
representation for it.

re.search(str(custom_object))

-- 
Lawrence, oluyede.org - neropercaso.it
"It is difficult to get a man to understand 
something when his salary depends on not
understanding it" - Upton Sinclair
-- 
http://mail.python.org/mailman/listinfo/python-list


how to pass a custom object to re.search?

2007-08-17 Thread brunovianarezende
Hi,

sorry if this is a faq. I've searched and got no result. I'm willing
to pass a custom object to re.search method, but I'm getting the
error:

TypeError: expected string or buffer

I don't want to make my object to inherit from basestring (nor I know
how to do it...). Then I was left with 'buffer'. I tried to make my
object inherit from types.BufferType and got the error:

TypeError: Error when calling the metaclass bases
type 'buffer' is not an acceptable base type

If I call the function buffer passing an instance of my object I get:

TypeError: buffer object expected

Is it possible to make what I want (to pass a custom object to
re.search)?

regards,
Bruno

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


Re: best GUI library for vector drawing program

2007-08-17 Thread chewie54
On Aug 17, 9:45 am, "Victor Bazarov" <[EMAIL PROTECTED]> wrote:
> chewie54 wrote:
> > What would be the best cross-platform GUI library to use for a vector
> > based CAD program ( something like Visio on Windows )   WxWidgets,
> > Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> > draw and edit in a window that looks like a page of paper so WYSIWYG
> > is very important,  and I need to save the drawings in vector based
> > file formats like PS, EPS,  SVG, as well as image formats like jpg,
> > png, and gif.  Also, the images need to be high resolution so that
> > they can be pasted into various other programs in Windows OS,  and
> > Linux OS,  and the Mac OS.
>
> You might actually consider asking in the 'comp.graphics' hierarchy
> instead of the language newsgroups.
>
> V
> --
> Please remove capital 'A's when replying by e-mail
> I do not respond to top-posted replies, please don't ask

That group doesn't seem to be active anymore.

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


Re: (sort of) deterministic timing in Python

2007-08-17 Thread Chris Mellon
On 8/17/07, Hendrik van Rooyen <[EMAIL PROTECTED]> wrote:
>
>  "Paul Rubin"  wrote:
>
>
> >[EMAIL PROTECTED] (John Fisher) writes:
> >> mark start time
> >> start event
> >> event finishes
> >> count time until next interval
> >> start second event…
> >>
> >> rather than this:
> >>
> >> start event
> >> event finishes
> >> sleep for interval
> >> start second event
> >> ...
> >> So how do I accomplish this in Python with a minimum of labour?
> >
> >Normally I'd use something like:
> >
> >   from time import time
> >
> >   t0 = time()
> >   start event ... event finishes
> >   t1 = time()
> >   elapsed = t1 - t0
> >   sleep(interval - elapsed)
> >   start second event ...
> >
> >Am I missing something?
>
> Not much - only beware of cases when elapsed is greater than
> interval - not sure what time.sleep(negative_number) does.
>

On Windows 2k3, Python 2.5 it sleeps forever (or almost forever? Maybe
a signed/unsigned thing) so yeah, be careful of it.
-- 
http://mail.python.org/mailman/listinfo/python-list


unexpected optparse set_default/set_defaults behavior

2007-08-17 Thread mbeachy
Some rather unexpected behavior in the set_default/set_defaults
methods for OptionParser that I noticed recently:

>>> import optparse
>>> parser = optparse.OptionParser()
>>> parser.add_option("-r", "--restart", dest="restart", action="store_true")

>>> parser.defaults
{'restart': None}
>>> parser.set_default("retart", False)
>>> parser.defaults
{'retart': False, 'restart': None}

Why does set_default not raise an exception when passed a key that it
doesn't recognize?

Bad typysts bewaer.

The only reason I can think not to raise an exception is so that
defaults can be defined before the options are added. Is there some
use case that I'm not thinking of here? I realize that changing this
could break some existing scripts, but I'm still tempted to file this
as a bug.

Mike

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


Re: best GUI library for vector drawing program

2007-08-17 Thread kyosohma
On Aug 17, 8:27 am, chewie54 <[EMAIL PROTECTED]> wrote:
> Hello,
>
> What would be the best cross-platform GUI library to use for a vector
> based CAD program ( something like Visio on Windows )   WxWidgets,
> Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> draw and edit in a window that looks like a page of paper so WYSIWYG
> is very important,  and I need to save the drawings in vector based
> file formats like PS, EPS,  SVG, as well as image formats like jpg,
> png, and gif.  Also, the images need to be high resolution so that
> they can be pasted into various other programs in Windows OS,  and
> Linux OS,  and the Mac OS.
>
> Thanks in advance,
> Dan

I think wxPython in conjunction with PIL and/or matplotlib could work.
I'm pretty sure the people on the wxPython user's list have done
vector graphics using those other libraries.

Mike

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


Re: Question on SPE and pwintypes.dll

2007-08-17 Thread kyosohma
On Aug 17, 8:38 am, Gerry <[EMAIL PROTECTED]> wrote:
>I'm running SPE 8.3.c under XP, on a new PC.
>
>The files for SPE and Python were copied to the new machine, but
> the OS wasn't migrated, so the registry didn't know about either.
>
>I reinstalled Python 2.5.1, and Python seems fine.
>
>I made a shortcut to SPE.pyw.  Clicking on the shortcut gives an
> error pop-up, application failed to start cannot find pwintypes.dll.
> When I click "OK", SPE seems to start normally.
>
>Any idea what's up?  Googling for pwintypes.dll didn't give me any
> hits.
>
>Gerry

Probably just need to do a search in the registry of the old PC for
SPE or that dll file and then make the appropriate changes on your new
PC. Or just reinstall SPE.

Mike

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


Re: how to pass a custom object to re.search?

2007-08-17 Thread brunovianarezende
> Try to implement __str__() for your object and provide a string
> representation for it.
>
> re.search(str(custom_object))
>

I've done that (and added __unicode__ too). I only didn't want to, I
want to do:

re.search(custom_object)

so, code that worked before as:

re.search(parentobj.custom_object)

don't have to be changed for:

re.search(str(parentobj.custom_object))

and I'm also curious to know if it is possible to do that... :-)

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


Re: Need to generate some functions.

2007-08-17 Thread J. Robertson
you can use the dictionary returned by the built in function vars, along 
the lines of

 >>> vars()["foo"] = lambda x: 3*x
 >>> foo(2)
6

but polluting your name space with data counts as bad style and will 
probably bite you at some point -- you probably are better of putting 
closures in a dictionary:

 >>> def mkdict(address):
def something():
return {'Address': address, 'Control': "SOME_CONST"}
return something
 >>> mk = {}
 >>> mk["n1"] = mkdict("n1")
 >>> mk["n1"]()
{'Control': 'SOME_CONST', 'Address': 'n1'}




Steven W. Orr wrote:
> Given a list of names
> 
> ll = ("n1", "n2", "n3", "n4")
> 
> I want to create a pair of functions based off of each name. An example 
> of what I want to happen would look like this:
> 
> def mkn1dict(address):
> return {'Address': address, 'Control': SOME_CONST}
> 
> def mkn1Classobj(address):
> return Classobj( mkn1classobj(address) )
> 
> I know how to do this in a preprocessor, but I'd like to do it directly 
> in python. Can this be done?
> 
> TIA
> 
> 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how to pass a custom object to re.search?

2007-08-17 Thread Lawrence Oluyede
<[EMAIL PROTECTED]> wrote:
> and I'm also curious to know if it is possible to do that... :-)

Only if re.search() doesn't check for the type of the argument, which it
seems it does. 

-- 
Lawrence, oluyede.org - neropercaso.it
"It is difficult to get a man to understand 
something when his salary depends on not
understanding it" - Upton Sinclair
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing variables and values to texboxdisplays

2007-08-17 Thread kyosohma
On Aug 17, 6:57 am, yadin <[EMAIL PROTECTED]> wrote:
> hi!
> Can any one tell me why is it that i can't see my second frame and why
> is the value of freq not Appended in the First frame ...thanks
> I know it is wx python  but it has to do with passing variables.thanks
>
> import wx
>
> def create(parent):
> return Frame1(parent)
>
> [wxID_FRAME1, wxID_FRAME1FREQ, wxID_FRAME1FREQDISP,
> wxID_FRAME1STATICTEXT1,
> ] = [wx.NewId() for _init_ctrls in range(4)]
>
> class Frame1(wx.Frame):
> def _init_ctrls(self, prnt):
> # generated method, don't edit
> wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
>   pos=wx.Point(380, 179), size=wx.Size(241, 133),
>   style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
> self.SetClientSize(wx.Size(233, 99))
>
> self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
>   label='frequency disp', name='staticText1', parent=self,
>   pos=wx.Point(24, 32), size=wx.Size(71, 13), style=0)
>
> self.freqdisp = wx.TextCtrl(id=wxID_FRAME1FREQDISP,
> name='freqdisp',
>   parent=self, pos=wx.Point(104, 24), size=wx.Size(100,
> 21),
>   style=0, value='')
>
> self.freq = wx.Button(id=wxID_FRAME1FREQ, label='get freq',
> name='freq',
>   parent=self, pos=wx.Point(24, 56), size=wx.Size(184,
> 23),
>   style=0)
> self.freq.Bind(wx.EVT_BUTTON, self.OnButton1Button,
> id=wxID_FRAME1FREQ)
>
> def __init__(self, parent):
> self._init_ctrls(parent)
>
> def OnButton1Button(self, event):
>
> def create(parent):
> return Frame2(parent)
> [wxID_FRAME2, wxID_FRAME2FREQ, wxID_FRAME2FREQDISP,
> wxID_FRAME2STATICTEXT1,] = [wx.NewId() for _init_ctrls in range(4)]
>
> class Frame2:
> def __init__(self):
> #
> wx.Frame.__init__(self, id=wxID_FRAME2, name='',
> parent=prt,
>   pos=wx.Point(400, 179), size=wx.Size(300, 133),
>   style=wx.DEFAULT_FRAME_STYLE, title='Frame2')
> self.SetClientSize(wx.Size(233, 99))
>
> self.staticText1 =
> wx.StaticText(id=wxID_FRAME2STATICTEXT1,
>   label='frequency goes here first',
> name='staticText2', parent=self,
>   pos=wx.Point(24, 32), size=wx.Size(71, 13),
> style=0)
>
> self.freqdisp2 = wx.TextCtrl(id=wxID_FRAME2FREQDISP,
> name='freqdisp2',
>   parent=self, pos=wx.Point(104, 24),
> size=wx.Size(100, 21),
>   style=0, value=' ')
>
> self.freq = wx.Button(id=wxID_FRAME2FREQ, label='get
> freq', name='freq',
>   parent=self, pos=wx.Point(24, 56),
> size=wx.Size(184, 23),
>   style=0)
> self.freq.Bind(wx.EVT_BUTTON, self.OnButton2Button,
> id=wxID_FRAME2FREQ)
>
> def __init__(self, parent):
> self._init_ctrls(parent)
> def OnButton2Button(self, event):
> freqdisp.Append('this is it 24HZ!')
>
> if __name__ == '__main__':
> app = wx.PySimpleApp()
> frame = create(None)
> frame.Show()
>
> app.MainLoop()

Your 2nd frame isn't subclassing wx.Frame and there's nothing calling
the Show() method even if it had been.

Mike

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


Re: Downloading multiple csv files from a website

2007-08-17 Thread tkpmep
Our systems administrator suggested that I try wget, a GNU utility
that is designed to pick up data. It might prove to be the easiest way
to get the data I want, and I am going to try that first.

Thanks again.

Thomas Philips


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


help to make program better

2007-08-17 Thread yadin
hi!
Can any one tell me why is it that i can't see my second frame and why
is the value of freq not Appended in the First frame ...thanks
I know it is wx python  but it has to do with passing variables.thanks

import wx

def create(parent):
return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1FREQ, wxID_FRAME1FREQDISP,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(4)]

class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
  pos=wx.Point(380, 179), size=wx.Size(241, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
  label='frequency disp', name='staticText1', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13), style=0)

self.freqdisp = wx.TextCtrl(id=wxID_FRAME1FREQDISP,
name='freqdisp',
  parent=self, pos=wx.Point(104, 24), size=wx.Size(100,
21),
  style=0, value='')

self.freq = wx.Button(id=wxID_FRAME1FREQ, label='get freq',
name='freq',
  parent=self, pos=wx.Point(24, 56), size=wx.Size(184,
23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1FREQ)

def __init__(self, parent):
self._init_ctrls(parent)

def OnButton1Button(self, event):

def create(parent):
return Frame2(parent)
[wxID_FRAME2, wxID_FRAME2FREQ, wxID_FRAME2FREQDISP,
wxID_FRAME2STATICTEXT1,] = [wx.NewId() for _init_ctrls in range(4)]

class Frame2:
def __init__(self):
#
wx.Frame.__init__(self, id=wxID_FRAME2, name='',
parent=prt,
  pos=wx.Point(400, 179), size=wx.Size(300, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame2')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 =
wx.StaticText(id=wxID_FRAME2STATICTEXT1,
  label='frequency goes here first',
name='staticText2', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13),
style=0)

self.freqdisp2 = wx.TextCtrl(id=wxID_FRAME2FREQDISP,
name='freqdisp2',
  parent=self, pos=wx.Point(104, 24),
size=wx.Size(100, 21),
  style=0, value=' ')

self.freq = wx.Button(id=wxID_FRAME2FREQ, label='get
freq', name='freq',
  parent=self, pos=wx.Point(24, 56),
size=wx.Size(184, 23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton2Button,
id=wxID_FRAME2FREQ)

def __init__(self, parent):
self._init_ctrls(parent)
def OnButton2Button(self, event):
freqdisp.Append('this is it 24HZ!')

if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()

app.MainLoop()

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


Re: Naming dictionaries recursively

2007-08-17 Thread Paul McGuire
On Aug 17, 7:38 am, TYR <[EMAIL PROTECTED]> wrote:
> I'd like to do something like this; iterate through a file which
> consists of data stored in dictionary format, one dict on each line,
> and read each line into a new dict using one of the values in the dict
> as its name...
>
> for example:
>
> stuff = open('data.txt')
>  for eachLine in stuff:
>   name{}
>name = eachLine
> and then do something clever to extract the value of the key
> (name) from the line and use it as the dictionary's name.
>
> A line from data.txt would look like this: {'name' : Bob, 'species' :
> Humboldt, 'colour' : red, 'habits' : predatory}. Aim is to call one of
> them by name, and merge the values in that dictionary into a string
> pulled from another source.

Pyparsing includes an example that is very similar to this.  Here is
that example adapted to your specific data:

from pyparsing import *

line = """{'name' : Bob, 'species' : Humboldt, 'colour' : red,
'habits' : predatory}"""

LBRACE,RBRACE,COLON,COMMA = map(Suppress,"{}:,")
key = sglQuotedString.setParseAction(removeQuotes)
value = OneOrMore(Word(alphanums))\
.setParseAction(keepOriginalText)
entry = Group(key + COLON + empty + value)
lineExpr = LBRACE + Dict(delimitedList(entry)) + RBRACE

parsedData = lineExpr.parseString(line)

# some examples of accessing the parsed data
print "Keys:", parsedData.keys()
print parsedData.name
print parsedData.colour
print "Name: %(name)s \nSpecies: %(species)s \n" \
"Colour: %(colour)s \nHabits: %(habits)s" % parsedData

Prints:

Keys: ['colour', 'habits', 'name', 'species']
Bob
red
Name: Bob
Species: Humboldt
Colour: red
Habits: predatory

-- Paul

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


Re: how to pass a custom object to re.search?

2007-08-17 Thread Peter Otten
 [EMAIL PROTECTED] wrote:

> I've done that (and added __unicode__ too). I only didn't want to, I
> want to do:
> 
> re.search(custom_object)
> 
> so, code that worked before as:
> 
> re.search(parentobj.custom_object)
> 
> don't have to be changed for:
> 
> re.search(str(parentobj.custom_object))
> 
> and I'm also curious to know if it is possible to do that... :-)

Not without monkeypatching the re module:

import re

_original_compile = re._compile

def _wrapped_compile(*key):
try:
custom_compile = key[0].__compile__
except AttributeError:
return _original_compile(*key)
else:
return custom_compile(*key[1:])

re._compile = _wrapped_compile


class Aaa(object):
def __compile__(self, *args):
return re.compile("[Aa]+")

print re.findall(Aaa(), "a yadda so wht")

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


Getting the result of a process after exec*()

2007-08-17 Thread AndrewTK
Hi,

I am trying to write a Python script that takes a ZIP file from a web
form (using CGI) and uses either of the UN*X unzip, gunzip, tar,
bunzip2 utilities to expand it.

I can use Python to save the script to disk; but processing it is
another matter. If for example I have received a *.tar.gz file, I need
to first pass it through gunzip; then through the tar utility. I also
want to process the resulting directory.

The problem for me is this: once an external process is called via
exec*() the script has effectively fulfilled its task. Is there any
way one can process a file with an external process and continue
further processing in Python; /once the external processing is
completed/?

Many thanks,

Andrew

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


Re: Naming dictionaries recursively

2007-08-17 Thread TYR

> So the tougher problem seems to be parsing those lines.  That is not a
> valid Python dictionary unless the names `Bob`, `Humboldt`, `red`, and
> `predatory` are not already defined.  So you can't just ``eval`` it.

In what way? {'key': val}, right?

Anyway, I can always change the format they go into the file in.




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


Re: Hijack! Different book:

2007-08-17 Thread kyosohma
On Aug 16, 3:50 pm, Steve Holden <[EMAIL PROTECTED]> wrote:
> Dennis Lee Bieber wrote:
> > On Thu, 16 Aug 2007 04:21:07 -0700, Paul Boddie <[EMAIL PROTECTED]>
> > declaimed the following in comp.lang.python:
>
> >> Is this the book that came out before TurboGears even reached 1.0,
> >> probably having diminished relevance now that there are 1.1 and 2.0
>
> >Not sure -- I'd ordered it in January, but Amazon didn't ship it
> > until a week ago; don't know if it was this, or the other book in the
> > shipment that held it up.
>
> JANUARY!?? So much for Amazon's customer service. Or is it only
> February where you live?
>
> regards
>   Steve
> --
> Steve Holden+1 571 484 6266   +1 800 494 3119
> Holden Web LLC/Ltd  http://www.holdenweb.com
> Skype: holdenweb  http://del.icio.us/steve.holden
> --- Asciimercial --
> Get on the web: Blog, lens and tag the Internet
> Many services currently offer free registration
> --- Thank You for Reading -

Yeah...The Python Power! book was supposed to be released months ago,
so I ordered it 4-6 months ago, but it only shipped a week ago when it
actually released. Admittedly, this has nothing to do with the
TurboGears book.

Mike

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


Re: Question on SPE and pwintypes.dll

2007-08-17 Thread Gerry
On Aug 17, 10:14 am, [EMAIL PROTECTED] wrote:
> On Aug 17, 8:38 am, Gerry <[EMAIL PROTECTED]> wrote:
>
> >I'm running SPE 8.3.c under XP, on a new PC.
>
> >The files for SPE and Python were copied to the new machine, but
> > the OS wasn't migrated, so the registry didn't know about either.
>
> >I reinstalled Python 2.5.1, and Python seems fine.
>
> >I made a shortcut to SPE.pyw.  Clicking on the shortcut gives an
> > error pop-up, application failed to start cannot find pwintypes.dll.
> > When I click "OK", SPE seems to start normally.
>
> >Any idea what's up?  Googling for pwintypes.dll didn't give me any
> > hits.
>
> >Gerry
>
> Probably just need to do a search in the registry of the old PC for
> SPE or that dll file and then make the appropriate changes on your new
> PC. Or just reinstall SPE.
>
> Mike

Thanks -- I'll give that a try.

Gerry

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


Re: Getting the result of a process after exec*()

2007-08-17 Thread Miles
On 8/17/07, AndrewTK <[EMAIL PROTECTED]> wrote:
> The problem for me is this: once an external process is called via
> exec*() the script has effectively fulfilled its task. Is there any
> way one can process a file with an external process and continue
> further processing in Python; /once the external processing is
> completed/?

Assuming you're looking at the docs for the os module, instead of the
exec*() functions, check out the spawn*() functions, or, to use a
subshell, system().  Better yet, take a look at the subprocess module:
http://docs.python.org/lib/module-subprocess.html

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


Re: advice about `correct' use of decorator

2007-08-17 Thread Gerardo Herzig
Laszlo Nagy wrote:

>
>>>
>>> Are you developing a website or a GUI program?
>>>
>>>
>> It will be used in a web development. It is an important point?
>
> Yes, I think. Unless you use AJAX. :-) Most web sites work this way:
>
> user clicks -> request to server -> process on server -> response
>
> I would rather enclose the whole handler in try/except and raise a 
> custom PermissionDenied exception when the user has inscuficient 
> permissions. There are problems with a decorator used for 
> authorization. The context needs to be determined. E.g. which user is 
> accessing the method? (It can be hard to tell if the method is part of 
> a thread object that lies in a thread pool and is shared between 
> simultaneous clients...) Also it might be that the method's purpose is 
> to change objects of the same class, and the user has permission to 
> modify one object but not the other. In this case, authorization must 
> be done inside the function call... How do you express this with a 
> decorator?
>
> These are just ideas. You should analyze your problem and make your 
> decision. If you only want to restrict access to functions, then 
> probably using decorators is perfect.
>
> Best,
>
>   Laszlo
>
>
I post the change_pass() function as an example, there is a buch of 
other functions (the whole site actually) that will require a logged 
user.  May the change_pass() function have additional control, shure, 
but it will be not part of the `global' requirement.

Thank you very much for your time, Laszlo
Gerardo

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


Re: best GUI library for vector drawing program

2007-08-17 Thread [EMAIL PROTECTED]
I used wxWidgets for a work like that. I found it quite easy to use and 
I found simple to create a Gui with wxdev which is quite rad.
bye
Pier Paolo
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: advice about `correct' use of decorator

2007-08-17 Thread Gerardo Herzig
BJörn Lindqvist wrote:

>On 8/16/07, Gerardo Herzig <[EMAIL PROTECTED]> wrote:
>  
>
>>@is_logued_in
>>def change_pass():
>>bla
>>bla
>>
>>And so on for all the other functions who needs that the user is still
>>loged in.
>>
>>where obviosly the is_logued_in() function will determine if the dude is
>>still loged in, and THEN execute change_pass(). If the dude is not loged
>>in, change_pass() is NOT executed at all. Instead, it will be redirected
>>to the `login' screen.
>>
>>
>
>I think this is redundant use of a decorator. You can achieve the
>exact same effect by writing:
>
>def is_logued_in():
>if not user.is_logged_in():
>raise NotLoggedInError
>
>It costs you one more line, but reduces complexity. And if you are
>worried about that extra line you can put it in a function.
>
>  
>
As far as i know (by the way, AFAK is the shortcut?, and BTW means `by 
the way'? ), decorators are not indispensable. I mean, all that you can 
do with python, you can doit without decorators. And from my point of 
view, this hides the complexity for the other developers of my group, 
since all they have to do is add the @is_logged_in line at the top of 
the cgi script, and not to worrie about exceptions, not even how the 
decorator is implemented (i may log the error in some file). All they 
have to know is that any abnormal situation will redirect to the `login' 
screen.

Thank you for your comments!
Gerardo
-- 
http://mail.python.org/mailman/listinfo/python-list


help to make program better

2007-08-17 Thread yadin
hi!
Can any one tell me why is it that i can't see my second frame and why
is the value of freq not Appended in the First frame ...thanks
I know it is wx python  but it has to do with passing variables.thanks

import wx

def create(parent):
return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1FREQ, wxID_FRAME1FREQDISP,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(4)]

class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
  pos=wx.Point(380, 179), size=wx.Size(241, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
  label='frequency disp', name='staticText1', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13), style=0)

self.freqdisp = wx.TextCtrl(id=wxID_FRAME1FREQDISP,
name='freqdisp',
  parent=self, pos=wx.Point(104, 24), size=wx.Size(100,
21),
  style=0, value='')

self.freq = wx.Button(id=wxID_FRAME1FREQ, label='get freq',
name='freq',
  parent=self, pos=wx.Point(24, 56), size=wx.Size(184,
23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1FREQ)

def __init__(self, parent):
self._init_ctrls(parent)

def OnButton1Button(self, event):

def create(parent):
return Frame2(parent)
[wxID_FRAME2, wxID_FRAME2FREQ, wxID_FRAME2FREQDISP,
wxID_FRAME2STATICTEXT1,] = [wx.NewId() for _init_ctrls in range(4)]

class Frame2:
def __init__(self):
#
wx.Frame.__init__(self, id=wxID_FRAME2, name='',
parent=prt,
  pos=wx.Point(400, 179), size=wx.Size(300, 133),
  style=wx.DEFAULT_FRAME_STYLE, title='Frame2')
self.SetClientSize(wx.Size(233, 99))

self.staticText1 =
wx.StaticText(id=wxID_FRAME2STATICTEXT1,
  label='frequency goes here first',
name='staticText2', parent=self,
  pos=wx.Point(24, 32), size=wx.Size(71, 13),
style=0)

self.freqdisp2 = wx.TextCtrl(id=wxID_FRAME2FREQDISP,
name='freqdisp2',
  parent=self, pos=wx.Point(104, 24),
size=wx.Size(100, 21),
  style=0, value=' ')

self.freq = wx.Button(id=wxID_FRAME2FREQ, label='get
freq', name='freq',
  parent=self, pos=wx.Point(24, 56),
size=wx.Size(184, 23),
  style=0)
self.freq.Bind(wx.EVT_BUTTON, self.OnButton2Button,
id=wxID_FRAME2FREQ)

def __init__(self, parent):
self._init_ctrls(parent)
def OnButton2Button(self, event):
freqdisp.Append('this is it 24HZ!')
Show()

if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()

app.MainLoop()

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


Re: help to make program better

2007-08-17 Thread math2life
On Aug 17, 9:27 am, yadin <[EMAIL PROTECTED]> wrote:
> hi!
> Can any one tell me why is it that i can't see my second frame and why
> is the value of freq not Appended in the First frame ...thanks
> I know it is wx python  but it has to do with passing variables.thanks
>
> import wx
>
> def create(parent):
> return Frame1(parent)
>
> [wxID_FRAME1, wxID_FRAME1FREQ, wxID_FRAME1FREQDISP,
> wxID_FRAME1STATICTEXT1,
> ] = [wx.NewId() for _init_ctrls in range(4)]
>
> class Frame1(wx.Frame):
> def _init_ctrls(self, prnt):
> # generated method, don't edit
> wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
>   pos=wx.Point(380, 179), size=wx.Size(241, 133),
>   style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
> self.SetClientSize(wx.Size(233, 99))
>
> self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
>   label='frequency disp', name='staticText1', parent=self,
>   pos=wx.Point(24, 32), size=wx.Size(71, 13), style=0)
>
> self.freqdisp = wx.TextCtrl(id=wxID_FRAME1FREQDISP,
> name='freqdisp',
>   parent=self, pos=wx.Point(104, 24), size=wx.Size(100,
> 21),
>   style=0, value='')
>
> self.freq = wx.Button(id=wxID_FRAME1FREQ, label='get freq',
> name='freq',
>   parent=self, pos=wx.Point(24, 56), size=wx.Size(184,
> 23),
>   style=0)
> self.freq.Bind(wx.EVT_BUTTON, self.OnButton1Button,
> id=wxID_FRAME1FREQ)
>
> def __init__(self, parent):
> self._init_ctrls(parent)
>
> def OnButton1Button(self, event):
>
> def create(parent):
> return Frame2(parent)
> [wxID_FRAME2, wxID_FRAME2FREQ, wxID_FRAME2FREQDISP,
> wxID_FRAME2STATICTEXT1,] = [wx.NewId() for _init_ctrls in range(4)]
>
> class Frame2:
  ~~~should be class Frame2(wx.Frame):
> def __init__(self):
> #
> wx.Frame.__init__(self, id=wxID_FRAME2, name='',
> parent=prt,
>   pos=wx.Point(400, 179), size=wx.Size(300, 133),
>   style=wx.DEFAULT_FRAME_STYLE, title='Frame2')
> self.SetClientSize(wx.Size(233, 99))
>
> self.staticText1 =
> wx.StaticText(id=wxID_FRAME2STATICTEXT1,
>   label='frequency goes here first',
> name='staticText2', parent=self,
>   pos=wx.Point(24, 32), size=wx.Size(71, 13),
> style=0)
>
> self.freqdisp2 = wx.TextCtrl(id=wxID_FRAME2FREQDISP,
> name='freqdisp2',
>   parent=self, pos=wx.Point(104, 24),
> size=wx.Size(100, 21),
>   style=0, value=' ')
>
> self.freq = wx.Button(id=wxID_FRAME2FREQ, label='get
> freq', name='freq',
>   parent=self, pos=wx.Point(24, 56),
> size=wx.Size(184, 23),
>   style=0)
> self.freq.Bind(wx.EVT_BUTTON, self.OnButton2Button,
> id=wxID_FRAME2FREQ)
>
> def __init__(self, parent):
> self._init_ctrls(parent)
> def OnButton2Button(self, event):
> freqdisp.Append('this is it 24HZ!')
> Show()
   should be create(self).Show()
>
> if __name__ == '__main__':
> app = wx.PySimpleApp()
> frame = create(None)
> frame.Show()
>
> app.MainLoop()

Hi,
I found two errors in your program.
one is that class Frame2 must be inherited from wx.Frame,
the other is Show() must belong a object.







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


help on object programing

2007-08-17 Thread yadin
class big(self):

x = 32
list = []
def inside (self):

class small(self): # a new class defined inside the first

y = 348
list.append(y) # send the value to first list
list.append(x)

print list

how can i define my variables so that there are valid outside the
class???

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


Re: best GUI library for vector drawing program

2007-08-17 Thread chewie54
On Aug 17, 12:08 pm, Jeremy Sanders  wrote:
> chewie54 wrote:
> > What would be the best cross-platform GUI library to use for a vector
> > based CAD program ( something like Visio on Windows )   WxWidgets,
> > Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> > draw and edit in a window that looks like a page of paper so WYSIWYG
> > is very important,  and I need to save the drawings in vector based
> > file formats like PS, EPS,  SVG, as well as image formats like jpg,
> > png, and gif.  Also, the images need to be high resolution so that
> > they can be pasted into various other programs in Windows OS,  and
> > Linux OS,  and the Mac OS.
>
> PyQt/Qt4 is capable of that (SVG export was added in Qt4.3).
>
> I have a graph drawing application based around it (Veusz).
>
> If you base everything around QPainter, you'll be able to write to any of
> those output formats (including eps and pdf), and bitmaps. Antialiasing is
> optional for bitmap formats.
>
> Jeremy
>
> --
> Jeremy Sandershttp://www.jeremysanders.net/

Jeremy,

I looked at your application, Veusz (it looks very nice),  and I see
you have binary distrubitions
for each os.  Is is difficult to build these binaries for each
system.  Could
you tell me how that is done?

Thanks,
Dan

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


Re: Can python threads take advantage of use dual core ?

2007-08-17 Thread Diez B. Roggisch
nikhilketkar schrieb:
> What are the implications of the Global Interpreter Lock in Python ?
> Does this mean that Python threads cannot exploit a dual core
> processor and the only advantage of using threads is in that
> computation and IO-bound operations can continue in parallel ?


Essentially, yes. That is unless the computation is done in C-code which 
released the GIL beforehand. But a certain tradeoff is to expected 
nontheless.

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


Re: best GUI library for vector drawing program

2007-08-17 Thread Jeremy Sanders
chewie54 wrote:

> What would be the best cross-platform GUI library to use for a vector
> based CAD program ( something like Visio on Windows )   WxWidgets,
> Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> draw and edit in a window that looks like a page of paper so WYSIWYG
> is very important,  and I need to save the drawings in vector based
> file formats like PS, EPS,  SVG, as well as image formats like jpg,
> png, and gif.  Also, the images need to be high resolution so that
> they can be pasted into various other programs in Windows OS,  and
> Linux OS,  and the Mac OS.

PyQt/Qt4 is capable of that (SVG export was added in Qt4.3).

I have a graph drawing application based around it (Veusz).

If you base everything around QPainter, you'll be able to write to any of
those output formats (including eps and pdf), and bitmaps. Antialiasing is
optional for bitmap formats.

Jeremy

-- 
Jeremy Sanders
http://www.jeremysanders.net/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: best GUI library for vector drawing program

2007-08-17 Thread chewie54
On Aug 17, 9:27 am, chewie54 <[EMAIL PROTECTED]> wrote:
> Hello,
>
> What would be the best cross-platform GUI library to use for a vector
> based CAD program ( something like Visio on Windows )   WxWidgets,
> Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> draw and edit in a window that looks like a page of paper so WYSIWYG
> is very important,  and I need to save the drawings in vector based
> file formats like PS, EPS,  SVG, as well as image formats like jpg,
> png, and gif.  Also, the images need to be high resolution so that
> they can be pasted into various other programs in Windows OS,  and
> Linux OS,  and the Mac OS.
>
> Thanks in advance,
> Dan

Also,  I forgot to mention that it must have scripting capabilities so
and I would like to embed a Tcl or Python interpreter.

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


Can python threads take advantage of use dual core ?

2007-08-17 Thread nikhilketkar
What are the implications of the Global Interpreter Lock in Python ?
Does this mean that Python threads cannot exploit a dual core
processor and the only advantage of using threads is in that
computation and IO-bound operations can continue in parallel ?

Thanks,
Nikhil

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


Re: Can python threads take advantage of use dual core ?

2007-08-17 Thread Stefan Behnel
Diez B. Roggisch wrote:
> nikhilketkar schrieb:
>> What are the implications of the Global Interpreter Lock in Python ?
>> Does this mean that Python threads cannot exploit a dual core
>> processor and the only advantage of using threads is in that
>> computation and IO-bound operations can continue in parallel ?
> 
> 
> Essentially, yes. That is unless the computation is done in C-code which
> released the GIL beforehand.

Which virtually all computation-intensive extensions do. Also, note the
processing package, which allows you to use a separate process more or less
like a thread, thus avoiding GIL issues completely.

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


Re: Memory leak when creating lots of object

2007-08-17 Thread Terry Reedy

"Godzilla" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
| What should I do next? Can I force garbage collection manually? If so,
| how do I do that?

Read doc for gc module.  I think
import gc
gc.collect()



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


Re: to property or function in class object

2007-08-17 Thread Steven Bethard
james_027 wrote:
> i am very new to python, not knowing much about good design. I have an
> object here for example a Customer object, where I need to retrieve a
> info which has a number of lines of code to get it.
> 
> my question is weather what approach should I use? to use the property
> which is from the python new class style as I understand or simple use
> function that will return the the info I needed.
[snip]
> While both approach would get the job done, I don't know much about
> the performance, benefits, design philosophy between the two approach.

I tend to view property as only something you use for the purposes of 
backwards compatibility. So if you started with something as a simple 
attribute and you later realize that it needs to do some computation, 
you can use properties to keep the same API.

However, if I know right off the bat that I need to do some computation 
to return a result, then I'll always prefer a method.  People expect a 
method call to take some computation.  People don't always expect that 
from a simple attribute access.  So I think it's more predictable for 
your users if you use a method when there's any real work being done.

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


Re: help on object programing

2007-08-17 Thread mike
On Aug 17, 11:07 am, yadin <[EMAIL PROTECTED]> wrote:
> class big(self):
>
> x = 32
> list = []
> def inside (self):
>
> class small(self): # a new class defined inside the first
>
> y = 348
> list.append(y) # send the value to first list
> list.append(x)
>
> print list
>
> how can i define my variables so that there are valid outside the
> class???


Well, first you have to create an instance of the class big:
  bigInstance = big();

then to get to bigInstance's list you do bigInstance.list and you can
get to the list:
  print bigInstance.list;

but the list will be empty.

check out the dive into python book to understand it object oriented
programming a little more.
http://www.diveintopython.org/


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


Making a copy (not reference) of a file handle, or starting stdin over at line 0

2007-08-17 Thread Shawn Milochik
I wrote a script which will convert a tab-delimited file to a
fixed-width file, or a fixed-width file into a tab-delimited. It reads
a config file which defines the field lengths, and uses it to convert
either way.

Here's an example of the config file:

1:6,7:1,8:9,17:15,32:10

This converts a fixed-width file to a tab-delimited where the first
field is the first six characters of the file, the second is the
seventh, etc. Conversely, it converts a tab-delimited file to a file
where the first six characters are the first tab field, right-padded
with spaces, and so on.

What I want to do is look at the file and decide whether to run the
function to convert the file to tab or FW. Here is what works
(mostly):

x = inputFile.readline().split("\t")
inputFile.seek(0)

if len(x) > 1:
toFW(inputFile)
else:
toTab(inputFile)


The problem is that my file accepts the input file via stdin (pipe) or
as an argument to the script. If I send the filename as an argument,
everything works perfectly.

If I pipe the input file into the script, it is unable to seek() it. I
tried making a copy of inputFile and doing a readline() from it, but
being a reference, it makes no difference.

How can I check a line (or two) from my input file (or stdin stream)
and still be able to process all the records with my function?

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


Python and Tkinter Programming--Expensive!

2007-08-17 Thread W. Watson
Why is the book in Subject (author is Grayson) so expensive? $100 on Amazon 
and $195 on ABE. Aren't there alternatives?
-- 
  Wayne Watson (Nevada City, CA)

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


Re: unexpected optparse set_default/set_defaults behavior

2007-08-17 Thread Steven Bethard
[EMAIL PROTECTED] wrote:
> Some rather unexpected behavior in the set_default/set_defaults
> methods for OptionParser that I noticed recently:
> 
 import optparse
 parser = optparse.OptionParser()
 parser.add_option("-r", "--restart", dest="restart", action="store_true")
> 
 parser.defaults
> {'restart': None}
 parser.set_default("retart", False)
 parser.defaults
> {'retart': False, 'restart': None}
> 
> Why does set_default not raise an exception when passed a key that it
> doesn't recognize?
> 
> Bad typysts bewaer.
> 
> The only reason I can think not to raise an exception is so that
> defaults can be defined before the options are added. Is there some
> use case that I'm not thinking of here?

I'm not really sure what other use case there is with optparse, but 
argparse has the same behavior because sometimes it's useful to store 
values that can't be changed by anything on the command line. This is 
particularly useful when you're dealing with sub-commands::

 >>> import argparse
 >>> parser = argparse.ArgumentParser()
 >>> subparsers = parser.add_subparsers()

 # set up the foo parser, adding a static "func" default
 >>> foo_parser = subparsers.add_parser('foo')
 >>> foo_parser.set_defaults(func=lambda: 'do something for foo')
 >>> foo_parser.add_argument('--foo')

 # set up the bar parser, adding a staic "func" default
 >>> bar_parser = subparsers.add_parser('bar')
 >>> bar_parser.set_defaults(func=lambda: 'do something for bar')
 >>> bar_parser.add_argument('bar')

 # parse the arguments and call whichever "func" was selected
 >>> args = parser.parse_args(['bar', '13'])
 >>> args.func()
 'do something for bar'

I know optparse doesn't support sub-commands, but I can imagine that if 
you were trying to hack optparse to do something similar you might find 
it useful to be able to specify defaults that weren't ever set by 
anything at the command line.

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


Re: best GUI library for vector drawing program

2007-08-17 Thread chewie54
On Aug 17, 12:07 pm, chewie54 <[EMAIL PROTECTED]> wrote:
> On Aug 17, 9:27 am, chewie54 <[EMAIL PROTECTED]> wrote:
>
> > Hello,
>
> > What would be the best cross-platform GUI library to use for a vector
> > based CAD program ( something like Visio on Windows )   WxWidgets,
> > Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> > draw and edit in a window that looks like a page of paper so WYSIWYG
> > is very important,  and I need to save the drawings in vector based
> > file formats like PS, EPS,  SVG, as well as image formats like jpg,
> > png, and gif.  Also, the images need to be high resolution so that
> > they can be pasted into various other programs in Windows OS,  and
> > Linux OS,  and the Mac OS.
>
> > Thanks in advance,
> > Dan
>
> Also,  I forgot to mention that it must have scripting capabilities so
> and I would like to embed a Tcl or Python interpreter.

I should have also mentioned that is for a commercial application.
That
doesn't rule Qt or PyQt out,  but this is a startup company with very
little income so my first choice would be to use some GUI library
that
is free to use for commercial apps.


Thanks again,
Dan


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


Re: Problem with directory recursion!

2007-08-17 Thread Robert Dailey
Here's part of the output that's incorrect:

models\W_BoomerEdge
BYOS_C.entity.xml
BYOS_C_Collision.entity.xml

Notice that the file BYOS_C.entity.xml is showing up as a file in the
directory W_BoomerEdge. This file does not exist in this folder, but yet in
a different folder. The output is consistent with the 'print' statements you
will see in the function I posted earlier.

On 8/17/07, Robert Dailey <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I've created a function that is used to recurse a directory tree in
> Windows XP using os.walk(). For the most part it works, however in some
> instances the data is incorrect and I'm getting invalid sub-directory paths.
> Here's the function:
>
>
> def __doSearch( root_dir, sub_path, restype, ext ):
> print sub_path
> # Searches the specified directory and generates a
> # list of files to preload.
> complete_path = osp.normpath( osp.join( root_dir, sub_path ) )
> for root, dirs, files in os.walk( complete_path ):
>
> # Record the list of file hash ID's
> for file in files:
> split = __resType( file )
> if split[1] == restype:
> #print sub_path
> print "\t", file
> __appendResource( ext, sub_path, split[0] )
>
> # Remove .svn subdirectories; we don't walk these.
> if ".svn" in dirs:
> dirs.remove( ".svn" )
>
> # Recurse child directories
> for dir in dirs:
> __doSearch( root_dir, osp.join( sub_path, dir ), restype, ext
> )
>
> Does anyone see anything immediately suspicious about the code? I'm
> assuming that in Python, every time a function is called recursively it gets
> its own copy of local variables. For some reason the sub_path variable isn't
> consistent depending on where I use it. For example, if you notice the print
> call at the very start of the function, it will output something like
> "models/ships". However, after passing it into __appendResource(), it
> appears to be just "models".
>
-- 
http://mail.python.org/mailman/listinfo/python-list

Problem with directory recursion!

2007-08-17 Thread Robert Dailey
Hi,

I've created a function that is used to recurse a directory tree in Windows
XP using os.walk(). For the most part it works, however in some instances
the data is incorrect and I'm getting invalid sub-directory paths. Here's
the function:


def __doSearch( root_dir, sub_path, restype, ext ):
print sub_path
# Searches the specified directory and generates a
# list of files to preload.
complete_path = osp.normpath( osp.join( root_dir, sub_path ) )
for root, dirs, files in os.walk( complete_path ):

# Record the list of file hash ID's
for file in files:
split = __resType( file )
if split[1] == restype:
#print sub_path
print "\t", file
__appendResource( ext, sub_path, split[0] )

# Remove .svn subdirectories; we don't walk these.
if ".svn" in dirs:
dirs.remove( ".svn" )

# Recurse child directories
for dir in dirs:
__doSearch( root_dir, osp.join( sub_path, dir ), restype, ext )

Does anyone see anything immediately suspicious about the code? I'm assuming
that in Python, every time a function is called recursively it gets its own
copy of local variables. For some reason the sub_path variable isn't
consistent depending on where I use it. For example, if you notice the print
call at the very start of the function, it will output something like
"models/ships". However, after passing it into __appendResource(), it
appears to be just "models".
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: best GUI library for vector drawing program

2007-08-17 Thread Thomas Kellerer

chewie54 wrote on 17.08.2007 15:27:
> Hello,
> 
> What would be the best cross-platform GUI library to use for a vector
> based CAD program ( something like Visio on Windows )   WxWidgets,
> Tk,   PyQt,  Java Swing,  Java SWT,   I need the capibility to
> draw and edit in a window that looks like a page of paper so WYSIWYG
> is very important,  and I need to save the drawings in vector based
> file formats like PS, EPS,  SVG, as well as image formats like jpg,
> png, and gif.  Also, the images need to be high resolution so that
> they can be pasted into various other programs in Windows OS,  and
> Linux OS,  and the Mac OS.

The NetBeans Platform offers a nice module for this. NetBeans itself uses it 
for 
UML, BPEL and ERD modelling and other features (such as the visual XSD editor)

http://platform.netbeans.org/
http://graph.netbeans.org/


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


question

2007-08-17 Thread CarpeSkium
"I've parsed a webpage into a text file. In doing so, I've kept all
the text I'm interested in, and removed all the text I don't want. My
result is a text file that is comma-separated. However, the text file
is one, very long, single string. I need to substitute every eighth
(8th) comma with a new line ("\n"). I've tried regular expressions,
but don't know how to make this happen on only every eighth comma. I'd
post my code, but none of it works. Thanks for the help."

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


Re: Python and Tkinter Programming--Expensive!

2007-08-17 Thread kyosohma
On Aug 17, 12:59 pm, "W. Watson" <[EMAIL PROTECTED]> wrote:
> Why is the book in Subject (author is Grayson) so expensive? $100 on Amazon
> and $195 on ABE. Aren't there alternatives?
> --
>   Wayne Watson (Nevada City, CA)
>
> Web Page: 


Probably because it is out of print, and thus, hard-to-find. I got my
copy last year and it definitely didn't cost that much then.

Mike

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


Re: help on object programing

2007-08-17 Thread Neil Cerutti
On 2007-08-17, yadin <[EMAIL PROTECTED]> wrote:
> class big(self):
>
> x = 32
> list = []
> def inside (self):
>
> class small(self): # a new class defined inside the first
>
> y = 348
> list.append(y) # send the value to first list
> list.append(x)
>
> print list
>
> how can i define my variables so that there are valid outside
> the class???

Be sure to read and try the code in the sections of the Python
tutorial that discuss classes and the objects they create.

In my opinion the classes section of the official tutorial is
unfortunately the least tutorial part of the tutorial. But it
won't steer you wrong.

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


Re: question

2007-08-17 Thread Peter Otten
 [EMAIL PROTECTED] wrote:

> "I've parsed a webpage into a text file. In doing so, I've kept all
> the text I'm interested in, and removed all the text I don't want. My
> result is a text file that is comma-separated. However, the text file
> is one, very long, single string. I need to substitute every eighth
> (8th) comma with a new line ("\n"). I've tried regular expressions,
> but don't know how to make this happen on only every eighth comma. I'd
> post my code, but none of it works. Thanks for the help."

>>> text = "aaa," * 20
>>> from itertools import cycle, groupby
>>> print "\n".join(",".join(g) for k, g in groupby(text.split(","),
... key=lambda key, c=cycle([True]*8+[False]*8): c.next()))
aaa,aaa,aaa,aaa,aaa,aaa,aaa,aaa
aaa,aaa,aaa,aaa,aaa,aaa,aaa,aaa
aaa,aaa,aaa,aaa,

:-)

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


Re: Making a copy (not reference) of a file handle, or starting stdin over at line 0

2007-08-17 Thread Peter Otten
Shawn Milochik wrote:

> How can I check a line (or two) from my input file (or stdin stream)
> and still be able to process all the records with my function?

One way:

from itertools import chain
firstline = instream.next()
head = [firstline]

# loop over entire file
for line in chain(head, instream):
process(line)


You can of course read more than one line as long as you append it to the
head list. Here's an alternative:

from itertools import tee
a, b = tee(instream)

for line in a:
# determine file format,
# break when done

# this is crucial for memory efficiency
# but may have no effect in implementations
# other than CPython
del a 

# loop over entire file
for line in b:
# process line


Peter

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


Re: question

2007-08-17 Thread Shawn Milochik
You need to post some kind of code (even non-working) to show that
you've actually done some work. Nobody will do your work for you.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Naming dictionaries recursively

2007-08-17 Thread Paddy
On Aug 17, 3:43 pm, TYR <[EMAIL PROTECTED]> wrote:
> > So the tougher problem seems to be parsing those lines.  That is not a
> > valid Python dictionary unless the names `Bob`, `Humboldt`, `red`, and
> > `predatory` are not already defined.  So you can't just ``eval`` it.
>
> In what way? {'key': val}, right?
>
> Anyway, I can always change the format they go into the file in.

If you control the file format then you could create a valid python
list of dictionaries as the intermediate file format. Something like:

  data = [
  {'name' : 'Bob', 'species' : 'Humboldt', 'colour' : 'red',
'habits' : 'predatory'},
  { ... },
  ...
  }

You can then name the file with a .py ending and import it as a list
of dictionaries that you can then process to form a dict of dicts:

  datadict = dict( (data2name(d), d) for d in modulename.data )

- Paddy.



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


Re: Can python threads take advantage of use dual core ?

2007-08-17 Thread Bjoern Schliessmann
nikhilketkar wrote:

> What are the implications of the Global Interpreter Lock in Python
> ? 

Please have a look at the archives. This topic is brought up anew
every few weeks.

> Does this mean that Python threads cannot exploit a dual core 
> processor and the only advantage of using threads is in that
> computation and IO-bound operations can continue in parallel ?

Not generally, no.

Regards,


Björn

-- 
BOFH excuse #93:

Feature not yet implemented

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


Encryption and hashing

2007-08-17 Thread Kless
Since that I'm working to let encrypt/hash data in the data base of my
projects I have been looking for libraries and/or wrappers. So I want
give my feedback about it.

In the first I found PyCrypto [1] but I see any problems:

* I think that isn't been maintained because the last modification of
its web was on 30 Sep 2006
* Since that has not been uploaded to SourceForge [2] we cann't know
when was released the last version
* There algorithms more secure and modern that it hasn't.

Then, I found 2 great C libraries that are being maintained and
updated with many algorithms. They're MCrypt [3] and MHash [4], and
both have released the last version on this year.

For who knows any of criptography I comment that you can use
algorithms as secure as Rijndael, Twofish, or Serpent with the CFB
cipher mode. And for hash you can use RIPEMD, SHA-2 or WHIRLPOOL.

And the best is that there are wrappers for Python [5] [6].
For if anybody is interested on playing with them:

In the first you need the headers. In Debian/Ubuntu:
$ sudo apt-cache install libmcrypt-dev libmhash-dev

$ wget http://labix.org/download/python-mcrypt/python-mcrypt-1.1.tar.gz
$ wget http://labix.org/download/python-mhash/python-mhash-1.4.tar.gz
$ tar xzf python-mcrypt*.tar.gz; tar xzf python-mhash*.tar.gz
$ cd python-mhash*; sudo python setup.py install; cd ..
$ cd python-mcrypt*; sudo python setup.py install; cd..


[1] http://www.amk.ca/python/code/crypto
[2] http://sourceforge.net/projects/pycrypto
[3] http://mcrypt.sourceforge.net/
[4] http://mhash.sourceforge.net/
[5] http://labix.org/python-mcrypt
[6] http://labix.org/python-mhash

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


Re: Problem with directory recursion!

2007-08-17 Thread Robert Dailey
I figured it out.

I was doing a recursive function call when I didn't have to. The walk()
method already walks into every possible sub-directory for you!

On 8/17/07, Robert Dailey <[EMAIL PROTECTED]> wrote:
>
> Here's part of the output that's incorrect:
>
> models\W_BoomerEdge
> BYOS_C.entity.xml
> BYOS_C_Collision.entity.xml
>
> Notice that the file BYOS_C.entity.xml is showing up as a file in the
> directory W_BoomerEdge. This file does not exist in this folder, but yet in
> a different folder. The output is consistent with the 'print' statements you
> will see in the function I posted earlier.
>
> On 8/17/07, Robert Dailey <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > I've created a function that is used to recurse a directory tree in
> > Windows XP using os.walk(). For the most part it works, however in some
> > instances the data is incorrect and I'm getting invalid sub-directory paths.
> > Here's the function:
> >
> >
> > def __doSearch( root_dir, sub_path, restype, ext ):
> > print sub_path
> > # Searches the specified directory and generates a
> > # list of files to preload.
> > complete_path = osp.normpath( osp.join( root_dir, sub_path ) )
> > for root, dirs, files in os.walk( complete_path ):
> >
> > # Record the list of file hash ID's
> > for file in files:
> > split = __resType( file )
> > if split[1] == restype:
> > #print sub_path
> > print "\t", file
> > __appendResource( ext, sub_path, split[0] )
> >
> > # Remove .svn subdirectories; we don't walk these.
> > if ".svn" in dirs:
> > dirs.remove( ".svn" )
> >
> > # Recurse child directories
> > for dir in dirs:
> > __doSearch( root_dir, osp.join( sub_path, dir ), restype,
> > ext )
> >
> > Does anyone see anything immediately suspicious about the code? I'm
> > assuming that in Python, every time a function is called recursively it gets
> > its own copy of local variables. For some reason the sub_path variable isn't
> > consistent depending on where I use it. For example, if you notice the print
> > call at the very start of the function, it will output something like
> > "models/ships". However, after passing it into __appendResource(), it
> > appears to be just "models".
> >
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list

Re: Problem with directory recursion!

2007-08-17 Thread Laszlo Nagy

>
> Does anyone see anything immediately suspicious about the code? 
Yes. os.walk does the recursion for you. Either you should use 
os.listdir instead of os.walk, or use os.walk ONCE and iterate over the 
results. I prefer to use the former because usually I do not remember 
how os.walk works. Read and try the example that is given in the docs:

http://docs.python.org/lib/os-file-dir.html

Best,

   Laszlo

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


Re: Encryption and hashing

2007-08-17 Thread Laszlo Nagy

> For who knows any of criptography I comment that you can use
> algorithms as secure as Rijndael, Twofish, or Serpent with the CFB
> cipher mode. And for hash you can use RIPEMD, SHA-2 or WHIRLPOOL.
>   
As I recall, PyCrypto can also use these, and many others. And it can 
also do RSA.
> And the best is that there are wrappers for Python [5] [6].
>   
One advantage of PyCrypto is that it works on many platforms. If 
standard C extensions are not available, it will fall back to a pure 
python implementation. Well yes, sometimes it is slow. But it is also 
much easier to use than pyOpenSSL, for example. (BTW you forgot to 
mention some other popular ones, like pyOpenSSL, mcrypto2 etc.)

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


Re: Downloading multiple csv files from a website

2007-08-17 Thread tkpmep
Mike,

Thanks for the pointers. I looked through the ASPN cookbook, but found
a more reliable (and easier to implement) way to get the files I want.
I downloaded GNU Wget from http://users.ugent.be/~bpuype/wget/( the
current version is 1.10.2), and then ran it from Python as follows

import os
rc = os.system('wget --debug --output-document="c:\\downloads\
\russell1000index_cyr.csv" --output-file=log.txt
http://www.russell.com/common/indexes/csvs/russell1000index_cyr.csv')


rc is the return code, and is 0 if the download succeeds. I also tried
the subprocess module

import subprocess
f = subprocess.Popen('wget --debug --output-document="c:\\downloads\
\russell1000index_cyr.csv" --output-file=log.txt
http://www.russell.com/common/indexes/csvs/russell1000index_cyr.csv')

This, too, works just fine. Wget does a lot more error-checking than
the recipe in the Python cookbook, does FTP as well as http, and
supports OpenSSL - its essentially a one-stop solution. In addition, I
can write batch files that do all the downloads without any need for
Python to be installed on the machine.

Thanks again

Thomas Philips

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


Re: best GUI library for vector drawing program

2007-08-17 Thread Jeremy Sanders
chewie54 wrote:

> I looked at your application, Veusz (it looks very nice),  and I see
> you have binary distrubitions
> for each os.  Is is difficult to build these binaries for each
> system.  Could
> you tell me how that is done?

I use pyinstaller to make the binaries (see the veusz_pyinst.spec file), and
NSIS to make a Windows installer from the Windows binary (see veusz.nsi).

The Linux binary, unfortunately, isn't 100% compatible, as I've found trying
to run on 64 bit systems. I assume it's some sort of glibc mismatch. Making
the linux binaries on an old distribution helps the compatibility (I use
centos 3 in a virtual environment).

jeremy

-- 
Jeremy Sanders
http://www.jeremysanders.net/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: why psyco using more memery in liunx?

2007-08-17 Thread Michael L Torrie
kyo guan wrote:
> Hi all:
> 
>   When you import psyco in python2.5, you can see the memery grow up near 
> 40MB in linux. but the same version python and
> psyco, is only grow up 1MB under windows. 

I have a hunch it's because of how the OS's are reporting shared memory
usage.  IE, the 1 MB increase under windows may not be altogether
truthful, and neither is the reported 40 MB on linux.  Memory usage is
tricky to judge on any modern OS, as shared libraries do increase the
apparent memory use by an application, but the libraries are shared with
other applications and OS components.

> 
> kyo
> 

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


Re: how to convert a c program to java program

2007-08-17 Thread Matt McCredie
> I heard I need to port C program to JPython first and compile it to native
> JAVA.  I don't know
> anything about JPython.  Is there a tool to do the porting?  If not, what is
> the quickest way to learn
> JPython?

I'm assuming that you are refering to Jython. You probably want to
start by learning Python, since Jython is essentially just an
implementation of Python written in Java. I'm not sure why you need to
involve Jython at all though. Syntax wise there are many more
similarities between C and Java than there are between C and Python or
Python and Java. Anyway, if you want to learn Python try one of these:
http://python.org/doc/tut/ or http://www.diveintopython.org/.

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


Re: help on object programing

2007-08-17 Thread DouhetSukd

> how can i define my variables so that there are valid outside the
> class???

Not to be obnoxious, but your sample code has a number of fairly big
conceptual issues (like subclassing self and assigning 32 at the big
class level and printing 'list' which is a built-in type).  Been there
myself - it took me a while to understand class vs. instance
variables.  You are also using fairly advanced techniques such as
embedded classes which look above a newbie level.

I took the liberty to comment and "fix" up your code a bit so that it
runs:

#classes either inherit or not and signify that in parenthesis.
inheriting 'self' makes no sense
#for a class declaration.  but it does make perfect sense to have
'self' as a param to a class method (def)

class big:

#class-level variable
x = 32

#changed to mylist to avoid confusion with list built-in.
mylist = []

#this is a normal instance method - 'self' refers to the class
instance you just created.
def inside (self):

#is this really what you wanted?  an embedded class -
syntaxically correct, but not used often
class small: # a new class defined inside the first

y = 348
#ok, now I am referring to the mylist variable associated
(bound in python-speak) to the big class.
#y is defined here so no need to do anything
big.mylist.append(y) # send the value to first list
#same with big.x
big.mylist.append(big.x)


#instantiate the class, because you are calling an instance method
(i.e. you need to have created an instance to use that method)
#call the call
mybig = big().inside()

#refer to the mylist variable declared at the class, not instance
level.
#class level means any other calls you make will alter that variable
print 'my class level mylist variable:',big.mylist

console output:

my class level mylist variable: [348, 32]

Can you perhaps rephrase your requirements to indicate what you want
to achieve?

Strictly speaking, it looks like you could do this:

class Big:
def getlist(self):
   return [348,32]

mylist =Big().getlist()

That's probably not what you were asking for, but it does express the
results you would get out of your code, especially as you are not
passing in any significant parameters to the 'inside' function.

OK, perhaps a bit more useful.

#no inheritance - could also be class Big(object) where object is the
python "root class"
class Big:

   #initialize the class level to be empty
   myclasslist = []
   def __init__(self):
  #initialize the instance level variable to be empty
  self.myinstancelist = []

   def appendAndGet(self,x,y):
  #modify the instance's "personal" list
  self.myinstancelist.append(x)
  self.myinstancelist.append(y)
  #will now modify shared class-level variable.
  Big.myclasslist.append(x)
  Big.myclasslist.append(y)
  return self.myinstancelist


print "Big.myclasslist without any instances around:", Big.myclasslist


bigA = Big()
result = bigA.appendAndGet(348,32)
print "result #1:", result
print "Big.myclasslist:", Big.myclasslist

bigB = Big()
result = bigB.appendAndGet(11,22)
print "result #2:", result

#and the instance also still has its myinstancelist around
print "same as result #2:", bigB.myinstancelist

print "Big.myclasslist:", Big.myclasslist

console output:

D:\user\workspace\vg\tmptesting>testc.py
my class level mylist variable: [348, 32]
Big.myclasslist without any instances around: []
result #1: [348, 32]
Big.myclasslist: [348, 32]
result #2: [11, 22]
same as result #2: [11, 22]
Big.myclasslist: [348, 32, 11, 22]

Try perhaps Dive Into Python's class intro:

www.diveintopython.org/object_oriented_framework/defining_classes.html

Cheers


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


round-trip from egg to code and back to egg

2007-08-17 Thread Catherine
I'd like to use Scriptaculous with TurboGears on Python 2.5.
Unfortunately, Scriptaculous is currently in the Cheese Shop only as a
Python 2.4 egg.

If I had the setup.py that was used to generate the egg, I think it
would be really easy to generate a new Python 2.5 egg from the
existing 2.4 egg.  In fact, it would be gruntwork we could easily
offload from the package authors.

The trouble is, an egg doesn't include setup.py.  Is there any direct
way to round-trip a Python package from egg to installed code and into
a new egg?  I might be able to mine enough information from the files
in EGG-INFO to reconstruct setup.py - reverse-engineering - but that
seems unnervingly like work.

Three possibilities come to mind -

1. I'm missing something simple
2. setuptools could be modified to include the original setup.py with
the egg
3. a script could mine EGG-INFO to regenerate setup.py - maybe such a
script has already been written?

Can somebody who understands eggs better comment?

Thanks very much!
- Catherine
http://catherinedevlin.blogspot.com

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


Array and floating point

2007-08-17 Thread Jonathan Shan
Hello,

I'm experiencing a problem where the float being appended to the array
is not the same as the result of the appending.

>>> from array import *
>>> x = array('f')
>>> x.append(float("0.1"))
>>> x[0]
0.1000149011612
>>> float("0.1")
0.10001

I'm expecting x[0] = 0.10001

Thanks
Jonathan Shan

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


Re: wxpython log redirect

2007-08-17 Thread kyosohma
On Aug 16, 2:29 pm, [EMAIL PROTECTED] wrote:
> Hello,
>
> Why this wx example don't return \nHELLO WORLD and other text in same
> window:
>
> import wx
> import logging
> import sys
>
> def nekaj():
> print "\nHELLO WORLD"
>
> class WxLog(logging.Handler):
> def __init__(self, ctrl):
> logging.Handler.__init__(self)
> self.ctrl = ctrl
> def emit(self, record):
> self.ctrl.AppendText(self.format(record)+"\n")
>
> class MainFrame(wx.Frame):
> def __init__(self):
> wx.Frame.__init__(self, None, title="logging test")
> sizer = wx.BoxSizer(wx.VERTICAL)
>
> log = wx.TextCtrl(self, style=wx.TE_MULTILINE)
>
> rootLogger = logging.getLogger('')
> rootLogger.setLevel(logging.DEBUG)
> hdlr = WxLog(log)
> hdlr.setFormatter(logging.Formatter('%(levelname)s | %(name)s |
> %(message)s [@ %(asctime)s in %(filename)s:%(lineno)d]'))
> rootLogger.addHandler(hdlr)
> rootLogger.debug(str(sys.stdout))
> nekaj()  # goes to the function nekaj
>
> if __name__ =="__main__":
> app = wx.App(0)
> frame = MainFrame()
> frame.Show()
> app.MainLoop()
>
> Regards,
> Vedran

Why are you using the logging module? All you need to do is redirect
stdout. See below:

Give this a try:



class XPinst(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)

def OnInit(self):
self.frame = wx.Frame(None, -1, title='Redirect Test',
  size=(620,450),
  style=wx.STAY_ON_TOP|
wx.DEFAULT_FRAME_STYLE)

panel = wx.Panel(self.frame, -1)

self.log = wx.TextCtrl(panel, -1, size=(500,400),
  style = wx.TE_MULTILINE|wx.TE_READONLY|
  wx.HSCROLL)
redir=RedirectText(self.log)
sys.stdout=redir
print 'test'

self.frame.Show()
return True

class RedirectText:
def __init__(self,aWxTextCtrl):
self.out=aWxTextCtrl

def write(self,string):
 self.out.WriteText(string)



If you use wx.App, you can also just set the "redirect" parameter to
True as well.

Mike

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


Re: Array and floating point

2007-08-17 Thread Zentrader
On Aug 17, 2:06 pm, Jonathan Shan <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I'm experiencing a problem where the float being appended to the array
> is not the same as the result of the appending.
>
> >>> from array import *
> >>> x = array('f')
> >>> x.append(float("0.1"))
> >>> x[0]
> 0.1000149011612
> >>> float("0.1")
>
> 0.10001
>
> I'm expecting x[0] = 0.10001
>
> Thanks
> Jonathan Shan

Floating point precision problems on x86 type machines is well
documented on the web if you want to know more about it.  For your
example use Python's decimal class instead of floating point.  Gmpy is
also available for scientific type apps,
http://docs.python.org/lib/module-decimal.html
http://pydoc.org/2.4.1/decimal.html
http://gmpy.sourceforge.net/
import decimal
x = decimal.Decimal( "0.1" )
print x
y = decimal.Decimal( "0.10001" )
print y
print y/x
print y*x

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


Re: Array and floating point

2007-08-17 Thread Peter Otten
Jonathan Shan wrote:

> Hello,
> 
> I'm experiencing a problem where the float being appended to the array
> is not the same as the result of the appending.
> 
 from array import *
 x = array('f')
 x.append(float("0.1"))
 x[0]
> 0.1000149011612
 float("0.1")
> 0.10001
> 
> I'm expecting x[0] = 0.10001

array("f") is an array of C floats while Python's float type is a double in
C terms. That's why you lose some precision. Try array("d") instead:

>>> from array import array
>>> x = array("d")
>>> x.append(0.1)
>>> x[0]
0.10001


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


Re: Array and floating point

2007-08-17 Thread Robert Kern
Jonathan Shan wrote:
> Hello,
> 
> I'm experiencing a problem where the float being appended to the array
> is not the same as the result of the appending.
> 
 from array import *
 x = array('f')
 x.append(float("0.1"))
 x[0]
> 0.1000149011612
 float("0.1")
> 0.10001
> 
> I'm expecting x[0] = 0.10001

'f' denotes a single-precision floating point number. Python's float objects are
 double-precision floating point numbers. Use 'd' instead.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

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


Re: sub-classing the types in the builtin module datetime

2007-08-17 Thread Colin J. Williams
[EMAIL PROTECTED] wrote:
[My question snipped]
> 
> 
> 
> This problem arises when you change the function signature of __new__.
> I'm a little unclear as to why but it seems for the classmethods
> (thosed marked with the METH_CLASS flag in the C source code), you
> need to arrange to bypass the normal method resolution (I used a
> metaclass
> to do this):
> 
> 
> 
> import datetime
> 
> class Date(datetime.datetime):
> pass
> 
> class FixClassMethods(type):
> def __init__(cls, classname, bases, classdict):
> # add strptime if using Python 2.5
> flagged_as_meth_class = ('today', 'now', 'fromtimestamp',
> 'fromordinal', 'now', 'utcnow', 'utcfromtimestamp', 'combine')
> for meth in flagged_as_meth_class:
> setattr(cls, meth, getattr(datetime.datetime, meth))
> 
> class DateChangesNewSignature(datetime.datetime):
> @staticmethod
> def str2ymd(strval):
> , mm, dd = (int(substr) for substr in (strval[:4],
> strval[4:6], strval[6:]))
> return , mm, dd
> 
> def __new__(cls, strval):
> , mm, dd = DateChangesNewSignature.str2ymd(strval)
> return super(DateChangesNewSignature,cls).__new__(cls, ,
> mm,
> dd)
> def __init__(self, strval):
> , mm, dd = DateChangesNewSignature.str2ymd(strval)
> super(DateChangesNewSignature, self).__init__(, mm,
> dd)
> 
> class DLast(DateChangesNewSignature):
> __metaclass__ = FixClassMethods
> 
> f = Date(2007,07,07)
> print f
> print f.today()
> 
> f2 = DateChangesNewSignature("20070707")
> print f2
> try:
> print f2.today()
> except TypeError, e:
> print str(e)
> print "Uh?"
> 
> 
> f3 = DLast("20070707")
> print f3
> print f3.today()
> 
> 
> I get:
> 
> 2007-07-07 00:00:00
> 2007-08-16 12:57:41.480679
> 2007-07-07 00:00:00
> __new__() takes exactly 2 arguments (9 given)
> Uh?
> 2007-07-07 00:00:00
> 2007-08-16 12:57:41.483104
> 
> 
> --
> Hope this helps,
> Steven
> 

Steven,

Thanks, you provide an elegant solution to the datetime problem I raised.

I like the illustration of metaclass usage you have have given,
it's something I have had trouble grasping.

You handle the examples I gave.  However, on reflection,I feel that
('today', 'now', 'fromtimestamp', 'fromordinal', 'now', 'utcnow', 
'utcfromtimestamp', 'combine') are completely inappropriate as
methods and that they should have been set up as functions of
datetime and not as methods of datetime.datetime.
The difficulty I have in adopting your approach is that it would
be difficult for the reader to comprehend the code.

My feeling is that it should be possible to change a signature using
simple Python approaches.

I'll puzzle some more.

Thanks again.

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


Re: Can python threads take advantage of use dual core ?

2007-08-17 Thread sturlamolden
On Aug 17, 6:00 pm, nikhilketkar <[EMAIL PROTECTED]> wrote:


> What are the implications of the Global Interpreter Lock in Python ?

This is asked every second week or so.

The GIL is similar to the Big Kernel Lock (BKL) use to support SMPs in
older versions of the Linux kernel. The GIL prevents the Python
interpreter to be active in more than one thread at a time.

If you have a single CPU with a single core, the GIL has no
consequence what so ever.

If you have multiple CPUs and/or multiple cores, the GIL has the
consequence that you can forget about SMP scalability using Python
threads. SMP scalability require more fine grained object locking,
which is what the Java and .NET runtimes do, as well as current
versions of the Linux kernel. Note that IronPython and Jython use fine
grained locking instead of a GIL.

> Does this mean that Python threads cannot exploit a dual core
> processor and the only advantage of using threads is in that
> computation and IO-bound operations can continue in parallel ?


The Python standard library releases the GIL in read/write operations
for e.g. files and sockets. This can be combined with threads to allow
multiple IO operations to continue in parallel. The GIL has no or very
little significance for IO-bound scalability in Python.

CPU-bound tasks are a different game. This is where the GIL matter.
You must either release the GIL or use multiple processes for
exploiting multiple processors in an SMP computer with Python. The GIL
can be released explicitely in C extension code. f2py and ctypes can
also release the GIL.

Note that you would NOT use threads for speeding up CPU-bound
operations, even when programming in C or Fortran. Threads are neither
the only nor the preferred way to exploit multicore CPUs for CPU-bound
tasks. Instead of threads, use either an MPI library or OpenMP
compiler pragmas. You can use MPI directly from Python (e.g. mpi4py),
or you can use OpenMP pragmas in C or Fortran code which you call
using ctypes or f2py.

Summary:

Use Python threads if you need to run IO operations in parallel.
Do not use Python threads if you need to run computations in parallel.



Regards,
Sturla Molden



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


Re: Can python threads take advantage of use dual core ?

2007-08-17 Thread sturlamolden
On Aug 17, 6:00 pm, nikhilketkar <[EMAIL PROTECTED]> wrote:


> What are the implications of the Global Interpreter Lock in Python ?

This is asked every second week or so.

The GIL is similar to the Big Kernel Lock (BKL) use to support SMPs in
older versions of the Linux kernel. The GIL prevents the Python
interpreter to be active in more than one thread at a time.

If you have a single CPU with a single core, the GIL has no
consequence what so ever.

If you have multiple CPUs and/or multiple cores, the GIL has the
consequence that you can forget about SMP scalability using Python
threads. SMP scalability require more fine grained object locking,
which is what the Java and .NET runtimes do, as well as current
versions of the Linux kernel. Note that IronPython and Jython use fine
grained locking instead of a GIL.

> Does this mean that Python threads cannot exploit a dual core
> processor and the only advantage of using threads is in that
> computation and IO-bound operations can continue in parallel ?


The Python standard library releases the GIL in read/write operations
for e.g. files and sockets. This can be combined with threads to allow
multiple IO operations to continue in parallel. The GIL has no or very
little significance for IO-bound scalability in Python.

CPU-bound tasks are a different game. This is where the GIL matter.
You must either release the GIL or use multiple processes for
exploiting multiple processors in an SMP computer with Python. The GIL
can be released explicitely in C extension code. f2py and ctypes can
also release the GIL.

Note that you would NOT use threads for speeding up CPU-bound
operations, even when programming in C or Fortran. Threads are neither
the only nor the preferred way to exploit multicore CPUs for CPU-bound
tasks. Instead of threads, use either an MPI library or OpenMP
compiler pragmas. You can use MPI directly from Python (e.g. mpi4py),
or you can use OpenMP pragmas in C or Fortran code which you call
using ctypes or f2py.

Summary:

Use Python threads if you need to run IO operations in parallel.
Do not use Python threads if you need to run computations in parallel.



Regards,
Sturla Molden



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


Re: Encryption and hashing

2007-08-17 Thread Marshall T. Vandegrift
Kless <[EMAIL PROTECTED]> writes:

> For who knows any of criptography I comment that you can use
> algorithms as secure as Rijndael, Twofish, or Serpent with the CFB
> cipher mode. And for hash you can use RIPEMD, SHA-2 or WHIRLPOOL.

PyCrypto does includes the AES version of Rijndael as Crypto.Cipher.AES
and the 256-bit version of SHA-2 as Crypto.Hash.SHA256.

-Marshall

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


Re: Python and Tkinter Programming--Expensive!

2007-08-17 Thread James Stroud
W. Watson wrote:
> Why is the book in Subject (author is Grayson) so expensive? $100 on 
> Amazon and $195 on ABE. Aren't there alternatives?


Read the fine print. Its available as an ebook for about $25.00 at 
Manning. You can print out just the parts you need--or read it from your 
iphone.

James

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
-- 
http://mail.python.org/mailman/listinfo/python-list


Problems with threading in embedded Python

2007-08-17 Thread Nico Blodow
Hi all,

I hope this hasn't been brought up before, but if it did i missed it, so 
bear with me please :)
anyway, i'm trying to embed Python into a C program. A sample python 
syript i want to run is as follows:

---SNIP---
import time
import threading

go_on = 1
t = 0

def ProcessMessage():
  print "... ProcessMessage"

def Main():
  global go_on
  print "... Main"
  while go_on:
ProcessMessage ()
print "...  ... ",
time.sleep (0.2)

def Setup():
  global t
  print "... Setup"
  t = threading.Thread (None, Main)
  t.start ()
#  t.join (0)
#  print t.isAlive()

def Shutdown():
  global go_on, t
  go_on = 0
  t.join ()
  print "... Shutdown"

---SNIP---

I call "Setup" from C, which should create a new thread which should 
enter the loop in Main. well, it doesn't :)

It prints "... Setup" and does nothing. when i call Shutdown from C, it 
prints "... Main" , followed by "... Shutdown", and exits...

So it seems to me the python interpreter wants to run the seperate 
thread, but doesn't get time from the scheduler (is that the thing about 
100 opcodes?)
 How can i handle this problem? Do I need to wrap all the Py_Stuff() 
into its own thread? do i need artificial python code that only serves 
the purpose of piling up enough opcodes so that the Main() thread gets 
eventually called?

I hope you can help me, if you need more code (f.ex. the C-code ), i 
will post more :)
(basically I modified the run_func.cc file from the docs, added 
PyEval_InitThreads() and monkeyed around with GIL and 
Acquire/ReleaseLock, but so far i had no luck :)

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


wxPython in C++ app using wxWidgets

2007-08-17 Thread Marcin Kalicinski
I have an application written in C++ that uses wxWidgets for GUI. I use 
embedded Python for scripting inside of this application. I want to use 
wxPython to add GUI to my scripts - because my C++ App uses wxWidgets I 
thought it to be easy. The problem is that wxPython knows nothing about 
wxApp/wxFrame objects created in my C++ application, and insists (by giving 
me asserts) that I create another wxApp object for wxPython inside my 
scripts. Obviously, this is not what I want. I want the scripts to use the 
same wxApp/wxFrame object that my C++ application already created. More 
specifically, I want to create dialogs in wxPython that will have my 
application wxFrame as parent.

I'm stuck. Any help appreciated.

Thanks,
M.


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


Hiding / encrypting source code

2007-08-17 Thread Ricardo Aráoz
Hi, I'm new to this python stuff so maybe I'm stating the obvious, or
worse, maybe I'm completely off track.

Not long ago someone was asking about a way to hide source code. I
stumbled upon zipimport standard module. It seems it lets you get your
imports from zip files. The docs say it is implicitly called, so you
could have your modules in a zipped file. That should make them a bit
more arcane.
Another idea would be to modify this module to use encrypted zip files,
or to use PyCrypto or some other module as a middle man in order to keep
the contents encrypted.

HTH


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


Re: best GUI library for vector drawing program

2007-08-17 Thread Alexander Schmolck
[x-posts removed]
chewie54 <[EMAIL PROTECTED]> writes:
> I should have also mentioned that is for a commercial application. That
> doesn't rule Qt or PyQt out, but this is a startup company with very little
> income so my first choice would be to use some GUI library that is free to
> use for commercial apps.

Check out the trolltech webpage: IIRC although it normally costs a few k$, you
can get it much cheaper if you are a startup (you yearly revenue must be lower
than 200k$ or something; this also only works once and maybe up to 2 licenses
or so etc). 

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


Question about 'for' loop

2007-08-17 Thread Robert Dailey
Hi,

I noticed that the 'for' loop can be used inline with a list definition. For
example:

print [i for i in mylist]

My first question is what is the name for this? I couldn't find this usage
in the python docs; I only managed to learn about it through code samples on
the internet.

Secondly, I'm wondering how I can use this method of a for loop to append
strings to strings in a list. For example:

mylist = [
"Hello ",
"Hello again "
]

I should be able to do this:

print [ i + "World" for i in mylist ]

Which should yield the output:

["Hello World", "Hello again world"]

However, instead I get an error message saying "TypeError: cannot
concatenate 'str' and 'list' objects"

How can I achieve the above? Thanks for reading.
-- 
http://mail.python.org/mailman/listinfo/python-list

  1   2   >