Re: Usable street address parser in Python?

2010-04-19 Thread Tim Roberts
John Nagle  wrote:
>
>   Unfortunately, now it won't run with the released
>version of "pyparsing" (1.5.2, from April 2009), because it uses
>"originalTextFor", a feature introduced since then.  I worked around that,
>but discovered that the new version is case-sensitive.  Changed
>"Keyword" to "CaselessKeyword" where appropriate.
>
>   I put in the full list of USPS street types, and discovered
>that "1500 DEER CREEK LANE" still parses with a street name
>of "DEER", and a street type fo "CREEK", because "CREEK" is a
>USPS street type.  Need to do something to pick up the last street
>type, not the first.  I'm not sure how to do that with pyparsing.
>Maybe if I buy the book...
>
>   There's still a problem with: "2081 N Webb Rd", where the street name
>comes out as "N WEBB".
>Addresses like "1234 5th St. S." yield a street name of "5 TH",
>but if the directional is before the name, it ends up with the name.
>
>   Getting closer, though.  If I can get to 95% of common cases, I'll
>be happy.

This is a very tricky problem.  Consider Salem, Oregon, which puts the
direction after the street:

3340 Astoria Way NE
Salem, OR 97303

Consider northern Los Angeles County, which use directions both before and
after.  I used to live at:

44720 N 2nd St E
Lancaster, CA  93534

Consider much of Utah, which is both easy (because of its very neat grid)
and a pain, because of addresses like:

389 W 1700 S
Salt Lake City, UT  84115
-- 
Tim Roberts, t...@probo.com
Providenza & Boekelheide, Inc.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread John Yeung
On Apr 20, 1:23 am, Cameron Simpson  wrote:
> On 19Apr2010 21:31, alex23  wrote:
> | Cameron Simpson  wrote:
> | >   If items(), keys(), values(), iteritems(), iterkeys(), and
> | >   itervalues() are called with no intervening modifications to the
> | >   dictionary, the lists will directly correspond. This allows the
> | >   creation of (value, key) pairs using zip(): pairs = zip(d.values(),
> | >   d.keys()).
> |
> | I stand corrected. Thanks Cameron.
>
> Oh, I was all ready to say what you said, but decided to check the docs
> myself first:-)

I am not too comfortable relying on it.  It feels fragile and
"implementationy" to me, as I'm sure it does to many people (such as
everyone in this thread so far! ;)  I do trust the docs on this issue,
but every so often I forget that I read this bit of the docs, and am
once again left with an insecure feeling about it.  All in all, the
alternative idiom for flipping keys and values (provided in the docs a
couple of sentences down from your quote) is short enough for my
taste, easy enough for me to read, and never makes me wonder if I
should check the docs just to be sure:

  pairs = [(v, k) for (k, v) in d.iteritems()]

Personally, I have never encountered a situation where I thought
"hmm... if only I could rely on pairwise ordering, that would make my
code so much simpler!"  I'm sure that's partly because I don't code
enough, but I think it's also due to dictionaries just being pretty
easy to use even without implicitly synchronized pairs.

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


Re: dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread Cameron Simpson
On 19Apr2010 21:31, alex23  wrote:
| Cameron Simpson  wrote:
| >   If items(), keys(), values(), iteritems(), iterkeys(), and
| >   itervalues() are called with no intervening modifications to the
| >   dictionary, the lists will directly correspond. This allows the
| >   creation of (value, key) pairs using zip(): pairs = zip(d.values(),
| >   d.keys()).
| 
| I stand corrected. Thanks Cameron.

Oh, I was all ready to say what you said, but decided to check the docs
myself first:-)

Cheers,
-- 
Cameron Simpson  DoD#743
http://www.cskk.ezoshosting.com/cs/

I really don't like :-) symbols as well. I feel that if you can't see the pie
coming, you deserve whipped cream up your nose.
- r...@cherry.cray.com (rob derrick)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Usable street address parser in Python?

2010-04-19 Thread John Nagle

John Nagle wrote:

  Is there a usable street address parser available?  There are some
bad ones out there, but nothing good that I've found other than commercial
products with large databases.  I don't need 100% accuracy, but I'd like
to be able to extract street name and street number for at least 98% of
US mailing addresses.

  There's pyparsing, of course. There's a street address parser as an
example at 
"http://pyparsing.wikispaces.com/file/view/streetAddressParser.py";.


  The author of that module has changed the code, and it has some
new features.  This is much better.

  Unfortunately, now it won't run with the released
version of "pyparsing" (1.5.2, from April 2009), because it uses
"originalTextFor", a feature introduced since then.  I worked around that,
but discovered that the new version is case-sensitive.  Changed
"Keyword" to "CaselessKeyword" where appropriate.

  I put in the full list of USPS street types, and discovered
that "1500 DEER CREEK LANE" still parses with a street name
of "DEER", and a street type fo "CREEK", because "CREEK" is a
USPS street type.  Need to do something to pick up the last street
type, not the first.  I'm not sure how to do that with pyparsing.
Maybe if I buy the book...

  There's still a problem with: "2081 N Webb Rd", where the street name
comes out as "N WEBB".
Addresses like "1234 5th St. S." yield a street name of "5 TH",
but if the directional is before the name, it ends up with the name.

  Getting closer, though.  If I can get to 95% of common cases, I'll
be happy.


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


Re: dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread alex23
Cameron Simpson  wrote:
>   If items(), keys(), values(), iteritems(), iterkeys(), and
>   itervalues() are called with no intervening modifications to the
>   dictionary, the lists will directly correspond. This allows the
>   creation of (value, key) pairs using zip(): pairs = zip(d.values(),
>   d.keys()).

I stand corrected. Thanks Cameron.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: any modules having a function to partition a list by predicate provided?

2010-04-19 Thread Krister Svanlund
On Tue, Apr 20, 2010 at 3:40 AM, segunai  wrote:
> On 4월20일, 오전10시16분, Chris Rebert  wrote:
>> On Mon, Apr 19, 2010 at 6:00 PM, knifenomad  wrote:
>> > i know it's not very hard to get that solution.
>> > just by implementing simple function like below.
>>
>> >  def partition(target, predicate):
>> >"""
>> >split a list into two partitions with a predicate
>> > provided.
>> >any better ideas? :)
>> >"""
>> >true = []
>> >false= []
>> >for item in target:
>> >if predicates(item):
>> >true.append(item)
>> >else:
>> >false.append(item)
>> >return true, false
>>
>> > but i wonder if there's another way to do this with standard libraries
>> > or .. built-ins.
>> > if it's not, i'd like the list objects to have partition method like
>> > string module has.
>>
>> (A) str.partition() has a /completely/ different meaning from your 
>> partition()
>> (B) You'd probably have better luck getting it added to the itertools
>> module since the concept is applicable to all iterables.
>> [http://docs.python.org/library/itertools.html]
>>
>> Cheers,
>> Chris
>> --http://blog.rebertia.com
>
> yep, my mistake. i shouldn't have compared it to string's partition().
> i just wanted that convenience string.partition() has as a built-in.
> anyway, thanks for itertools. :)
> --
> http://mail.python.org/mailman/listinfo/python-list
>

The way I would do it is probably apply filter to the list:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread alex23
On Apr 20, 1:03 pm, Menghan Zheng  wrote:
> Is it assured the following statement is always True?
> If it is always True, in which version, python2.x or python3.x?

I believe its an implementation detail and should not be relied on. If
you need consistent ordering, use an OrderedDict[1] or sort() the
lists beforehand.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread Cameron Simpson
On 20Apr2010 11:03, Menghan Zheng  wrote:
| Is it assured the following statement is always True?
| If it is always True, in which version, python2.x or python3.x?
| 
| >>> a = dict()
| ...
| >>> assert(a.values == [a[k] for k in a.keys()])
| --> ?

It is always true. At this URL:

  http://docs.python.org/library/stdtypes.html?highlight=values#dict.items

it says:

  If items(), keys(), values(), iteritems(), iterkeys(), and
  itervalues() are called with no intervening modifications to the
  dictionary, the lists will directly correspond. This allows the
  creation of (value, key) pairs using zip(): pairs = zip(d.values(),
  d.keys()).

BTW, I got to that particular piece of text by starting at the doco for
the .values() method of "dict", which links to the .items() method.

Cheers,
-- 
Cameron Simpson  DoD#743
http://www.cskk.ezoshosting.com/cs/

I couldn't think of anything else to do with it, so I put it on the web.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: "ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread John Nagle

exar...@twistedmatrix.com wrote:

On 05:49 pm, na...@animats.com wrote:

exar...@twistedmatrix.com wrote:

On 04:51 pm, na...@animats.com wrote:

   I'm converting some code from M2Crypto to the new "ssl" module, and
I've found what looks like a security hole.  The "ssl" module will
validate the certificate chain, but it doesn't check that the 
certificate

is valid for the domain.

...
It's a bit debatable.  There probably should be a way to make this 
happen, but it's far from clear that it's the only correct behavior. 
And, as it turns out, there is a way to make it happen - call 
getpeercert() and perform the check yourself. ;)


   "Checking it yourself" is non-trivial.


Yes.  It'd be nice to having something in the stdlib which accepted a 
hostname and a certificate and told you if they line up or not.

The SSL module doesn't seem to let you read all the cert extensions,


Yes.  That sucks.  It was argued about on python-dev and ultimately the 
people writing the code didn't want to expose everything.   I don't 
remember the exact argument for that position.

   It's very bad for the "ssl" module to both ignore this check and
not have that mentioned prominently in the documentation.


I agree.  As I said, I think the behavior should be well documented.

Jean-Paul


   What a mess.

   The cause of the problem seems to be someone named "Bill Janssen (janssen)"
See "http://bugs.python.org/issue1589";.  He shouted down attempts to put in
this check, apparently because he saw use cases for a backdoor.  He
claimed he would change the documentation, but did not do so, leaving
the backdoor enabled.

   Without host name checking, you lose all "man in the middle" protection
in SSL.

Jannsen wrote:
"Nope.  Hostname verification was never a good idea -- the "hostname" is
just a vague notion, at best -- lots of hostnames can map to one or more
IP addresses of the server."

This is an weak objection for the SSL module, since the SSL "connect"
function can take a domain name, not an IP address.  You can pass an
IP address to "connect", but if you pass a domain name, it should
be validated against the certificate.   Also, with TLS, name validation
is supposed to work even for multiple domains on the same IP address.
(But see "http://en.wikipedia.org/wiki/Server_Name_Indication";, which
says that it works in most current browsers, but not Python.)

Heikki Toivonen (heikki), author of M2Crypto, wrote:

"I would definitely recommend providing as strict as possible hostname
verification in the stdlib, but provide application developers a way to
override that."

Hekki put a warning about this on his blog at
"http://www.heikkitoivonen.net/blog/2008/10/14/ssl-in-python-26/";.

All major browsers make this check.  Most Python users will expect the
SSL module to do the checks a browser does.  If the user went to the
trouble to provide a certificate authority file, and specified CERT_REQUIRED,
they presumably want their connections fully validated.

But Jannsen closed the issue anyway.  Looks like a "developer in denial"
situation.

The sample code suggested for a user-level check at

http://bugs.python.org/msg58508

does not handle valid domain wildcards, which makes it unusable in practice.
It's non-trivial to do this in accordance with the spec.

Here's an example of code written by someone who wasn't aware of this bug.
"http://www.muchtooscrawled.com/2010/03/https-certificate-verification-in-python-with-urllib2/";

It's not clear if this hole made it into Twisted, or the Python
BitTorrent client.

Who's reviewing the SSL module for security?  Is anyone checking for backdoors?


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


dict.keys() and dict.values() are always the same order, is it?

2010-04-19 Thread Menghan Zheng
Hello!

Is it assured the following statement is always True?
If it is always True, in which version, python2.x or python3.x?

>>> a = dict()
...
>>> assert(a.values == [a[k] for k in a.keys()])
--> ?


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


Re: UnicodeEncodeError during repr()

2010-04-19 Thread Dave Angel

gb345 wrote:

