Problem obtaining an object reference...

2008-08-06 Thread SamG
I have two windowing classes A and B.

Inside A's constructor i created an instance B to display its Modal
window. Only on clicking OK/ Closing this modal window do i proceed to
display the A's window.

All that is fine. Now the problem is i would like to write a python
script to test the this GUI app simulating all the events that make
A's window work through my script. No the problem is to get past my
B's window. Which i'm unable to do since the A's instance would any be
created completely if i click OK/Close button on the B's window. Im
unable to simulate that event since i have little idea about how to
get the object reference to B's window? Here is a sample of the code.


class Awindow:

def __init__(self):


self.showBwindow()
def showBwindow(self):
dialog = Bwindow()
dialog.ShowModal()
dialog.Destroy()

class Bwindow:
def __init__(self):



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


Re: More Datastore Examples Please

2008-08-06 Thread Tim Roberts
v4vijayakumar <[EMAIL PROTECTED]> wrote:
>
>Google appengine datastore is not very clear, and I couldn't get much
>from API documents. It would be very helpful if there are some more
>detailed documents with examples.

I would gently suggest that you are not trying hard enough.  I had never
encountered the Google appengine datastore, but the first hit in Googling
that phrase took me to the Google documentation, which seems to be quite
thorough.

If you have never worked with a database before, then you might want to go
find a good book on databases first.

What are you trying to DO with the datastore?
-- 
Tim Roberts, [EMAIL PROTECTED]
Providenza & Boekelheide, Inc.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Best practise implementation for equal by value objects

2008-08-06 Thread Slaunger
On 7 Aug., 04:34, Steven D'Aprano <[EMAIL PROTECTED]
cybersource.com.au> wrote:
> On Wed, 06 Aug 2008 05:50:35 -0700, Slaunger wrote:
> > Hi,
>
> > I am new here and relatively new to Python, so be gentle:
>
> > Is there a recommended generic implementation of __repr__ for objects
> > equal by value to assure that eval(repr(x)) == x independet of which
> > module the call is made from?
>
> In general, no.
>
> ...
>
OK.

> > My question is: Is there a robust generic type of implementation of
> > __repr__ which I can use instead?
>
> > This is something I plan to reuse for many different Value classes, so I
> > would like to get it robust.
>
> I doubt you could get it that robust, nor is it intended to be.
>
> eval(repr(obj)) giving obj is meant as a guideline, not an invariant --
> there are many things that can break it. For example, here's a module
> with a simple class:

OK, I had not fully understood the implications of 'not' implementing
__repr__
such that eval(repr(x)) == x, so I just tried to make it work to make
sure
life would be easy for me and my object as I went further into the
Python jungle

As mentioned above, i also find the eval(repr(x))==x condition
convenient from
a unit test point of view.

>
> # Parrot module
> class Parrot(object):
>     def __repr__(self):
>         return "parrot.Parrot()"
>     def __eq__(self, other):
>         # all parrots are equal
>         return isinstance(other, Parrot)
>
> Now let's use it:
>
> >>> import parrot
> >>> p = parrot.Parrot()
> >>> s = repr(p)
> >>> assert eval(s) == p
> >>> del parrot
> >>> assert eval(s) == p
>
> Traceback (most recent call last):
>   File "", line 1, in 
>   File "", line 1, in 
> NameError: name 'parrot' is not defined
>

OK, I see, but this isn't exactly eval(repr(x))==x but
s = repr(x)
eval(s) == x

so, of course, is s is deleted in between it won't work.

In my implementation I only expect this should work as a one-liner.

> If you look at classes in the standard library, they often have reprs
> like this:
>
> >>> repr(timeit.Timer())
>
> ''
>

Yes, I noticed that. But the example here is also an object, which is
equal by reference, not value. And for these
it does not make so much sense to evaluate the representation.

> Certainly you can't expect to successfully eval that!
>
> I believe the recommendation for eval(repr(obj)) to give obj again is
> meant as a convenience for the interactive interpreter, and even there
> only for simple types like int or list. If you can do it, great, but if
> it doesn't work, so be it. You're not supposed to rely on it, and it's
> not meant as a general way to serialize classes.
>
> --
> Steven

OK, I will put less emphasis on it in the future.

Thank you for taking your time to answer.

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


Re: Best practise implementation for equal by value objects

2008-08-06 Thread Slaunger
On 6 Aug., 21:46, John Krukoff <[EMAIL PROTECTED]> wrote:
> On Wed, 2008-08-06 at 05:50 -0700, Slaunger wrote:
> > Hi,
>
> > I am new here and relatively new to Python, so be gentle:
>
> > Is there a recommended generic implementation of __repr__ for objects
> > equal by value to assure that eval(repr(x)) == x independet of which
> > module the call is made from?
>
> > Example:
>
> > class Age:
>
> >     def __init__(self, an_age):
> >         self.age = an_age
>
> >     def __eq__(self, obj):
> >         self.age == obj.age
>
> >     def __repr__(self):
> >         return self.__class__.__name__ + \
> >                "(%r)" % self.age
>
> > age_ten = Age(10)
> > print repr(age_ten)
> > print eval(repr(age_ten))
> > print eval(repr(age_ten)).age
>
> > Running this gives
>
> > Age(10)
> > Age(10)
> > 10
>
> > Exactly as I want to.
>
> > The problem arises when the Age class is iomported into another module
> > in another package as then there is a package prefix and the above
> > implementation of __repr__ does not work.
>
> > I have then experimented with doing somthing like
>
> >     def __repr__(self):
> >         return self.__module__ + '.' + self.__class__.__name__ +
> > "(%r)" % self.age
>
> > This seems to work when called from the outside, but not from the
> > inside of the module. That is, if I rerun the script above the the
> > module name prefixed to the representation I get the following error
>
> > Traceback (most recent call last):
> >   File "valuetest.py", line 15, in 
> >     print eval(repr(age_ten))
> > __main__.Age(10)
> >   File "", line 1, in 
> > NameError: name '__main__' is not defined
>
> > This is pretty annoying.
>
> > My question is: Is there a robust generic type of implementation of
> > __repr__ which I can use instead?
>
> > This is something I plan to reuse for many different Value classes, so
> > I would like to get it robust.
>
> > Thanks,
> > Slaunger
> > --
> >http://mail.python.org/mailman/listinfo/python-list
>
> Are you really sure this is what you want to do, and that a less tricky
> serialization format such as that provided by the pickle module wouldn't
> work for you?

Well, it is not so much yet for serialization (although i have not yet
fully understood the implications), it is more because
I think the eval(repr(x))==x is a nice unit test to make sure my
constructor and equals method is implemented correctly (that I have
rememebered all attributes in their implementations).

As mentioned above, I may go for a more pragmatic approach, where i
only use repr if it "standard" imported

Cheers,
Slaunger

>
> --
> John Krukoff <[EMAIL PROTECTED]>
> Land Title Guarantee Company- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -

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


Re: benchmark

2008-08-06 Thread Steven D'Aprano
On Thu, 07 Aug 2008 07:49:45 +0200, Stefan Behnel wrote:

> Jack wrote:
>> I know one benchmark doesn't mean much but it's still disappointing to
>> see Python as one of the slowest languages in the test:
>> 
>> http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-
python-ruby-jython-jruby-groovy/
> 
> Just ignore that. If the code had been designed for Python from the
> start, it would have performed a lot better.


I recommend folks copy and paste his code into an interactive session, 
and watch the thousands of <__main__.Person object at 0xb7f18e2c> that 
flash onto the screen. You want to know why it's so slow? That's part of 
the reason.

Doing so on my computer gives a final result of:

"Time per iteration = 502.890818119 microseconds"

When I make a single, two character modification to the program 
(inserting "t=" at the beginning of the line "chain.kill(3)"), I get this 
instead:

"Time per iteration = 391.469910145 microseconds"

In other words, about 20% of the time he measures is the time taken to 
print junk to the screen.


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


Re: Best practise implementation for equal by value objects

2008-08-06 Thread Slaunger
On 6 Aug., 21:36, Terry Reedy <[EMAIL PROTECTED]> wrote:
> Slaunger wrote:
> > Hi,
>
> > I am new here and relatively new to Python, so be gentle:
>
> > Is there a recommended generic implementation of __repr__ for objects
> > equal by value to assure that eval(repr(x)) == x independet of which
> > module the call is made from?
>
> The CPython implementation gives up on that goal and simply prints
>  for at least two reasons ;-).
>
> 1. In general, it require fairly sophisticated analysis of __init__ to
> decide what representation of what attributes to include and decide if
> the goal is even possible.  If an attribute is an instance of a user
> class, then *its* __init__ needs to be analyzed.  If an attribute is a
> module, class, or function, there is no generic evaluable representation.

OK, the situation is more complicated than that then. In the case here
though,
the attributes would always be sinmple bulit-in types, where
eval(repr(x))==x
or, where the attribute is a user-defined equal-by-value class, that I
have
control over.

The classes I am making as struct type classes with some added
functionlity for
human readable string representation, packing into a stream or
unpacking from a stream
using a "private" class Struct.

I come from a Java and JUnit world, where, if I am used to always
overriding the default reference based implementations of the
equals(), toString(),
and hashCode() methods for "equals-by-value" objects such that they
work well
and efficient in, e.g., hash maps.

With my swich-over to Python, I looked for equivalent features and
stumbled over the
eval(repr(x))==x recommendation. It is not that I actually (yet) need
the repr implementations,
but mostly because I find the condition very useful in PyUnit to check
in a test that I have remembered
to initialize all instance fields in __init__ and that I have
remembered to include all relevant
attributes in the __eq__ implementation.

Whereas this worked fine in a unit test module dedicated to only test
the specific module, the test failed
when called from other test package modules, wrapping the unit tests
from several unit test modules.

>
> 2. Whether eval(repr(x)) even works (returns an answer) depends on
> whether the name bindings in the globals and locals passed to eval
> (which by default are the globals and locals of the context of the eval
> call) match the names used in the repr.  You discovered that to a first
> approximation, this depends on whether the call to repr comes from
> within or without the module containing the class definition.  But the
> situation is far worse.  Consider 'import somemod as m'.  Even if you
> were able to introspect the call and determine that it did not come from
> somemod**, prepending 'somemod.' to the repr *still* would not work.
> Or, the call to repr could come from one context, the result saved and
> passed to another context with different name bindings, and the eval
> call made there.  So an repr that can be eval'ed in any context is hopeless.
>
Ok, nasty stuff

> If this is a practical rather than theoretical question, then use your
> first repr version that uses the classes definition name and only eval
> the result in a context that has that name bound to the class object.
>
> from mymod import Age
> #or
> import mymod
> Age = mymod.Age
>
> #in either case
> eval(repr(Age(10))) == Age(10)
>
> > class Age:
>
> >     def __init__(self, an_age):
> >         self.age = an_age
>
> >     def __eq__(self, obj):
> >         self.age == obj.age
>
> >     def __repr__(self):
> >         return self.__class__.__name__ + \
> >                "(%r)" % self.age
>
Yes, it is most from a practicl point of view, altough I was surprised
that I could not find more material on it in the Python documentation
or mailing groups, and I moight just do what you suggest in the unit
test modules to at least make it robust in that context.

Hmm... a bit of a dissapointment for me that this cannot be done
cleaner
> **
> While such introspection is not part of the language, I believe one
> could do it in CPython, but I forgot the details.  There have been
> threads like 'How do I determine the caller function' with answers to
> that question, and I presume the module of the caller is available also.
OK, I think CPython, for the moment, is too much new stuff to dig into
right now.
Just grasping some of all the possibilities in the API, and how to do
things the right way
is giving me enough challenges for now...

>
> Terry Jan Reedy

Again, thank you for your thorough answer,

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


Re: random numbers according to user defined distribution ??

2008-08-06 Thread Steven D'Aprano
On Wed, 06 Aug 2008 21:09:30 -0700, Dan Bishop wrote:

>> There's no general way to create a random function for an arbitrary
>> distribution. I don't think there's a general way to *describe* an
>> arbitrary random distribution.
> 
> What about the quantile function?


Well, sure, if you can write down the quantile function, c.d.f or p.d.f. 
of a distribution, I suppose that counts as describing it, in some sense. 
But even if we limit ourselves to distributions which are actually 
useful, as opposed to arbitrary distributions that can't be described in 
terms of any known mathematical function, there are serious practical 
difficulties. I quote from the Wikipedia article on quantile functions:

"The quantile functions of even the common distributions are relatively 
poorly understood beyond the use of simple lookup tables, which is at 
odds with their importance in Monte Carlo sampling, where a sample from a 
given distribution may be obtained in principle by applying its quantile 
function to a sample from a uniform distribution. The exponential case 
above is one of the very few distributions where there is a simple 
formula."

http://en.wikipedia.org/wiki/Quantile_function


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


Re: benchmark

2008-08-06 Thread Stefan Behnel
Jack wrote:
> I know one benchmark doesn't mean much but it's still disappointing to see 
> Python as one of the slowest languages in the test:
> 
> http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
>  

Just ignore that. If the code had been designed for Python from the start, it
would have performed a lot better.

Currently it looks like syntax-adapted Java code to me.

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


RE: A question about string and float number

2008-08-06 Thread Tyler Breisacher
It's generally a bad idea to use "except" without naming a specific 
exception. The exception you might expect in this case is ValueError. 
Any other exception *should* be uncaught if it happens. By the way, this 
method will return true for integers as well as floats. For example, 
isFloat('3') will return 3.0. So make sure this is what you want, since 
it wasn't 100% clear from the original message.



Wei Guo wrote:

#this is a better way of testing a string for float
def isFloat(s):
try:
s = float(s)
except:
return False
return True



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


Re: random numbers according to user defined distribution ??

2008-08-06 Thread Paul Rubin
Alex <[EMAIL PROTECTED]> writes:
> I wonder if it is possible in python to produce random numbers
> according to a user defined distribution?

That can mean a lot of things.  The book "Numerical Recipes" (there
are editions for various languages, unfortunately not including Python
last time I looked) has some discussion about how to do it.

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


Re: random numbers according to user defined distribution ??