In  "Martin v. Loewis"  writes:

  

Do I need to do something especial to get repr to work strictly
with unicode?
  


  

Yes, you need to switch to Python 3 :-)



  

Or should __repr__ *always* return bytes rather than unicode?
  


  

In Python 2.x: yes.



  

What about __str__ ?
  


  

Likewise.



  

If both of these are supposed to return bytes,
then what method should I use to define the unicode representation
for instances of a class?
  


  

__unicode__.



Thanks!


  
More precisely, __str__() and __repr__() return characters.  Those 
characters are 8 bits on Python 2.x, and Unicode on 3.x.   If you need 
unicode on 2.x, use __unicode__().


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


Re: any modules having a function to partition a list by predicate provided?

2010-04-19 Thread segunai
On 4월20일, 오전10시16분, Chris Rebert  wrote:
> On Mon, Apr 19, 2010 at 6:00 PM, knifenomad  wrote:
> > i know it's not very hard to get that solution.
> > just by implementing simple function like below.
>
> >      def partition(target, predicate):
> >            """
> >            split a list into two partitions with a predicate
> > provided.
> >            any better ideas? :)
> >            """
> >            true = []
> >            false= []
> >            for item in target:
> >                if predicates(item):
> >                    true.append(item)
> >                else:
> >                    false.append(item)
> >            return true, false
>
> > but i wonder if there's another way to do this with standard libraries
> > or .. built-ins.
> > if it's not, i'd like the list objects to have partition method like
> > string module has.
>
> (A) str.partition() has a /completely/ different meaning from your partition()
> (B) You'd probably have better luck getting it added to the itertools
> module since the concept is applicable to all iterables.
> [http://docs.python.org/library/itertools.html]
>
> Cheers,
> Chris
> --http://blog.rebertia.com

yep, my mistake. i shouldn't have compared it to string's partition().
i just wanted that convenience string.partition() has as a built-in.
anyway, thanks for itertools. :)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: any modules having a function to partition a list by predicate provided?

2010-04-19 Thread Chris Rebert
On Mon, Apr 19, 2010 at 6:00 PM, knifenomad  wrote:
> i know it's not very hard to get that solution.
> just by implementing simple function like below.
>
>      def partition(target, predicate):
>            """
>            split a list into two partitions with a predicate
> provided.
>            any better ideas? :)
>            """
>            true = []
>            false= []
>            for item in target:
>                if predicates(item):
>                    true.append(item)
>                else:
>                    false.append(item)
>            return true, false
>
> but i wonder if there's another way to do this with standard libraries
> or .. built-ins.
> if it's not, i'd like the list objects to have partition method like
> string module has.

(A) str.partition() has a /completely/ different meaning from your partition()
(B) You'd probably have better luck getting it added to the itertools
module since the concept is applicable to all iterables.
[http://docs.python.org/library/itertools.html]

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


any modules having a function to partition a list by predicate provided?

2010-04-19 Thread knifenomad
i know it's not very hard to get that solution.
just by implementing simple function like below.

  def partition(target, predicate):
"""
split a list into two partitions with a predicate
provided.
any better ideas? :)
"""
true = []
false= []
for item in target:
if predicates(item):
true.append(item)
else:
false.append(item)
return true, false

but i wonder if there's another way to do this with standard libraries
or .. built-ins.
if it's not, i'd like the list objects to have partition method like
string module has.

true, false = [1,2,3,4].partition(lambda x: x >1)

print true, false
[2,3,4]   [1]

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


Re: cross-platform coloured text in terminal

2010-04-19 Thread Jonathan Hartley
On Apr 17, 11:52 am, Jonathan Hartley  wrote:
> On Apr 16, 5:59 pm, Lie Ryan  wrote:
>
>
>
> > On 04/16/10 19:28, Jonathan Hartley wrote:
>
> > > I'm playing with ideas of what API to expose. My favourite one is to
> > > simply embed ANSI codes in the stream to be printed. Then this will
> > > work as-is on Mac and *nix. To make it work on Windows, printing could
> > > be done to a file0-like object which wraps stdout:
>
> > The problem with that is you're simply reinventing ANSI.SYS device driver.
>
> > An alternative API is you could override .__add__(), like so (completely
> > untested):
>
> > classColor(object):
> >    def __init__(self,color):
> >        self.color=  map_the_color(color)
> >        self.string = ""
> >    def __add__(self, string):
> >        self.string += string
> >        return self
> >    def __str__(self):
> >        if terminal_can_do_ansi_color:
> >            return ansicolorescape(self.string, self.color)
> >        elif windows:
> >            syscalltocolor(self.color)
> >            print self.string
> >            syscalltocolor(reset thecolor)
> >            return ""
>
> > GREEN =Color('green')
> > print GREEN + "Great" + "Good"
>
> > you can even go a bit further and allow chained calls (again, completely
> > untested, but you get the idea):
>
> > classColor(object):
> >    def __init__(self,color):
> >        self.color=  map_the_color(color)
> >        self.stack = []
> >    def __add__(self, string):
> >        if isinstance(string,Color):
> >            # not a string, chain the calls
> >            self.stack.append((string.color, []]))
> >        else:
> >            # a string,
> >            self.stack[-1][1].append(string)
> >        return self
> >    def __radd__(self, string):
> >        self.stack.append([self.default, string])
> >        return self
>
> >    def __str__(self):
> >        if ansi_capable:
> >            return colorescape(format, string)
> >        elif windows:
> >            for format, string in self.stack:
> >                syscalltocolor(color)
> >                print string
> >                return ""
>
> > GREEN =Color('green')
> > RED =Color('red')
>
> > print "Fairly" + GREEN + "Great" + RED + "Poor"
>
> > or something like that, and you will have an API that works
> > transparently on all platforms. The downside is that you cannot call
> > str(GREEN + "foo") on windows.
>
> Hey Lie,
>
> Thanks heaps for the reply!
>
> >> The problem with that is you're simply reinventing ANSI.SYS device driver.
>
> I don't see that as a problem - in fact I think it's exactly my
> goal! :-)
>
> The difference is that the ANSI driver requires installation and a
> reboot on the end-user's computer, which is a fiddly and intrusive
> thing for a Python developer to achieve. Whereas doing the same job in
> a Python module is easy to use for the Python developer - they just
> import the module, maybe call an 'init()' function, and then the ANSI
> functionality works on all platforms.
>
> Your ideas about generating and chaining the ANSI code strings are
> great. I worry though, about intermingling the code that generates
> ANSI escape sequences with the code which makes them work on Windows.
> The problem is that then, only applications which use your ANSI-
> generation library will work on Windows. Whereas if these two things
> are kept separate, then applications which use any other ANSI-
> generation techniques, such as using 'termcolor', or manaully printing
> raw ANSI sequences, these can also all work on Windows too, simply by
> adding an import and an 'init()' call to the start of the application.
>
> Am I making sense? Many thanks for your thoughts.
>
>   Jonathan


I have implemented these ideas here. It seems to work.
http://pypi.python.org/pypi/colorama
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: unexpected output from difflib.SequenceMatcher

2010-04-19 Thread Vlastimil Brom
From: Vlastimil Brom 
Date: 2010/4/16
Subject: unexpected output from difflib.SequenceMatcher

...
Instead of just reporting the insertion and deletion of these single
characters ... the output of the
SequenceMatcher decides to delete a large part of the string in
between the differences and to insert the almost same text after that.
...

Just for the record, althought it seemed unlikely to me first, it
turns out, that this may have the same cause like several difflib
items in the issue tracker regarding unexpected outputs for long
sequences with relatively highly repetitive items, e.g.

http://bugs.python.org/issue2986
http://bugs.python.org/issue1711800
http://bugs.python.org/issue4622
http://bugs.python.org/issue1528074

In my case, disabling the "popular" heuristics as mentioned in
http://bugs.python.org/issue1528074#msg29269
i.e. modifying the difflib source (around line 314 for py.2.5.4) to

if 0:   # disable popular heuristics
if n >= 200 and len(indices) * 100 > n:
populardict[elt] = 1
del indices[:]

seems to work perfectly.
Anyway, I would appreciate comments, whether this is the appropriate
solution for the given task - i.e. the character-wise comparison of
strings; or are there maybe some drawbacks to be aware of? Wouldn't
some kind of control over the "pouplar" heuristics be useful in the
exposed interface of difflib?
Or is this just the inappropriate tool for the character-wise string
comparison, as is suggested e.g. in
http://bugs.python.org/issue1528074#msg29273  althought it seems to
work just right for the most part?

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


Re: problems creating and adding class instances to a list:

2010-04-19 Thread Chris Rebert
On Mon, Apr 19, 2010 at 3:41 PM, Xavier Ho  wrote:
> On Tue, Apr 20, 2010 at 7:38 AM, Chris Rebert  wrote:
>> Additionally, `self.x = int` might not do what you thought it does. It
>> does *not* create a new instance variable of type 'int'. Instead, it
>> literally assigns to a new instance variable x the *function*† that
>> converts values into integers.
>
> Thanks, Chris. I'm well aware of that. =]

It was obviously directed at the OP. :-)

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


Re: problems creating and adding class instances to a list:

2010-04-19 Thread Xavier Ho
On Tue, Apr 20, 2010 at 7:38 AM, Chris Rebert  wrote:

> Additionally, `self.x = int` might not do what you thought it does. It
> does *not* create a new instance variable of type 'int'. Instead, it
> literally assigns to a new instance variable x the *function*† that
> converts values into integers.
>

Thanks, Chris. I'm well aware of that. =]

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


ANN: Oktest 0.2.1 released - a new style testing library.

2010-04-19 Thread kwatch
Hi,

I released Oktest 0.2.1.

homepage:  http://packages.python.org/Oktest/
download:  http://pypi.python.org/pypi/Oktest/
repository: http://bitbucket.org/kwatch/oktest/

Oktest is a new-style testing library for Python.

from oktest import ok
ok (x) > 0 # same as assert_(x > 0)
ok (s) == 'foo'# same as assertEqual(s, 'foo')
ok (s) != 'foo'# same as assertNotEqual(s, 'foo')
ok (f).raises(ValueError)  # same as assertRaises(ValueError, f)
ok (u'foo').is_a(unicode)  # same as assert_(isinstance(u'foo',
ode))
not_ok (u'foo').is_a(int)  # same as assert_(not
isinstance(u'foo', )
ok ('A.txt').is_file() # same as
assert_(os.path.isfile('A.txt'))
not_ok ('A.txt').is_dir()  # same as assert_(not
os.path.isdir('A.txt'))

You can use ok() instead of 'assertXxx()' in unittest.

Oktest requires Python 2.3 or later. Oktest is ready for Python 3.

NOTICE!! Oktest is a young project and specification may change in the
future.

See http://packages.python.org/Oktest/ for details.

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


Re: problems creating and adding class instances to a list:

2010-04-19 Thread Chris Rebert
On Mon, Apr 19, 2010 at 2:29 PM, Xavier Ho  wrote:
> On Tue, Apr 20, 2010 at 7:21 AM, Robert Somerville
>  wrote:
>>
>> class ctest():
>>   x = int
>>   y = [1,2,3]
>
> Variables defined directly under the class are known as "static variables"
> in many other languages. Here in Python it's called a class variable, but
> they're still the same concept.
>
> What you want is "instance variables", which are not shared by the class
> instances, but different depending on each instance instead. That said,
>
> class ctest():
>     def __init__(self):
>         self.x = int

Additionally, `self.x = int` might not do what you thought it does. It
does *not* create a new instance variable of type 'int'. Instead, it
literally assigns to a new instance variable x the *function*† that
converts values into integers.

Cheers,
Chris
--
† This isn't entirely accurate; I'm oversimplifying for ease of understanding.
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: problems creating and adding class instances to a list:

2010-04-19 Thread Xavier Ho
On Tue, Apr 20, 2010 at 7:21 AM, Robert Somerville <
rsomervi...@sjgeophysics.com> wrote:

> class ctest():
>   x = int
>   y = [1,2,3]
>

Variables defined directly under the class are known as "static variables"
in many other languages. Here in Python it's called a class variable, but
they're still the same concept.

What you want is "instance variables", which are not shared by the class
instances, but different depending on each instance instead. That said,

class ctest():
def __init__(self):
self.x = int
self.y = [1, 2, 3]

is probably what you're after.

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


problems creating and adding class instances to a list:

2010-04-19 Thread Robert Somerville
I am trying to create a list of consisting of multiple instances of the 
same class, The Problems i am having is that i seem to be accessing the 
same memory.. How should i solve this Python problem ?


Here is some sample code demonstraing my problem (same memory) :
from copy import copy as cp

class ctest():
   x = int
   y = [1,2,3]
  


def return_class(i):
   d = ctest()
   d.y[1] = i*10
   return (d)

if __name__ == '__main__':
   c_list= []
   print 'len-a =',len(c_list)
   for i in range(5):
   e = cp(return_class(i))
   c_list.append(e)
   print 'i= ',i,c_list[i].y[1]
   if ( i > 0):
   print 'i-1= ',i-1,c_list[i-1].y[1]   
  
   print 'len = ' , len(c_list)   
   for i in range(5):

   print 'i= ',i,c_list[i].y[1]


here is the output demonstrating that i am addressing the same memory:

rsomervi...@galena:~/workspace/CSIRO_gui/trunk/src$ python test4.py
len-a = 1
i=  0 0
i=  1 10
i-1=  0 10
i=  2 20
i-1=  1 20
i=  3 30
i-1=  2 30
i=  4 40
i-1=  3 40
len =  6
i=  0 40
i=  1 40
i=  2 40
i=  3 40
i=  4 40

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


Re: pyconfig.h

2010-04-19 Thread Martin v. Loewis
omnia neo wrote:
> Hi All,
> 
> I am working on porting python on vxworks and hence was updating the PC
> \pyconfig.h file for configurng python. As I am reading the file and
> updating manually I come across lot many preprocessor directives which
> I dont understand e.g. HAVE_NICE etc. May be this is standard
> nomenclature and I am not aware of it.
> My point and qwery is that how can I get info about all these
> directives. I am perplexed to enable or disable any of them with half
> knowledge.

See the main pyconfig.h.in for comments when to define each of these
macros. HAVE_NICE should be defined if you have (i.e. your system has)
the nice() function.

Regards,
Martin

NICE(P)   POSIX Programmer's Manual   NICE(P)

NAME
   nice - change the nice value of a process

SYNOPSIS
   #include 

   int nice(int incr);

DESCRIPTION
   The  nice()  function  shall add the value of incr to the nice
   value of the calling process. A process' nice value is a  non-
   negative  number  for which a more positive value shall result
   in less favorable scheduling.

   A maximum nice value of 2*{NZERO}-1 and a minimum  nice  value
   of 0 shall be imposed by the system. Requests for values above
   or below these limits shall result in the nice value being set
   to  the  corresponding  limit. Only a process with appropriate
   privileges can lower the nice value.

   Calling the nice() function has no effect on the  priority  of
   processes  or  threads with policy SCHED_FIFO or SCHED_RR. The
   effect on processes or threads with other scheduling  policies
   is implementation-defined.

   The  nice  value  set  with  nice()  shall  be  applied to the
   process.  If the process is  multi-threaded,  the  nice  value
   shall affect all system scope threads in the process.

   As -1 is a permissible return value in a successful situation,
   an application wishing to check for  error  situations  should
   set  errno to 0, then call nice(), and if it returns -1, check
   to see whether errno is non-zero.

RETURN VALUE
   Upon successful completion, nice() shall return the  new  nice
   value  -{NZERO}. Otherwise, -1 shall be returned, the process'
   nice value shall not be changed, and errno  shall  be  set  to
   indicate the error.
   indicate the error.

ERRORS
   The nice() function shall fail if:

   EPERM  The  incr  argument is negative and the calling process
  does not have appropriate privileges.

   The following sections are informative.

EXAMPLES
   Changing the Nice Value
   The following example adds the value  of  the  incr  argument,
   -20, to the nice value of the calling process.

  #include 
  ...
  int incr = -20;
  int ret;

  ret = nice(incr);

APPLICATION USAGE
   None.

RATIONALE
   None.

FUTURE DIRECTIONS
   None.

SEE ALSO
   getpriority() , setpriority() , the Base Definitions volume of
   IEEE Std 1003.1-2001, , 

COPYRIGHT
   Portions of this text are reprinted and  reproduced  in  elec‐
   tronic  form  from IEEE Std 1003.1, 2003 Edition, Standard for
   Information Technology -- Portable Operating System  Interface
   (POSIX), The Open Group Base Specifications Issue 6, Copyright
   (C) 2001-2003 by the Institute of Electrical  and  Electronics
   Engineers,  Inc  and  The Open Group. In the event of any dis‐
   crepancy between this version and the original  IEEE  and  The
   Open  Group  Standard,  the  original  IEEE and The Open Group
   Standard is the referee document. The original Standard can be
   obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group  2003 NICE(P)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: "ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread exarkun

On 05:49 pm, na...@animats.com wrote:

exar...@twistedmatrix.com wrote:

On 04:51 pm, na...@animats.com wrote:
   I'm converting some code from M2Crypto to the new "ssl" module, 
and

I've found what looks like a security hole.  The "ssl" module will
validate the certificate chain, but it doesn't check that the 
certificate

is valid for the domain.

...
It's a bit debatable.  There probably should be a way to make this 
happen, but it's far from clear that it's the only correct behavior. 
And, as it turns out, there is a way to make it happen - call 
getpeercert() and perform the check yourself. ;)


   "Checking it yourself" is non-trivial.


Yes.  It'd be nice to having something in the stdlib which accepted a 
hostname and a certificate and told you if they line up or not.

The SSL module doesn't seem to let you read all the cert extensions,


Yes.  That sucks.  It was argued about on python-dev and ultimately the 
people writing the code didn't want to expose everything.   I don't 
remember the exact argument for that position.

   It's very bad for the "ssl" module to both ignore this check and
not have that mentioned prominently in the documentation.


I agree.  As I said, I think the behavior should be well documented.

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


Re: scipy error undefined symbol: lsame_

2010-04-19 Thread Robert Kern

On 4/19/10 12:15 PM, gerardob wrote:


I installed scipy (and all the required libraries) and the following error
appears when i tried run a simple example which uses the optimize package of
scipy. I tried also numpy alone and it works ( at least for printing
numpy.array([10,20,10]))

error:

Traceback (most recent call last):
   File "main_test.py", line 2, in
 from scipy import optimize
   File
"/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/__init__.py",
line 11, in
 from lbfgsb import fmin_l_bfgs_b
   File
"/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/lbfgsb.py",
line 30, in
 import _lbfgsb
ImportError:
/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/_lbfgsb.so:
undefined symbol: lsame_


This is a FORTRAN symbol. It means that this extension module was not 
linked correctly to the FORTRAN standard library appropriate for your 
system.


If you need more help, please ask scipy questions on the scipy mailing list.

  http://www.scipy.org/Mailing_Lists

--
Robert Kern

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

 an underlying truth."
  -- Umberto Eco

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


Re: Operations on sparse matrices

2010-04-19 Thread Robert Kern

On 4/19/10 1:03 AM, pp wrote:

I am currently dealing with sparse matrices and have doubts on whether
we can use
1.) dot (for matrix multiplication) and inv (inverse) operations of
numpy on sparse matrices of CSR format.

I initially constructed my sparse matrix using COO format and then
converted it to CSR format now I want to know whether normal inverse
and matrix multiplications work with sparse csr matrices.

Also can these operations be applied directly to csr matrices


You will want to ask scipy questions on the scipy mailing list.

  http://www.scipy.org/Mailing_Lists

--
Robert Kern

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

 an underlying truth."
  -- Umberto Eco

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