2008-08-06 Thread Dan Bishop
On Aug 6, 8:26 pm, Steven D'Aprano <[EMAIL PROTECTED]
cybersource.com.au> wrote:
> On Wed, 06 Aug 2008 15:02:37 -0700, Alex wrote:
> > Hi everybody,
>
> > I wonder if it is possible in python to produce random numbers according
> > to a user defined distribution? Unfortunately the random module does not
> > contain the distribution I need :-(
>
> This is a strange question. Of course you can -- just write a function to
> do so! Here's some easy ones to get you started:
>
...
>
> There's no general way to create a random function for an arbitrary
> distribution. I don't think there's a general way to *describe* an
> arbitrary random distribution.

What about the quantile function?
--
http://mail.python.org/mailman/listinfo/python-list


Re: Function from C/PHP to Python

2008-08-06 Thread Steven D'Aprano
On Wed, 06 Aug 2008 20:15:11 -0700, Grom wrote:

> Hello everyone :)
> I have one problem with that function in C
...
> Can someone help me to rewrite it to python?
> 
> There is the same function, in PHP:
...
> Please... its very important to me

I don't know C or PHP. But since it's important, and because you said 
please, let me try:


def calc_passcode(password):
magic1 = 0x50305735
magic2 = 0x12345671
sum = 7
for i in range(len(password)):
z = ord(password[i])
if z == 32 or z == 9:
continue
magic1 = magic1 ^ magic1 & 0x3f) + sum) * z) + (magic1 << 8))
magic2 = magic2 + ((magic2 << 8) ^ magic1)
sum += z
magic1 = magic1 & 0x7fff
magic2 = magic2 & 0x7fff
return '%08x%08x' % (magic1, magic2)



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


Function from C/PHP to Python

2008-08-06 Thread Grom
Hello everyone :)
I have one problem with that function in C

int calc_passcode(const char* pass, char* code) {
int magic1 = 0x50305735;
int magic2 = 0x12345671;
int sum = 7;
char z;
while ((z = *pass++) != 0) {
if (z == ' ') continue;
if (z == '\t') continue;
magic1 ^= (((magic1 & 0x3f) + sum) * z) + (magic1 << 8);
magic2 += (magic2 << 8) ^ magic1;
sum += z;
}
magic1 &= 0x7fff;
magic2 &= 0x7fff;
return sprintf(code, "%08x%08x", magic1, magic2);
} // end _calc_passcode();

Can someone help me to rewrite it to python?

There is the same function, in PHP:

function _calc_passcode($pass) {

$magic1 = 0x50305735;
$magic2 = 0x12345671;
$sum = 7;
for ($i = 0; $i < strlen($pass); $i++) {
$z = ord($pass[$i]);
if ($z == 32)
continue;
if ($z == 9)
continue;
$magic1 = $magic1 ^ $magic1 & 0x3f) + $sum) * $z) + 
($magic1 <<
8));
$magic2 = $magic2 + (($magic2 << 8) ^ $magic1);
$sum += $z;
$magic1 = $magic1 & 0x7fff;
$magic2 = $magic2 & 0x7fff;
}
return sprintf('%08x%08x', $magic1, $magic2);

} // end _calc_passcode();

Please... its very important to me
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dictionary to tree format (hopefully simple)

2008-08-06 Thread John Nagle

Diez B. Roggisch wrote:

Adam Powell schrieb:

Hi!
I have seemingly simple problem, which no doubt someone out there has
already solved, but I'm stumped. Imagine I have a dictionary like
below, in which the keys are parent nodes and the values are a list of
children nodes.

dict = { 0: [1, 2], 1: [3], 2: [6], 3: [4,7], 4: [5,8], 8: [9] }

Is there an obvious way to produce a nested tree format for this
dictionary, like this:

[ 0 [ 1 [ 3 [ 4 [ 5 , 8 [ 9 ] ] , 7 ] ] , 2 [ 6 ]  ]

Thanks for any help,


d = { 0: [1, 2], 1: [3], 2: [6], 3: [4,7], 4: [5,8], 8: [9] }

nodelists = dict((node ,[node, []]) for node in d.keys())

for node, children in d.iteritems():
for child in children:
nodelists[node][1].extend(nodelists.setdefault(child, [child]))

print nodelists[0]


Two remarks:

 - don't use "dict" as name for a dictionary - look at the above code 
*why* not...


 - the code assumes that 0 is the root. if that wouldn't be the case, 
you need to search for the root node. I've got an idea - you to?


Diez


   Not quite. That gets you

[0, [1, [3, [4, [5, 8, [9]], 7]], 2, [6]]]

which probably isn't what you want.  Note that the children of 0 are

1, [3, [4, [5, 8, [9]], 7]],
2,
[6]

which probably isn't what was desired.
You probably want

[0, [1, [3, [4, [5], [8, [9]]], [7]]], [2, [6]]]

so that each list is [node, [children]].

The original poster wanted

[ 0 [ 1 [ 3 [ 4 [ 5 , 8 [ 9 ] ] , 7 ] ] , 2 [ 6 ]  ]

but that's not a meaningful Python list expression.

Try this recursive form:

d = { 0: [1, 2], 1: [3], 2: [6], 3: [4,7], 4: [5,8], 8: [9] }

def getsubtree(d, node) :
if d.has_key(node) :
return([node] + [getsubtree(d,child) for child in d[node]])
else :
return([node])

getsubtree(d,min(d.keys())) # smallest node is assumed to be the root

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


Re: Parsing of a file

2008-08-06 Thread bearophileHUGS
Paul McGuire:
> This code creates a single dict for the input lines, keyed by id.
> Each value contains elements labeled 'id', 'ra', and 'mjd'.
...
> d = dict(
> (rec.split()[1][:-1],
>  dict([('id',rec.split()[1][:-1])] +
>   [map(str.lower,f.split('='))
>   for f in rec.split()[2:5]] ) )
>  for rec in data
> )
...

Please, don't try to shove the program in one line, use PyParsing :o)

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


Re: Best practise implementation for equal by value objects

2008-08-06 Thread Steven D'Aprano
On Wed, 06 Aug 2008 05:50:35 -0700, Slaunger wrote:

> Hi,
> 
> I am new here and relatively new to Python, so be gentle:
> 
> Is there a recommended generic implementation of __repr__ for objects
> equal by value to assure that eval(repr(x)) == x independet of which
> module the call is made from?

In general, no.

...
> My question is: Is there a robust generic type of implementation of
> __repr__ which I can use instead?
> 
> This is something I plan to reuse for many different Value classes, so I
> would like to get it robust.

I doubt you could get it that robust, nor is it intended to be.

eval(repr(obj)) giving obj is meant as a guideline, not an invariant -- 
there are many things that can break it. For example, here's a module 
with a simple class:


# Parrot module
class Parrot(object):
def __repr__(self):
return "parrot.Parrot()"
def __eq__(self, other):
# all parrots are equal
return isinstance(other, Parrot)


Now let's use it:

>>> import parrot
>>> p = parrot.Parrot()
>>> s = repr(p)
>>> assert eval(s) == p
>>> del parrot
>>> assert eval(s) == p
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 1, in 
NameError: name 'parrot' is not defined


If you look at classes in the standard library, they often have reprs 
like this:

>>> repr(timeit.Timer())
''

Certainly you can't expect to successfully eval that!

I believe the recommendation for eval(repr(obj)) to give obj again is 
meant as a convenience for the interactive interpreter, and even there 
only for simple types like int or list. If you can do it, great, but if 
it doesn't work, so be it. You're not supposed to rely on it, and it's 
not meant as a general way to serialize classes.


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


RE: A question about string and float number

2008-08-06 Thread Edwin . Madari
#this is a better way of testing a string for float
def isFloat(s):
try:
s = float(s)
except:
return False
return True

-Original Message-
From: Madari, Edwin 
Sent: Wednesday, August 06, 2008 10:22 PM
To: 'Wei Guo'; python-list@python.org
Subject: RE: A question about string and float number


type(s) == type(float())

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Wei Guo
Sent: Wednesday, August 06, 2008 9:23 PM
To: python-list@python.org
Subject: A question about string and float number


Hi all,
 
I am new of python. Could anyone help me a question as below?
 
Is there any function that can judge a string s is a float number or not? FOr 
example, if s = '1.232' or s='1e+10', then it returns true, otherwise, it will 
return false.
 
isdigit() in string doesn't work. float() will throw an exception and I just 
need true or false as result.
 
Thanks a lot in advance,
 
Wei



The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.

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

RE: A question about string and float number

2008-08-06 Thread Edwin . Madari
type(s) == type(float())

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Wei Guo
Sent: Wednesday, August 06, 2008 9:23 PM
To: python-list@python.org
Subject: A question about string and float number


Hi all,
 
I am new of python. Could anyone help me a question as below?
 
Is there any function that can judge a string s is a float number or not? FOr 
example, if s = '1.232' or s='1e+10', then it returns true, otherwise, it will 
return false.
 
isdigit() in string doesn't work. float() will throw an exception and I just 
need true or false as result.
 
Thanks a lot in advance,
 
Wei



The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.

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

Re: os.system question

2008-08-06 Thread Larry Wang
os.system() simply executes the command in a subshell, and returns the 
command's exit status which in your case is '0'. If you need to capture the 
stdout, stderr, etc. stuff, subprocess module is preferred which offers more 
powerful functionalities over os.system().


Nessus

"Kevin Walzer" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]

>>> import os
>>> foo = os.system('whoami')
kevin
>>> print foo
0
>>>

The standard output of the system command 'whoami' is my login name. Yet 
the value of the 'foo' object is '0,' not 'kevin.' How can I get the value 
of 'kevin' associated with foo?


--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com 


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


Re: benchmark

2008-08-06 Thread bearophileHUGS
On Aug 7, 2:05 am, "Jack" <[EMAIL PROTECTED]> wrote:
> I know one benchmark doesn't mean much but it's still disappointing to see
> Python as one of the slowest languages in the test:
>
> http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-p...

That Python code is bad, it contains range() instead of xrange, the
big loop is in the main code instead of inside a function, uses ==
None, etc. That person can try this (with Psyco), I have changed very
little, the code is essentially the same:


import time, psyco
from psyco.classes import __metaclass__

class Person:
def __init__(self, count):
self.count = count
self.prev = None
self.next = None
def shout(self, shout, deadif):
if shout < deadif:
return shout + 1
self.prev.next = self.next
self.next.prev = self.prev
return 1

class Chain:
def __init__(self, size):
self.first = None
last = None
for i in xrange(size):
current = Person(i)
if self.first is None:
self.first = current
if last is not None:
last.next = current
current.prev = last
last = current
self.first.prev = last
last.next = self.first
def kill(self, nth):
current = self.first
shout = 1
while current.next != current:
shout = current.shout(shout, nth)
current = current.next
self.first = current
return current


def main():
ITER = 10
start = time.time()
for i in xrange(ITER):
chain = Chain(40)
chain.kill(3)
end = time.time()
print 'Time per iteration = %s microseconds ' % ((end - start) *
100 / ITER)

psyco.full()
main()

us = microseconds
On my PC (that seems similar to his one) this version needs about 38.9
us/iter instead of 189.

On my PC the Java version takes 1.17 us, while the C++ version (with
MinGW 4.2.1) takes 9.8 us.
A raw D translation needs 14.34 us, while a cleaned up (that uses
structs, no getters/setters) needs 4.67 us.
I don't know why my C++ is so much slow (doing the same things to the C
++ version doesn't change its running time much).

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


Re: random numbers according to user defined distribution ??

2008-08-06 Thread Steven D'Aprano
On Wed, 06 Aug 2008 15:02:37 -0700, Alex wrote:

> Hi everybody,
> 
> I wonder if it is possible in python to produce random numbers according
> to a user defined distribution? Unfortunately the random module does not
> contain the distribution I need :-(


This is a strange question. Of course you can -- just write a function to 
do so! Here's some easy ones to get you started:

from __future__ import division
import random, maths

def unbounded_rand(p=0.5):
"""Return a random integer between 0 and infinity."""
if not (0 < p <= 1):
raise ValueError
n = 0
while random.random() < p:
n += 1
return n

def pseudonorm():
"""Return a random float with a pseudo-normal distribution.

The probability distribution is centered at 0 and bounded 
by -1 and +1.
"""
return (sum([random.random() for i in range(6)])-3)/3

def triangular(min=0, max=1, mode=0.5):
"""Return a random float in the range (min, max) inclusive
with a triangular histogram, and the peak at mode.
"""
u = random.random()
if u <= (mode-min)/(max-min):
return min + math.sqrt(u*(max-min)*(mode-min))
else:
return max - math.sqrt((1-u)*(max-min)*(max-mode))

def linear():
"""Return a random float with probability density 
function pdf(x)=2x.
"""
return math.sqrt(random.random())



There's no general way to create a random function for an arbitrary 
distribution. I don't think there's a general way to *describe* an 
arbitrary random distribution. However, there are some mathematical 
techniques you can use to generate many different distributions. Google 
on "transformation method" and "rejection method".

If you have a specific distribution you are interested in, and you need 
some help, please ask.



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


Re: os.system question

2008-08-06 Thread Steven D'Aprano
On Wed, 06 Aug 2008 21:07:40 -0400, Kevin Walzer wrote:

 import os
>  >>> foo = os.system('whoami')
> kevin
>  >>> print foo
> 0
>  >>>
>  >>>
> The standard output of the system command 'whoami' is my login name. Yet
> the value of the 'foo' object is '0,' not 'kevin.' How can I get the
> value of 'kevin' associated with foo?


That's because os.system captures the return code of the system call, 
which is 0 in this case because whoami succeeded. Meanwhile whoami 
printed its result to standard output, as normal.

What you want is os.popen('whoami', 'r').read()

Also look at the popen2 module.



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


A question about string and float number

2008-08-06 Thread Wei Guo
Hi all,

I am new of python. Could anyone help me a question as below?

Is there any function that can judge a string s is a float number or not?
FOr example, if s = '1.232' or s='1e+10', then it returns true, otherwise,
it will return false.

isdigit() in string doesn't work. float() will throw an exception and I just
need true or false as result.

Thanks a lot in advance,

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

os.system question

2008-08-06 Thread Kevin Walzer

>>> import os
>>> foo = os.system('whoami')
kevin
>>> print foo
0
>>>

The standard output of the system command 'whoami' is my login name. Yet 
the value of the 'foo' object is '0,' not 'kevin.' How can I get the 
value of 'kevin' associated with foo?


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


Re: Tkinter fullscreen with Mac OS X

2008-08-06 Thread C Martin
On Jul 28, 6:43 pm, "Guilherme Polo" <[EMAIL PROTECTED]> wrote:
>
> You could try this, supposing tl is a toplevel:
>
> tl.tk.call("::tk::unsupported::MacWindowStyle", "style", tl._w, "plain", 
> "none")
>

I tried this (although, my tl is actually a tk instance):

self.tk.call("::tk::unsupported::MacWindowStyle", "style", self.tk._w,
"plain", "none")

and get this message:

Traceback (most recent call last):
  File "./ProgramCountdown.py", line 120, in 
control = Controller(tk)
  File "./ProgramCountdown.py", line 37, in __init__
self.tk.call("::tk::unsupported::MacWindowStyle", "style",
self.tk._w, "plain", "none")
_tkinter.TclError: bad class: should be alert, moveableAlert, modal,
moveableModal, floating, help, or document

Any thoughts? Can you do something similar on the tk instance itself?

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


Re: benchmark

2008-08-06 Thread Jake Anderson

Jack wrote:
I know one benchmark doesn't mean much but it's still disappointing to see 
Python as one of the slowest languages in the test:


http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ 



--
http://mail.python.org/mailman/listinfo/python-list
  
Something to note though, The python version is ~ half the length of the 
rest of them ;->

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


benchmark

2008-08-06 Thread Jack
I know one benchmark doesn't mean much but it's still disappointing to see 
Python as one of the slowest languages in the test:

http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
 


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


Re: Using an DTD not specified in XML file for validation

2008-08-06 Thread Edwin . Madari
can you edit the xml and add the dtd/scheama ?

.Edwin

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
On Behalf Of Ben Finney
Sent: Wednesday, August 06, 2008 7:07 PM
To: python-list@python.org
Subject: Re: Using an DTD not specified in XML file for validation


Brian Quinlan <[EMAIL PROTECTED]> writes:

> I'm trying to figure out how I can validate an XML file using a DTD
> that isn't specified in the XML file.

When your inention is to start a new discussion, you could compose a
new message, *not* reply to an existing message. Your message here is
now part of an existing thread of discussion, yet is confusingly
unrelated in its content, and will not be noticed by most readers.

-- 
 \  "Whatever you do will be insignificant, but it is very |
  `\important that you do it." -Mahatma Gandhi |
_o__)  |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list



The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.


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


Re: Parsing of a file

2008-08-06 Thread Paul McGuire
On Aug 6, 3:14 pm, "Shawn Milochik" <[EMAIL PROTECTED]> wrote:
> Regular expressions will do the trick nicely.
>

Or just use str.split, and create dicts using dict(list_of_tuples)
constructor.

This code creates a single dict for the input lines, keyed by id.
Each value contains elements labeled 'id', 'ra', and 'mjd'.

-- Paul


data = """\
Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690
Frames   5 Set 1
Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620
Frames   5 Set 2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860
Frames   5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020
Frames   5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210
Frames   5 Set 5
Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400
Frames   5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620
Frames   5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890
Frames   5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070
Frames   5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350
FramesSet 10 """.splitlines()

d = dict(
(rec.split()[1][:-1],
 dict([('id',rec.split()[1][:-1])] +
  [map(str.lower,f.split('='))
  for f in rec.split()[2:5]] ) )
 for rec in data
)
print d.keys()

for id in d.keys():
print d[id].items()
--
http://mail.python.org/mailman/listinfo/python-list


Re: Using an DTD not specified in XML file for validation

2008-08-06 Thread Ben Finney
Brian Quinlan <[EMAIL PROTECTED]> writes:

> I'm trying to figure out how I can validate an XML file using a DTD
> that isn't specified in the XML file.

When your inention is to start a new discussion, you could compose a
new message, *not* reply to an existing message. Your message here is
now part of an existing thread of discussion, yet is confusingly
unrelated in its content, and will not be noticed by most readers.

-- 
 \  “Whatever you do will be insignificant, but it is very |
  `\important that you do it.” —Mahatma Gandhi |
_o__)  |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list

Re: Parsing of a file

2008-08-06 Thread Henrique Dante de Almeida
On Aug 6, 3:55 pm, Tommy Grav <[EMAIL PROTECTED]> wrote:
> I have a file with the format
>
> Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames  
> 5 Set 1
> Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames  
> 5 Set 2
> Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames  
> 5 Set 3
> Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames  
> 5 Set 4
> Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames  
> 5 Set 5
> Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames  
> 5 Set 6
> Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames  
> 5 Set 7
> Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames  
> 5 Set 8
> Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames  
> 5 Set 9
> Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames  
> 5 Set 10
>
> I would like to parse this file by extracting the field id, ra, dec  
> and mjd for each line. It is
> not, however, certain that the width of each value of the field id,  
> ra, dec or mjd is the same
> in each line. Is there a way to do this such that even if there was a  
> line where Ra=** and
> MJD= was swapped it would be parsed correctly?
>
> Cheers
>    Tommy

 Did you consider changing the file format in the first place, so that
you don't have to do any contortions to parse it ?

 Anyway, here is a solution with regular expressions (I'm a beginner
with re's in python, so, please correct it if wrong and suggest better
solutions):

import re
s = """Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690
Frames 5 Set 1
Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames
5 Set 2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
5 Set 5
Field f30560: Dec=+74:47:50.3 Ra=20:27:01.82 MJD=53370.06860400 Frames
5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
5 Set 10"""

s = s.split('\n')
r = re.compile(r'Field (\S+): (?:(?:Ra=(\S+) Dec=(\S+))|(?:Dec=(\S+)
Ra=(\S+))) MJD=(\S+)')
for i in s:
match = r.findall(i)
field = match[0][0]
Ra = match[0][1] or match[0][4]
Dec = match[0][2] or match[0][3]
MJD = match[0][5]
print field, Ra, Dec, MJD
--
http://mail.python.org/mailman/listinfo/python-list


Adding Microsoft objects in Boa Constuctor Palette

2008-08-06 Thread Sid K
This is what I wanted to do:

Add Microsoft Active objects like Excel sheets and Word files to the
Palette in Boa Constructor. There is a User tab in the GUI builder
menu, but I'm not sure how to use/enable it.

1. Does anyone know how to do this?
2. Is anyone aware of any work that is currently going on to support
adding Microsoft objects in Boa.
3. Does any other Python GUI creator/editor exist out there that can
do this?
4. How would one add an excel sheet to a wx.Panel in general w/ or w/o
Boa?

Looking forward to replies...

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


python equivalent for this perl soap client

2008-08-06 Thread Edwin . Madari
use SOAP::Lite;
use Data::Dumper;

$ENV{HTTP_proxy} = "my_proxy_server_not_soap_proxy_server";
$ENV{HTTP_proxy_user} = ""; #set correct value
$ENV{HTTP_proxy_pass} = ""; #set correct value

my $soap = SOAP::Lite ->service('file:./local_file_copy_of_wsdl.wsdl');
my $som = $soap->soapMethod("method", "args", "as", "required");
print Dumper($som);

although above perl code (yes it works!), connects to the soap server through 
the http proxy with proper credentials, I would rather do it python. has any 
out there succeeded in making a soap request through firewall using wsdl 
something like below

from SOAPpy import WSDL
server = WSDL.Proxy('./local_file_copy_of_wsdl.wsdl')
res = server.soapMethod("method", "args", "as", "required")

tried every which way but cannot get it to work. any hints, suggestions 
appreciated.

thanks in advance
Edwin




The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.

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

Re: pyprocessing/multiprocessing for x64?

2008-08-06 Thread pigmartian
Interesting, I see Christian's responses to Benjamin, but not Benjamin's 
posts themselves.


Anyways, the question remains: will multiprocessing be supported for the 
x64 platform when it's released in 2.6?


pigmartian wrote:
I recently learned (from I response on this newsgroup to an earlier 
query) of the processing module for working with subprocesses in a 
similar manner to threading.  For what I needed to do, it worked great 
--- until I tried to run my code on an x64 box, for which that module 
isn't available*.  So, I'm just wondering if when processing is renamed 
to multiprocessing and included in the standard lib for 2.6, will x64 be 
supported?



~Scott

*yes, yes, I know.  download the source and compile it myself.

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


Re: random numbers according to user defined distribution ??

2008-08-06 Thread Dominic van Berkel
On Thursday 07 August 2008 00:02, Alex <[EMAIL PROTECTED]> wrote:

> Hi everybody,
> 
> I wonder if it is possible in python to produce random numbers
> according to a user defined distribution?
> Unfortunately the random module does not contain the distribution I
> need :-(
> 
> Many thanks
> 
>  axel
I'm not aware of any module with that specific function, but it's
algorithmically not too complex I'd think. If you're writing an application
that does this I'll assume that you have a basic gist of how to implement
it ;). It's been a while since I messed with the subject, so I'm not
getting any further than graphs in my head right now. Good luck!

-- 
Dominic van Berkel
"Bi-la Kaifa"
--
http://mail.python.org/mailman/listinfo/python-list


random numbers according to user defined distribution ??

2008-08-06 Thread Alex
Hi everybody,