Re: "ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread geremy condra
On Mon, Apr 19, 2010 at 1:49 PM, John Nagle  wrote:
> exar...@twistedmatrix.com wrote:
>>
>> On 04:51 pm, na...@animats.com wrote:
>>>
>>>   I'm converting some code from M2Crypto to the new "ssl" module, and
>>> I've found what looks like a security hole.  The "ssl" module will
>>> validate the certificate chain, but it doesn't check that the certificate
>>> is valid for the domain.
>>>
> ...
>>
>> It's a bit debatable.  There probably should be a way to make this happen,
>> but it's far from clear that it's the only correct behavior. And, as it
>> turns out, there is a way to make it happen - call getpeercert() and perform
>> the check yourself. ;)
>
>   "Checking it yourself" is non-trivial. The checking code has to
> understand DNS wildcards and additional domains in cert extensions.
> The SSL module doesn't seem to let you read all the cert extensions,
> (in particular, you don't get "certificatePolicies", so you can't
> tell if a cert is an "extended validation" cert) but it looks like
> you do get the subjectAltName fields present in the extensions, like this:
>
>  subjectAltName = (('DNS', 'www.chapinfurniture.com'),
>        ('DNS', 'chapinfurniture.com')))
>
>   So it's at least possible to check.  Almost.
>
>   (DNS wildcards look like this: "*.example.com".  It's also possible
> to have "*.*.example.com".  However, no DNS wildcard cert should cover
> more than one second-level domain (huge security hole if you allow that)
> and no extended validation cert should have a wildcard.)
>
>   There may also be issues with internationalized domain names.
>
>   It's very bad for the "ssl" module to both ignore this check and
> not have that mentioned prominently in the documentation.  This is
> a security-critical function.  Somewhere, there's a Python program that
> can be exploited due to this bug.
>
>   Here's a comparison of what M2Crypto and the SSL module return, for
> "verisign.com", which uses most cert features.
>
> Trying domain "www.verisign.com"
> Host: www.verisign.com Port: 443
>
> Info from "M2Crypto: module:
>
> Cipher = DHE-RSA-AES256-SHA
>   Subject info: [('CN', 'verisign.com'),
>        ('OU', 'production Security Services  '),
>        ('O', 'VeriSign, Inc.'),
>        ('streetAddress', '487 East Middlefield Road'),
>        ('L', 'Mountain View'),
>        ('ST', 'California'),
>        ('postalCode', '94043'),
>        ('C', 'US'),
>        ('serialNumber', '2497886'),
>        ('2.5.4.15', 'V1.0, Clause 5.(b)'),
>        ('jurisdictionOfIncorporationStateOrProvinceName', 'Delaware'),
>        ('jurisdictionOfIncorporationCountryName', 'US')]
>
>  Certificate has 10 extensions.
> Extension #0: subjectAltName = DNS:verisign.com, DNS:www.verisign.com,
> DNS:verisign.mobi, DNS:www.verisign.mobi, DNS:verisign.eu, DN
> S:www.verisign.eu
> Extension #1: basicConstraints = CA:FALSE
> Extension #2: subjectKeyIdentifier =
> 0F:75:C5:F7:06:11:CE:74:FC:5F:DA:B6:2A:53:CE:39:1C:D6:7D:19
> Extension #3: keyUsage = Digital Signature, Key Encipherment
> Extension #4: crlDistributionPoints =
> URI:http://EVIntl-crl.verisign.com/EVIntl2006.crl
>
> Extension #5: certificatePolicies = Policy: 2.16.840.1.113733.1.7.23.6
>  CPS: https://www.verisign.com/rpa
>
> Extension #6: extendedKeyUsage = TLS Web Server Authentication, TLS Web
> Client Authentication, Netscape Server Gated Crypto
> Extension #7: authorityKeyIdentifier =
> keyid:4E:43:C8:1D:76:EF:37:53:7A:4F:F2:58:6F:94:F3:38:E2:D5:BD:DF
>
> Extension #8: authorityInfoAccess = OCSP -
> URI:http://EVIntl-ocsp.verisign.com
> CA Issuers - URI:http://EVIntl-aia.verisign.com/EVIntl2006.cer
>
> Extension #9: UNDEF = None
>
> Info from "ssl" module:
>
> SSL cert for "www.verisign.com":
>    notAfter = Apr  2 23:59:59 2012 GMT
>    subject = ((('1.3.6.1.4.1.311.60.2.1.3', u'US'),),
>                (('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),),
>                (('2.5.4.15', u'V1.0, Clause 5.(b)'),),
>                (('serialNumber', u'2497886'),),
>                (('countryName', u'US'),),
>                (('postalCode', u'94043'),),
>                (('stateOrProvinceName', u'California'),),
>                (('localityName', u'Mountain View'),),
>                (('streetAddress', u'487 East Middlefield Road'),),
>                (('organizationName', u'VeriSign, Inc.'),),
>                (('organizationalUnitName', u'production Security Services
>  '),),
>                (('commonName', u'verisign.com'),))
>
>
>                                John Nagle
> --
> http://mail.python.org/mailman/listinfo/python-list
>

I talked about this in my pycon lighting talk- it's actually been
known for some time, and in fact there's some comments in
Zope core that mention this problem being a motivation for
rewriting SSL support from scratch. IIRC (I seem to recall
this, but I seem to have lost my test harness for it) it also
impacts higher level libraries like urllib, but I would verify that
before taking it as gospel. Several of the other members of
python-cryp

Re: scipy error undefined symbol: lsame_

2010-04-19 Thread Joaquin Abian
On Apr 19, 7:15 pm, gerardob  wrote:
> I installed scipy (and all the required libraries) and the following error
> appears when i tried run a simple example which uses the optimize package of
> scipy. I tried also numpy alone and it works ( at least for printing
> numpy.array([10,20,10]))
>
> error:
>
> Traceback (most recent call last):
>   File "main_test.py", line 2, in 
>     from scipy import optimize
>   File
> "/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/__init__.py",
> line 11, in 
>     from lbfgsb import fmin_l_bfgs_b
>   File
> "/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/lbfgsb.py",
> line 30, in 
>     import _lbfgsb
> ImportError:
> /home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/_lbfgsb.so:
> undefined symbol: lsame_
> gberbeg...@actarus:~/python/mycodes>
>
> Any ideas on how to solve this problem? Thanks.
>
> PS: the example is below:
>
> import numpy
> from scipy import optimize
>
> a = numpy.array([10,20,10])
> print a
>
> def f_(x):
>         return x*x
>
> x,f,d = optimize.fmin_l_bfgs_b(f_,[0.1],fprime=None, approx_grad = True,
> bounds = [(-1,1)], iprint=30, maxfun=15)
>
> --
> View this message in 
> context:http://old.nabble.com/scipy-error-undefined-symbol%3A-lsame_-tp282877...
> Sent from the Python - python-list mailing list archive at Nabble.com.

Um... The snip works perfect on my computer. Just copy and paste.
What libraries are you talking about you had to download? Are you on
windows or linux? On windows you dont need to download anything but
numpy and scipy packages.
joaquin
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: "ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread John Nagle

exar...@twistedmatrix.com wrote:

On 04:51 pm, na...@animats.com wrote:

   I'm converting some code from M2Crypto to the new "ssl" module, and
I've found what looks like a security hole.  The "ssl" module will
validate the certificate chain, but it doesn't check that the certificate
is valid for the domain.


...
It's a bit debatable.  There probably should be a way to make this 
happen, but it's far from clear that it's the only correct behavior. 
And, as it turns out, there is a way to make it happen - call 
getpeercert() and perform the check yourself. ;)


   "Checking it yourself" is non-trivial. The checking code has to
understand DNS wildcards and additional domains in cert extensions.
The SSL module doesn't seem to let you read all the cert extensions,
(in particular, you don't get "certificatePolicies", so you can't
tell if a cert is an "extended validation" cert) but it looks like
you do get the subjectAltName fields present in the extensions, like this:

  subjectAltName = (('DNS', 'www.chapinfurniture.com'),
('DNS', 'chapinfurniture.com')))

   So it's at least possible to check.  Almost.

   (DNS wildcards look like this: "*.example.com".  It's also possible
to have "*.*.example.com".  However, no DNS wildcard cert should cover
more than one second-level domain (huge security hole if you allow that)
and no extended validation cert should have a wildcard.)

   There may also be issues with internationalized domain names.

   It's very bad for the "ssl" module to both ignore this check and
not have that mentioned prominently in the documentation.  This is
a security-critical function.  Somewhere, there's a Python program that
can be exploited due to this bug.

   Here's a comparison of what M2Crypto and the SSL module return, for
"verisign.com", which uses most cert features.

Trying domain "www.verisign.com"
Host: www.verisign.com Port: 443

Info from "M2Crypto: module:

Cipher = DHE-RSA-AES256-SHA
   Subject info: [('CN', 'verisign.com'),
('OU', 'production Security Services  '),
('O', 'VeriSign, Inc.'),
('streetAddress', '487 East Middlefield Road'),
('L', 'Mountain View'),
('ST', 'California'),
('postalCode', '94043'),
('C', 'US'),
('serialNumber', '2497886'),
('2.5.4.15', 'V1.0, Clause 5.(b)'),
('jurisdictionOfIncorporationStateOrProvinceName', 'Delaware'),
('jurisdictionOfIncorporationCountryName', 'US')]

  Certificate has 10 extensions.
Extension #0: subjectAltName = DNS:verisign.com, DNS:www.verisign.com, 
DNS:verisign.mobi, DNS:www.verisign.mobi, DNS:verisign.eu, DN

S:www.verisign.eu
Extension #1: basicConstraints = CA:FALSE
Extension #2: subjectKeyIdentifier = 
0F:75:C5:F7:06:11:CE:74:FC:5F:DA:B6:2A:53:CE:39:1C:D6:7D:19

Extension #3: keyUsage = Digital Signature, Key Encipherment
Extension #4: crlDistributionPoints = 
URI:http://EVIntl-crl.verisign.com/EVIntl2006.crl


Extension #5: certificatePolicies = Policy: 2.16.840.1.113733.1.7.23.6
  CPS: https://www.verisign.com/rpa

Extension #6: extendedKeyUsage = TLS Web Server Authentication, TLS Web Client 
Authentication, Netscape Server Gated Crypto
Extension #7: authorityKeyIdentifier = 
keyid:4E:43:C8:1D:76:EF:37:53:7A:4F:F2:58:6F:94:F3:38:E2:D5:BD:DF


Extension #8: authorityInfoAccess = OCSP - URI:http://EVIntl-ocsp.verisign.com
CA Issuers - URI:http://EVIntl-aia.verisign.com/EVIntl2006.cer

Extension #9: UNDEF = None

Info from "ssl" module:

SSL cert for "www.verisign.com":
notAfter = Apr  2 23:59:59 2012 GMT
subject = ((('1.3.6.1.4.1.311.60.2.1.3', u'US'),),
(('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),),
(('2.5.4.15', u'V1.0, Clause 5.(b)'),),
(('serialNumber', u'2497886'),),
(('countryName', u'US'),),
(('postalCode', u'94043'),),
(('stateOrProvinceName', u'California'),),
(('localityName', u'Mountain View'),),
(('streetAddress', u'487 East Middlefield Road'),),
(('organizationName', u'VeriSign, Inc.'),),
(('organizationalUnitName', u'production Security Services  
'),),
(('commonName', u'verisign.com'),))


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


scipy error undefined symbol: lsame_

2010-04-19 Thread gerardob

I installed scipy (and all the required libraries) and the following error
appears when i tried run a simple example which uses the optimize package of
scipy. I tried also numpy alone and it works ( at least for printing
numpy.array([10,20,10])) 

error:

Traceback (most recent call last):
  File "main_test.py", line 2, in 
from scipy import optimize
  File
"/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/__init__.py",
line 11, in 
from lbfgsb import fmin_l_bfgs_b
  File
"/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/lbfgsb.py",
line 30, in 
import _lbfgsb
ImportError:
/home/gberbeglia/python/Python-2.6.5/lib/python2.6/site-packages/scipy/optimize/_lbfgsb.so:
undefined symbol: lsame_
gberbeg...@actarus:~/python/mycodes>

Any ideas on how to solve this problem? Thanks.

PS: the example is below:

import numpy
from scipy import optimize

a = numpy.array([10,20,10])
print a

def f_(x):
return x*x

x,f,d = optimize.fmin_l_bfgs_b(f_,[0.1],fprime=None, approx_grad = True,
bounds = [(-1,1)], iprint=30, maxfun=15)


-- 
View this message in context: 
http://old.nabble.com/scipy-error-undefined-symbol%3A-lsame_-tp28287715p28287715.html
Sent from the Python - python-list mailing list archive at Nabble.com.

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


Re: UnicodeEncodeError during repr()

2010-04-19 Thread gb345
In  "Martin v. Loewis"  writes:

>> Do I need to do something especial to get repr to work strictly
>> with unicode?

>Yes, you need to switch to Python 3 :-)

>> Or should __repr__ *always* return bytes rather than unicode?

>In Python 2.x: yes.

>> What about __str__ ?

>Likewise.

>> If both of these are supposed to return bytes,
>> then what method should I use to define the unicode representation
>> for instances of a class?

>__unicode__.

Thanks!

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


Re: "ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread exarkun

On 04:51 pm, na...@animats.com wrote:

   I'm converting some code from M2Crypto to the new "ssl" module, and
I've found what looks like a security hole.  The "ssl" module will
validate the certificate chain, but it doesn't check that the 
certificate

is valid for the domain.

   Here's the basic code:

sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(sk, ca_certs=certfile,
cert_reqs=ssl.CERT_REQUIRED)
sock.connect((domain,443))
cert = sock.getpeercert()
print('SSL cert for "%s":' % (domain,))
for fieldname in cert :
print('%s = %s' % (fieldname, cert[fieldname]))

Note that I'm sending a CA cert list and am specifying CERT_REQUIRED,
so I should get a proper cert check.

Now let's try a host that presents the wrong SSL cert. Try, in
a browser,

https://www.countrysidecabinetry.com

You'll get an error.  But the "ssl" module is happy with this cert:

SSL cert for "www.countrysidecabinetry.com":
notAfter = Dec  8 23:30:48 2010 GMT
subject = ((('serialNumber', 
u'E5gMXaDjnqfFPID2KNdLTVNEE6PjtqOr'),), (('countryName', u'US'),), 
(('organizationName', u'customla
serengravings.com'),), (('organizationalUnitName', u'GT57631608'),), 
(('organizationalUnitName', u'See www.rapidssl.com/resources/cp
s (c)09'),), (('organizationalUnitName', u'Domain Control Validated - 
RapidSSL(R)'),), (('commonName', u'customlaserengravings.com')

,))

Note that the cert is for "customlaserengravings.com", but is being
presented by "countrysidecabinetry.com".  Fail.

When I try this with M2Crypto, I get an SSL.Checker.WrongHost 
exception.

That's what should happen.


It's a bit debatable.  There probably should be a way to make this 
happen, but it's far from clear that it's the only correct behavior. 
And, as it turns out, there is a way to make it happen - call 
getpeercert() and perform the check yourself. ;)


Here's some related discussion for an equivalent API in a different 
module:


 http://twistedmatrix.com/trac/ticket/4023

At the very least, the documentation for this should be very clear about 
what is and is not being checked.


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


Tkinter scrollbar background color doesn't work

2010-04-19 Thread KL
Tkinter scrollbar widget's "background" and "relief" options seem not
work.

The below is the codes I tried and the python/tk information:
===

ActivePython 2.6.4.8 (ActiveState Software Inc.) based on
Python 2.6.4 (r264:75706, Nov  3 2009, 13:23:17) [MSC v.1500 32 bit
(Intel)] on
win32
>>> from Tkinter import *
>>> r=Tk()
>>> s=Scrollbar(r,bg="#000")
>>> s.grid()
>>> s['activebackground'] = "#000"
>>> s['relief'] = "sunken"
>>>
>>> TkVersion
8.5
>>> import sys
>>> sys.version
'2.6.4 (r264:75706, Nov  3 2009, 13:23:17) [MSC v.1500 32 bit
(Intel)]'
>>>
-- 
http://mail.python.org/mailman/listinfo/python-list


"ssl" module doesn't validate that domain of certificate is correct

2010-04-19 Thread John Nagle

   I'm converting some code from M2Crypto to the new "ssl" module, and
I've found what looks like a security hole.  The "ssl" module will
validate the certificate chain, but it doesn't check that the certificate
is valid for the domain.

   Here's the basic code:

sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(sk, ca_certs=certfile,
cert_reqs=ssl.CERT_REQUIRED)
sock.connect((domain,443))  
cert = sock.getpeercert()
print('SSL cert for "%s":' % (domain,))
for fieldname in cert :
print('%s = %s' % (fieldname, cert[fieldname]))

Note that I'm sending a CA cert list and am specifying CERT_REQUIRED,
so I should get a proper cert check.

Now let's try a host that presents the wrong SSL cert. Try, in
a browser,

https://www.countrysidecabinetry.com

You'll get an error.  But the "ssl" module is happy with this cert:

SSL cert for "www.countrysidecabinetry.com":
notAfter = Dec  8 23:30:48 2010 GMT
subject = ((('serialNumber', u'E5gMXaDjnqfFPID2KNdLTVNEE6PjtqOr'),), 
(('countryName', u'US'),), (('organizationName', u'customla
serengravings.com'),), (('organizationalUnitName', u'GT57631608'),), 
(('organizationalUnitName', u'See www.rapidssl.com/resources/cp
s (c)09'),), (('organizationalUnitName', u'Domain Control Validated - 
RapidSSL(R)'),), (('commonName', u'customlaserengravings.com')

,))

Note that the cert is for "customlaserengravings.com", but is being
presented by "countrysidecabinetry.com".  Fail.

When I try this with M2Crypto, I get an SSL.Checker.WrongHost exception.
That's what should happen.

John Nagle

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


Re: [pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Jean-Michel Pichavant

Giacomo Boffi wrote:

Jean-Michel Pichavant  writes:

  

Giacomo Boffi wrote:


i have this code

def example(a):
return lambda b: a+b+1

fun = example(10)
k_1 = fun(7)
...

and pylint tells me

[...]
C:  4: Invalid name "fun" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  5: Invalid name "k_1" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
[...]
g

  

Pylint default rules need some tuning



ok, but maybe it's not my specific problem (see below)

  

However, given you example, you should not insert code execution at
you module level, unless it's required only at the module import. I
dont know what is your module



module? this was not well specified in my OP, but i'd rather speak of
a "script" instead of a module...
  


If by "script" you mean quick-and-dirty, then why bother running pylint 
on it ? Sounds out of topic to me.


But if you still care about how correctly structured you script should 
be, then it should be written almost like a module.


- do not write executable code at the module level
- if a function needs an information, it should ask for it as a 
parameter, not using a de-scoped variable (aka global variables)
- if a function ask for too many parameters, then it may ask for few 
objects instead (e.g. plot(x,y,z) => plot(point), poor example though, 3 
paramaters are acceptable)
- it's better if your script can be imported in a separate file and 
tested there


the list could contain many more items, and the more item you implement 
the closer to a module you get.


JM


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


Re: Python 2.6 SSL module: Fails on key file error, with Errno 336265225, without a key file.

2010-04-19 Thread John Nagle

Antoine Pitrou wrote:
Perhaps you are using the wrong parameters and looking for ca_certs 
instead:


   That's right.  Thanks.

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


PLEASE HELP--Button images refuse to show.

2010-04-19 Thread Barrett
I have been fighting the same bug for weeks now with zero success: I
am trying to get images to come up on my buttons, but they are way too
small. Regardless of whether I used my old Python 2.5.1 or now 2.6.5,
the following code:


'''Minesweeper.'''

from Tkinter import *
#from PIL import Image
import Tkinter as tk
#import PIL as pil
import random
#import glob, os

BEGINNER = 1
INTERMEDIATE = 2
EXPERT = 3

OFFSET = 2

BUTTON_SIZE = 2

class Board(Frame, object):
def __init__(self, master, difficulty, photo):
Frame.__init__(self, master)
if difficulty == BEGINNER:
self.x = 9
self.y = 9
self.mines = 10
elif difficulty == INTERMEDIATE:
self.x = 16
self.y = 16
self.mines = 40
elif difficulty == EXPERT:
self.x = 30
self.y = 16
self.mines = 99

self.grid()
self.photo = photo
self.create_widgets()

def create_widgets(self):
#Create the grid.
self.square = []
self.isAMine = []
self.selected = []
for i in range(self.x):
squareColumn = []
mineColumn = []
selectedColumn = []
for j in range(self.y):
squareColumn.append(Button(self, width = 3, height =
2,\
   padx = -1, pady = -1))
squareColumn[j].grid(row = j + OFFSET, column = i)
mineColumn.append(False)
selectedColumn.append(False)
self.square.append(squareColumn)
self.isAMine.append(mineColumn)
self.selected.append(selectedColumn)

#Plant the mines.
print 'Dimensions:', self.x, self.y
for i in range(self.mines):
mineSquare = random.randrange(self.x * self.y)
mine_y = mineSquare / self.x
mine_x = mineSquare % self.x
self.isAMine[mine_x][mine_y] = True
self.square[mine_x][mine_y]['text'] = 'X' #temp line;
shows mines
#photo = tk.PhotoImage(file="1.gif")
#self.square[mine_x][mine_y]['image'] = photo #temp line;
shows mines


for i in range(self.y):
for j in range(self.x):
self.square[j][i]['command'] = lambda x=j, y=i:
self.hit(x, y)

#Runs when a button (square) is clicked.
def hit(self, x, y):
self.selected[x][y] = True
self.square[x][y].config(relief=SUNKEN)

#print x, y
if self.isAMine[x][y]:
print 'Mine found.  Location:', x, y
else:
#Look at all eight neighbors and see if they are mines.
#x>0, etc. avoid looking off the edge of the map.
adjMines = 0
if (x > 0 and y > 0) and self.isAMine[x-1][y-1]: #NW
adjMines+=1
if y > 0 and self.isAMine[x][y-1]: #N
adjMines+=1
if (x < self.x-1 and y > 0) and self.isAMine[x+1][y-1]:
#NE
adjMines+=1
if x > 0 and self.isAMine[x-1][y]: #W
adjMines+=1
if x < self.x-1 and self.isAMine[x+1][y]: #E
adjMines+=1
if (x > 0 and y < self.y-1) and self.isAMine[x-1][y+1]:
#SW
adjMines+=1
if y < self.y-1 and self.isAMine[x][y+1]: #S
adjMines+=1
if (x < self.x-1 and y < self.y-1) and\
   self.isAMine[x+1][y+1]: #SE
adjMines+=1

if adjMines != 0 and adjMines < 3:
self.square[x][y]['text'] = ''
self.square[x][y]['image'] = self.photo[adjMines]

elif adjMines>0: #temp line until the pix are ready
self.square[x][y]['text'] = adjMines

else: #adjMines == 0
#If none of the adjacent squares have mines, it is
safe to hit
#them all.  Just like the official game, this game
does
#precisely that.
if (x > 0 and y > 0) and not self.selected[x-1][y-1]:
Board.hit(self, x-1, y-1) #NW
if y > 0 and not self.selected[x][y-1]: #N
Board.hit(self, x, y-1)
if (x < self.x-1 and y > 0) and not self.selected[x+1]
[y-1]: #NE
Board.hit(self, x+1, y-1)
if x > 0 and not self.selected[x-1][y]: #W
Board.hit(self, x-1, y)
if x < self.x-1 and not self.selected[x+1][y]: #E
Board.hit(self, x+1, y)
if (x > 0 and y < self.y-1) and not self.selected[x-1]
[y+1]: #SW
Board.hit(self, x-1, y+1)
if y < self.y-1 and not self.selected[x][y+1]: #S
Board.hit(self, x, y+1)
if (x < self.x-1 and y < self.y-1) and\
   not self.selected[x+1][y+1]:
Board.hit(self, x+1, y+1) #SE

sel

Can this be done simpler ?

2010-04-19 Thread Stef Mientki
hello,

I want to use Python to give users the possibility to analyze data and
create their custom reports.
So I want a very simple language definition for the user, like :
- the script must be case-insensitive
- "user-words" are automatically translated into function names
- users strings, should be entered without the quotes, so these strings will
be defined as names

Now the code below seems to fulfill these wishes (in real life, the number
of dummy procedures is about 40),
but I always wonder if there's an easier way to achieve the same effect.

thanks,
Stef Mientki

def _Meting ( Nr, Test, Subschaal ) :
"""
here the real calculation will be done
"""
global Result
Result += str ( Nr ) + ': ' + Test + '/' + Subschaal + '\n'

# Dummy procedures to add the extra argument "Nr"
def _Meting_1 ( *args, **kwargs ) :
_Meting ( 1, *args, **kwargs )

def _Meting_2 ( *args, **kwargs ) :
_Meting ( 2, *args, **kwargs )
# end of dummy procedures

# These are names definied by the user, retrieved from a database
Meting_Namen = {}
Meting_Namen [1] = 'Voormeting'
Meting_Namen [2] = 'Nameting'

# Make the user definied names available in the current namespace
for Meting in Meting_Namen :
Name = Meting_Namen [ Meting ].lower ()   # 'voormeting'
exec ( Name + '= _Meting_' + str ( Meting ) )

# Another set of strings should be available as names (also retrieved from a
database)
test1 = 'Test1'
fat = 'Fat'

# Storage for the results
Result = ''

# Script entered by the user
Code = "Voormeting ( Test1, fat )"

# execute the user script in the current namespace  (make code
case-insensitive)
exec ( Code.lower () )

# for test print the result
print Result
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: [pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Giacomo Boffi
Giacomo Boffi  writes:

>> However, given you example, you should not insert code execution at
>> you module level, unless it's required only at the module import. I
>> dont know what is your module
>
> module? this was not well specified in my OP, but i'd rather speak of
> a "script" instead of a module...
>
> maybe should i use the
>
> if __name__ == "__main__":
> main()
>
> idiom to keep happy my pylint? oh, let's do it... it should be easy
> isn't it?

well, it's not so easy... pylint complains (correctly) about too many
local variables in main(), and about other things for different
adjustments i tried

i think i will put some variable at top level, CAPITALIZED, with the
intention of making evident that those values are the data of the
problem, as well as other quantities that are computed once from base
data, and then use these capitalized global variables inside my main
function --- tonight, at home

thank you again,
g
-- 
l'amore e' un sentimento a senso unico. a volte una via comincia dove
finisce un'altra e viceversa   -- Caldana, in IFQ
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: [pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Giacomo Boffi
Jean-Michel Pichavant  writes:

> Giacomo Boffi wrote:
>> i have this code
>>
>> def example(a):
>> return lambda b: a+b+1
>>
>> fun = example(10)
>> k_1 = fun(7)
>> ...
>>
>> and pylint tells me
>>
>> [...]
>> C:  4: Invalid name "fun" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
>> C:  5: Invalid name "k_1" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
>> [...]
>> g
>>
> Pylint default rules need some tuning

ok, but maybe it's not my specific problem (see below)

> However, given you example, you should not insert code execution at
> you module level, unless it's required only at the module import. I
> dont know what is your module

module? this was not well specified in my OP, but i'd rather speak of
a "script" instead of a module...

maybe should i use the

if __name__ == "__main__":
main()

idiom to keep happy my pylint? oh, let's do it... it should be easy
isn't it?

thanks,
g
-- 
 I wish we'd come to our senses and see there is no truth
 In those who promote the confusion for this ever changing mood.
(people get ready people get ready people get ready people get ready)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can someone please make it more pythonic or better?

2010-04-19 Thread J Kenneth King
Oltmans  writes:

> Greetings Python superstars,
>
> I've a directory structure like following
>
> tests /
>   __init__.py
>   testfile.py
>
> testfile.py contains following code
>
> import unittest
>
> class Calculator(unittest.TestCase):
> def test_add(self):
> print 'just add'
> def test_divide(self):
> print 'diviide'
> def test_multiply(self):
> print 'mul'
>
>
> class Car(unittest.TestCase):
> def test_start(self):
> print 'start'
> def test_move_right(self):
> print 'move right'
> def test_move_left(self):
> print 'move left'
> def test_stop(self):
> print 'stop'
>
>
> Now give the following user-input I want to get all test-names.
> user-input = tests.testfile (get all test-names from all
> unittest.TestCase derived classes in test.testfile)
> user-input = tests.testfile.Car (get all test-names from the Car
> class)
> user-input = tests.testfile.Cacr.test_stop
>
> and I'm doing it this the following way and I really think there has
> to be more readable, more pythonic and more possibly short way to do
> it
>
> import unittest
> import sys
> import inspect
>
> def get_test_names(full_name,module):
> name = full_name.split('.')
> loader = unittest.TestLoader()
> if len(name) == 4:
> return full_name
> elif len(name) == 3:
> exec "from %s.%s import %s" %(module,name[1],name[2])
> return loader.getTestCaseNames(eval(name[2]))
> elif len(name) == 2:
> exec 'from %s import %s' % (module,name[1])
> tests = []
> for _name, obj in inspect.getmembers(sys.modules[full_name]):
> if inspect.isclass(obj) and
> issubclass(obj,unittest.TestCase):
> exec "from %s.%s import %s" %
> (module,name[1],obj.__name__)
> tests.append(loader.getTestCaseNames(obj))
> return tests
>
>
>
> if __name__ == "__main__":
> input = "tests.testfile"
> module = input.split('.')[0]
> _tests = get_test_names(input,module)
> print _tests
>
>
> So guys, can you kindly point me to a more Pythonic, more readable and
> possible more short way to acheive this? I will really appreciate any
> help. Many thanks in advance.

First of all, exec is bad if it's going to be processing user input.

You might want to:

>> help(__import__)

It will give you an idea on how to hook into python's import machinery
for tasks such as this.

You could also modify the function's arglist to remove the
string-splitting you're doing.  Those "magic numbers" stick out a bit.
One can understand what they're for after reading the code in this case,
but it's not quite necessary if you make a keyword argument for package
names you can pass into the 'fromlist' argument in __import__.

ie:

def get_test_names(module_name, packagelist=[]):
...

hth,

j_king

>
> Best regards,
> Oltmans
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: class instance customization

2010-04-19 Thread Alexander
On 18.04.2010 13:23, Steven D'Aprano wrote:
> On Sat, 17 Apr 2010 19:55:44 +0400, Alexander wrote:
>  
>   
>> Ok, I'll try to explain on the following example. Let's consider class
>> MyClass that holds one string and concatenate it with other not defined
>> in this class:
>> 
> [...]
>   
>> and with working application:
>>
>> a = MyClass()
>> a.set('key1')
>>
>> b1 = a.new('value1')
>> b2 = a.new('value2')
>>
>> print b1, "," ,b2 # give 'key1 value1 , key1 value2'
>>
>> a.set('key2')
>>
>> print b1, ",", b2 # give 'key2 value1 , key2 value2'
>> 
> Looking at your design, I can't see any reason for SubClass to be a 
> subclass of MyClass. It doesn't inherit any behaviour, and the 
> constructor takes completely different arguments. Why make it a Subclass?
>   
It was a very simple example that express the crux of my question. There
isn't any sense discuss design on it. In real implementation SubClass
has almost the same functionality and methods as MyClass, the difference
only in a state variable (one instance has one state and second the
other, see example below).
> MyClass is dangerous: creating an instance doesn't fully initialise the 
> instance, it leaves it in a half-initialised state that can cause 
> exceptions from simple operations like:
>
> instance = MyClass()
> print instance
>
> This is very bad design.
>   
This actualy depends on practical implementation of class. There could
be a checkup in __str__() member for presence of variable in instance
and result of each evaluation of instance.__str__() could be a valid:

class MyClass(object):
def __init__(s):
s.__default = 'value3'
def set(s, key):
s.__key = key
def __str__(s):
if '__other' in s.__dict__:
return s.__key + ' ' + s.__other
else:
return s.__key + ' ' + s.__default
def new(s, value):
return SubClass(s, value)


Assume MyClass implementation is already given and SubClass have to be
implemented in some way.


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


Re: ctypes return char array with null chars

2010-04-19 Thread Mark Tolonen


"chris cannady"  wrote in message 
news:b103e85a-05d5-4195-a18f-bd143e9f5...@b33g2000yqc.googlegroups.com...

Hi all,

I am passing a ctypes struct byref to a dll. When I get the struct
back, it looks like the char array in the struct was truncated at the
first null char. It should be 192 bytes long, but I know the 3rd
through 6th byte are null chars and the array was truncated right
before byte 3.

Is there any way to get the full array back including null chars?

Thanks


It could depend on how your struct is declared.  Maybe this demo will help?

   >>> x=(c_char*10)()
   >>> x
   <__main__.c_char_Array_10 object at 0x00A049E0>
   >>> x.raw
   '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
   >>> x.value
   ''

'value' prints it is a string, stopping at the first null.  'raw' dumps the 
whole array.


-Mark


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


Is it better to extend a class, or do something repetitious in the main part of a program?

2010-04-19 Thread J
First, before I get farther,

Is there a way for the logging module to natively handle lists and
dict objects when logging?

e.g. take this {'key1':'val1','key2':'val2'} and have it logged like this:

INFO: key1: val1
INFO: key2: val2

If I pass the dict or list directly to the logger, it is logged the
same as if you simply did this:

mydict={1:1, 2:2}
mylist=[1,2,3]

print mydict
print mylist

>>> {1:1,2:2}
>>> [1,2,3]

It came up that I wanted to have logging present command line options
from optparse if the log level was set to debug...  so they'd look
something like this in the output:

debug: True
sleep_time: 30
log_file: /tmp/testlog

So the options I've managed to work out are to either parse the list
or dict object item by item and feed those items one at a time into
the logger:

for i in mylist:
logging.info(i)

Or to extend the StreamHandler class to handle this by creating a new
report.msg...

Then the discussion came up: which is better?  To parse a dictionary
or list in the main code and pass each item to the logger one at a
time, or to extend the logger to handle it natively?

Any thoughts on which is the more proper way to handle cases like this?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: [pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Jean-Michel Pichavant

Giacomo Boffi wrote:

i have this code

def example(a):
return lambda b: a+b+1

fun = example(10)
k_1 = fun(7)
...

and pylint tells me

[...]
C:  4: Invalid name "fun" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  5: Invalid name "k_1" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
[...]

afaict, [A-Z_][A-Z0-9_]* identifiers should be used for constants, and
i don't think of fun or k_1 as constants... what's going on?

tia,
g
  
Pylint default rules need some tuning, it's highly configurable for that 
purpose.
Some ppl like to think 'module variables' are constants thus should be 
upper case. If you disagree with that statement like I do, you can 
simply rewrite the regexp for module variables.


However, given you example, you should not insert code execution at you 
module level, unless it's required only at the module import. I dont 
know what is your module purpose but I bet it has no legitimate 
attribute 'fun'.


JM


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


extra room in Paris in your are stuck at the airport

2010-04-19 Thread Jean Daniel
Hello,

I live in Paris, my roommate and I would gladly host a poor soul
blocked at the airport due to the ash cloud.

See me for details,

Cheers,


PS: disambiguation: talking about real physical cloud here... :)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: installing debug symbols

2010-04-19 Thread shaunak saha
Change PATH and LD_LIBRARY_PATH variable to use /usr/local instead of /usr

2010/4/19 sanam singh 

>  Hi,
> Thanks for your reply. well the problem is that for gfb you need a python
> interpreter with debugging symbols, but unfortunately as i am using
> ubuntu9.10 it has python2.6 without debugging symbols. now there are two
> ways out of it.first is that if we could add debug symbols to pre installed
> pyhon2.6.Second is that i have installed python3.1 with debugging symbols
> but it has been installed in usr/local/bin opposed to usr/bin where
> python2.6 is installed. now can we somehow tell ubuntu to use python3.1
> instead of python2.6?
> Thirdly, when i type "python" in command shell python2.6 opens.
> Thanks in advance.
> Regards,
> Sanam
>
> --
> Date: Mon, 19 Apr 2010 16:53:47 +0530
> From: reach2shauna...@gmail.com
> To: sanamsi...@hotmail.com
> CC: python-list@python.org; d...@gnu.org
> Subject: Re: installing debug symbols
>
>
> Hi,
>
> You need to install the python debugging packages for your ubuntu version.
> I guess its "python-dbg"
>
> Regards,
> Shaunak
>
> 2010/4/19 sanam singh 
>
>  hi,
> i am using ubuntu 9.10. it comes with preinstalled python2.6 having no
> debug symbols.How can i add debug symbols to it. Secondly i cant afford to
> install a fresh python version using OPT=-g way. Please tell me how can i
> add symbols to existing python2.6.
> The error that i get in gdb when i attach a pid to it is :
> Loaded symbols for /usr/lib/python2.6/dist-packages/numpy/random/mtrand.so
> Reading symbols from /usr/lib/python2.6/lib-dynload/_ctypes.so...Reading
> symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/_ctypes.so...done.
> (no debugging symbols found)...done.
> Loaded symbols for /usr/lib/python2.6/lib-dynload/_ctypes.so
> Reading symbols from /usr/lib/python2.6/lib-dynload/cmath.so...Reading
> symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/cmath.so...done.
> (no debugging symbols found)...done.
> Loaded symbols for /usr/lib/python2.6/lib-dynload/cmath.so
> 0xb78a5422 in __kernel_vsyscall ()
>
> Thanks in advance.
>
> --
> Hotmail: Trusted email with Microsoft’s powerful SPAM protection. Sign up
> now. 
>
> ___
> ddd mailing list
> d...@gnu.org
> http://lists.gnu.org/mailman/listinfo/ddd
>
>
>
> --
> Hotmail: Powerful Free email with security by Microsoft. Get it 
> now.
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: default value in list comprehension

2010-04-19 Thread Bruno Desthuilliers

eb303 a écrit :

On Apr 19, 2:20 pm, AlienBaby  wrote:

Hi,

just a quick one,

Is it possible to achieve a default value in a list comprehension
where the if-clause is false?

Ie, something similar to:

[ a for a in b if something(a) else 'default' ]

the idea being that, rather than skip a value if the if-clause is
false, to place a default value at that position in the returned list
instead.

?

Thanks,

Matt.


[a if something(a) else 'default' for a in b]


Or you could have "something" taking a "default" argument and returning 
either it's argument (instead of True) or the "default" one (instead of 
False), and get rid of the if/else test in the list comp, ie:


def something(obj, default=False):
if whatever(obj):
   return obj
else:
   return default

results = [something(a, default="default") for a in b]

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


Re: Write web apps in Python?

2010-04-19 Thread Bruno Desthuilliers

Gilles Ganault a écrit :

On Thu, 15 Apr 2010 12:41:56 +0200, Bruno Desthuilliers
 wrote:
The PHP execution model (mostly based on CGI FWIW) tends to be a bit 
unpractical for non-trivial applications since you have to rebuild the 
whole world for each and any incoming request, while with a long-running 
process, you load all your libs, parse your config etc only once.


Apart from the ease of having the application run at all times, I'd be
curious to read about an application that was written in PHP and then
a long-running process and see if performance improved.


I'm not sure there's a way to do such a thing in PHP, at least in a way 
that wouldn't make the whole benchmark totally meaningless. And trying 
to compare a PHP app with a similar non-PHP would also be (mostly) 
meaningless.


Now there are a couple Symfony / Django benchmarks around (Symfony being 
probably the closest thing to Django in the PHP world). They are just as 
reliable as most benchmarks (that is, at best a rough indicator once you 
understand what's effectively being measured), but it seems that they 
confirm the empirical evidence that PHP is not well suited for such 
"heavy" OO frameworks.




Regardless, Python has an easier syntax, so AFAIC, that's already a
good enough reason to use this to write web apps.


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


Re: [pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Alexandre Fayolle
top level "variables" in real code are often constants and pylint tries to help 
you get rid of global variables. 

---
frmsrcurl: 
http://compgroups.net/comp.lang.python/-pylint-why-pylint-wants-only-capitals-identifiers
-- 
http://mail.python.org/mailman/listinfo/python-list


[CfP] DLS'10

2010-04-19 Thread Pascal Costanza
Dynamic Languages Symposium 2010

October 18, 2010

Co-located with SPLASH (OOPSLA) 2010
In cooperation with ACM SIGPLAN
John Ascuaga's Nugget, Reno/Tahoe, Nevada, USA

http://www.dynamic-languages-symposium.org/dls-10/

* Call for papers *

The 6th Dynamic Languages Symposium (DLS) at the conference formerly
known as OOPSLA is a forum for discussion of dynamic languages, their
implementation and application. While mature dynamic languages
including Smalltalk, Lisp, Scheme, Self, Prolog, and APL continue to
grow and inspire new converts, a new generation of dynamic scripting
languages such as Python, Ruby, PHP, Tcl, and JavaScript are
successful
in a wide range of applications. DLS provides a place for researchers
and practitioners to come together and share their knowledge,
experience, and ideas for future research and development.

DLS 2010 invites high quality papers reporting original research,
innovative contributions or experience related to dynamic languages,
their implementation and application. Accepted Papers will be
published
in the ACM Digital Library.

Areas of interest include but are not limited to:

* Innovative language features and implementation techniques
* Development and platform support, tools
* Interesting applications
* Domain-oriented programming
* Very late binding, dynamic composition, and runtime adaptation
* Reflection and meta-programming
* Software evolution
* Language symbiosis and multi-paradigm languages
* Dynamic optimization
* Hardware support
* Experience reports and case studies
* Educational approaches and perspectives
* Object-oriented, aspect-oriented, and context-oriented programming

=== Submissions and proceedings ===

We invite original contributions that neither have been published
previously nor are under review by other refereed events or
publications. Research papers should describe work that advances the
current state of the art. Experience papers should be of broad
interest
and should describe insights gained from substantive practical
applications. The program committee will evaluate each contributed
paper based on its relevance, significance, clarity, and originality.

Accepted papers will be published in the ACM Digital Library.

Papers are to be submitted electronically at
http://www.easychair.org/conferences?conf=dls2010 in PDF format.
Submissions must not exceed 12 pages and need to use the ACM format,
templates for which can be found at
http://www.acm.org/sigs/pubs/proceed/template.html.

=== Important dates ===

Submission of papers:  June 1, 2010 (hard deadline)
Author notification:  July 15, 2010
Final versions due: August 13, 2010
DLS 2010:  October 18, 2010
SPLASH/OOPSLA 2010: October 17-21, 2010

=== Program chair ===

William Clinger, Northeastern University, Boston, Massachusetts, USA

=== Program committee ===

Robby Findler (Northwestern University)
Jeffrey S. Foster (University of Maryland)
Lars Thomas Hansen (Adobe Systems)
Charlotte Herzeel (University of Brussels)
S. Alexander Spoon (Google)
Eric Tanter (University of Chile)
Jan Vitek (Purdue University)
Alessandro Warth (Viewpoints Research Institute)

[to be completed]
-- 
http://mail.python.org/mailman/listinfo/python-list


RE: installing debug symbols

2010-04-19 Thread sanam singh

Hi,
Thanks for your reply. well the problem is that for gfb you need a python 
interpreter with debugging symbols, but unfortunately as i am using ubuntu9.10 
it has python2.6 without debugging symbols. now there are two ways out of 
it.first is that if we could add debug symbols to pre installed pyhon2.6.Second 
is that i have installed python3.1 with debugging symbols but it has been 
installed in usr/local/bin opposed to usr/bin where python2.6 is installed. now 
can we somehow tell ubuntu to use python3.1 instead of python2.6?
Thirdly, when i type "python" in command shell python2.6 opens.
Thanks in advance.
Regards,
Sanam

Date: Mon, 19 Apr 2010 16:53:47 +0530
From: reach2shauna...@gmail.com
To: sanamsi...@hotmail.com
CC: python-list@python.org; d...@gnu.org
Subject: Re: installing debug symbols

Hi,

You need to install the python debugging packages for your ubuntu version. I 
guess its "python-dbg"

Regards,
Shaunak

2010/4/19 sanam singh 






hi,
i am using ubuntu 9.10. it comes with preinstalled python2.6 having no debug 
symbols.How can i add debug symbols to it. Secondly i cant afford to install a 
fresh python version using OPT=-g way. Please tell me how can i add symbols to 
existing python2.6.

The error that i get in gdb when i attach a pid to it is :
Loaded symbols for /usr/lib/python2.6/dist-packages/numpy/random/mtrand.so
Reading symbols from /usr/lib/python2.6/lib-dynload/_ctypes.so...Reading 
symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/_ctypes.so...done.

(no debugging symbols found)...done.
Loaded symbols for /usr/lib/python2.6/lib-dynload/_ctypes.so
Reading symbols from /usr/lib/python2.6/lib-dynload/cmath.so...Reading symbols 
from /usr/lib/debug/usr/lib/python2.6/lib-dynload/cmath.so...done.

(no debugging symbols found)...done.
Loaded symbols for /usr/lib/python2.6/lib-dynload/cmath.so
0xb78a5422 in __kernel_vsyscall ()

Thanks in advance.
  
Hotmail: Trusted email with Microsoft’s powerful SPAM protection. Sign up now.


___

ddd mailing list

d...@gnu.org

http://lists.gnu.org/mailman/listinfo/ddd



  
_
Hotmail: Powerful Free email with security by Microsoft.
https://signup.live.com/signup.aspx?id=60969-- 
http://mail.python.org/mailman/listinfo/python-list


urllib2.urlopen taking way too much time

2010-04-19 Thread Phonethics Mobile Media
handler = urllib2.urlopen(req) is taking way too much time to retrieve
the URL. The same code using sockets in PHP doesn't delay this long.
I had 'Authorization':'Basic ' + base64.b64encode("username:password")
in my header though.
[ I didnt use HTTPPasswordMgr & HTTPPasswordMgrWithDefaultRealm
because I was unable to send headers with the example shown here :
http://docs.python.org/howto/urllib2.html#id6 ]

I have data = handler.readline() in a loop - this is an endless
network script (twitter streaming) so cant really wait for the entire
url contents to finish loading.

I had to socket.setdefaulttimeout to 30 to make it work.
Is it because python is getting chunks in high number of KBs ?

Python 2.6.2

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


[pylint] why pylint wants only capitals identifiers?

2010-04-19 Thread Giacomo Boffi
i have this code

def example(a):
return lambda b: a+b+1

fun = example(10)
k_1 = fun(7)
...

and pylint tells me

[...]
C:  4: Invalid name "fun" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  5: Invalid name "k_1" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
[...]

afaict, [A-Z_][A-Z0-9_]* identifiers should be used for constants, and
i don't think of fun or k_1 as constants... what's going on?

tia,
g
-- 
la lenza penzola
   -- PMF, in IHC
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: default value in list comprehension

2010-04-19 Thread AlienBaby
On Apr 19, 1:23 pm, eb303  wrote:
> On Apr 19, 2:20 pm, AlienBaby  wrote:
>
>
>
>
>
> > Hi,
>
> > just a quick one,
>
> > Is it possible to achieve a default value in a list comprehension
> > where the if-clause is false?
>
> > Ie, something similar to:
>
> > [ a for a in b if something(a) else 'default' ]
>
> > the idea being that, rather than skip a value if the if-clause is
> > false, to place a default value at that position in the returned list
> > instead.
>
> > ?
>
> > Thanks,
>
> > Matt.
>
> [a if something(a) else 'default' for a in b]
>
> HTH
>  - Eric -- Hide quoted text -
>
> - Show quoted text -

Ahh.  Gotcha, thankyou :)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: copy some files from IE temporary internet files

2010-04-19 Thread Tim Golden

On 19/04/2010 10:49, CHEN Guang wrote:

Hi friends,
I want to program Python to copy some video files (.flv) from the IE folder 
"temporary internet files", but

os.listdir('C:\\Documents and Settings\\Administrator\\Local 
Settings\\Temporary Internet Files')

seemed unable to find any video file (although they really exist and can be 
manually copied with Windows explorer).
I googled and found that "temporary internet files" is not a normal folder. 
Will any friend tell me how to do this?


Have a look at the win32inet module from the pywin32 package

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


Re: default value in list comprehension

2010-04-19 Thread eb303
On Apr 19, 2:20 pm, AlienBaby  wrote:
> Hi,
>
> just a quick one,
>
> Is it possible to achieve a default value in a list comprehension
> where the if-clause is false?
>
> Ie, something similar to:
>
> [ a for a in b if something(a) else 'default' ]
>
> the idea being that, rather than skip a value if the if-clause is
> false, to place a default value at that position in the returned list
> instead.
>
> ?
>
> Thanks,
>
> Matt.

[a if something(a) else 'default' for a in b]

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


default value in list comprehension

2010-04-19 Thread AlienBaby
Hi,

just a quick one,

Is it possible to achieve a default value in a list comprehension
where the if-clause is false?

Ie, something similar to:

[ a for a in b if something(a) else 'default' ]

the idea being that, rather than skip a value if the if-clause is
false, to place a default value at that position in the returned list
instead.

?

Thanks,


Matt.


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


Re: (a==b) ? 'Yes' : 'No'

2010-04-19 Thread Dotan Cohen
On 30 March 2010 18:40, gentlestone  wrote:
> Hi, how can I write the popular C/JAVA syntax in Python?
>
> Java example:
>    return (a==b) ? 'Yes' : 'No'
>
> My first idea is:
>    return ('No','Yes')[bool(a==b)]
>
> Is there a more elegant/common python expression for this?
>

I'm a little late to the party, but I just saw this in Dive Into Python:
multiple = 1024 if a_kilobyte_is_1024_bytes else 1000

It's kind of sloppy as the condition is between the possible values,
but it works.

-- 
Dotan Cohen

http://bido.com
http://what-is-what.com

Please CC me if you want to be sure that I read your message. I do not
read all list mail.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: installing debug symbols

2010-04-19 Thread shaunak saha
Hi,

You need to install the python debugging packages for your ubuntu version. I
guess its "python-dbg"

Regards,
Shaunak

2010/4/19 sanam singh 

>  hi,
> i am using ubuntu 9.10. it comes with preinstalled python2.6 having no
> debug symbols.How can i add debug symbols to it. Secondly i cant afford to
> install a fresh python version using OPT=-g way. Please tell me how can i
> add symbols to existing python2.6.
> The error that i get in gdb when i attach a pid to it is :
> Loaded symbols for /usr/lib/python2.6/dist-packages/numpy/random/mtrand.so
> Reading symbols from /usr/lib/python2.6/lib-dynload/_ctypes.so...Reading
> symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/_ctypes.so...done.
> (no debugging symbols found)...done.
> Loaded symbols for /usr/lib/python2.6/lib-dynload/_ctypes.so
> Reading symbols from /usr/lib/python2.6/lib-dynload/cmath.so...Reading
> symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/cmath.so...done.
> (no debugging symbols found)...done.
> Loaded symbols for /usr/lib/python2.6/lib-dynload/cmath.so
> 0xb78a5422 in __kernel_vsyscall ()
>
> Thanks in advance.
>
> --
> Hotmail: Trusted email with Microsoft’s powerful SPAM protection. Sign up
> now. 
>
> ___
> ddd mailing list
> d...@gnu.org
> http://lists.gnu.org/mailman/listinfo/ddd
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python 2.6 SSL module: Fails on key file error, with Errno 336265225, without a key file.

2010-04-19 Thread Antoine Pitrou
Le Sun, 18 Apr 2010 22:37:30 -0700, John Nagle a écrit :
> 
> The cert file is the same PEM file I use with M2Crypto, and it's derived
> from Firefox's cert file.
> 
> Why am I getting a "private key" related error?  I'm not submitting a
> keyfile, just a cert file.

I'm not an expert but this is what the SSL doc says:

« The keyfile and certfile parameters specify optional files which 
contain a certificate to be used to identify the local side of the 
connection. »

From that, I understand that you need to specify both at the same time, 
and that one of them (probably the keyfile) needs to be a private key. 
Otherwise how would the local side identify itself?

Perhaps you are using the wrong parameters and looking for ca_certs 
instead:

« The ca_certs file contains a set of concatenated “certification 
authority” certificates, which are used to validate certificates passed 
from the other end of the connection. »


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


pyconfig.h

2010-04-19 Thread omnia neo
Hi All,

I am working on porting python on vxworks and hence was updating the PC
\pyconfig.h file for configurng python. As I am reading the file and
updating manually I come across lot many preprocessor directives which
I dont understand e.g. HAVE_NICE etc. May be this is standard
nomenclature and I am not aware of it.
My point and qwery is that how can I get info about all these
directives. I am perplexed to enable or disable any of them with half
knowledge.

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


copy some files from IE temporary internet files

2010-04-19 Thread CHEN Guang
Hi friends,
I want to program Python to copy some video files (.flv) from the IE folder 
"temporary internet files", but 
 
os.listdir('C:\\Documents and Settings\\Administrator\\Local 
Settings\\Temporary Internet Files') 
 
seemed unable to find any video file (although they really exist and can be 
manually copied with Windows explorer).
I googled and found that "temporary internet files" is not a normal folder. 
Will any friend tell me how to do this?
 
ChenGuang-- 
http://mail.python.org/mailman/listinfo/python-list


Re: class instance customization

2010-04-19 Thread Jean-Michel Pichavant

Alexander wrote:

On 17.04.2010 18:32, Steven D'Aprano wrote:
  

On Sat, 17 Apr 2010 13:09:43 +0400, Alexander wrote:

  


Hi, list.

I've some nontrivial class implementation MyClass and its instance my:

my = MyClass(args)

MyClass uses in internals some variable which is not defined in MyClass
itself. I want to extend instance of MyClass at runtime defining this
variable and making new instance. It is like a class inheritance in a
static way

  
I'm afraid I don't understand what you are asking. MyClass uses a 
variable which is not defined in MyClass. Where is it defined? Is it a 
global variable?


What do you mean, "like a class inheritance in a static way"?

Perhaps you should give an example of what you want to happen.
  



Ok, I'll try to explain on the following example. Let's consider class
MyClass that holds one string and concatenate it with other not defined
in this class:

class MyClass(object):
def __init__(s): pass
def set(s, key):
s.__key = key
def __str__(s):
return s.__key + ' ' + s.__other
def new(s, value):
return SubClass(s, value)

The problem is how to implement class SubClass which inherits MyClass,
define new variable __other accessible from MyClass intance and with
working application:

a = MyClass()
a.set('key1')

b1 = a.new('value1')
b2 = a.new('value2')

print b1, "," ,b2 # give 'key1 value1 , key1 value2'

a.set('key2')

print b1, ",", b2 # give 'key2 value1 , key2 value2'


  

Unfortunately I'm not sure you description clarifies anything.
My *guess* is that you would need a Factory class.

class Factory:  # this is a Factory class

class MyClass: # the class you actually need

redFactory = Factory('red')
blueFactory = Factory('blue')


ex1 = redFactory.new('value1') # use the factory to return an instance 
of MyClass initialized with the proper parameters

ex2 = blueFactory.new('value1')

print ex1
'red value1'
print ex2
'blue value1'

Is that want you want to do ? If so, I may elaborate a little more...

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


Req. for feedback -- writings on error handling & cleanup (Py3)

2010-04-19 Thread Alf P. Steinbach
After at least 3 false starts on my programming introduction's chapter 3, and 
some good and bad feedback from this group[1], I finally think the present 
chapter 3 approach is Good (enough).


So no, I haven't given up in this book project, even though 4 months to produce 
these chapter 3's first 30 pages or so might seem excessive!


This is a PDF document [03 - asd.pdf] at Google Docs, available via

  http://tinyurl.com/programmingbookP3>

I've tried to take earlier feedback to heart. E.g. verbosity: earlier attempt's 
1+ page intro reduced to 1 line. And example selection: no scary math here.



Contents so far:


3 [chapter title, undecided].
3.1 Error handling.
3.1.1 Error, failure, success (terminology).
3.1.2 The concept of exceptions.
3.1.3 Routine call hierarchies, call stack unwinding and stack traces.
3.1.4 Raising an exception / exception types / exception objects.
3.1.5 Handling an exception by using a try statement.
3.1.6 Interlude I: numerical input in a console program.
3.1.7 Exception translation and chained exceptions.
3.2 Cleanup handling.
3.2.1 Why automatic cleanup via object destruction (RAII) is ungood in Python.
3.2.2 Performing cleanup by using a finally clause (low level technique).
3.2.3 Performing cleanup by using a with statement.



Comments welcome!


Cheers,

- Alf

Notes:
[1] I'm posting this only to [comp.lang.python], for now seeking feedback mainly 
on the language aspects and general approach. Partially that's because, 
empirically, there is some risk of a flame war erupting in this group, and I 
don't want that spilling over into some other group. If/when the chapter's draft 
is complete I'll cross-post a request for feedback to [comp.programming], or 
perhaps post only to that group for the more pedagogical aspects.

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


ctypes return char array with null chars

2010-04-19 Thread chris cannady
Hi all,

I am passing a ctypes struct byref to a dll. When I get the struct
back, it looks like the char array in the struct was truncated at the
first null char. It should be 192 bytes long, but I know the 3rd
through 6th byte are null chars and the array was truncated right
before byte 3.

Is there any way to get the full array back including null chars?

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


Re: Incorrect scope of list comprehension variables

2010-04-19 Thread Duncan Booth
Dave Angel  wrote:

> 2) In original C, and I think in C++, the lifetime of i lasted long 
> after the loop ended.
>  for (int i=0; i< limit; ++i)
>  {
>z += i;
>  }
>   i is still valid after this curly brace
> 
> In C99, and at least in later C++, the scope of i ends with the curly, 
> as though there were another invisible pair of braces:
>  {
>  for (int i=0; i< limit; ++i)
>  {
>z += i;
>  }}
>   i is no longer valid here
> 

Leading to the wonderful header declaration:

#define for if(0);else for

which moves the entire for loop including the declaration inside another 
statement and therefore 'fixes' the variable scope for older compilers.

Ah, those were the days. :^)

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


Re: help req debugging python and c together

2010-04-19 Thread CHEN Guang
>Hi,
>I am working in gnuradio compiler. I need some help in debugging python and c 
>together.
>By this i mean that i have written some blocks in c that are connected 
>together using python. So i need to debug
>( breakpoints ect ) python such that when a specific c block is called at the 
>back end  (in python script ) the 
>debugger takes me into the c code and after that switches back to python and 
>so on.

>Thanks in advance.
>Regards,
>Sanam
 
PythoidC ( http://pythoidc.googlecode.com or http://pythoidc.sf.net ) is a C 
language tool for Python, C code and Python code coexist in the same IDE or 
even the same file, thus avoids most of the switches in debugging python and c 
together.
 -- 
http://mail.python.org/mailman/listinfo/python-list


installing debug symbols

2010-04-19 Thread sanam singh

hi,
i am using ubuntu 9.10. it comes with preinstalled python2.6 having no debug 
symbols.How can i add debug symbols to it. Secondly i cant afford to install a 
fresh python version using OPT=-g way. Please tell me how can i add symbols to 
existing python2.6.
The error that i get in gdb when i attach a pid to it is :
Loaded symbols for /usr/lib/python2.6/dist-packages/numpy/random/mtrand.so
Reading symbols from /usr/lib/python2.6/lib-dynload/_ctypes.so...Reading 
symbols from /usr/lib/debug/usr/lib/python2.6/lib-dynload/_ctypes.so...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/python2.6/lib-dynload/_ctypes.so
Reading symbols from /usr/lib/python2.6/lib-dynload/cmath.so...Reading symbols 
from /usr/lib/debug/usr/lib/python2.6/lib-dynload/cmath.so...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/python2.6/lib-dynload/cmath.so
0xb78a5422 in __kernel_vsyscall ()

Thanks in advance.
  
_
Hotmail: Trusted email with Microsoft’s powerful SPAM protection.
https://signup.live.com/signup.aspx?id=60969-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Operations on sparse matrices

2010-04-19 Thread pp
I tried csr_matrix.dot(A,N) where A and N are two sparse matrices.
 is it correct for multiplication of two sparse matrices ?
I still do not now how to perform matrix inversion for a  sparse
matrix. Can anyone please help.

Thanks!!

On Apr 19, 12:03 am, pp  wrote:
> I am currently dealing with sparse matrices and have doubts on whether
> we can use
> 1.) dot (for matrix multiplication) and inv (inverse) operations of
> numpy on sparse matrices of CSR format.
>
> I initially constructed my sparse matrix using COO format and then
> converted it to CSR format now I want to know whether normal inverse
> and matrix multiplications work with sparse csr matrices.
>
> Also can these operations be applied directly to csr matrices
>
> Thanks a lot

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


Re: About the grammar

2010-04-19 Thread franck
> >     argument: ... | test '=' test
> Where are you finding that?

This comes from Python-2.6/Grammar/Grammar in the source distribution.

> This tells you that keyword arguments cannot have keywords that aren't
> identifiers:
>
> >>> sum(1=2)
>
>   File "", line 1
> SyntaxError: keyword can't be an expression

Sure! So my surprise.

But Martin did provide a very good explanation that this form in the
grammar actually allows to avoid an ambiguity.

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


Re: About the grammar

2010-04-19 Thread franck
Thank you for this very clear (and quick) explanation!  :-)

Cheers,
Franck

On 19 avr, 08:58, "Martin v. Loewis"  wrote:
> # The reason that keywords are test nodes instead of NAME is that using
> # NAME results in an ambiguity. ast.c makes sure it's a NAME.
> argument: test [comp_for] | test '=' test
[...]
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Default paranmeter for packed values

2010-04-19 Thread Terry Reedy

On 4/18/2010 7:23 PM, Xavier Ho wrote:

G'day Pythoneers,

I ran into a strange problem today: why does Python not allow default
paranmeters for packed arguments in a function def?


>> def test(a = 1, b = (2, 3)):

... print a, b
...

>> test()

1 (2, 3)


>> def t(a, *b = (3, 4)):

   File "", line 1
 def t(a, *b = (3, 4)):
 ^
SyntaxError: invalid syntax

What was the rationale behind this design?


To reword what G. Ewing said, because t(3) causes b to be empty. In 
actually use cases, I believe that that is usually the appropriate thing 
to do.


tjr

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


Re: About the grammar

2010-04-19 Thread Martin v. Loewis
> Does any one knows why the grammar is so coded? Any intuition?

The 2.7 Grammar clarifies that:

# The reason that keywords are test nodes instead of NAME is that using
# NAME results in an ambiguity. ast.c makes sure it's a NAME.
argument: test [comp_for] | test '=' test

The ambiguity is this: if I have

foo(a, b = 2)

and have parsed it up to

foo(a,

then, if I get "b", should I enter the "test" clause (for the left
alternative) or the right clause? With the grammar being as stated,
it can be parsed as

argument: test ([comp_for] | '=' test)

so that parsing always starts with a test. Afterwards, I either get a
'=', indicating a keyword argument, or not: the '=' is not in the FIRST
set of comp_for, so there is no ambiguity here.

HTH,
Martin
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: UnicodeEncodeError during repr()

2010-04-19 Thread Martin v. Loewis
> Do I need to do something especial to get repr to work strictly
> with unicode?

Yes, you need to switch to Python 3 :-)

> Or should __repr__ *always* return bytes rather than unicode?

In Python 2.x: yes.

> What about __str__ ?

Likewise.

> If both of these are supposed to return bytes,
> then what method should I use to define the unicode representation
> for instances of a class?

__unicode__.

HTH,
Martin
-- 
http://mail.python.org/mailman/listinfo/python-list