I wonder if it is possible in python to produce random numbers
according to a user defined distribution?
Unfortunately the random module does not contain the distribution I
need :-(

Many thanks

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


cross-compilation

2008-08-06 Thread Roumen Petrov

Hi list members,

It seems to me that this is discussed many times in the past but without 
 progress. As I understand in general there is no objections and 
preferred cross-compilation has to be based on distutils (scons was 
rejected).


So I would like to cross-compile from linux(build system) to the 
mingw(host system) and note some(many) problems:


- the configure script don't support cross-compilation:
  The first is lack of macro AC_CANONICAL_HOST.
  Next is AC_TRY_RUN with two arguments.

- native mingw build isn't supported well:
  As example updated ifdefs from issue 1412448 aren't in the code. The 
posixmodule.c is required and I expect native build to fail. May be same 
for pwdmodule.c.


- the build process may require python installed on build system and the 
"distutils" may be isn't aware that cross-compilation is requested. In 
general isn't possible to run on build platform executable just build 
for host platform. Linux plus emulator is an exception.


What about to start to resolve issues step by step ?

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


Re: Parsing of a file

2008-08-06 Thread John Machin
On Aug 7, 7:06 am, John Machin <[EMAIL PROTECTED]> wrote:
> On Aug 7, 6:02 am, Mike Driscoll <[EMAIL PROTECTED]> wrote:
>
>
>
> > On Aug 6, 1:55 pm, Tommy Grav <[EMAIL PROTECTED]> wrote:
>
> > > I have a file with the format
>
> > > Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames
> > > 5 Set 1
> > > Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames
> > > 5 Set 2
> > > Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
> > > 5 Set 3
> > > Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
> > > 5 Set 4
> > > Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
> > > 5 Set 5
> > > Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames
> > > 5 Set 6
> > > Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
> > > 5 Set 7
> > > Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
> > > 5 Set 8
> > > Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
> > > 5 Set 9
> > > Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
> > > 5 Set 10
>
> > > I would like to parse this file by extracting the field id, ra, dec
> > > and mjd for each line. It is
> > > not, however, certain that the width of each value of the field id,
> > > ra, dec or mjd is the same
> > > in each line. Is there a way to do this such that even if there was a
> > > line where Ra=** and
> > > MJD= was swapped it would be parsed correctly?
>
> > > Cheers
> > >Tommy
>
> > I'm sure Python can handle this. Try the PyParsing module or learn
> > Python regular expression syntax.
>
> >http://pyparsing.wikispaces.com/
>
> > You could probably do it very crudely by just iterating over each line
> > and then using the string's find() method.
>
> Perhaps you and the OP could spend some time becoming familiar with
> built-in functions and str methods. In particular, str.split is your
> friend:
>
> C:\junk>type tommy_grav.py
> # Look, Ma, no imports!
>
> guff = """\
> Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames
> 5 Set 1
> Field f31448: MJD=53370.06811620123 Dec=+79:39:43.9 Ra=20:24:58.13
> Frames 5 Set
> 2
> Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
> 5 Set 3
> Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
> 5 Set 4
> Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
> 5 Set 5
>
> Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames
> 5 Set 6
> Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
> 5 Set 7
> Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
> 5 Set 8
> Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
> 5 Set 9
> Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
> 5 Set 10
>
> """
>
> is_angle = {
> 'ra': True,
> 'dec': True,
> 'mjd': False,
> }
>
> def convert_angle(text):
> deg, min, sec = map(float, text.split(':'))
> return (sec / 60. + min) / 60. + deg
>
> def parse_line(line):
> t = line.split()
> assert t[0].lower() == 'field'
> assert t[1].startswith('f')
> assert t[1].endswith(':')
> field_id = t[1].rstrip(':')
> rdict = {}
> for f in t[2:]:
> parts = f.split('=')
> if len(parts) == 2:
> key = parts[0].lower()
> value = parts[1]
> assert key not in rdict
> if is_angle[key]:
> rvalue = convert_angle(value)
> else:
> rvalue = float(value)
> rdict[key] = rvalue
> return field_id, rdict['ra'], rdict['dec'], rdict['mjd']
>
> for line in guff.splitlines():
> line = line.strip()
> if not line:
> continue
> field_id, ra, dec, mjd = parse_line(line)
> print field_id, ra, dec, mjd
>
> C:\junk>tommy_grav.py
> f29227 20.396261 67.5 53370.0679769
> f31448 20.416147 79.662194 53370.0681162
> f31226 20.412639 78.445889 53370.0682386
> f31004 20.418133 77.229694 53370.0683602
> f30782 20.431094 76.0135 53370.0684821
> f30560 20.450506 74.797306 53370.068604
> f30338 20.4756527778 73.58 53370.0687262
> f30116 20.506028 72.364889 53370.0688489
> f29894 20.541261 71.148611 53370.0689707
> f29672 20.5810805556 69.932389 53370.0690935
>
> Cheers,
> John

Slightly less ugly:

C:\junk>diff tommy_grav.py tommy_grav_2.py
18,23d17
< is_angle = {
< 'ra': True,
< 'dec': True,
< 'mjd': False,
< }
<
27a22,27
> converter = {
> 'ra': convert_angle,
> 'dec': convert_angle,
> 'mjd': float,
> }
>
41,44c41
< if is_angle[key]:
< rvalue = convert_angle(value)
< else:
< rvalue = float(value)
---
> rvalue = converter[key](value)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Psycho question

2008-08-06 Thread bearophileHUGS
Erik Max Francis:
> If len(bytes) is large, you might want to use `xrange`, too.  `range`
> creates a list which is not really what you need.

That's right for Python, but Psyco uses normal loops in both cases,
you can time this code in the two situations:

def foo1(n):
count = 0
for i in range(n):
count += 1
print count

def foo2(n):
count = 0
for i in xrange(n):
count += 1
print count

import psyco; psyco.full()
N = 1
#foo1(N)
foo2(N)

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


Re: Parsing of a file

2008-08-06 Thread bearophileHUGS
Using something like PyParsing is probably better, but if you don't
want to use it you may use something like this:

raw_data = """
Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames
5 Set 1
Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames
5 Set 2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
5 Set 5
Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames
5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
5 Set 10"""

# from each line extract the fields: id, ra, dec, mjd
# even if they are swapped

data = []
for line in raw_data.lower().splitlines():
if line.startswith("field"):
parts = line.split()
record = {"id": int(parts[1][1:-1])}
for part in parts[2:]:
if "=" in part:
title, field = part.split("=")
record[title] = field
data.append(record)
print data

-

Stefan Behnel:
>You can use named groups in a single regular expression.<

Can you show how to use them in this situation when fields can be
swapped?

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


Re: Parsing of a file

2008-08-06 Thread John Machin
On Aug 7, 6:02 am, Mike Driscoll <[EMAIL PROTECTED]> wrote:
> On Aug 6, 1:55 pm, Tommy Grav <[EMAIL PROTECTED]> wrote:
>
>
>
> > I have a file with the format
>
> > Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames
> > 5 Set 1
> > Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames
> > 5 Set 2
> > Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
> > 5 Set 3
> > Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
> > 5 Set 4
> > Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
> > 5 Set 5
> > Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames
> > 5 Set 6
> > Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
> > 5 Set 7
> > Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
> > 5 Set 8
> > Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
> > 5 Set 9
> > Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
> > 5 Set 10
>
> > I would like to parse this file by extracting the field id, ra, dec
> > and mjd for each line. It is
> > not, however, certain that the width of each value of the field id,
> > ra, dec or mjd is the same
> > in each line. Is there a way to do this such that even if there was a
> > line where Ra=** and
> > MJD= was swapped it would be parsed correctly?
>
> > Cheers
> >Tommy
>
> I'm sure Python can handle this. Try the PyParsing module or learn
> Python regular expression syntax.
>
> http://pyparsing.wikispaces.com/
>
> You could probably do it very crudely by just iterating over each line
> and then using the string's find() method.
>

Perhaps you and the OP could spend some time becoming familiar with
built-in functions and str methods. In particular, str.split is your
friend:

C:\junk>type tommy_grav.py
# Look, Ma, no imports!

guff = """\
Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames
5 Set 1
Field f31448: MJD=53370.06811620123 Dec=+79:39:43.9 Ra=20:24:58.13
Frames 5 Set
2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames
5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames
5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames
5 Set 5

Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames
5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames
5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames
5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames
5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames
5 Set 10

"""

is_angle = {
'ra': True,
'dec': True,
'mjd': False,
}

def convert_angle(text):
deg, min, sec = map(float, text.split(':'))
return (sec / 60. + min) / 60. + deg

def parse_line(line):
t = line.split()
assert t[0].lower() == 'field'
assert t[1].startswith('f')
assert t[1].endswith(':')
field_id = t[1].rstrip(':')
rdict = {}
for f in t[2:]:
parts = f.split('=')
if len(parts) == 2:
key = parts[0].lower()
value = parts[1]
assert key not in rdict
if is_angle[key]:
rvalue = convert_angle(value)
else:
rvalue = float(value)
rdict[key] = rvalue
return field_id, rdict['ra'], rdict['dec'], rdict['mjd']

for line in guff.splitlines():
line = line.strip()
if not line:
continue
field_id, ra, dec, mjd = parse_line(line)
print field_id, ra, dec, mjd


C:\junk>tommy_grav.py
f29227 20.396261 67.5 53370.0679769
f31448 20.416147 79.662194 53370.0681162
f31226 20.412639 78.445889 53370.0682386
f31004 20.418133 77.229694 53370.0683602
f30782 20.431094 76.0135 53370.0684821
f30560 20.450506 74.797306 53370.068604
f30338 20.4756527778 73.58 53370.0687262
f30116 20.506028 72.364889 53370.0688489
f29894 20.541261 71.148611 53370.0689707
f29672 20.5810805556 69.932389 53370.0690935

Cheers,
John

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


Re: Psycho question

2008-08-06 Thread Erik Max Francis

David C. Ullrich wrote:


Thanks. I would have guessed that I'd want low-level style code;
that's the sort of thing I have in mind. In fact the only thing
that seems likely to come up right now is looping through an
array of bytes, modifying them. The plan is to use the array
module first to convert a string or a list to an array, outside
the accelerated part, then maybe do something like

for j in range(len(bytes)/3):
  g = (bytes[3*j] + bytes[3*j+1] + bytes[3*j+2])/3
  bytes[3*j] = bytes[3*j+1] = bytes[3*j+2] = g


If len(bytes) is large, you might want to use `xrange`, too.  `range` 
creates a list which is not really what you need.


--
Erik Max Francis && [EMAIL PROTECTED] && http://www.alcyone.com/max/
 San Jose, CA, USA && 37 18 N 121 57 W && AIM, Y!M erikmaxfrancis
  You and I / We've seen it all / Chasing our hearts' desire
   -- The Russian and Florence, _Chess_
--
http://mail.python.org/mailman/listinfo/python-list


Re: Parsing of a file

2008-08-06 Thread Stefan Behnel
Shawn Milochik wrote:
>> I would like to parse this file by extracting the field id, ra, dec and mjd
>> for each line. It is
>> not, however, certain that the width of each value of the field id, ra, dec
>> or mjd is the same
>> in each line. Is there a way to do this such that even if there was a line
> 
> Regular expressions will do the trick nicely.
> 
>> where Ra=** and
>> MJD= was swapped it would be parsed correctly?
>>
> 
> Yes, but you'll probably have to look at each line three times or
> split it into a list and check the elements.

You can use named groups in a single regular expression.

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


Re: Psycho question

2008-08-06 Thread David C. Ullrich
In article <[EMAIL PROTECTED]>,
 "David C. Ullrich" <[EMAIL PROTECTED]> wrote:

> In article 
> <[EMAIL PROTECTED]>,
>  [EMAIL PROTECTED] wrote:
> 
> > David C. Ullrich:
> > > Thanks. If I can get it installed and it works as advertised
> > > this means I can finally (eventually) finish the process of
> > > dumping MS Windows: the only reason I need it right now is for
> > > the small number of Delphi programs I have for which straight
> > > Python is really not adequate. Been not looking forward to
> > > learning some C or Objective C (or whatever that Mac thing
> > > is) - if I can just "accelerate" a few Python routines that'll
> > > be great.
> > 
> > To have better performance with Psyco you need low-level style code,
> > generally not lazy, etc, and adopt some programming conventions, so
> > you may have to rewrite your routines for max speed.
> 
> Thanks. I would have guessed that I'd want low-level style code;
> that's the sort of thing I have in mind. In fact the only thing
> that seems likely to come up right now is looping through an
> array of bytes, modifying them. The plan is to use the array
> module first to convert a string or a list to an array, outside
> the accelerated part, then maybe do something like
> 
> for j in range(len(bytes)/3):
>   g = (bytes[3*j] + bytes[3*j+1] + bytes[3*j+2])/3
>   bytes[3*j] = bytes[3*j+1] = bytes[3*j+2] = g
> 
> then convert back to a list or string or whatever outside
> the accelerated function.
> 
> Surely something like _that_ is exactly what Psyco is going
> to do well with, yes? 

teehee. Downloaded Psyco. The install actually worked.
Tried exactly what's above with a list of 3 million ints.
Didn't time it carefully, seemed to take about two seconds.
Ran it again, in case the second run would be faster for some reason.
Second was about the same.

Said "import psyco", etc. Ran the routine again, it returned
in _no_ time, perceptually.

This is so cool. Gonna find out whether a decorator that
returns the accelerated function works, just for the fun
of deciding what the name should be: @cool? @wheee?
@wow? @dontblinkyoullmissit?

>(Ok, we're talking about image processing,
> in cases where I can't figure out how to get PIL to do whatever
> directly. So sometimes there will be double loops
> 
> for row in range(width):
>   for col in range(height):
> do_something[row*width + col]
> 
> but at least for the things I can think of right now it
> shouldn't get much worse than that.)
> 
> The things you mention below sound very interesting - I'm
> going to try Psyco first because unless I'm missing something
> I won't have to learn how to use it. Someday when it turns out
> to be not good enough I'll be in touch...
> 
> > If some of your routines are too much slow there are many ways in
> > Python to write faster modules, like Cython, Weave, Inline, Swig, SIP,
> > ShedSkin, etc. For bioinformatics purposes I have found that Pyd + D
> > language is good for me (I have tried Pyrex too few times, but I have
> > lost my patience trying to track down in a jungle of ugly auto-
> > generated C code where some reference count updates happen. Writing D
> > code is hugely faster/better for me. Even writing a C extension for
> > Python from scratch may be better for me because there aren't hidden
> > things happening everywhere. I presume other people don't share this
> > problems of mine because there are lot of people using Cython now).
> > 
> > Bye,
> > bearophile

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


Re: Run program from within Python

2008-08-06 Thread frankrentef
THNX for the links... lotta reading for the newbie!


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


Re: Run program from within Python

2008-08-06 Thread giltay
On Aug 6, 3:42 pm, frankrentef <[EMAIL PROTECTED]> wrote:
> stdout, stdin = popen2.popen2('c:\test\OpenProgram.exe 1 1')

What Mike said about subprocess.

Also, in regular Python strings, \t means a tab character.  You need
to replace \ with \\ in the programme path ('c:\\test\\OpenProgram.exe
1 1') or use a raw string (r'c:\test\OpenProgram.exe 1 1').  (The r
informs the Python parser that backslashes are to be used veratim, not
as special code.  If you're using Windows, raw strings make for fewer
headaches when dealing with file paths.)

Geoff G-T

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


Re: Parsing of a file

2008-08-06 Thread Shawn Milochik
>
> I would like to parse this file by extracting the field id, ra, dec and mjd
> for each line. It is
> not, however, certain that the width of each value of the field id, ra, dec
> or mjd is the same
> in each line. Is there a way to do this such that even if there was a line

Regular expressions will do the trick nicely.

> where Ra=** and
> MJD= was swapped it would be parsed correctly?
>

Yes, but you'll probably have to look at each line three times or
split it into a list and check the elements.


> Cheers
>  Tommy
> --
> http://mail.python.org/mailman/listinfo/python-list
>


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


Re: Books to begin learning Python

2008-08-06 Thread Mike Driscoll
On Aug 6, 2:56 pm, Edward Cormier <[EMAIL PROTECTED]> wrote:
> Which computer books are the best to begin learning Python 2.5 with?
> I've heard that Learning Python 3rd Edition is a good choice - can
> anyone give any more advice on this?
>
> Thanks.

There's lots of good books to read, including a few online ones. A lot
of people like "Dive Into Python" (http://diveintopython.org/). If you
want LOTS of information and some good code examples, Lutz's
"Programming Python 3rd Ed" is great. Chun ("Core Python Programming")
has a book that's almost as large, but it's more text than examples.

If you want just short snippets of code to learn from, try the Python
Cookbook series or just go to the site those books are based on:
http://code.activestate.com/recipes/langs/python/

"Python Power!" and "Beginning Python" are good too with the latter
having some interesting projects at the end. There are a lot of other
topical Python books on XML parsing, web programming, Win32, Tkinter,
wxPython and even SqlAlchemy!

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


Re: Parsing of a file

2008-08-06 Thread Mike Driscoll
On Aug 6, 1:55 pm, Tommy Grav <[EMAIL PROTECTED]> wrote:
> I have a file with the format
>
> Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames  
> 5 Set 1
> Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames  
> 5 Set 2
> Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames  
> 5 Set 3
> Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames  
> 5 Set 4
> Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames  
> 5 Set 5
> Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames  
> 5 Set 6
> Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames  
> 5 Set 7
> Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames  
> 5 Set 8
> Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames  
> 5 Set 9
> Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames  
> 5 Set 10
>
> I would like to parse this file by extracting the field id, ra, dec  
> and mjd for each line. It is
> not, however, certain that the width of each value of the field id,  
> ra, dec or mjd is the same
> in each line. Is there a way to do this such that even if there was a  
> line where Ra=** and
> MJD= was swapped it would be parsed correctly?
>
> Cheers
>    Tommy

I'm sure Python can handle this. Try the PyParsing module or learn
Python regular expression syntax.

http://pyparsing.wikispaces.com/

You could probably do it very crudely by just iterating over each line
and then using the string's find() method.

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


Re: Run program from within Python

2008-08-06 Thread Mike Driscoll
On Aug 6, 2:42 pm, frankrentef <[EMAIL PROTECTED]> wrote:
> Greetings all...
>
> Newbie to Python... need help with opening a file from within
> Python... see the following code.
>
> import popen2
> stdout, stdin = popen2.popen2('c:\test\OpenProgram.exe 1 1')
> keygen = stdout.read()
> print "The keygen value is: %s" % keygen
>
> from the command line if I execute "OpenProgram.exe 1 1" a number is
> returned.  ("1 1" are required to return the value needed.) Ultimately
> I want to take that number and apply it to another script, but the
> program is not running.
>
> Suggestions?
>
> NEWBIE to Python..

If you're using Python 2.4+, popen2 is deprecated. I recommend reading
up on the subprocess module instead. Here's a couple links:

http://blog.doughellmann.com/2007/07/pymotw-subprocess.html
http://docs.python.org/lib/module-subprocess.html

The first one also explains how to communicate with a process you
opened.

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


Books to begin learning Python

2008-08-06 Thread Edward Cormier
Which computer books are the best to begin learning Python 2.5 with? 
I've heard that Learning Python 3rd Edition is a good choice - can 
anyone give any more advice on this?


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


Re: Calculate sha1 hash of a binary file

2008-08-06 Thread John Krukoff

On Wed, 2008-08-06 at 12:31 -0700, LaundroMat wrote:
> Hi -
> 
> I'm trying to calculate unique hash values for binary files,
> independent of their location and filename, and I was wondering
> whether I'm going in the right direction.
> 
> Basically, the hash values are calculated thusly:
> 
> f = open('binaryfile.bin')
> import hashlib
> h = hashlib.sha1()
> h.update(f.read())
> hash = h.hexdigest()
> f.close()
> 
> A quick try-out shows that effectively, after renaming a file, its
> hash remains the same as it was before.
> 
> I have my doubts however as to the usefulness of this. As f.read()
> does not seem to read until the end of the file (for a 3.3MB file only
> a string of 639 bytes is being returned, perhaps a 00-byte counts as
> EOF?), is there a high danger for collusion?
> 
> Are there better ways of calculating hash values of binary files?
> 
> Thanks in advance,
> 
> Mathieu
> --
> http://mail.python.org/mailman/listinfo/python-list

Looks like you're doing the right thing from here. file.read( ) with no
size parameter will always return the whole file (for completeness, I'll
mention that the documentation warns this is not the case if the file is
in non-blocking mode, which you're not doing).

Python never treats null bytes as special in strings, so no, you're not
getting an early EOF due to that. 

I wouldn't worry about your hashing code, that looks fine, if I were you
I'd try and figure out what's going wrong with your file handles. I
would suspect that in where ever you saw your short read, you were
likely not opening the file in the correct mode or did not rewind the
file ( with file.seek( 0 ) ) after having previously read data from it.

You'll be fine if you use the code above as is, there's no problems I
can see with it.
-- 
John Krukoff <[EMAIL PROTECTED]>
Land Title Guarantee Company

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


Re: Psycho question

2008-08-06 Thread David C. Ullrich
In article 
<[EMAIL PROTECTED]>,
 [EMAIL PROTECTED] wrote:

> David C. Ullrich:
> > Thanks. If I can get it installed and it works as advertised
> > this means I can finally (eventually) finish the process of
> > dumping MS Windows: the only reason I need it right now is for
> > the small number of Delphi programs I have for which straight
> > Python is really not adequate. Been not looking forward to
> > learning some C or Objective C (or whatever that Mac thing
> > is) - if I can just "accelerate" a few Python routines that'll
> > be great.
> 
> To have better performance with Psyco you need low-level style code,
> generally not lazy, etc, and adopt some programming conventions, so
> you may have to rewrite your routines for max speed.

Thanks. I would have guessed that I'd want low-level style code;
that's the sort of thing I have in mind. In fact the only thing
that seems likely to come up right now is looping through an
array of bytes, modifying them. The plan is to use the array
module first to convert a string or a list to an array, outside
the accelerated part, then maybe do something like

for j in range(len(bytes)/3):
  g = (bytes[3*j] + bytes[3*j+1] + bytes[3*j+2])/3
  bytes[3*j] = bytes[3*j+1] = bytes[3*j+2] = g

then convert back to a list or string or whatever outside
the accelerated function.

Surely something like _that_ is exactly what Psyco is going
to do well with, yes? (Ok, we're talking about image processing,
in cases where I can't figure out how to get PIL to do whatever
directly. So sometimes there will be double loops

for row in range(width):
  for col in range(height):
do_something[row*width + col]

but at least for the things I can think of right now it
shouldn't get much worse than that.)

The things you mention below sound very interesting - I'm
going to try Psyco first because unless I'm missing something
I won't have to learn how to use it. Someday when it turns out
to be not good enough I'll be in touch...

> If some of your routines are too much slow there are many ways in
> Python to write faster modules, like Cython, Weave, Inline, Swig, SIP,
> ShedSkin, etc. For bioinformatics purposes I have found that Pyd + D
> language is good for me (I have tried Pyrex too few times, but I have
> lost my patience trying to track down in a jungle of ugly auto-
> generated C code where some reference count updates happen. Writing D
> code is hugely faster/better for me. Even writing a C extension for
> Python from scratch may be better for me because there aren't hidden
> things happening everywhere. I presume other people don't share this
> problems of mine because there are lot of people using Cython now).
> 
> Bye,
> bearophile

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


Parsing of a file

2008-08-06 Thread Tommy Grav

I have a file with the format

Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690 Frames  
5 Set 1
Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620 Frames  
5 Set 2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860 Frames  
5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020 Frames  
5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210 Frames  
5 Set 5
Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400 Frames  
5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620 Frames  
5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890 Frames  
5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070 Frames  
5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350 Frames  
5 Set 10


I would like to parse this file by extracting the field id, ra, dec  
and mjd for each line. It is
not, however, certain that the width of each value of the field id,  
ra, dec or mjd is the same
in each line. Is there a way to do this such that even if there was a  
line where Ra=** and

MJD= was swapped it would be parsed correctly?

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


Re: Calculate sha1 hash of a binary file

2008-08-06 Thread Tim Golden

LaundroMat wrote:

Hi -

I'm trying to calculate unique hash values for binary files,
independent of their location and filename, and I was wondering
whether I'm going in the right direction.

Basically, the hash values are calculated thusly:

f = open('binaryfile.bin')
import hashlib
h = hashlib.sha1()
h.update(f.read())
hash = h.hexdigest()
f.close()

A quick try-out shows that effectively, after renaming a file, its
hash remains the same as it was before.

I have my doubts however as to the usefulness of this. As f.read()
does not seem to read until the end of the file (for a 3.3MB file only
a string of 639 bytes is being returned, perhaps a 00-byte counts as
EOF?), is there a high danger for collusion?


Guess: you're running on Windows?

You need to open binary files by using open ("filename", "rb")
to indicate that Windows shouldn't treat certain characters --
specifically character 26 -- as special.

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


Re: Best practise implementation for equal by value objects

2008-08-06 Thread John Krukoff

On Wed, 2008-08-06 at 05:50 -0700, Slaunger wrote:
> Hi,
> 
> I am new here and relatively new to Python, so be gentle:
> 
> Is there a recommended generic implementation of __repr__ for objects
> equal by value to assure that eval(repr(x)) == x independet of which
> module the call is made from?
> 
> Example:
> 
> class Age:
> 
> def __init__(self, an_age):
> self.age = an_age
> 
> def __eq__(self, obj):
> self.age == obj.age
> 
> def __repr__(self):
> return self.__class__.__name__ + \
>"(%r)" % self.age
> 
> age_ten = Age(10)
> print repr(age_ten)
> print eval(repr(age_ten))
> print eval(repr(age_ten)).age
> 
> Running this gives
> 
> Age(10)
> Age(10)
> 10
> 
> Exactly as I want to.
> 
> The problem arises when the Age class is iomported into another module
> in another package as then there is a package prefix and the above
> implementation of __repr__ does not work.
> 
> I have then experimented with doing somthing like
> 
> def __repr__(self):
> return self.__module__ + '.' + self.__class__.__name__ +
> "(%r)" % self.age
> 
> This seems to work when called from the outside, but not from the
> inside of the module. That is, if I rerun the script above the the
> module name prefixed to the representation I get the following error
> 
> Traceback (most recent call last):
>   File "valuetest.py", line 15, in 
> print eval(repr(age_ten))
> __main__.Age(10)
>   File "", line 1, in 
> NameError: name '__main__' is not defined
> 
> This is pretty annoying.
> 
> My question is: Is there a robust generic type of implementation of
> __repr__ which I can use instead?
> 
> This is something I plan to reuse for many different Value classes, so
> I would like to get it robust.
> 
> Thanks,
> Slaunger
> --
> http://mail.python.org/mailman/listinfo/python-list

Are you really sure this is what you want to do, and that a less tricky
serialization format such as that provided by the pickle module wouldn't
work for you?

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

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


Run program from within Python

2008-08-06 Thread frankrentef
Greetings all...

Newbie to Python... need help with opening a file from within
Python... see the following code.


import popen2
stdout, stdin = popen2.popen2('c:\test\OpenProgram.exe 1 1')
keygen = stdout.read()
print "The keygen value is: %s" % keygen


from the command line if I execute "OpenProgram.exe 1 1" a number is
returned.  ("1 1" are required to return the value needed.) Ultimately
I want to take that number and apply it to another script, but the
program is not running.

Suggestions?


NEWBIE to Python..
--
http://mail.python.org/mailman/listinfo/python-list


Re: SMTP via GMAIL

2008-08-06 Thread mmm
On Aug 5, 12:18 am, Tim Roberts <[EMAIL PROTECTED]> wrote:

> >But when using smtp.gmail.com as the server I learned that any
> >@gmail.com address in the  Cc: text block would
> >receive mail even if I changed the code to have the RECEIVERS list to
> >ignore the CC addresses or not include the gmail address in the CC
> >list as below
>
> Interesting.  If true, that is incorrect behavior.

I ran some more tests and now I am pretty sure

  session.sendmail(SENDER, RECEIVERS, BODY)

is only sending to the RECEIVERS list, ignoring the Cc: field in the
body (as it should)

What fooled me is that I was using my own gmail account (i.e.,
[EMAIL PROTECTED]) as a Cc: field and not putting it in the RECEIVERS
list.  It seems Gmail creates two links (or copies?) to the message:
(1) as it is stored in the SENT box (as it should since the message
was sent by my gmail account) and (2) another in my INBOX because the
mail reading software reads the Cc: field.

Other smtp servers such as comcast do not create the stored SENT mail
and hence behave different in terms of how they treat Cc: fields of
the same account ([EMAIL PROTECTED] in this case).

Most important, using another gmail account (not [EMAIL PROTECTED]) as a
Cc: field does not create another sent message (outside of what is in
the RECEIVERS field).

Sorry for confusion, and I do appreciate the tips as I now see how
almost anything To:, Cc:, Bcc: combination can be handled by a proper
RECEIVERS list.


Below is python code that can be used by anyone that wants to test
what I did  (just fill in the SMTPuser and password variables) and
then check you gmail inbox


import sys, os, glob, datetime, time
import smtplib
## Parameters for SMTP session
port=587
SMTPserver=  'smtp.gmail.com'
SMTPuser= '[EMAIL PROTECTED]'
pw= 'fill in here'
SENDER= SMTPuser

## Message details
FROM=  SENDER
TO= '[EMAIL PROTECTED]'
CC=FROM
##RECEIVERS= (TO, CC)  ##proper way to send to both TO and CC
RECEIVERS= (TO,)  ## ignore the CC address

subject= 'Test 1a'
message='*** Email test  *** '

print 'Starting SMTP mail session on %s as  %s ' %
(SMTPserver,SMTPuser)
session = smtplib.SMTP(SMTPserver,port)
session.set_debuglevel(0)  # set debug level to 1 to see details
session.ehlo(SMTPuser)  # say hello
session.starttls()  # TLS needed
session.ehlo(SMTPuser)  # say hello again, not sure why
session.login(SMTPuser, pw)

##Create HEADER + MESSAGE
HEADER= 'From: %s\r\n' % FROM
HEADER= HEADER + 'To: %s\r\n' % TO
HEADER= HEADER + 'Cc: %s\r\n' % CC
HEADER= HEADER + 'Subject: %s\r\n' % subject
BODY= HEADER + '\r\n' + message
print BODY

SMTPresult = session.sendmail(SENDER, RECEIVERS, BODY)  ## send email

session.close()







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


Re: Best practise implementation for equal by value objects

2008-08-06 Thread Terry Reedy



Slaunger wrote:

Hi,

I am new here and relatively new to Python, so be gentle:

Is there a recommended generic implementation of __repr__ for objects
equal by value to assure that eval(repr(x)) == x independet of which
module the call is made from?


The CPython implementation gives up on that goal and simply prints 
 for at least two reasons ;-).


1. In general, it require fairly sophisticated analysis of __init__ to 
decide what representation of what attributes to include and decide if 
the goal is even possible.  If an attribute is an instance of a user 
class, then *its* __init__ needs to be analyzed.  If an attribute is a 
module, class, or function, there is no generic evaluable representation.


2. Whether eval(repr(x)) even works (returns an answer) depends on 
whether the name bindings in the globals and locals passed to eval 
(which by default are the globals and locals of the context of the eval 
call) match the names used in the repr.  You discovered that to a first 
approximation, this depends on whether the call to repr comes from 
within or without the module containing the class definition.  But the 
situation is far worse.  Consider 'import somemod as m'.  Even if you 
were able to introspect the call and determine that it did not come from 
somemod**, prepending 'somemod.' to the repr *still* would not work. 
Or, the call to repr could come from one context, the result saved and 
passed to another context with different name bindings, and the eval 
call made there.  So an repr that can be eval'ed in any context is hopeless.


If this is a practical rather than theoretical question, then use your 
first repr version that uses the classes definition name and only eval 
the result in a context that has that name bound to the class object.


from mymod import Age
#or
import mymod
Age = mymod.Age

#in either case
eval(repr(Age(10))) == Age(10)


class Age:

def __init__(self, an_age):
self.age = an_age

def __eq__(self, obj):
self.age == obj.age

def __repr__(self):
return self.__class__.__name__ + \
   "(%r)" % self.age

**
While such introspection is not part of the language, I believe one 
could do it in CPython, but I forgot the details.  There have been 
threads like 'How do I determine the caller function' with answers to 
that question, and I presume the module of the caller is available also.


Terry Jan Reedy

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


Calculate sha1 hash of a binary file

2008-08-06 Thread LaundroMat
Hi -

I'm trying to calculate unique hash values for binary files,
independent of their location and filename, and I was wondering
whether I'm going in the right direction.

Basically, the hash values are calculated thusly:

f = open('binaryfile.bin')
import hashlib
h = hashlib.sha1()
h.update(f.read())
hash = h.hexdigest()
f.close()

A quick try-out shows that effectively, after renaming a file, its
hash remains the same as it was before.

I have my doubts however as to the usefulness of this. As f.read()
does not seem to read until the end of the file (for a 3.3MB file only
a string of 639 bytes is being returned, perhaps a 00-byte counts as
EOF?), is there a high danger for collusion?

Are there better ways of calculating hash values of binary files?

Thanks in advance,

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


virtual IPs

2008-08-06 Thread leo davis
Good Day!
I have set up virtual IPs on my Ubuntu client machine & assigned IPs 
192.168.12.3 - eth0
192.168.12.4 - eth0:1
192.168.12.5 - eth0:2
192.168.12.6 - eth0:3
I have written python code to send multiple HTTP requests to my web server to 
load test it.When I check the logs on the apache server ,i find that the HTTP 
'GET' request is sent from the client IP 192.168.12.3.Is there any way that I 
can send the http requests from the other IPs on the virtual interfaces?
  [code]def send(self, url):
    conn = httplib.HTTPConnection(url)
    try:
    conn.request('GET', url)
    body = conn.getresponse().read()[/code]    
This code works fine,but since the apache default configuration doesnt allow a 
large number of simultaneous requests from single host,the code fails to load 
the server to my expectation.(Ofcourse I can change the default 
configuration,but wish to try something else)Hence was wondering whether I 
could  possibly send 'get' requests randomly from the virtual IPs? I could then 
have a list -.txt file of virtual IPs,the python script could fetch it and send 
the HTTP requets (in a loop)..Appreciate if anyone could suggest a way to 
do this.I am new to python...thanks in advance

CHeers
David


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

Re: Find class of an instance?

2008-08-06 Thread Nikolaus Rath
Neal Becker <[EMAIL PROTECTED]> writes:
> Sounds simple, but how, given an instance, do I find the class?


It does not only sound simple. When 'inst' is your instance, then

  inst.__class__

or

  type(inst) 

is the class.

Best,


   -Nikolaus

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

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

Re: Locking around

2008-08-06 Thread Nikolaus Rath
Tobiah <[EMAIL PROTECTED]> writes:
> On Mon, 04 Aug 2008 15:30:51 +0200, Nikolaus Rath wrote:
>
>> Hello,
>> 
>> I need to synchronize the access to a couple of hundred-thousand
>> files[1]. It seems to me that creating one lock object for each of the
>> files is a waste of resources, but I cannot use a global lock for all
>> of them either (since the locked operations go over the network, this
>> would make the whole application essentially single-threaded even
>> though most operations act on different files).
>
> Do you think you could use an SQL database on the network to
> handle the locking?

Yeah, I could. It wouldn't even have to be over the network (I'm
synchronizing access from within the same program). But I think that
is even more resource-wasteful than my original idea.

> Hey, maybe the files themselves should go into blobs.

Nope, not possible.  They're on Amazon S3.

Best,

   -Nikolaus

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

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

Re: Monitor and compare two log files in real time

2008-08-06 Thread Shawn Milochik
Can you be more specific? That will also help you write your
requirements, which will lead to your pseudo code and then your code.

Do you want to search for a a pre-defined string (or set of strings),
or just look for anything matching a pattern to appear in the first
file? Related question: Can that string appear anywhere in the second
file, or does it have to appear in a certain pattern (at the beginning
of a line, followed by a colon or the word "error" or something?

Do the log entries have timestamps, or will you be capturing the time
your script found the string in file 1? What will you do if the script
must be restarted and "forgets" what it found in the past eight
minutes?

If you're feeling ambitious, write some code. Figure out how to:

1. Read a file.

2. Locate the value(s) you are looking for and retain them somehow.

Once you can do those two things, you can easily read the second file
and seek the values you already found. A few lines to handle the
eight-minute rule, and you're almost done.

Post back when you have some code written.

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


RE: Monitor and compare two log files in real time

2008-08-06 Thread Reedick, Andrew


> -Original Message-
> From: [EMAIL PROTECTED] [mailto:python-
> [EMAIL PROTECTED] On Behalf Of m
> Sent: Wednesday, August 06, 2008 1:25 PM
> To: python-list@python.org
> Subject: Monitor and compare two log files in real time
> 
> I have a script I would like to write but I am not sure of where to
> start / approach. Perhaps someone could help direct me in the right
> direction. Any advice is appreciated.
> 
> I would like to write a python script that monitors two log files.
> If a certain string, lets say string1 shows up in logfile-A, I want to
> check if that same string shows up in log file-B within 8 minutes. If
> it does not show up within 8 minutes, send an email ( using sendmail
> or postfix).
> 
> Do you have any suggestions?
> --

Google on "python tail" to get a python implementation of the unix tail
command.  The rest should be easy. 

http://code.activestate.com/recipes/157035/



*

The information transmitted is intended only for the person or entity to which 
it is addressed and may contain confidential, proprietary, and/or privileged 
material. Any review, retransmission, dissemination or other use of, or taking 
of any action in reliance upon this information by persons or entities other 
than the intended recipient is prohibited. If you received this in error, 
please contact the sender and delete the material from all computers. GA622


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


Re: looking for IDE advice or workflow tips

2008-08-06 Thread Bruno Desthuilliers

[EMAIL PROTECTED] a écrit :

I'm a novice developer at best and often work with the R statistical
programming language. I use an editor called TINN-R which allows me to
write a script, then highlight a few lines and send them to the
interpreter. I am using pythonwin and it lacks this funtionality (that
I can tell) and when I copy and paste lines into the interpreter only
the first line is evaluated and the rest appears as returned text.

Is there an editor that allows me to send a few lines out of many
lines of code at a time?


emacs + python-mode.


or

How does one check small blocks of code without typing them each time,
running an entire script (with other code) or creating a small script
for every code block?

>

For example say lines 1-100 work fine and now I'm working on lines
101-105. Should I create a small script with just those lines?


You may want to learn more about functions.

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


Re: Any tips on Python web development on Mac OS

2008-08-06 Thread Bruno Desthuilliers

Tim Greening-Jackson a écrit :

Bruno Desthuilliers wrote:

Tim Greening-Jackson a écrit :
(snip)



Depends on what your "site" is doing.


There are all *sorts* of things I would like it to do, but am not 
dogmatic about any of them. For example, having various people being 
able to login to it securely to shuttle files between ourselves would be 
useful. As would webmail access. And various "robot" functionality...


Ok, so this is more a collection of web applications than a 
content-oriented site. FWIW, there are existing open-source solutions 
(not necessarily written in Python...) for at least the first two features.


The exercise is more to see what Python can do to help me develop 
websites and get used to some sort of proper development framework,


Ok. Then to answer one of your initial questions, yes, having a look at 
frameworks like Django, Turbogears or Pylons might be a good idea. But 
note that these are frameworks, not applications like iWeb.


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


Monitor and compare two log files in real time

2008-08-06 Thread m
I have a script I would like to write but I am not sure of where to
start / approach. Perhaps someone could help direct me in the right
direction. Any advice is appreciated.

I would like to write a python script that monitors two log files.
If a certain string, lets say string1 shows up in logfile-A, I want to
check if that same string shows up in log file-B within 8 minutes. If
it does not show up within 8 minutes, send an email ( using sendmail
or postfix).

Do you have any suggestions?
--
http://mail.python.org/mailman/listinfo/python-list


Using an DTD not specified in XML file for validation

2008-08-06 Thread Brian Quinlan

Hey,

I'm trying to figure out how I can validate an XML file using a DTD that 
isn't specified in the XML file.


My code so far is:

from xml import sax
from xml.sax import sax2exts

parser = sax2exts.XMLValParserFactory.make_parser()

parser.setContentHandler(handler)
parser.setErrorHandler(handler)

parser.parse(xml_file)

And this works fine if the DTD is specified in the XML file i.e errors 
are generated for non-compliant entities. But I would like to force the 
file to be valid according to one other DTD file that is not referenced 
in the XML file.


Anyone know how to do this?

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


Re: Psycho question

2008-08-06 Thread bearophileHUGS
David C. Ullrich:
> Thanks. If I can get it installed and it works as advertised
> this means I can finally (eventually) finish the process of
> dumping MS Windows: the only reason I need it right now is for
> the small number of Delphi programs I have for which straight
> Python is really not adequate. Been not looking forward to
> learning some C or Objective C (or whatever that Mac thing
> is) - if I can just "accelerate" a few Python routines that'll
> be great.

To have better performance with Psyco you need low-level style code,
generally not lazy, etc, and adopt some programming conventions, so
you may have to rewrite your routines for max speed.

If some of your routines are too much slow there are many ways in
Python to write faster modules, like Cython, Weave, Inline, Swig, SIP,
ShedSkin, etc. For bioinformatics purposes I have found that Pyd + D
language is good for me (I have tried Pyrex too few times, but I have
lost my patience trying to track down in a jungle of ugly auto-
generated C code where some reference count updates happen. Writing D
code is hugely faster/better for me. Even writing a C extension for
Python from scratch may be better for me because there aren't hidden
things happening everywhere. I presume other people don't share this
problems of mine because there are lot of people using Cython now).

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


Re: Limits of Metaprogramming

2008-08-06 Thread castironpi
On Aug 6, 7:24 am, Wilson <[EMAIL PROTECTED]> wrote:
> On Aug 4, 9:23 pm, castironpi <[EMAIL PROTECTED]> wrote:
>
>
>
> > On Aug 4, 1:57 pm, Wilson <[EMAIL PROTECTED]> wrote:
>
> > > On Aug 4, 6:49 pm, castironpi <[EMAIL PROTECTED]> wrote:
>
> > > > Two, if all your methods will have uniform signatures and closures,
> > > > you can store class methods as only their co_code objects:
>
> > > > >>> C.g.im_func.func_code.co_code
>
> > > > 'd\x00\x00S'
>
> > > > And fabricate them dynamically into full live types as needed.
>
> > > Thanks for your comments and advice. This second option intrigues me;
> > > could you elaborate further, I don't follow you...
>
> > > Thanks Paul
>
> > Depending on the complexity of the functions, a code string could be
> > all you need to store to determine (redetermine) a function's
> > behavior.  For something moderately simple,
>
> > def trans1( self, prev, trans ):
> >         if prev== 0 and trans== 'a':
> >                 return 1
> >         if prev== 1 and trans== 'b':
> >                 return 0
> >         return prev
>
> > I found you need to store code.co_nlocals, code.co_code, and
> > code.co_consts, to distinguish from a blank stub.  With extra
> > variables, I needed code.co_names and code.co_varnames too.  To
> > recreate a code object completely, you need 12 variables (14 to
> > include closures), some of which are composite objects and would need
> > to be pickled to be stored.
>
> Still don't really understand this so I'm going to admit defeat.
> Thanks all for your advice... Very much appreciated!

I was describing an alternative to storing functions in a way that
wasn't in serial in plain text.  It was off-topic from state-machine
transitions.

Can you start with this?

# state, input, next state
transitions= [
  ( 0, 'a', 1 ),
  ( 1, 'a', 2 ),
  ( 2, 'a', 0 ),
  ( 0, 'b', 0 ),
  ( 1, 'b', 0 ),
  ( 2, 'b', 2 )
]

What further?
--
http://mail.python.org/mailman/listinfo/python-list


Re: More like a shell command.

2008-08-06 Thread castironpi
On Aug 6, 9:38 am, Bill <[EMAIL PROTECTED]> wrote:
> Is there anyway I can extend python to accept a command
> which looks more like shell syntax than a function call.
>
> I want to be able to do this:
>
>     if blah :
>         MyCommand  Arg1  Arg2
>
> as opposed to this:
>
>     if blah :
>         MyCommand(Arg1,Arg2)
>
> or this:
>
>     if blah :
>         x("MyCommand  Arg1  Arg2")
>
> Of source, I would like to do this by writing a module (or through
> some other run-time hook) as opposed to editing the Python source
> code.
>
> Thanks in advance
> (unless you are just a Python nut who is flaming to tell me that I
> should not want this.  :-)  )
>
> Bill

Bill,

You'll need to decide on a grammar you want to use beforehand.  What
do you do with:

>>> if f 0 and g

?

Does it translate to:

if f( 0 ) and g( )

or

if f( 0 and g )

?  If every line starts with its one and only function, and the
parameters exhaust the rest of the line, and you don't allow nested
expressions, you can run a preprocessor, then call Python.  (Those
three conditions are limiting.)  Here's the steps for each line.

1. strip leading tabs
2. compile( line, '', 'exec' ) to check for SyntaxError
3. if found:
3a. replace first space with '('
3b. replace remaining space with ','
3c. add trailing ')'
3d. replace leading tabs

Then just run:

python preprocessor.py -filename-
python -filename-.pppy

Have a look at code.py and codeop.py as well and the
InteractiveInterpreter class.
--
http://mail.python.org/mailman/listinfo/python-list


Re: enhancing decorator signatures

2008-08-06 Thread castironpi
On Aug 6, 7:16 am, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I'm using Michele S's decorator-module to create decorators with matching
> signatures, for better error-catching.
>
> However, I now want to enrich the signature of a generic wrapper so that the
> new function will accept more parameters (keyword only). These additional
> parameters are consumed by the wrapper and not passed to the decorated
> function.
>
> So something like this would be cool:
>
> @enriched_decorator("bar")
> def some_decorator(f, **args, **kwargs):
>     bar = kwargs.pop("bar")
>     return f(**args, **kwargs)
>
> Anybody has done something like this?
>
> Diez

Diez,

notfound= object()
@enriched_decorator("bar")
def some_decorator(f, *args, **kwargs):
bar = kwargs.pop("bar",notfound)
return f(*args, **kwargs)

Then you would declare your function:

@some_decorator
def funA( x, y, z ):
  do( x, y )
  make( z )

And be able to call it:

funA( 0, 1, 2, bar= 'what' )

so some_decorator consumes 'bar' and preserves x, y, and z.  It's
working fine.  What did you want to ask about?

--Roggisch has plonked me in the past.  Can someone reply to this
message to the group so they'll see it?--
--
http://mail.python.org/mailman/listinfo/python-list


Re: regex question

2008-08-06 Thread Tobiah
On Tue, 05 Aug 2008 15:55:46 +0100, Fred Mangusta wrote:

> Chris wrote:
> 
>> Doesn't work for his use case as he wants to keep periods marking the
>> end of a sentence.

Doesn't it?  The period has to be surrounded by digits in the
example solution, so wouldn't periods followed by a space
(end of sentence) always make it through?



** Posted from http://www.teranews.com **
--
http://mail.python.org/mailman/listinfo/python-list


Re: Locking around

2008-08-06 Thread Tobiah
On Mon, 04 Aug 2008 15:30:51 +0200, Nikolaus Rath wrote:

> Hello,
> 
> I need to synchronize the access to a couple of hundred-thousand
> files[1]. It seems to me that creating one lock object for each of the
> files is a waste of resources, but I cannot use a global lock for all
> of them either (since the locked operations go over the network, this
> would make the whole application essentially single-threaded even
> though most operations act on different files).

Do you think you could use an SQL database on the network to
handle the locking?  I was thinking of a table with one row
per file.  If the lock field is clear, you could update with a unique
ID, and query back to make sure that it is still yours before
accessing the file.

Hey, maybe the files themselves should go into blobs.


** Posted from http://www.teranews.com **
--
http://mail.python.org/mailman/listinfo/python-list


Re: More like a shell command.

2008-08-06 Thread Thor
Maybe this module would work fine:

http://docs.python.org/lib/module-cmd.html

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


Re: Psycho question

2008-08-06 Thread David C. Ullrich
In article <[EMAIL PROTECTED]>,
 Erik Max Francis <[EMAIL PROTECTED]> wrote:

> David C. Ullrich wrote:
> 
> > Just heard about Psycho. I've often wondered why someone
> > doesn't make something that does exactly what Psycho does - keen.
> > 
> > Silly question: It's correct, is it not, that Psycho doesn't
> > actually modify the Python installation, except by adding a
> > module or two (so that code not using Psycho is absolutely
> > unaffected)?
> 
> That's correct.  Hi, David!

Thanks. If I can get it installed and it works as advertised
this means I can finally (eventually) finish the process of
dumping MS Windows: the only reason I need it right now is for
the small number of Delphi programs I have for which straight
Python is really not adequate. Been not looking forward to 
learning some C or Objective C (or whatever that Mac thing
is) - if I can just "accelerate" a few Python routines that'll
be great.

Tentatively a very happy camper. See ya.

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


Re: More like a shell command.

2008-08-06 Thread Richie Hindle
[Bill]
> Is there anyway I can extend python to accept a command
> which looks more like shell syntax than a function call.
>
> I want to be able to do this:
>
> if blah :
> MyCommand  Arg1  Arg2

As a general rule, if Python gives you a syntax error then you can't
achieve what you want without modifying Python's grammar (and turning
it into something that isn't Python any more).

-- 
Richie Hindle
[EMAIL PROTECTED]
Search your Visual Studio projects instantly with Entrian Source Search,
our powerful Source Code Search add-in: http://entrian.com/source-search
--
http://mail.python.org/mailman/listinfo/python-list


Re: More like a shell command.

2008-08-06 Thread Miki
Hello,

> Is there anyway I can extend python to accept a command
> which looks more like shell syntax than a function call.
>
> I want to be able to do this:
>
>     if blah :
>         MyCommand  Arg1  Arg2
>
> as opposed to this:
>
>     if blah :
>         MyCommand(Arg1,Arg2)
>
> or this:
>
>     if blah :
>         x("MyCommand  Arg1  Arg2")
>
> Of source, I would like to do this by writing a module (or through
> some other run-time hook) as opposed to editing the Python source
> code.
You might want to have a look at ipython, they do something like that
but for the command interpreter and not the compiler.

The other option will be to write a compiler from your syntax to valid
Python syntax. However this my not be simple since you need to know
the context. e.g. is f("a b c") calling f in the string "a b c" or
f(a, b, c)?

HTH,
--
Miki <[EMAIL PROTECTED]>
http://pythonwise.blogspot.com
--
http://mail.python.org/mailman/listinfo/python-list


Re: More like a shell command.

2008-08-06 Thread Mike Driscoll
On Aug 6, 9:38 am, Bill <[EMAIL PROTECTED]> wrote:
> Is there anyway I can extend python to accept a command
> which looks more like shell syntax than a function call.
>
> I want to be able to do this:
>
>     if blah :
>         MyCommand  Arg1  Arg2
>
> as opposed to this:
>
>     if blah :
>         MyCommand(Arg1,Arg2)
>
> or this:
>
>     if blah :
>         x("MyCommand  Arg1  Arg2")
>
> Of source, I would like to do this by writing a module (or through
> some other run-time hook) as opposed to editing the Python source
> code.
>
> Thanks in advance
> (unless you are just a Python nut who is flaming to tell me that I
> should not want this.  :-)  )
>
> Bill

I'm not aware of any way to do this without modifying the original
source in some fundamental way. You may be able to use some
metaprogramming techniques, like decorators, to achieve this, although
I'm not thinking of anything clever at the moment.

---
Mike Driscoll

Blog:   http://blog.pythonlibrary.org
Python Extension Building Network: http://www.pythonlibrary.org
--
http://mail.python.org/mailman/listinfo/python-list


Has anyone used the Python-MMS libraries recently ? feedback / consultancy required

2008-08-06 Thread Ade Bamigboye
Hi 
 
We would like to talk with anyone who has recently used the Python-MMS
libraries with the aim of creating a prototype SMIL to MMS tool.
 

Regards Ade 
 
"CareTeamR - monitoring, managing, supporting patients"
 
Wireless Matters Limited
Tel  : +44 844 736 5330
Mobile : +44 7768 356150
Skype : ade-bamigboye
www.wireless-matters.com  
Registered in England at 39 Alma Road, St Albans AL1 3AT (Company No:
5379258)
 
--
http://mail.python.org/mailman/listinfo/python-list

Re: Find class of an instance?

2008-08-06 Thread [EMAIL PROTECTED]
On 6 août, 15:52, Bruno Desthuilliers  wrote:
> Heiko Wundram a écrit :
>
> > Am Mittwoch, den 06.08.2008, 08:44 -0400 schrieb Neal Becker:
> >> Sounds simple, but how, given an instance, do I find the class?
>
> > .__class__
>
> Works for new-style classes only. The "generic" way to go is to use
> type(obj).
>
> 
> Note that in both cases, what you'll get back is the class object, not
> the class name
> 

My I should shut up and check my facts :( Please everybody ignore
this brain fart.


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


Re: Dictionary to tree format (hopefully simple)

2008-08-06 Thread Adam Powell
Thanks very much for this, very concise!
--
http://mail.python.org/mailman/listinfo/python-list


Re: ANN: matplotlib-0.98.3 - plotting for python

2008-08-06 Thread bearophileHUGS
jdh2358:
> delaunay triangularization
[and more amazing things]

I'm impressed, it's growing very well, congratulations, I use it now
and then. I know people in University that use Python only/mostly
because of matplotlib.

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


Re: Find class of an instance?

2008-08-06 Thread Hugo

Neal Becker schreef:

Sounds simple, but how, given an instance, do I find the class?


I always do that with .__class__, not sure whether it is the best way:

>>> class A:
...  pass
...
>>> a = A()
>>> a.__class__

>>> a.__class__ == A
True
--
http://mail.python.org/mailman/listinfo/python-list


More like a shell command.

2008-08-06 Thread Bill
Is there anyway I can extend python to accept a command
which looks more like shell syntax than a function call.

I want to be able to do this:

if blah :
MyCommand  Arg1  Arg2

as opposed to this:

if blah :
MyCommand(Arg1,Arg2)

or this:

if blah :
x("MyCommand  Arg1  Arg2")

Of source, I would like to do this by writing a module (or through
some other run-time hook) as opposed to editing the Python source
code.

Thanks in advance
(unless you are just a Python nut who is flaming to tell me that I
should not want this.  :-)  )

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


Re: Locking around

2008-08-06 Thread MRAB
On Aug 6, 1:33 pm, Nikolaus Rath <[EMAIL PROTECTED]> wrote:
> Carl Banks <[EMAIL PROTECTED]> writes:
> > Freaky... I just posted nearly this exact solution.
>
> > I have a couple comments.  First, the call to acquire should come
> > before the try block.  If the acquire were to fail, you wouldn't want
> > to release the lock on cleanup.
>
> > Second, you need to change notify() to notifyAll(); notify alone won't
> > cut it.  Consider what happens if you have two threads waiting for
> > keys A and B respectively.  When the thread that has B is done, it
> > releases B and calls notify, but notify happens to wake up the thread
> > waiting on A.  Thus the thread waiting on B is starved.
>
> You're right. Thanks for pointing it out.
>
There's also less chance of deadlock if the files are always locked in
the same order, ie if you sort the files by, say, name, don't lock a
file if one earlier in the sorted list is already locked.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Is there a faster way to do this?

2008-08-06 Thread Boris Borcic

Is your product ID always the 3rd and last item on the line ?
Else your output won't separate IDs.

And how does

output = open(output_file,'w')
for x in set(line.split(',')[2] for line in open(input_file)) :
output.write(x)
output.close()

behave ?


[EMAIL PROTECTED] wrote:

I have a csv file containing product information that is 700+ MB in
size. I'm trying to go through and pull out unique product ID's only
as there are a lot of multiples. My problem is that I am appending the
ProductID to an array and then searching through that array each time
to see if I've seen the product ID before. So each search takes longer
and longer. I let the script run for 2 hours before killing it and had
only run through less than 1/10 if the file.

Heres the code:
import string

def checkForProduct(product_id, product_list):
for product in product_list:
if product == product_id:
return 1
return 0


input_file="c:\\input.txt"
output_file="c:\\output.txt"
product_info = []
input_count = 0

input = open(input_file,"r")
output = open(output_file, "w")

for line in input:
break_down = line.split(",")
product_number = break_down[2]
input_count+=1
if input_count == 1:
product_info.append(product_number)
output.write(line)
output_count = 1
if not checkForProduct(product_number,product_info):
product_info.append(product_number)
output.write(line)
output_count+=1

output.close()
input.close()
print input_count
print output_count
--
http://mail.python.org/mailman/listinfo/python-list



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


How to create python codecs?

2008-08-06 Thread yrogirg
Actually, I need utf-8 to utf-8 encoding which would change the text
to another keyboard layout (e.g. from english to russian ghbdtn ->
привет) and would not affect other symbols.

I`m totally new to python and to more or less advanced programming. I
couldn`t find the answer to the question anywhere.

I`ve tried create simple utf to utf codec for some symbols but it
doesn`t work. Here it is.



import codecs

### Codec APIs

class Codec(codecs.Codec):

def encode(self,input,errors='strict'):
return codecs.charmap_encode(input,errors,encoding_table)

def decode(self,input,errors='strict'):
return codecs.charmap_decode(input,errors,decoding_table)

class IncrementalEncoder(codecs.IncrementalEncoder):
def encode(self, input, final=False):
return codecs.charmap_encode(input,self.errors,encoding_table)
[0]

class IncrementalDecoder(codecs.IncrementalDecoder):
def decode(self, input, final=False):
return codecs.charmap_decode(input,self.errors,decoding_table)
[0]

class StreamWriter(Codec,codecs.StreamWriter):
pass

class StreamReader(Codec,codecs.StreamReader):
pass

### encodings module API

def getregentry():
return codecs.CodecInfo(
name='rulayout',
encode=Codec().encode,
decode=Codec().decode,
incrementalencoder=IncrementalEncoder,
incrementaldecoder=IncrementalDecoder,
streamreader=StreamReader,
streamwriter=StreamWriter,
)


### Decoding Table

decoding_table = (
u'\u'   #  u'\u' -> NULL
u'\u0001'   #  u'\u0001' -> START OF HEADING
u'\u0002'   #  u'\u0002' -> START OF TEXT
u'\u0003'   #  u'\u0003' -> END OF TEXT
u'\u0004'   #  u'\u0004' -> END OF TRANSMISSION
u'\u0005'   #  u'\u0005' -> ENQUIRY
u'\u0006'   #  u'\u0006' -> ACKNOWLEDGE
u'\u0007'   #  u'\u0007' -> BELL
u'\u0008'   #  u'\u0008' -> BACKSPACE
u'\u0009'   #  u'\u0009' -> HORIZONTAL TABULATION
u'\u000A'   #  u'\u000A' -> LINE FEED
u'\u000B'   #  u'\u000B' -> VERTICAL TABULATION
u'\u000C'   #  u'\u000C' -> FORM FEED
u'\u000D'   #  u'\u000D' -> CARRIAGE RETURN
u'\u000E'   #  u'\u000E' -> SHIFT OUT
u'\u000F'   #  u'\u000F' -> SHIFT IN
u'\u0010'   #  u'\u0010' -> DATA LINK ESCAPE
u'\u0011'   #  u'\u0011' -> DEVICE CONTROL ONE
u'\u0012'   #  u'\u0012' -> DEVICE CONTROL TWO
u'\u0013'   #  u'\u0013' -> DEVICE CONTROL THREE
u'\u0014'   #  u'\u0014' -> DEVICE CONTROL FOUR
u'\u0015'   #  u'\u0015' -> NEGATIVE ACKNOWLEDGE
u'\u0016'   #  u'\u0016' -> SYNCHRONOUS IDLE
u'\u0017'   #  u'\u0017' -> END OF TRANSMISSION BLOCK
u'\u0018'   #  u'\u0018' -> CANCEL
u'\u0019'   #  u'\u0019' -> END OF MEDIUM
u'\u001A'   #  u'\u001A' -> SUBSTITUTE
u'\u001B'   #  u'\u001B' -> ESCAPE
u'\u001C'   #  u'\u001C' -> FILE SEPARATOR
u'\u001D'   #  u'\u001D' -> GROUP SEPARATOR
u'\u001E'   #  u'\u001E' -> RECORD SEPARATOR
u'\u001F'   #  u'\u001F' -> UNIT SEPARATOR
u'\u0020'   #  u'\u0020' -> SPACE
u'\u0021'   #  u'\u0021' -> EXCLAMATION MARK
u'\u0022'   #  u'\u0022' -> QUOTATION MARK
u'\u0023'   #  u'\u0023' -> NUMBER SIGN
u'\u0024'   #  u'\u0024' -> DOLLAR SIGN
u'\u0025'   #  u'\u0025' -> PERCENT SIGN
u'\u0026'   #  u'\u0026' -> AMPERSAND
u'\u0027'   #  u'\u0027' -> APOSTROPHE
u'\u0028'   #  u'\u0028' -> LEFT PARENTHESIS
u'\u0029'   #  u'\u0029' -> RIGHT PARENTHESIS
u'\u002A'   #  u'\u002A' -> ASTERISK
u'\u002B'   #  u'\u002B' -> PLUS SIGN
u'\u002C'   #  u'\u002C' -> COMMA
u'\u002D'   #  u'\u002D' -> HYPHEN-MINUS
u'\u002E'   #  u'\u002E' -> FULL STOP
u'\u002F'   #  u'\u002F' -> SOLIDUS
u'\u0030'   #  u'\u0030' -> DIGIT ZERO
u'\u0031'   #  u'\u0031' -> DIGIT ONE
u'\u0032'   #  u'\u0032' -> DIGIT TWO
u'\u0033'   #  u'\u0033' -> DIGIT THREE
u'\u0034'   #  u'\u0034' -> DIGIT FOUR
u'\u0035'   #  u'\u0035' -> DIGIT FIVE
u'\u0036'   #  u'\u0036' -> DIGIT SIX
u'\u0037'   #  u'\u0037' -> DIGIT SEVEN
u'\u0038'   #  u'\u0038' -> DIGIT EIGHT
u'\u0039'   #  u'\u0039' -> DIGIT NINE
u'\u003A'   #  u'\u003A' -> COLON
u'\u003B'   #  u'\u003B' -> SEMICOLON
u'\u003C'   #  u'\u003C' -> LESS-THAN SIGN
u'\u003D'   #  u'\u003D' -> EQUALS SIGN
u'\u003E'   #  u'\u003E' -> GREATER-THAN SIGN
u'\u003F'   #  u'\u003F' -> QUESTION MARK
u'\u0040'   #  u'\u0040' -> COMMERCIAL AT
u'\u0041'   #  u'\u0041' -> LATI

Best practise implementation for equal by value objects

2008-08-06 Thread Slaunger
Hi,

I am new here and relatively new to Python, so be gentle:

Is there a recommended generic implementation of __repr__ for objects
equal by value to assure that eval(repr(x)) == x independet of which
module the call is made from?

Example:

class Age:

def __init__(self, an_age):
self.age = an_age

def __eq__(self, obj):
self.age == obj.age

def __repr__(self):
return self.__class__.__name__ + \
   "(%r)" % self.age

age_ten = Age(10)
print repr(age_ten)
print eval(repr(age_ten))
print eval(repr(age_ten)).age

Running this gives

Age(10)
Age(10)
10

Exactly as I want to.

The problem arises when the Age class is iomported into another module
in another package as then there is a package prefix and the above
implementation of __repr__ does not work.

I have then experimented with doing somthing like

def __repr__(self):
return self.__module__ + '.' + self.__class__.__name__ +
"(%r)" % self.age

This seems to work when called from the outside, but not from the
inside of the module. That is, if I rerun the script above the the
module name prefixed to the representation I get the following error

Traceback (most recent call last):
  File "valuetest.py", line 15, in 
print eval(repr(age_ten))
__main__.Age(10)
  File "", line 1, in 
NameError: name '__main__' is not defined

This is pretty annoying.

My question is: Is there a robust generic type of implementation of
__repr__ which I can use instead?

This is something I plan to reuse for many different Value classes, so
I would like to get it robust.

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


Re: Find class of an instance?

2008-08-06 Thread Heiko Wundram
Am Mittwoch, den 06.08.2008, 08:44 -0400 schrieb Neal Becker:
> Sounds simple, but how, given an instance, do I find the class?

.__class__

For example:

Python 2.5.2 (r252:60911, Aug  5 2008, 03:26:50)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = "hello"
>>> x.__class__

>>>

--- Heiko.

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


Find class of an instance?

2008-08-06 Thread Neal Becker
Sounds simple, but how, given an instance, do I find the class?

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


Re: Locking around

2008-08-06 Thread Nikolaus Rath
Carl Banks <[EMAIL PROTECTED]> writes:
> Freaky... I just posted nearly this exact solution.
>
> I have a couple comments.  First, the call to acquire should come
> before the try block.  If the acquire were to fail, you wouldn't want
> to release the lock on cleanup.
>
> Second, you need to change notify() to notifyAll(); notify alone won't
> cut it.  Consider what happens if you have two threads waiting for
> keys A and B respectively.  When the thread that has B is done, it
> releases B and calls notify, but notify happens to wake up the thread
> waiting on A.  Thus the thread waiting on B is starved.

You're right. Thanks for pointing it out.

Best,

   -Nikolaus

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

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

Re: Limits of Metaprogramming

2008-08-06 Thread Wilson
On Aug 4, 9:23 pm, castironpi <[EMAIL PROTECTED]> wrote:
> On Aug 4, 1:57 pm, Wilson <[EMAIL PROTECTED]> wrote:
>
> > On Aug 4, 6:49 pm, castironpi <[EMAIL PROTECTED]> wrote:
>
> > > Two, if all your methods will have uniform signatures and closures,
> > > you can store class methods as only their co_code objects:
>
> > > >>> C.g.im_func.func_code.co_code
>
> > > 'd\x00\x00S'
>
> > > And fabricate them dynamically into full live types as needed.
>
> > Thanks for your comments and advice. This second option intrigues me;
> > could you elaborate further, I don't follow you...
>
> > Thanks Paul
>
> Depending on the complexity of the functions, a code string could be
> all you need to store to determine (redetermine) a function's
> behavior.  For something moderately simple,
>
> def trans1( self, prev, trans ):
>         if prev== 0 and trans== 'a':
>                 return 1
>         if prev== 1 and trans== 'b':
>                 return 0
>         return prev
>
> I found you need to store code.co_nlocals, code.co_code, and
> code.co_consts, to distinguish from a blank stub.  With extra
> variables, I needed code.co_names and code.co_varnames too.  To
> recreate a code object completely, you need 12 variables (14 to
> include closures), some of which are composite objects and would need
> to be pickled to be stored.
>
> Then you can build a new code object, then a new function object, then
> a new method object, then you can call it.  Instead of a module of
> code, perhaps you could have a datafile containing only these values,
> up to twelve per record, one record for each different function you
> have.
>
> Here is the benefit:
>
> newcode= dupecode( oldcode, codet1 )
> newfun= FunctionType( newcode, {} )
> stub.stub= MethodType( newfun, stub )
> prev= stub.stub( prev, trans )
> print prev
>
> You can loop over these five lines, re-loading function data with
> 'dupecode', executing it, then reloading the next one, and you have a
> different function.  Additions to your database of functions would
> start in source first (unless you construct each parameter, in
> particular co_code, by hand, which you may want), then get compiled,
> then go in.
>
> Here is the complete constructor for a code object:
>
> >>> help(_)
>
> Help on code object:
>
> class code(object)
>  |  code(argcount, nlocals, stacksize, flags, codestring, constants,
> names,
>  |        varnames, filename, name, firstlineno, lnotab[, freevars[,
> cellvars]])
>
> Here's the constructor in Python 3.0:
>
> class code(object)
>  |  code(argcount, kwonlyargcount nlocals, stacksize, flags,
> codestring,
>  |        constants, names, varnames, filename, name, firstlineno,
>  |        lnotab[, freevars[, cellvars]])
>
> I defined Stub.stub like this:
>
> class Stub:
>         def stub( self, prev, trans ):
>                 return prev
> stub= Stub( )
>
> You need imports from the types module:
>
> from types import MethodType, FunctionType, CodeType
>
> And here is 'dupecode', which currently only replaces five of the old
> function's members with new ones:
>
> def dupecode( old, new ):
>
>         newcode= CodeType( old.co_argcount, new.co_nlocals, old.co_stacksize,
>                 old.co_flags,
>                 new.co_code,
>                 new.co_consts, new.co_names,
>                 new.co_varnames, old.co_filename, old.co_name, 
> old.co_firstlineno,
>                 old.co_lnotab )
>
>         return newcode

Still don't really understand this so I'm going to admit defeat.
Thanks all for your advice... Very much appreciated!
--
http://mail.python.org/mailman/listinfo/python-list


ANN: matplotlib-0.98.3 - plotting for python

2008-08-06 Thread [EMAIL PROTECTED]
matplotlib is a 2D plotting library for python for use in scripts,
applications, interactive shell work or web application servers.
matplotlib 0.98.3 is a major but stable release which brings
many new features detailed below.


 Homepage: http://matplotlib.sourceforge.net/

 Downloads: 
http://sourceforge.net/project/showfiles.php?group_id=80706&package_id=278194&release_id=617552

 Screenshots: http://matplotlib.sourceforge.net/screenshots.html


Thanks to Charlie Moad for the release and for all the matplotlib
developers for the feature enhancements and bug fixes.

The following "what's new" summary is also online at
http://matplotlib.sourceforge.net/whats_new.html.

What's new
==

delaunay triangularization

 Jeffrey Whitaker has added support for gridding irregularly spaced
 data using the Matlab (TM) equivalent griddata function.  This is a
 long-standing feature request for matplotlib and a major
 enhancement.  matplotlib now ships with Robert Kern's delaunay
 triangularization code (BSD license), which supports the default
 griddata implementation, but there are some known corner cases where
 this routine fails.  As such, Jeff has provided a python wrapper to
 the NCAR natgrid routines, whose licensing terms are a bit murkier,
 for those who need bullet proof gridding routines.  If the NCAR
 toolkit is installed, griddata will detect it and use it.  See
 http://matplotlib.sf.net/matplotlib.mlab.html#-griddata for details.
 Thanks Robert and Jeff.

proper paths

 For the first time, matplotlib supports spline paths across
 backends, so you can pretty much draw anything.  See the
 http://matplotlib.sf.net/screenshots.html#path_patch_demo. Thanks to
 Michael Droettboom and http://www.stsci.edu (STScI).

better transformations

 In what has been described as open-heart surgery on matplotlib,
 Michael Droettboom, supported by http://www.stsci.edu (STSci) , has
 rewritten the transformation infrastructure from the ground up,
 which not only makes the code more intuitive, it supports custom
 user projections and scales.  See
 http://matplotlib.sf.net/doc/devel/add_new_projection.rst and the
 http://matplotlib.sf.net/matplotlib.transforms.html module
 documentation.

histogram enhancements

 hist (http://matplotlib.sf.net/matplotlib.pyplot.html#-hist) can
 handle 2D arrays and create side-by-side or stacked histograms, as
 well as cumulative filled and unfilled histograms; see
 http://matplotlib.sf.net/examples/pylab_examples/histogram_demo_extended.py

ginput function

 ginput (http://matplotlib.sf.net/matplotlib.pyplot.html#-ginput) is
 a blocking function for interactive use to get input from the user.
 A long requested feature submitted by Gael Varoquaux.  See
 http://matplotlib.sf.net/examples/pylab_examples/ginput_demo.py

wind barbs

 Ryan May has added support for wind barbs, which are popular among
 meterologists.  These are similar to direction fields or quiver
 plots but contain extra information about wind speed and other
 attributes.  See
 http://matplotlib.sf.net/examples/pylab_examples/barb_demo.py

external backends

 backend developers and users can now use custom backends outside the
 matplotlib tree, by using the special syntax
 module://my_backend for the backend setting in the rc
 file, the use directive, or in -d command line argument to
 pylab/pyplot scripts

findobj

 Introduced a recursive object search method to find all objects that
 meet some matching criterion, ef to find all text instances in a
 figure.  See
 http://matplotlib.sf.net/examples/pylab_examples/findobj_demo.py


saving transparent figures

 http://matplotlib.sf.net/matplotlib.pyplot.html#-savefig now
 supports a *transparent* keyword argument to set the figure an axes
 backgrounds transparent.  Useful when you want to embed matplotlib
 figures with transparent backgrounds into other documents

axes3d support removed

 Amid considerable controversy from the users, we decided to pull the
 experimental 3D support from matplotlib.  Although basic 3D support
 remains a goal, the 3D support we had was mainly orphaned, and we
 need a developer with interest to step up and maintain it.

mathtext outside matplotlib

 The mathtext support in matplotlib is very good, and some folks want
 to be able to use it outside of matplotlib figures.  We added some
 helper functions to get the mathtext rendered pixel buffer as a
 numpy array, with an example at
 http://matplotlib.sf.net/examples/api/mathtext_asarray.py


image optimizations

 enhancements to speed up color mapping and panning and zooming on
 dense images


better savefig

 http://matplotlib.sf.net/matplotlib.pyplot.html#-savefig now
 supports save to file handles (great for web app servers) or unicode
 filenames on all backends

record array functions

 some more helper functions to facilitate work with record arrays:
 http://matplotlib.sf.net/matplotlib.mlab.html#-rec_groupby,
 http://matplotlib.sf.net/matplotlib.mlab.html#-rec2txt,
 http://matplotlib.sf.net/ma

enhancing decorator signatures

2008-08-06 Thread Diez B. Roggisch
Hi,

I'm using Michele S's decorator-module to create decorators with matching
signatures, for better error-catching.

However, I now want to enrich the signature of a generic wrapper so that the
new function will accept more parameters (keyword only). These additional
parameters are consumed by the wrapper and not passed to the decorated
function.

So something like this would be cool:

@enriched_decorator("bar")
def some_decorator(f, **args, **kwargs):
bar = kwargs.pop("bar")
return f(**args, **kwargs)

Anybody has done something like this?

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


Re: sys.ps1 with formatting (linux)

2008-08-06 Thread Hugo

Hi all,

My apologies for resurrecting an old thread, but I couldn't find the 
answer on the list and others might still have the same problem.


On Mon Jul 23 22:33:22 CEST 2007, Jon Dobson wrote (reformatted):

I'm trying to set sys.ps1 and sys.ps2 with some formatting using:

sys.ps1="\033[1m\033[32mspy>\033[0m"

> sys.ps2="\033[1m\033[32m   .\033[0m"


I get the colored prompt(s) as you might expect, but I'm getting some

> strange behavior with wrapping.  Once the interactive command gets long
> enough to wrap, it wraps back to the same line (overwriting the
> beginning).  It doesn't break anything - the command gets interpreted
> correctly, it's just an ugly way to work.

After a couple of hours of having the same problem, I found out that you 
should surround the unprintable characters with \001 and \002:


sys.ps1="\001\033[1m\033[32m\002spy>\001\033[0m\002"
sys.ps2="\001\033[1m\033[32m\002   .\001\033[0m\002"

Solution found in: http://hg.secdev.org/scapy/raw-file/tip/scapy.py:
> ^A and ^B delimit invisible caracters for readline to count right

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


Re: Help with mechanize

2008-08-06 Thread Wojtek Walczak
Dnia Wed, 06 Aug 2008 07:16:37 -0400, Neal Becker napisa�(a):
> I'm trying to use mechanize to read for a M$ mail server.  I can get past the 
> login page OK using:
...
> Now it seems if I read b.links() I can see links to my mail.  My question is, 
> how do I now actually get the contents of this page?


Have you tried follow_link() method?
In your case it should be something like:

response = b.follow_link(b.links()[0]) # I suppose links()
   # returns a list or tuple
print response.info() # headers
print response.read() # body

IIRC, it's described in the documentation.

-- 
Regards,
Wojtek Walczak,
http://www.stud.umk.pl/~wojtekwa/
--
http://mail.python.org/mailman/listinfo/python-list

Accessing tree nodes from the cgi

2008-08-06 Thread Noorhan Abbas
Hello,
I wonder if anyone knows how to sort out this problem for me! I have a Yhaoo 
tree view control created using javascript and I don't know how to get the node 
selected from within my python cgi?  
Anyone can help please?
Nora


  __
Not happy with your email address?.
Get the one you really want - millions of new email addresses available now at 
Yahoo! http://uk.docs.yahoo.com/ymail/new.html--
http://mail.python.org/mailman/listinfo/python-list

Help with mechanize

2008-08-06 Thread Neal Becker
I'm trying to use mechanize to read for a M$ mail server.  I can get past the 
login page OK using:

import mechanize

b = mechanize.Browser()
b.open 
('https://mail.hughes.com/owa/auth/logon.aspx?url=https://mail.hughes.com/OWA/&reason=0')
b.select_form(nr=0)
b['username']='myname'
b['password']='password'
b.submit()

Now it seems if I read b.links() I can see links to my mail.  My question is, 
how do I now actually get the contents of this page?




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


  1   2   >