TriZPUG August 2009 Meeting

2009-08-11 Thread Chris Calloway
Thursday, August 27, 7pm in Room 2015, Engineering Buildging I, NCSU 
Centennial Campus, Raleigh.


http://trizpug.org/Members/cbc/aug-09-mtg/

Canonical developer Gary Poster will give his OSCON presentation 
Launchpad Foundations: If the Abstractions Don't Kill Us... The talk 
is about how Launchpad uses the zope.interface and zope.component 
libraries. The talk is based on interviews with Launchpad engineers. The 
talk discusses how we might improve our use of the Zope Component 
Architecture, how the technology might be change, and how the technology 
might be used in other contexts like Django. We will adjourn for food 
and beverage at a local eatery after the meeting.


--
Sincerely,

Chris Calloway
http://www.secoora.org
office: 332 Chapman Hall   phone: (919) 599-3530
mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599



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

   Support the Python Software Foundation:
   http://www.python.org/psf/donations/


ANN Join ChiPy on Thursday August 13, 2009 Matplotlib, best meeting ever.

2009-08-11 Thread Brian Ray

Chicago Python User Group
=

We welcome back Dr John Hunter. Matplotlib is probably the most  
popular open source 2D plotting library ever. It has multiple  
rendering engines, supports tons of plot formats, and even typesets  
complicated equations properly.  Matplotlib, makes easy things easy  
and hard things possible. 


Our host for the meeting is Sully's House Tap Room  Grill.  All ages  
are welcome to this Free Private Event.  For those of age, Sully’s  
House offer 20 Beers on tap, and 35 Bottles - all craft and  
microbrewery, specializing in Belgium, Irish and German selections.   
Enjoy great Bar Food  Pizza from our Italian Oven and Daily  
discounted menu specials. The host has given us a dedicated  
bartender.  We will meet in the private party room on the second floor  
that is well equipped with top of the line video equipment – 100” HD  
screen  full A/V accessibility with Rock Band  Wii. Nice big space,  
bring a friend. Thanks Sully's!!!


This *will* be our best meeting yet.  Put this on your calendar. All  
levels welcome! New to Python, welcome. Scientist, welcome. Financial  
plotting people, welcome. Curious... come on up to the second floor at  
Sullys this Thursday. Forward this to others!


Topics
--

 * (45 min) Matplotlib, the popular 2D Plotting by Dr. John Hunter,  
the creator of Matplotlib
 * (15 min) Rohit Sankaran: Rendezvous - for scheduling meetings and  
other events. It's not the same codebase as Meetshop but it strives  
for similar functionality.

 * (15 min) bcfg2 configuration management - Narayan Desai
 * (15 min) Application messaging architecture using AMQP - Garrett  
Smith

 * (15 min) Configator: It Chomps Config - Pete Fein

When


Thursday, August 13th, ~7pm

Location


Sully’s House Tap Room  Grill, 1501 N. Dayton St. Chicago, Illinois  
60622


At the corner of Blackhawk and Dayton http://www.sullyshouse.com/

(2) Blocks from the North  Clybourn Red Line stop. Free street  
parking available.


About ChiPy
---

ChiPy is a group of Chicago Python Programmers, l33t, and n00bs.
Meetings are held monthly at various locations around Chicago.
Also, ChiPy is a proud sponsor of many Open Source and Educational
efforts in Chicago. Stay tuned to the mailing list for more info.

ChiPy website: http://chipy.org
ChiPy Mailing List: http://mail.python.org/mailman/listinfo/chicago
ChiPy Announcement *ONLY* Mailing List: http://mail.python.org/mailman/listinfo/chipy-announce 


Python website: http://python.org

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

   Support the Python Software Foundation:
   http://www.python.org/psf/donations/


ANN: M2Crypto 0.20

2009-08-11 Thread Heikki Toivonen
I am please to announce the M2Crypto 0.20 release, which was in
development for over nine months. Over 30 bugs fixed by more than ten
people. Download links and bug filing instructions on the homepage at
http://chandlerproject.org/Projects/MeTooCrypto.

M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA,
DSA, DH, HMACs, message digests, symmetric ciphers (including AES); SSL
functionality to implement clients and servers; HTTPS extensions to
Python's httplib, urllib, and xmlrpclib; unforgeable HMAC'ing
AuthCookies for web session management; FTP/TLS client and server;
S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An S/MIME
messenger for Zope. Smartcards supported with the Engine interface.

Changelog:

- Deprecated M2Crypto.PGP subpackage since nobody seems to be using it
nor is it being maintained (if you do use it, please let me know)
- Added fedora_setup.sh to help work around differences on Fedora Core
-based distributions (RedHat, CentOS, ...); thanks to Miloslav Trmac
- Added X509.load_request_bio and load_request_string, by Hartmut Goebel
and Pavel Shramov
- Added alias X509.Request.set_subject for set_subject_name to match
X509.X509, by Pavel Shramov
- OBJ_* wrappers did not work properly with OpenSSL 0.9.8a and earlier,
fix by Pavel Shramov
- Added ASN1_UTCTIME.get_datetime and set_datetime, by Pavel Shramov
- Fixed obj_obj2txt, which returned nonsense, fix by Barney Stratford
- m2urllib did not close sockets properly, fix by Miloslav Trmac
- Allow SSL peer certificate to have subjectAltName without dNSName and
use commonName for hostname check, fix by Miloslav Trmac
- threading_locking_callback did not block on a lock when the lock
  was held by another thread, by Miloslav Trmac
- Allow more blocking OpenSSL functions to run without GIL, by Miloslav
Trmac
- Fixed httpslib to send only the path+query+fragment part of the URL
when using CONNECT proxy, by James Bowes
- SSLServer.__init__ now takes optional bind_and_activate parameter and
  initializes by calling SocketServer.BaseServer.__init__, which
  are Python 2.6 compatibility fixes, by Christian
- ftpslib now works with Python 2.6, by Theodore A. Roth
- httpslib.ProxyHTTPSConnection needs to cast port into integer,
  by John M. Schanck
- Added support for RSASSA-PSS signing and verifying, by Chris Collis
- Added support for disabling padding when using RSA encryption,
  by Chris Collis
- ASN1_INTEGERs can now be larger than fits in an int, for example to
support X509 certificates with large serial numbers, patch by Mikhail
Vorozhtsov and testcase by Barry G.
- Reverted a change done in 0.17 to m2urllib2 which changed urls to
include host when it should stay as it was
- httpslib no longer uses urllib; instead it uses urlparse for url parsing
- SMIME.text_crlf and text_crlf_bio were always raising TypeError; fixed
- EVP.load_key and load_key_bio fixed to raise EVP.EVPError and
BIO.BIOError instead of str (str exceptions not allowed in Python 2.6
and later)
- SSL.Session.load_session fixed to raise SSL.SSLError instead of str
- SMIME.load_pkcs7, load_pkcs7_bio, smime_load_pkcs7,
smime_load_pkcs7_bio, text_crlf, text_crlf_bio fixed to raise
BIO.BIOError, SMIME.PKCS7_Error and SMIME.SMIME_Error as appropriate
instead of str
- Added FIPS mode to unit tests, and used FIPS-compliant key sizes in
other tests, by Miloslav Trmac. Note that tests run much slower because
of this!
- Unit tests cover 80% of the code

-- 
  Heikki Toivonen - http://heikkitoivonen.net
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


DjangoCon Schedule

2009-08-11 Thread Robert Lofthouse
Hi All,

We have released the DjangoCon Schedule at:
http://www.djangocon.org/2009/conference/schedule/ and will be
releasing more information over the next day or two.

DjangoCon is on 8th - 12th September in Portland, Oregon at the
DoubleTree Green Hotel. We had a great time last year at Google HQ,
where 250 people turned up for the first ever DjangoCon.

Keynotes are: Avi Bryant, Ian Bicking and Ted Leung. We have a wide
variety of talks from all aspects of the community, including a
Technical Design Panel where you get to discuss design
ideas/confusions with the Core devs.

You can purchase tickets for the conference here -
http://djangocon09.eventbrite.com

Robert Lofthouse
DjangoCon Chairman - http://www.djangocon.org/
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


GOZERBOT 0.9.1 released

2009-08-11 Thread Bart Thate
here it is .. GOZERBOT 0.9.1 !!

Main change this time is the distribution method, we now provide a
tar.gz with all the dependencies included. This means that you can run
the bot locally without any root required. Python 2.5 or higher
needed, see http://gozerbot.org

Enjoy !

about GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and
jabber conference rooms. its mainly used to serve rss feeds and to
have
custom commands made for the channel. More then just a channel bot
GOZERBOT
aims to provide a platform for the user to program his own bot and
make it
into something thats usefull. This is done with a plugin structure
that
makes it easy to program your own. But GOZERBOT comes with some
batteries
included, there are now over 100 plugins already written and ready for
use.
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


[ANNOUNCE] PyGobject 2.19.0 - unstable

2009-08-11 Thread Gian Mario Tagliaretti
I am pleased to announce version 2.19.0 of the Python bindings for GObject.

The new release is available from ftp.gnome.org as and its mirrors
as soon as its synced correctly:

http://download.gnome.org/sources/pygobject/2.19/

What's new since PyGObject 2.18.0?
- Add macros to help with Python list to/from GList/GSList conversions.
  (John Finlay)
- GIO docs practically completed (Gian)
- GFileInfo.list_attributes should accept None/NULL (Gian)
- Strip out Windows DLL API macros (John Finlay)
- Document that many functions got moved gobject - glib (Paul)
- Allow h2def.py to work when there are tabs or multiple spaces after
  the struct keyword. (Murray Cumming)
- Fix build when builddir is not the same as srcdir
  (Theppitak Karoonboonyanan)
- Make gio.Emblem constructor new-style (Paul)
- Cleanup GIO overrides to use Python function/method names (Paul)
- Make codegen report errors using Python function/method names (Paul)
- Fix object type in gio.BufferedInputStream_fill_async (Gian)
- Wrap gio.BufferedInputStream.fill_async (Gian)
- Add gio.BufferedOutputStream which was forgotten in the types (Gian)
- Split overrides for gio.MemoryOutputStream (Gian)
- Wrap gio.memory_input_stream_new_from_data (Gian)
- Introduces the girepository module from the former PyBank
  (Simon van der Linden)
- Add API appeared in 2.20 but not marked as such in gio docs (Gian)
- Wrap gio.FileOutputStream.query_info_async (Gian)
- Wrap gio.FileInputStream.query_async (Gian)
- Install executable codegen parts with executing permissions (Paul)
- Wrap gio.DataInputStream.read_line_async and read_until_async (Paul)
- Fix gio.OutputStream.splice_async (Paul)
- Add GIO 2.20 API and update docs (Gian)

Blurb:

GObject is a object system library used by GTK+ and GStreamer.

PyGObject provides a convenient wrapper for the GObject library for use
in Python programs, and takes care of many of the boring details such as
managing memory and type casting.  When combined with PyGTK, PyORBit and
gnome-python, it can be used to write full featured Gnome applications.

Like the GObject library itself PyGObject is licensed under the
GNU LGPL, so is suitable for use in both free software and proprietary
applications.  It is already in use in many applications ranging
from small single purpose scripts up to large full
featured applications.

PyGObject requires glib = 2.14.0 and Python = 2.3.5 to build.
GIO bindings require glib = 2.16.0.

cheers
-- 
Gian Mario Tagliaretti
GNOME Foundation member
gia...@gnome.org
-- 
http://mail.python.org/mailman/listinfo/python-announce-list

Support the Python Software Foundation:
http://www.python.org/psf/donations/


Exceptional Conditions: Regular Toronto Python User's group on Tuesday

2009-08-11 Thread Mike C. Fletcher
We'll have our regular Toronto Python User's Group (PyGTA) meeting on
Tuesday the 18th of August.  This month's topic:

Exceptional Conditions: when to ignore, assert, raise, log, except,
or email?

When programming in Python, we often run into situations which are
not normal or expected.  Python allows you to deal with these
situations in any number of different ways:

* ignoring the error (letting a lower-level library raise an
  exception)
* asserting an assumption (raising a generic error that says
  something shouldn't have happened)
* raising an explicit error
* returning a success flag with your real return value
* providing finally/context-manager operations (unconditional
  cleanup)
* logging the exceptional condition and continuing
* logging the condition into a database
* sending a syslog message
* catching a particular error and ignoring
* catching all errors and ignoring
* displaying a nice error message to the user
* emailing a user

In our round-table on Tuesday we'll try to hash out when/where/why
you would choose any or all of these approaches.  Do you have coding
standards that make exceptional conditions un-exceptional?  Do you
have tools you use to make logs more useful?  Do you have a
rule-of-thumb you apply to choose an approach?  Are there different
requirements for GUI versus Web applications?  What about
embedded/appliance applications?  How much information should a user
be given about a failure condition?  We'll look at the various tools
available and how to use them as well.

We'll meet at our regular time and location, Linux Caffe at 7:10pm.

http://www.pygta.org

BTW, we're looking for speakers and/or topics for September, October and
beyond.  We're particularly interested in new-user friendly topics that
can help the (large) new crop of Pythonistas advance quickly.  Email me
with your suggestions or ideas, or bring them up at the meeting.

Hope to see you on Tuesday,
Mike

-- 

  Mike C. Fletcher
  Designer, VR Plumber, Coder
  http://www.vrplumber.com
  http://blog.vrplumber.com

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

Support the Python Software Foundation:
http://www.python.org/psf/donations/


How to pickle a lambda function?

2009-08-11 Thread Terry
Hi,

I'm trying to implement something like:

remote_map(fun, list)

to execute the function on a remove machine. But the problem is I
cannot pickle a lambda function and send it to the remote machine.

Is there any possible way to pickle (or other method) any functions
including lambda?

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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Steven D'Aprano
On Mon, 10 Aug 2009 20:05:00 -0400, David Lyon wrote:

 So, what you're advocating is let things stay how they are...

If it's not broken, don't fix it.


 Ignore feedback... tell people to freak off...

Only useless feedback.


-- 
Steven


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


Re: variable scoping question.

2009-08-11 Thread Steven D'Aprano
On Mon, 10 Aug 2009 08:46:17 -0700, Cornelius Keller wrote:

 On 10 Aug., 17:12, Diez B. Roggisch de...@nospam.web.de wrote:
 Cornelius Keller wrote:
 [snip]

 http://effbot.org/zone/default-values.htm

 Diez
 
 Ok thank you.
 I' understand now why.
 I still think this is very confusing, because default values don't
 behave like most people would expect without reading the docs.


Really? How do you expect the default value to behave in this example?

 import time
 def test(x=time.time()):
... print x
...

 test()
1249972984.33
 time.sleep(30)
 test()
1249972984.33

You get the same default object each time you call the function, NOT a 
fresh one created. I'm sure I'd be terribly confused if Python re-
evaluated the default value each time I called the function.

There's no difference between this and the case x=[], except that lists 
are mutable and floats aren't. You get the same default list each time, 
it just has different stuff in it. The alternative would be to get a 
different list each time, and that would require re-evaluating the 
default each time the function was called, which is horrible.




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


Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Steven D'Aprano
On Mon, 10 Aug 2009 15:17:24 -0700, Douglas Alan wrote:

 From: Steven D'Aprano ste...@remove.this.cybersource.com.au wrote:
 
 On Mon, 10 Aug 2009 00:32:30 -0700, Douglas Alan wrote:
 
  In C++, if I know that the code I'm looking at compiles, then I never
  need worry that I've misinterpreted what a string literal means.
 
 If you don't know what your string literals are, you don't know what
 your program does. You can't expect the compiler to save you from
 semantic errors. Adding escape codes into the string literal doesn't
 change this basic truth.
 
 I grow weary of these semantic debates. The bottom line is that C++'s
 strategy here catches bugs early on that Python's approach doesn't. It
 does so at no additional cost.

 From a purely practical point of view, why would any language not want
 to adopt a zero-cost approach to catching bugs, even if they are
 relatively rare, as early as possible?

Because the cost isn't zero. Needing to write \\ in a string literal when 
you want \ is a cost, and having to read \\ in source code and mentally 
translate that to \ is also a cost. By all means argue that it's a cost 
that is worth paying, but please stop pretending that it's not a cost.

Having to remember that \n is a special escape and \y isn't is also a 
cost, but that's a cost you pay in C++ too, if you want your code to 
compile.


By the way, you've stated repeatedly that \y will compile with a warning 
in g++. So what precisely do you get if you ignore the warning? What do 
other C++ compilers do? Apart from the lack of warning, what actually is 
the difference between Python's behaviour and C++'s behaviour?



 (Other than the reason that adopting it *now* is sadly too late.)
 
 Furthermore, Python's strategy here is SPECIFICALLY DESIGNED, according
 to the reference manual to catch bugs. I.e., from the original posting
 on this issue:
 
  Unlike Standard C, all unrecognized escape sequences are left in
  the string unchanged, i.e., the backslash is left in the string.
  (This behavior is useful when debugging: if an escape sequence is
  mistyped, the resulting output is more easily recognized as
  broken.)

You need to work on your reading comprehension. It doesn't say anything 
about the motivation for this behaviour, let alone that it was 
SPECIFICALLY DESIGNED to catch bugs. It says it is useful for 
debugging. My shoe is useful for squashing poisonous spiders, but it 
wasn't designed as a poisonous-spider squashing device.



 The compiler can't save you from typing 1234 instead of 11234, or 31.45
 instead of 3.145, or My darling Ho instead of My darling Jo, so why
 do you expect it to save you from typing abc\d instead of abc\\d?
 
 Because in the former cases it can't catch the the bug, and in the
 latter case, it can.

I'm not convinced this is a bug that needs catching, but if you think it 
is, then that's a reasonable argument.



 Perhaps it can catch *some* errors of that type, but only at the cost
 of extra effort required to defeat the compiler (forcing the programmer
 to type \\d to prevent the compiler complaining about \d). I don't
 think the benefit is worth the cost. You and your friend do. Who is to
 say you're right?
 
 Well, Bjarne Stroustrup, for one.

Then let him design his own language *wink*


 All of these are value judgments, of course, but I truly doubt that
 anyone would have been bothered if Python from day one had behaved the
 way that C++ does. 

If I'm reading this page correctly, Python does behave as C++ does. Or at 
least as Larch/C++ does:

http://www.cs.ucf.edu/~leavens/larchc++manual/lcpp_47.html




 In C++, if you see an escape you don't recognize, do you care?
 
 Yes, of course I do. If I need to know what the program does.

Precisely the same as in Python.


 Do you go running for the manual? If the answer is No, then why do it
 in Python?
 
 The answer is that I do in both cases.

You deleted without answer my next question:

And if the answer is Yes, then how is Python worse than C++?

Seems to me that the answer is It's not worse than C++, it's the same 
-- in both cases, you have to memorize the special escape sequences, 
and in both cases, if you see an escape you don't recognize, you need to 
look it up.



 No. \z *is* a legal escape sequence, it just happens to map to \z.
 
 If you stop thinking of \z as an illegal escape sequence that Python
 refuses to raise an error for, the problem goes away. It's a legal
 escape sequence that maps to backslash + z.
 
 (1) I already used that argument on my friend, and he wasn't buying it.
 (Personally, I find the argument technically valid, but commonsensically
 invalid. It's a language-lawyer kind of argument, rather than one that
 appeals to any notion of real aesthetics.)

I disagree with your sense of aesthetics. I think that having to write 
\\y when I want \y just to satisfy a bondage-and-discipline compiler is 
ugly. That's not to deny that BD isn't useful on occasion, but in 

Re: ElementTree - Howto access text within XML tag element...

2009-08-11 Thread Ned Deily
In article 
1ad8dac1-8fff-493a-a197-d847e7b6a...@c2g2000yqi.googlegroups.com,
 cmalmqui cmalm...@gmail.com wrote:
 I am writing on a small XML parser and are currently stuck as I am not
 able to get the whole element name in ElementTree.
 
 Please see the below example where print root[0][0] returns
 Element 'Activity' at 018A3938
 
 Is there a way to get hold of the Running string in the tag using
 elementTree?
 
 Activities
 Activity Sport=Running
   Id2009-07-10T14:48:00Z/Id
   Lap StartTime=2009-07-10T14:48:00Z
   .

Running is the value of the Sport attribute of the Activity 
element.  The documentation for the Element interface lists several ways 
to access element attributes; in your example,

 elem = root[0][0]
 elem.get(Sport)
'Running'
 elem.attrib
{'Sport': 'Running'}
 elem.items()
[('Sport', 'Running')]

See http://docs.python.org/library/xml.etree.elementtree.html

-- 
 Ned Deily,
 n...@acm.org

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


Re: How to pickle a lambda function?

2009-08-11 Thread Duncan Booth
Terry terry.yin...@gmail.com wrote:

 I'm trying to implement something like:
 
 remote_map(fun, list)
 
 to execute the function on a remove machine. But the problem is I
 cannot pickle a lambda function and send it to the remote machine.
 
 Is there any possible way to pickle (or other method) any functions
 including lambda?
 

You can pickle any named functions that are declared at module scope.

You cannot pickle anonymous functions, methods, or functions declared 
nested inside other functions. The function must be present in the same 
module when you unpickle it, and if the definition has changed between 
pickling and unpickling the new definition will be used (just as other 
instances will use the current class definition not the one they were 
pickled with).

You probably could pickle some of the components needed to create your 
lambda and construct a new function from it when unpickling: try the code 
object, the name of the module to be used for the globals, and default 
arguments. I don't think you can pickle the closure so better make sure 
your lambda doesn't need one, and be very careful to ensure that you 
restore the pickle in the same version of Python otherwise the code object 
might break. Best just avoid this and use named functions for anything that 
needs pickling.

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


Re: Social problems of Python doc [was Re: Python docs disappointing]

2009-08-11 Thread Antoine Pitrou
r rt8396 at gmail.com writes:
 
 On Aug 9, 11:02 pm, David Lyon david.l...@preisshare.net wrote:
  Since you're talking about documentation, which is a part of python,
  don't you think you should be discussing it on python-dev ?
 
 Yea, them's be a friendly bunch to noob ideas ;). Hey i got a better
 idea, lets go to the IRS and see if we can persuade them to stop
 taxing us...

You know, the most interesting thing in this thread is certainly its title :
« Social problems of Python doc »

Yes, the little social problem here should be clear: if you have complaints to
voice or improvements to suggest to the Python docs, you should do so on the
issue tracker (*). For most topics, this is the only reasonable way to signal
problems to the Python developers community, and so it is in most free software
/ open source projects.

Just because you are able to write tongue-in-cheek (**) comments on python-list
or, even worse, on a third party website, and generate a long thread about how
Python doc (supposedly) s*cks
1) doesn't mean there is a legitimate issue (we all know how people can quickly
inflame about empty subjects)
2) even though there can be a legitimate issue, doesn't mean Python developers
will go out of their way and parse the entirety of the messages to find
potentially useful data in them. The bug tracker is the place for this, and it's
your task, if you want to help, to submit suggestions in it.

FYI, the Python doc is very actively maintained nowadays, and bug reports /are/
taken into account. If you think you've got a lot of time for ranting about how
the doc sucks, but don't want to spend the couple of minutes needed to post
issues on the bug tracker, it speaks a lot about your motivation. Admittedly, in
every successful community, there are attention seekers who are not interested
in actual participation.

(*) http://bugs.python.org

(**) yes, humour is fine, but it doesn't replace actual, informational content


Antoine.


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


Re: ElementTree - Howto access text within XML tag element...

2009-08-11 Thread Diez B. Roggisch

cmalmqui schrieb:

Hi,

I am writing on a small XML parser and are currently stuck as I am not
able to get the whole element name in ElementTree.

Please see the below example where print root[0][0] returns
Element 'Activity' at 018A3938

Is there a way to get hold of the Running string in the tag using
elementTree?

Activities
Activity Sport=Running
  Id2009-07-10T14:48:00Z/Id
  Lap StartTime=2009-07-10T14:48:00Z
  .

For those of you that know how to program XML I have another
question:
I am currently hardcoding my XML parser using brackets, is this a
good approach or should I build it using a search on tag approach.


What do you mean by that - hardcoding by brackets?

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


Re: Social problems of Python doc [was Re: Python docs disappointing]

2009-08-11 Thread Mark Lawrence

Antoine Pitrou wrote:

r rt8396 at gmail.com writes:

On Aug 9, 11:02 pm, David Lyon david.l...@preisshare.net wrote:

Since you're talking about documentation, which is a part of python,
don't you think you should be discussing it on python-dev ?

Yea, them's be a friendly bunch to noob ideas ;). Hey i got a better
idea, lets go to the IRS and see if we can persuade them to stop
taxing us...


You know, the most interesting thing in this thread is certainly its title :
« Social problems of Python doc »

Yes, the little social problem here should be clear: if you have complaints to
voice or improvements to suggest to the Python docs, you should do so on the
issue tracker (*). For most topics, this is the only reasonable way to signal
problems to the Python developers community, and so it is in most free software
/ open source projects.

Just because you are able to write tongue-in-cheek (**) comments on python-list
or, even worse, on a third party website, and generate a long thread about how
Python doc (supposedly) s*cks
1) doesn't mean there is a legitimate issue (we all know how people can quickly
inflame about empty subjects)
2) even though there can be a legitimate issue, doesn't mean Python developers
will go out of their way and parse the entirety of the messages to find
potentially useful data in them. The bug tracker is the place for this, and it's
your task, if you want to help, to submit suggestions in it.

FYI, the Python doc is very actively maintained nowadays, and bug reports /are/
taken into account. If you think you've got a lot of time for ranting about how
the doc sucks, but don't want to spend the couple of minutes needed to post
issues on the bug tracker, it speaks a lot about your motivation. Admittedly, in
every successful community, there are attention seekers who are not interested
in actual participation.

(*) http://bugs.python.org

(**) yes, humour is fine, but it doesn't replace actual, informational content


Antoine.



Thank you for this fine, cultured, reasonable response.  Seriously!!!

--
Kindest regards.

Mark Lawrence.

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


Re: How to pickle a lambda function?

2009-08-11 Thread Terry
On Aug 11, 3:42 pm, Duncan Booth duncan.bo...@invalid.invalid wrote:
 Terry terry.yin...@gmail.com wrote:
  I'm trying to implement something like:

  remote_map(fun, list)

  to execute the function on a remove machine. But the problem is I
  cannot pickle a lambda function and send it to the remote machine.

  Is there any possible way to pickle (or other method) any functions
  including lambda?

 You can pickle any named functions that are declared at module scope.

 You cannot pickle anonymous functions, methods, or functions declared
 nested inside other functions. The function must be present in the same
 module when you unpickle it, and if the definition has changed between
 pickling and unpickling the new definition will be used (just as other
 instances will use the current class definition not the one they were
 pickled with).

 You probably could pickle some of the components needed to create your
 lambda and construct a new function from it when unpickling: try the code
 object, the name of the module to be used for the globals, and default
 arguments. I don't think you can pickle the closure so better make sure
 your lambda doesn't need one, and be very careful to ensure that you
 restore the pickle in the same version of Python otherwise the code object
 might break. Best just avoid this and use named functions for anything that
 needs pickling.

 --
 Duncan Boothhttp://kupuguy.blogspot.com

Yes, I'm think of pickle (actually marshal) the code object. Otherwise
I have to use string and eval:-(

The reason I need to be able to pickle any function is because I want
my remote machine knows nothing about the function before receiving
it, so I don't need to update the source code in the remote machine
very often.

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


Re: Problem Regarding Handling of Unicode string

2009-08-11 Thread John Machin
On Aug 10, 9:26 pm, joy99 subhakolkata1...@gmail.com wrote:
 Dear Group,

 I am using Python26 on WindowsXP with service pack2. My GUI is IDLE.
 I am using Hindi resources and get nice output like:
 एक
 where I can use all the re functions and other functions without doing
 any transliteration,etc.
 I was trying to use Bengali but it is giving me output like:

WHAT is giving you this output?

 '\xef\xbb\xbf\xe0\xa6\x85\xe0\xa6\xa8\xe0\xa7\x87\xe0\xa6\x95'

In a very ordinary IDLE session (Win XP SP3, Python 2.6.2, locale:
Australia/English, no Hindi resources):

 x = '\xef\xbb\xbf\xe0\xa6\x85\xe0\xa6\xa8\xe0\xa7\x87\xe0\xa6\x95'
 ux = x.decode('utf-8')
 ux
u'\ufeff\u0985\u09a8\u09c7\u0995'
 print ux
অনেক # looks like what you wanted; please confirm
 import unicodedata
 for c in ux:
print unicodedata.name(c)


ZERO WIDTH NO-BREAK SPACE # this is a BOM
BENGALI LETTER A
BENGALI LETTER NA
BENGALI VOWEL SIGN E
BENGALI LETTER KA


 I wanted to see Bengali output as
 অনেক
 and I like to use all functions including re.
 If any one can help me on that.

I am using Hindi resources doesn't tell us much ... except to prompt
the comment that perhaps if you want to display Bengali script, you
may need Bengali resources. However it looks like I can display your
Bengali data without any special resources.

It seems like you are not doing the same with Bengali as you are doing
with Hindi. We can't help you very much if you don't show exactly what
you are doing.

Have you considered asking in an Indian Python forum? Note: you will
still need to say what you are doing that works with Hindi but not
with Bengali.

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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Bruno Desthuilliers

r a écrit :
(snip)


A little note for tutorial writers:
==

Dear Expert,
Whilst writing any tutorial on any subject matter please remember, you
may be an expert, but mostly *non-experts* will be reading your
material... 


I can only second Paul on this : just like the KR, Python's official 
tutorial targets experienced programmers, not total noobies.


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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Brian
On Fri, Jul 31, 2009 at 6:12 PM, Kee Nethery k...@kagi.com wrote:

 I too find the Python docs not very useful and it really slows down my
 learning curve.

 I wonder if it would make sense to find good tech writers, get a quotes,
 and get some professionally written documentation WITH LOTS OF EXAMPLES
 added to the standard Python documentation tree.

 I'd chip in money for that task. I've certainly spent enough buying Python
 books to where it would be very reasonable to chip in the cost of one book
 towards this project. Get enough people ... could be a great thing.

 Even though it is not the version I use, I would suggest that the really
 detailed docs with lots of examples be written against the latest python
 version.

 Just a thought.

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


One thing I really like about the PHP docs is the built in forums. User
feedback on documentation is invaluable.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: With or without leading underscore...

2009-08-11 Thread Bruno Desthuilliers

Carl Banks a écrit :
(snip)



class A(object):
def __init__(self,*args,**kwargs):
raise TypeError('Type not callable; use factory function
instead')

@classmethod
def _create_object(cls,initial_value):
self = object.__new__(cls) # avoid __init__
self.value = initial_value


I assume there's a missing return self line here ?-)
--
http://mail.python.org/mailman/listinfo/python-list


Is there any package implanation the following arithmetics?

2009-08-11 Thread zhongshq
Hi,

I wonder if there has any package can check whether two rectangles are
overlap, is a dot inside or outside a polygon, etc.

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


Re: Need help in configuration for TimedRotatingFileHandler

2009-08-11 Thread Vinay Sajip
On Aug 10, 3:52 pm, Dave Angel da...@ieee.org wrote:
 Lokesh Maremalla wrote:
  Traceback (most recent call last):
    File c:\Python25\lib\logging\handlers.py, line 74, in emit
      self.doRollover()
    File c:\Python25\lib\logging\handlers.py, line 274, in doRollover
      os.rename(self.baseFilename, dfn)
  WindowsError: [Error 32] The process cannot access the file because it is
  being used by another process

 Generally speaking, this error on os.rename() will occur if you haven't
 properly closed the file first, and if I recall correctly, Unix would
 have permitted a rename on an open file.  You're on Windows.  However, I
 don't know how that works with theloggingpackage.  If the program has
 terminated, and you run it a second time on the following day (or after
 changing the system time), then I'd expect no trouble.  But I'm guessing
 your program is still running, and you just want to change fromlogging
 to yesterday's file tologgingto today's file.

 If I had to guess, I'd say that you have two instances of the logger
 running, and the second one is still holding the handle open.  But
 that's just a wild guess.


It's certainly possible that there are two instances of the handler,
which would cause this problem. Other things which might cause this
problem are the file handle inherited by a child process, an anti-
virus scanner having the file open for scanning (anti-virus scanners
often scan files which have just been written, like log files) and
indexing software such as Google Desktop or Windows' own indexing
service.

I would advise using sysinternals tools such as FileMon and Handle to
see what's holding the file open.

Regards,


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


UML for Python or some other Graphical Notation Language

2009-08-11 Thread llothar
This is more an academic question right now but was there ever some
work in progress how UML could be made better for Python or script
languages in general.

It is so extremely deep interwoven with Java/C++ language
implementations that there are a lot of modified notiations necessary.

Or is there anything else then UML?
Eiffel still has BON for example.
-- 
http://mail.python.org/mailman/listinfo/python-list


Search and write to .txt file

2009-08-11 Thread Helvin
Hi everyone,

I am writing some python script that should find a line which contains
'1' in the data.txt file, then be able to move a certain number of
lines down, before replacing a line. At the moment, I am able to find
the line '1', but when I use f.seek to move, and then rewrite, what I
write goes to the end of the .txt file, instead of being adjusted by
my f.seek.

Do you know what way I should take?

Data.txt is a file of 3 lines:
   line1
   line2
   line3

Code:

   with open('data.txt', 'r+') as f:
   firstread = f.readlines()   # Take a snapshot of initial file

   f.seek(0,0)# Go back to beginning and search
   for line in f:
   print line
   if line.find('1'):
   print 'line matched'
   f.seek(1,1)   # Move one space along
   f.write('house\n') # f.write overwrites the exact
number of bytes.
   break# leave loop once '1' is found

   f.seek(0,0)  # Go back to beginning, and read
data.txt again
   lastread = f.readlines()

   print 'firstread is', firstread
   print 'lastread is', lastread

This shouldn't be too difficult, but I don't know how.  
Help appreciated!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Search and write to .txt file

2009-08-11 Thread Kushal Kumaran
On Tue, Aug 11, 2009 at 4:52 PM, Helvinhelvin...@gmail.com wrote:
 Hi everyone,

 I am writing some python script that should find a line which contains
 '1' in the data.txt file, then be able to move a certain number of
 lines down, before replacing a line. At the moment, I am able to find
 the line '1', but when I use f.seek to move, and then rewrite, what I
 write goes to the end of the .txt file, instead of being adjusted by
 my f.seek.

 Do you know what way I should take?


It might be easier to read the file into a list of lines (using
readlines, as you do in your code already), make your change there and
write it back to a file.  If your file is indeed as small as you
indicate below, that should be significantly easier.

 Data.txt is a file of 3 lines:
   line1
   line2
   line3

 Code:

   with open('data.txt', 'r+') as f:
       firstread = f.readlines()   # Take a snapshot of initial file

       f.seek(0,0)    # Go back to beginning and search
       for line in f:
           print line
           if line.find('1'):
               print 'line matched'
               f.seek(1,1)       # Move one space along
               f.write('house\n')     # f.write overwrites the exact
 number of bytes.
               break                    # leave loop once '1' is found

       f.seek(0,0)              # Go back to beginning, and read
 data.txt again
       lastread = f.readlines()

       print 'firstread is', firstread
       print 'lastread is', lastread

 This shouldn't be too difficult, but I don't know how.  
 Help appreciated!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: dictionary help

2009-08-11 Thread Dave Angel

Krishna Pacifici wrote:

Hi,
kind of a newbie here, but I have two questions that are probably pretty simple.

1.  I need to get rid of duplicate values that are associated with different 
keys in a dictionary.  For example I have the following code.
s={}
s[0]=[10,2,3]
 s[10]=[22,23,24]
 s[20]=[45,5]
s[30]=[2,4]
s[40]=[6,7,8]

Now I want to be able to loop through the primary keys and get rid of 
duplicates (both in keys and values) so that I would have either a new 
dictionary or the same dictionary but with the following values:

s[0]=[3]
 s[10]=[22,23,24]
 s[20]=[45,5]
s[30]=[2,4]
s[40]=[6,7,8]

It doesn't matter which value gets removed as long as there is only one 
remaining, so in this example it doesn't matter that 2 got removed from s[0] or 
from s[30] as long as there is only one 2 in the dictionary.

2.  I need to be able to loop over the values in the dictionary when there are 
multiple values assigned to each key like above and assign new values to those 
values.  Taking the above example I would want to assign a new value so that 
when you called s[0] it would equal [3,4] say if 4 was the new value.  I think 
this should be as simple as adding a value, but I kept on having difficulty.

Any suggestions would be greatly appreciated.

Thank you very much,
Krishna


  
Sounds like homework.  If it was for an unconstrained project, I'd 
design a different data structure, one that directly enforced the data 
constraints.  So far, I can't imagine a useful reason for this 
particular set of constraints.


Let's break the problems down.

1a)   Do you know how to write a loop that visits all the keys of a 
dictionary?
1b)  Do you know how to safely check if a particular key exists? 
e.g.  if   key in s:
1c)  Do you know how to collect a set of values, so that when a 
duplicate is found, it can be recognized as such?

1d) Do you know how to remove an item from a list?

2a)  Like 1a)
2b) Do you know how to append a value to the end of a list?  Is s[key] a 
list?



DaveA

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


add fields in a existing dbf

2009-08-11 Thread Alonso Luján Torres Taño

Hi!

I'm trying to modify a dbf adding a new field in a python script, but I 
can't.


Just I can add a field in new dbf created in the same script.

I tryed with:

   db = dbf.Dbf(../filesource.dbf,new =False, readOnly=False)
   ...
   db.addField((PESO,N,32,8))

and return error:

   Traceback (most recent call last):
 File script.py, line 34, in module
   db.addField((PESO,N,32,8))
 File /usr/lib/python2.5/site-packages/dbfpy/dbf.py, line 229, in
   addField
   structure can't be changed)
   TypeError: ('At least one record was added, ', structure can't be
   changed)


I have not idea of what error I make.

If someone can help me, I'll so gratefull.

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


Re: UML for Python or some other Graphical Notation Language

2009-08-11 Thread Diez B. Roggisch
llothar wrote:

 This is more an academic question right now but was there ever some
 work in progress how UML could be made better for Python or script
 languages in general.
 
 It is so extremely deep interwoven with Java/C++ language
 implementations that there are a lot of modified notiations necessary.
 
 Or is there anything else then UML?
 Eiffel still has BON for example.

http://fptiny.blogspot.com/2008/03/rad-with-tiny-erp.html

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


test message

2009-08-11 Thread skip
Sorry for the low content email.  Testing the mail-to-news gateway on
mail.python.org.  Don't flame me for not using a test newsgroup. ;-)

-- 
Skip Montanaro - s...@pobox.com - http://www.smontanaro.net/
Getting old sucks, but it beats dying young
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: test message

2009-08-11 Thread Skip Montanaro
On Aug 11, 7:40 am, s...@pobox.com wrote:
 Sorry for the low content email.  Testing the mail-to-news gateway on
 mail.python.org.  Don't flame me for not using a test newsgroup. ;-)

Posting a followup to test the return path (news-to-mail).

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


Re: Search and write to .txt file

2009-08-11 Thread Piet van Oostrum
 Helvin helvin...@gmail.com (H) wrote:

H Hi everyone,
H I am writing some python script that should find a line which contains
H '1' in the data.txt file, then be able to move a certain number of
H lines down, before replacing a line. At the moment, I am able to find
H the line '1', but when I use f.seek to move, and then rewrite, what I
H write goes to the end of the .txt file, instead of being adjusted by
H my f.seek.

H Do you know what way I should take?

H Data.txt is a file of 3 lines:
Hline1
Hline2
Hline3

H Code:

Hwith open('data.txt', 'r+') as f:
Hfirstread = f.readlines()   # Take a snapshot of initial file

Hf.seek(0,0)# Go back to beginning and search
Hfor line in f:
Hprint line
Hif line.find('1'):
Hprint 'line matched'
Hf.seek(1,1)   # Move one space along
Hf.write('house\n') # f.write overwrites the exact
H number of bytes.
Hbreak# leave loop once '1' is found

Mixing an iterator on the file with direct calls (seek/write) isn't
going to work. The iterator does read ahead which causes the file
position not to be what you think it is.

See:

 with open('data.txt', 'r+') as f:
...   for line in f:
...   print line, f.tell()
... 
line1
18
line2
18
line3
18

-- 
Piet van Oostrum p...@cs.uu.nl
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: p...@vanoostrum.org
-- 
http://mail.python.org/mailman/listinfo/python-list


Extracting matrix from a text file

2009-08-11 Thread telek...@hotmail.com
Hello to all!!

I am new in python, and I am running it on Mac with Smultron editor. I
need to read a textfile that includes numbers (in a matrix form),
indexes, and strings, like this:

Marsyas-kea distance matrix for MIREX 2007 Audio Similarity Exchange
Q/R1   2   3
45
10  4.545924.36685
5.294633.85728
24.545920  3.97667
5.021514.64284
34.366853.976670
4.987434.83683
45.294635.021514.98743
0  6.04393
53.857284.642844.836836.043930

My code to get this information is:

matrix = open(dmatrix_5.txt);

while 1:
mat = matrix.readline()
if not mat:
break
pass # do something
print mat



So I just want to keep the matrix in the middle for math
computations.

0  4.545924.36685
5.294633.85728
4.545920  3.97667
5.021514.64284
4.366853.976670
4.987434.83683
5.294635.021514.98743
0  6.04393
3.857284.642844.836836.043930


I've seen and tried a lot of ways, like split or isinstance.. but
never get the wanted result does anyone have an idea, or hint?
Thank you once more for your help!

Best Regards,
Bea
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Search and write to .txt file

2009-08-11 Thread Mark Lawrence

Helvin wrote:

Hi everyone,

I am writing some python script that should find a line which contains
'1' in the data.txt file, then be able to move a certain number of
lines down, before replacing a line. At the moment, I am able to find
the line '1', but when I use f.seek to move, and then rewrite, what I
write goes to the end of the .txt file, instead of being adjusted by
my f.seek.

Do you know what way I should take?

Data.txt is a file of 3 lines:
   line1
   line2
   line3

Code:

   with open('data.txt', 'r+') as f:
   firstread = f.readlines()   # Take a snapshot of initial file

   f.seek(0,0)# Go back to beginning and search
   for line in f:
   print line
   if line.find('1'):
   print 'line matched'
   f.seek(1,1)   # Move one space along
   f.write('house\n') # f.write overwrites the exact
number of bytes.
   break# leave loop once '1' is found

   f.seek(0,0)  # Go back to beginning, and read
data.txt again
   lastread = f.readlines()

   print 'firstread is', firstread
   print 'lastread is', lastread

This shouldn't be too difficult, but I don't know how.  
Help appreciated!
You can't mix and match the file iterator for line in f with the seek 
method.  You already have the data in firstread, why not process it from 
there, i.e. for line in firstread.  Also look at the docs for the find 
method, it doesn't return what you think it does.


--
Kindest regards.

Mark Lawrence.

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


Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Piet van Oostrum
 Steven D'Aprano ste...@remove.this.cybersource.com.au (SD) wrote:

SD If I'm reading this page correctly, Python does behave as C++ does. Or at 
SD least as Larch/C++ does:

SD http://www.cs.ucf.edu/~leavens/larchc++manual/lcpp_47.html

They call them `non-standard escape sequences' for a reason: that they
are not in standard C++.

test.cpp:
char* temp = abc\yz;

TEMP g++ -c test.cpp
test.cpp:1:1: warning: unknown escape sequence '\y'

-- 
Piet van Oostrum p...@cs.uu.nl
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: p...@vanoostrum.org
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Extracting matrix from a text file

2009-08-11 Thread Mark Lawrence

telek...@hotmail.com wrote:

Hello to all!!

I am new in python, and I am running it on Mac with Smultron editor. I
need to read a textfile that includes numbers (in a matrix form),
indexes, and strings, like this:

Marsyas-kea distance matrix for MIREX 2007 Audio Similarity Exchange
Q/R1   2   3
45
10  4.545924.36685
5.294633.85728
24.545920  3.97667
5.021514.64284
34.366853.976670
4.987434.83683
45.294635.021514.98743
0  6.04393
53.857284.642844.836836.043930

My code to get this information is:

matrix = open(dmatrix_5.txt);

while 1:
mat = matrix.readline()
if not mat:
break
pass # do something
print mat



So I just want to keep the matrix in the middle for math
computations.

0  4.545924.36685
5.294633.85728
4.545920  3.97667
5.021514.64284
4.366853.976670
4.987434.83683
5.294635.021514.98743
0  6.04393
3.857284.642844.836836.043930


I've seen and tried a lot of ways, like split or isinstance.. but
never get the wanted result does anyone have an idea, or hint?
Thank you once more for your help!

Best Regards,
Bea
I think your best bet is to read and action the responses you got to 
your original email from three days ago.  If these have got lost in the 
post simply search online, they're bound to be archived somewhere.


--
Kindest regards.

Mark Lawrence.

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


Re: Search and write to .txt file

2009-08-11 Thread Dave Angel

Piet van Oostrum wrote:

Helvin helvin...@gmail.com (H) wrote:



  

H Hi everyone,
H I am writing some python script that should find a line which contains
H '1' in the data.txt file, then be able to move a certain number of
H lines down, before replacing a line. At the moment, I am able to find
H the line '1', but when I use f.seek to move, and then rewrite, what I
H write goes to the end of the .txt file, instead of being adjusted by
H my f.seek.



  

H Do you know what way I should take?



  

H Data.txt is a file of 3 lines:
Hline1
Hline2
Hline3



  

H Code:



  

Hwith open('data.txt', 'r+') as f:
Hfirstread = f.readlines()   # Take a snapshot of initial file



  

Hf.seek(0,0)# Go back to beginning and search
Hfor line in f:
Hprint line
Hif line.find('1'):
Hprint 'line matched'
Hf.seek(1,1)   # Move one space along
Hf.write('house\n') # f.write overwrites the exact
H number of bytes.
Hbreak# leave loop once '1' is found



Mixing an iterator on the file with direct calls (seek/write) isn't
going to work. The iterator does read ahead which causes the file
position not to be what you think it is.

See:

  

with open('data.txt', 'r+') as f:


...   for line in f:
...   print line, f.tell()
... 
line1

18
line2
18
line3
18

  
In addition to the buffering involved in the read loop, trying to 
position ahead some number of lines would be rather error prone, since 
this is a text file, with varying length lines, and the \n character 
might occupy one byte on some OS, and two bytes on others (Windows).  If 
you feel you must do it in-place, then switch the file mode to binary, 
and use read(), not readline(), keeping track of your own position at 
all times.


As was already suggested by Kushal, if the file is small enough to just 
use readlines() and manipulate that list, I'd do that.  If not, I'd scan 
through the file, creating a new one, creating a new one as you go, then 
rename the new one back when finished.  Actually, I'd create a new one 
even in the first case, in case of a crash while rewriting the file.



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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Ethan Furman

David Lyon wrote:

On Mon, 10 Aug 2009 09:13:34 -0700, Ethan Furman et...@stoneleaf.us
wrote:

As someone who relies heavily on the docs I will also say that the idea 
of giving the ability to modify the official documentation to somebody 
who is /learning/ the language is, quite frankly, terrifying.  



What is more terrifying is the way feedback from newbies is handled.

Your statement implies that the only way feedback can be handled is
to throw the keys down in discust and walk away. That's primative
behaviour. And misleading, because that isn't going to happen.



Allow me to put back the sentence you unfairly snipped:
I have no issues with a seperate system, some of which have been 
suggested, but good reference documentation is crucial.  If you find 
examples lacking, there are plenty of web-sites, or even (dare I say

it?) actual hard-copy books!  ;)


To be clear, what I am advocating is that *official documentation not be 
opened up to everybody,* _especially not people who don't yet grok the 
language_.




My bookshelf currently has Learning Python, Programming 
Python, Python Cookbook, Python Programming on Win32, and Regular 
Expressions.  All great books, and not too pricey if you can get them


used.

So, what you're advocating is let things stay how they are...

Ignore feedback... tell people to freak off...




I had not addressed feedback before, but I shall do so now:  Discuss 
concern on the Python list first to make sure it is not a lack of 
understanding, then, if a legitimate issue with the docs exists, use the 
bug tracker.  If one can't be bothered to take the time to be a 
Responsible Citizen, I am not going to be bothered by lacking that one's 
comments/concerns/feed-back.


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


Re: Social problems of Python doc [was Re: Python docs disappointing]

2009-08-11 Thread rurpy
On 08/11/2009 01:47 AM, Antoine Pitrou wrote:
 rrt8396at  gmail.com  writes:
 On Aug 9, 11:02 pm, David Lyondavid.l...@preisshare.net  wrote:
 Since you're talking about documentation, which is a part of python,
 don't you think you should be discussing it on python-dev ?
 Yea, them's be a friendly bunch to noob ideas ;). Hey i got a better
 idea, lets go to the IRS and see if we can persuade them to stop
 taxing us...

 You know, the most interesting thing in this thread is certainly its title :
 « Social problems of Python doc »

 Yes, the little social problem here should be clear: if you have complaints to
 voice or improvements to suggest to the Python docs, you should do so on the
 issue tracker (*). For most topics, this is the only reasonable way to signal
 problems to the Python developers community, and so it is in most free 
 software
 / open source projects.

the *only* reasonable way?  That's clearly wrong (unless you
want to wiggle in the room provided by reasonable or most).
There is discussion on the dev list, there is discussion here.

The issue tracker is fine for many things, but the process it
provides is equivalent to peep-hole optimization.  How does one
submit a tracker issue for something like the overall organization
of the docs (for example, the mis-placement of things like data-
types in the library manual rather than the language manual)?

The big problem with the docs is poor writing (this includes
not using examples when they can help explain something more
clearly than verbiage alone).  It is understandable why this
should be so -- most programmers are good at and enjoy
programming, not writing and the python community is, say,
about 99.9% programmers.

This is why all the attempts (at least that I've noticed) are
programming focused -- build a wiki, write a new doc processing
framework, etc.  Unfortunately none of those addresses the real
problem -- the need for clear, well written, well organized
*content*.  I don't see how telling people to submit tracker
issues will solve this problem.  I can rewrite some section so
it sounds good to me, but likely it will be just as bad (perhaps
in different ways) that what is there.

The post that started this thread proposed something like paying
professional writers to improve the docs.  This may or may not
be a practical suggestion.  But the immediate response it
engendered was an auto-immune-like group response: the docs
are great already, don't complain, fix them yourself, yada, yada;
the same response that any criticism of free software produces.

It's really too bad the the python community can't seriously
discuss ways to improves the docs.  There are other possibilities
for instance the Fedora Docs project (can't say I'm impressed
by what they've produced but that doesn't mean their model
is useless).  There is a need for an approval process managed
by someone who actually understands what good technical writing
is.  And perhaps editors who can polish or work with programmers
who provide the raw technical description of some module.

Some kind of higher level more global process is the only
way I can see that the docs will be improved to any sort
or professional standard.  I don't see how issues like this
will be addressed by submitting tracker items.

Personally, I have given up on this issue.  The social factors
involved really pretty much determine that the Python docs
will never reach a very high quality -- that's just the way
it is and I've come to accept that.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Ethan Furman

Steven D'Aprano wrote:

On Mon, 10 Aug 2009 08:21:03 -0700, Douglas Alan wrote:



But you're right, it's too late to change this now.



Not really. There is a procedure for making non-backwards compatible 
changes. If you care deeply enough about this, you could agitate for 
Python 3.2 to raise a PendingDepreciation warning for unexpected escape 
sequences like \z, Python 3.3 to raise a Depreciation warning, and Python 
3.4 to treat it as an error.


It may even be possible to skip the PendingDepreciation warning and go 
straight for Depreciation warning in 3.2.





And once it's fully depreciated you have to stop writing it off on your 
taxes.  *wink*


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


Re: Extracting matrix from a text file

2009-08-11 Thread Colin J. Williams

telek...@hotmail.com wrote:

Hello to all!!

I am new in python, and I am running it on Mac with Smultron editor. I
need to read a textfile that includes numbers (in a matrix form),
indexes, and strings, like this:

Marsyas-kea distance matrix for MIREX 2007 Audio Similarity Exchange
Q/R1   2   3
45
10  4.545924.36685
5.294633.85728
24.545920  3.97667
5.021514.64284
34.366853.976670
4.987434.83683
45.294635.021514.98743
0  6.04393
53.857284.642844.836836.043930

My code to get this information is:

matrix = open(dmatrix_5.txt);

while 1:
mat = matrix.readline()
if not mat:
break
pass # do something
print mat



So I just want to keep the matrix in the middle for math
computations.

0  4.545924.36685
5.294633.85728
4.545920  3.97667
5.021514.64284
4.366853.976670
4.987434.83683
5.294635.021514.98743
0  6.04393
3.857284.642844.836836.043930


I've seen and tried a lot of ways, like split or isinstance.. but
never get the wanted result does anyone have an idea, or hint?
Thank you once more for your help!

Best Regards,
Bea


numpy provides an answer.  See the little script below:

import numpy as _n
import string as _s
a=  0   4.54592 4.36685 5.29463 3.85728  + \
  4.54592 0   3.97667 5.02151 4.64284+ \
  '4.36685 3.97667 0   4.98743 4.83683 '   + \
  '5.29463 5.02151 4.98743 0   6.04393 '   + \
  '3.85728 4.64284 4.83683 6.04393 0'

d= _n.mat(_n.reshape(_n.array(a.split(), dtype= _n.float), (5, 5)))
print repr(d)
print 'Default printoptions:', _n.get_printoptions()

for p in range(9):
  _n.set_printoptions(precision= p)
  print 'precision= ', p, '\n', d

When you run this, you'll see that there is a numpy glitch for precisions  5.

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


Profiling a Callback Function

2009-08-11 Thread Nikolaus Rath
Hello,

I am trying to profile a Python program that primarily calls a C
extension. From within the C extension, a callback Python function is
then called concurrently in several threads.

When I tried to profile this application with

  import c_extension
  def callback_fn(args):
  # Do all sorts of complicated, time consuming stuff
  pass

  def main():
  c_extension.call_me_back(callback_fn, some_random_args)

  cProfile.run('main', 'profile.dat')

I only got results for main(), but no information at all about
callback_fn.


What is the proper way to profile such an application? 


I already thought about this:

  import c_extension

  def callback_fn(args):
  # Do all sorts of complicated, time consuming stuff
  pass
  
  def callback_wrapper(args):
   def doit():
   callback_fn(args)

   cProfile.run('doit', 'profile.dat')

  c_extension.call_me_back(callback_wrapper, some_random_args)


but that probably overwrites the profiling information whenever
callback_wrapper is called, instead of accumulating them over several
calls (with different arguments).


Best,


   -Nikolaus

-- 
 »Time flies like an arrow, fruit flies like a Banana.«

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C


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


Re: dictionary help

2009-08-11 Thread Krishna Pacifici
Thanks for the help.

Actually this is part of a much larger project, but I have unfortunately 
pigeon-holed myself into needing to do these things without a whole lot of 
flexibility.

To give a specific example I have the following dictionary where I need to 
remove values that are duplicated with other values and remove values that are 
duplicates of the keys, but still retain it as a dictionary.  Each value is 
itself a class with many attributes that I need to call later on in the 
program, but I cannot have duplicates because it would mess up some estimation 
part of my model.

d =
{36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11, 31], 22: [21, 23, 
12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}

So I want a new dictionary that would get rid of the duplicate values of 21, 
22, 36 and 20 and give me back a dictionary that looked like this:

new_d=
{36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 12, 
32], 26: [25, 27, 16], 30: [40]}

I understand that a dictionary may not be the best approach, but like I said I 
have sort of pigeon-holed myself by the way that I am simulating my data and 
the estimation model that I am using.  Any suggestions or comments about the 
above problem would be greatly appreciated.

Thanks again,
Krishna



 Dave Angel da...@ieee.org 08/11/09 7:38 AM 
Krishna Pacifici wrote:
 Hi,
 kind of a newbie here, but I have two questions that are probably pretty 
 simple.

 1.  I need to get rid of duplicate values that are associated with different 
 keys in a dictionary.  For example I have the following code.
 s={}
 s[0]=[10,2,3]
  s[10]=[22,23,24]
  s[20]=[45,5]
 s[30]=[2,4]
 s[40]=[6,7,8]

 Now I want to be able to loop through the primary keys and get rid of 
 duplicates (both in keys and values) so that I would have either a new 
 dictionary or the same dictionary but with the following values:

 s[0]=[3]
  s[10]=[22,23,24]
  s[20]=[45,5]
 s[30]=[2,4]
 s[40]=[6,7,8]

 It doesn't matter which value gets removed as long as there is only one 
 remaining, so in this example it doesn't matter that 2 got removed from s[0] 
 or from s[30] as long as there is only one 2 in the dictionary.

 2.  I need to be able to loop over the values in the dictionary when there 
 are multiple values assigned to each key like above and assign new values to 
 those values.  Taking the above example I would want to assign a new value so 
 that when you called s[0] it would equal [3,4] say if 4 was the new value.  I 
 think this should be as simple as adding a value, but I kept on having 
 difficulty.

 Any suggestions would be greatly appreciated.

 Thank you very much,
 Krishna


   
Sounds like homework.  If it was for an unconstrained project, I'd 
design a different data structure, one that directly enforced the data 
constraints.  So far, I can't imagine a useful reason for this 
particular set of constraints.

Let's break the problems down.

1a)   Do you know how to write a loop that visits all the keys of a 
dictionary?
1b)  Do you know how to safely check if a particular key exists? 
e.g.  if   key in s:
1c)  Do you know how to collect a set of values, so that when a 
duplicate is found, it can be recognized as such?
1d) Do you know how to remove an item from a list?

2a)  Like 1a)
2b) Do you know how to append a value to the end of a list?  Is s[key] a 
list?


DaveA


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


Re: Search and write to .txt file

2009-08-11 Thread Simon Forman
On Aug 11, 7:22 am, Helvin helvin...@gmail.com wrote:
 Hi everyone,

 I am writing some python script that should find a line which contains
 '1' in the data.txt file, then be able to move a certain number of
 lines down, before replacing a line. At the moment, I am able to find
 the line '1', but when I use f.seek to move, and then rewrite, what I
 write goes to the end of the .txt file, instead of being adjusted by
 my f.seek.

 Do you know what way I should take?

 Data.txt is a file of 3 lines:
    line1
    line2
    line3

 Code:

    with open('data.txt', 'r+') as f:
        firstread = f.readlines()   # Take a snapshot of initial file

        f.seek(0,0)    # Go back to beginning and search
        for line in f:
            print line
            if line.find('1'):
                print 'line matched'
                f.seek(1,1)       # Move one space along
                f.write('house\n')     # f.write overwrites the exact
 number of bytes.
                break                    # leave loop once '1' is found

        f.seek(0,0)              # Go back to beginning, and read
 data.txt again
        lastread = f.readlines()

        print 'firstread is', firstread
        print 'lastread is', lastread

 This shouldn't be too difficult, but I don't know how.  
 Help appreciated!

There's a bug in this line:

if line.find('1'):

the string find() method returns an integer, which will be -1 if the
substring is not found. In python -1 is treated as True (only 0 is
False) so your if statement will always succeed unless '1' is the
first character on the line.

HTH,
~Simon


P.S. you can use the help() command in the python interpreter to get
docs on most things:

 help(str.find)

Help on method_descriptor:

find(...)
S.find(sub [,start [,end]]) - int

Return the lowest index in S where substring sub is found,
such that sub is contained within s[start:end].  Optional
arguments start and end are interpreted as in slice notation.

Return -1 on failure.

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


Re: dictionary help

2009-08-11 Thread MRAB

Krishna Pacifici wrote:

Thanks for the help.

Actually this is part of a much larger project, but I have unfortunately 
pigeon-holed myself into needing to do these things without a whole lot 
of flexibility.


To give a specific example I have the following dictionary where I need 
to remove values that are duplicated with other values and remove values 
that are duplicates of the keys, but still retain it as a dictionary.  
Each value is itself a class with many attributes that I need to call 
later on in the program, but I cannot have duplicates because it would 
mess up some estimation part of my model.


d =
{36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11, 31], 22: 
[21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}


So I want a new dictionary that would get rid of the duplicate values of 
21, 22, 36 and 20 and give me back a dictionary that looked like this:


new_d=
{36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 
12, 32], 26: [25, 27, 16], 30: [40]}


I understand that a dictionary may not be the best approach, but like I 
said I have sort of pigeon-holed myself by the way that I am simulating 
my data and the estimation model that I am using.  Any suggestions or 
comments about the above problem would be greatly appreciated.



 d = {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11,
31], 22: [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}
 new_d = {}
 seen = set(d.keys())
 for k, v in d.items():
... new_d[k] = [x for x in v if x not in seen]
... seen |= set(new_d[k])
...
 new_d
{36: [35, 37, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 12,
32], 26: [25, 27, 16], 30: [40]}

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


Re: add fields in a existing dbf

2009-08-11 Thread Ethan Furman

Alonso Luján Torres Taño wrote:

Hi!

I'm trying to modify a dbf adding a new field in a python script, but I 
can't.


Just I can add a field in new dbf created in the same script.

I tryed with:

db = dbf.Dbf(../filesource.dbf,new =False, readOnly=False)
...
db.addField((PESO,N,32,8))

and return error:

Traceback (most recent call last):
  File script.py, line 34, in module
db.addField((PESO,N,32,8))
  File /usr/lib/python2.5/site-packages/dbfpy/dbf.py, line 229, in
addField
structure can't be changed)
TypeError: ('At least one record was added, ', structure can't be
changed)


I have not idea of what error I make.

If someone can help me, I'll so gratefull.

Thanks!



I am not familiar with dbfpy, but the dbf files I am familiar with do 
not support 32 digit Numerics.  Did you mean 12?


At any rate, if you use http://groups.google.com/group/python-dbase

the commands would be:

import dbf
db = dbf.Table(../filesource.dbf)
db.add_fields(peso N(12.8))
db.close()

and you'll have your field -- assuming, of course, you have write 
priveleges, etc.


Hope this helps!

~Ethan~

Disclaimer:  I am the author of python-dbase.
--
http://mail.python.org/mailman/listinfo/python-list


Re: dictionary help

2009-08-11 Thread Simon Forman
On Aug 11, 11:51 am, MRAB pyt...@mrabarnett.plus.com wrote:
 Krishna Pacifici wrote:
  Thanks for the help.

  Actually this is part of a much larger project, but I have unfortunately
  pigeon-holed myself into needing to do these things without a whole lot
  of flexibility.

  To give a specific example I have the following dictionary where I need
  to remove values that are duplicated with other values and remove values
  that are duplicates of the keys, but still retain it as a dictionary.  
  Each value is itself a class with many attributes that I need to call
  later on in the program, but I cannot have duplicates because it would
  mess up some estimation part of my model.

  d =
  {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11, 31], 22:
  [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}

  So I want a new dictionary that would get rid of the duplicate values of
  21, 22, 36 and 20 and give me back a dictionary that looked like this:

  new_d=
  {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23,
  12, 32], 26: [25, 27, 16], 30: [40]}

  I understand that a dictionary may not be the best approach, but like I
  said I have sort of pigeon-holed myself by the way that I am simulating
  my data and the estimation model that I am using.  Any suggestions or
  comments about the above problem would be greatly appreciated.

   d = {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11,
 31], 22: [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}
   new_d = {}
   seen = set(d.keys())
   for k, v in d.items():
 ...     new_d[k] = [x for x in v if x not in seen]
 ...     seen |= set(new_d[k])
 ...
   new_d
 {36: [35, 37, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 12,
 32], 26: [25, 27, 16], 30: [40]}

Ha ha, MRAB beat me to it:

d = {
36: [35, 37, 26, 46],
75: [74, 76, 65, 85],
21: [20, 22, 11, 31],
22: [21, 23, 12, 32],
26: [25, 27, 16, 36],
30: [20, 31, 40],
}


new_d = { # Given, and apparently incorrect.
36: [35, 37, 26, 46], # 26 is a key and should be gone.
75: [74, 76, 65, 85],
21: [20, 11, 31],
22: [23, 12, 32],
26: [25, 27, 16],
30: [40],
}


expected = {
36: [35, 37, 46],
75: [74, 76, 65, 85],
21: [20, 11, 31],
22: [23, 12, 32],
26: [25, 27, 16],
30: [40],
}


def removeDuplicates(D):
'''
Remove values that are duplicated with other values
and remove values that are duplicates of the keys.

Assumes that values in the lists are already unique within
each list.  I.e. duplicates are only in the keys or in other
lists.

This function works in place on D, so it doesn't return
anything.  Caller must keep a reference to D.
'''

seen = set(D) # Get a set of the keys.

for key, values_list in D.iteritems():

# Filter out values that have already been seen.
filtered_values = [
value
for value in values_list
if not value in seen
]

# Remember newly seen values.
seen.update(filtered_values)

D[key] = filtered_values


## Example:
##
## d == expected
##False
## removeDuplicates(d)
## d == expected
##True
-- 
http://mail.python.org/mailman/listinfo/python-list


better way?

2009-08-11 Thread someone
Hello,

I'd like to make insert into db if record not exist otherwise update.
to save typing list of columns in both statements I do following

query = SELECT location FROM table WHERE location = %s AND id = %s;
result = self._getResult(db, query, [location,id])

fields = ['id', 'location', 'wl', 'modified', 'counter', 'name']
if result:
t = map(lambda s: s + ' = %s', fields)
temp = , .join(t)
query = UPDATE table SET  + temp +  WHERE location = %s AND id
= %s;
self._execQuery(db, query, [id, location, self.wl, 'NOW()', 1,
name, location, id])
else:
f = , .join(fields)
query = 
INSERT INTO table
( + f + )
VALUES
(%s,%s,%s,NOW()- interval '1 day', 1, %s)

self._execQuery(db, query, [id, location, self.wl, name])



is there better or more readable way to do it?

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


GOZERBOT 0.9.1 released

2009-08-11 Thread Bart Thate
here it is .. GOZERBOT 0.9.1 !!

Main change this time is the distribution method, we now provide a
tar.gz with all the dependencies included. This means that you can run
the bot locally without any root required. Python 2.5 or higher
needed, see http://gozerbot.org

Enjoy !

about GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and
jabber conference rooms. its mainly used to serve rss feeds and to
have
custom commands made for the channel. More then just a channel bot
GOZERBOT
aims to provide a platform for the user to program his own bot and
make it
into something thats usefull. This is done with a plugin structure
that
makes it easy to program your own. But GOZERBOT comes with some
batteries
included, there are now over 100 plugins already written and ready for
use.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Is there any package implanation the following arithmetics?

2009-08-11 Thread Emile van Sebille

On 8/11/2009 1:49 AM zhongshq said...

Hi,

I wonder if there has any package can check whether two rectangles are
overlap, is a dot inside or outside a polygon, etc.


PythonCad at http://sourceforge.net/projects/pythoncad/ has 
intersections built in.


Emile

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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread r
On Aug 11, 1:47 am, Steven D'Aprano
ste...@remove.this.cybersource.com.au wrote:
 On Mon, 10 Aug 2009 20:05:00 -0400, David Lyon wrote:
  Ignore feedback... tell people to freak off...

 Only useless feedback.

And who decides what is useless and what isn't Steven?. You?, alex23?,
Bruno?, Paul? Carl? Who makes these decisions and do *they* make them
without pride or prejudice? Do they approve an idea by someone they
hate because it it good, or do they toss it in the trash just to spite
them, because they have the power to do so? As we can see much
resistace exists against even the ideas of change. How will change
ever take place with such defiance!

I am sorry but i feel many here would not judge fairly based on the
merits of an idea without allowing buddy-systems or pecking-orders
to get in the way. Sad really, only Python suffers in the end.

Some say the tutorial is not meant for non-programmers, but for
programmers with no Python experience. So! How does that justify
obstruction of the tut? Why not present the same information in a way
both can easily understand? I thought Pythons original vision was to
allow easy entry into programming for anybody -- experienced or not!
Anybody remember CP4E?

Is this an ivory tower thing? i dunno, but it seems to be...???

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


Re: dictionary help

2009-08-11 Thread Krishna Pacifici
Wow, thanks MRAB and Simon, you guys are good.

I guess I will go ahead and ask the next question that has also stumped me for 
awhile now.

So basically I need to loop through the values in the new dictionary and append 
attributes of a class object.  Each of the values (and keys) represent a block 
in a grid with a specific location (e.g. 35 is the block in row 3 col 5) and 
each block is an object with several attributes associated with it.  I want to 
call that block and append two separate attributes to the dictionary within 
that same key.

So again it would look something like this:

block 35 has 2 attributes, say a and b, a=2, b=5 
block 37 has a=1, b=3
block 46 has a=3, b=8

the two attributes come from two different definitions within the class 
statement, 
def detections
...
return a

def abundance
...
return b

so I would want to append to key 36 those two attributes for each block so that 
the resulting dictionary item would look like this:
 a   b   
{36:[35,37,46], [2,1,3], [5,3,8] ...}

Any help with this would be greatly appreciated.  And thank you so much for all 
of your help thus far, I'm still pretty new to python and am enjoying all of 
the flexibility associated with a scripting and programming language.

Thanks again,
Krishna

 Simon Forman sajmik...@gmail.com 08/11/09 12:15 PM 
On Aug 11, 11:51 am, MRAB pyt...@mrabarnett.plus.com wrote:
 Krishna Pacifici wrote:
  Thanks for the help.

  Actually this is part of a much larger project, but I have unfortunately
  pigeon-holed myself into needing to do these things without a whole lot
  of flexibility.

  To give a specific example I have the following dictionary where I need
  to remove values that are duplicated with other values and remove values
  that are duplicates of the keys, but still retain it as a dictionary.  
  Each value is itself a class with many attributes that I need to call
  later on in the program, but I cannot have duplicates because it would
  mess up some estimation part of my model.

  d =
  {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11, 31], 22:
  [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}

  So I want a new dictionary that would get rid of the duplicate values of
  21, 22, 36 and 20 and give me back a dictionary that looked like this:

  new_d=
  {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23,
  12, 32], 26: [25, 27, 16], 30: [40]}

  I understand that a dictionary may not be the best approach, but like I
  said I have sort of pigeon-holed myself by the way that I am simulating
  my data and the estimation model that I am using.  Any suggestions or
  comments about the above problem would be greatly appreciated.

   d = {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11,
 31], 22: [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]}
   new_d = {}
   seen = set(d.keys())
   for k, v in d.items():
 ... new_d[k] = [x for x in v if x not in seen]
 ... seen |= set(new_d[k])
 ...
   new_d
 {36: [35, 37, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 12,
 32], 26: [25, 27, 16], 30: [40]}

Ha ha, MRAB beat me to it:

d = {
36: [35, 37, 26, 46],
75: [74, 76, 65, 85],
21: [20, 22, 11, 31],
22: [21, 23, 12, 32],
26: [25, 27, 16, 36],
30: [20, 31, 40],
}


new_d = { # Given, and apparently incorrect.
36: [35, 37, 26, 46], # 26 is a key and should be gone.
75: [74, 76, 65, 85],
21: [20, 11, 31],
22: [23, 12, 32],
26: [25, 27, 16],
30: [40],
}


expected = {
36: [35, 37, 46],
75: [74, 76, 65, 85],
21: [20, 11, 31],
22: [23, 12, 32],
26: [25, 27, 16],
30: [40],
}


def removeDuplicates(D):
'''
Remove values that are duplicated with other values
and remove values that are duplicates of the keys.

Assumes that values in the lists are already unique within
each list.  I.e. duplicates are only in the keys or in other
lists.

This function works in place on D, so it doesn't return
anything.  Caller must keep a reference to D.
'''

seen = set(D) # Get a set of the keys.

for key, values_list in D.iteritems():

# Filter out values that have already been seen.
filtered_values = [
value
for value in values_list
if not value in seen
]

# Remember newly seen values.
seen.update(filtered_values)

D[key] = filtered_values


## Example:
##
## d == expected
##False
## removeDuplicates(d)
## d == expected
##True
-- 
http://mail.python.org/mailman/listinfo/python-list

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


Any built-in function for smallest positive floating point number?

2009-08-11 Thread Maria Liukis

Hello everybody,

Is somebody aware of built-in Python's function that would return a  
value for smallest positive double precision floating point number  
(analogous to 'realmin' in Matlab). Python has built-in sys.maxint  
but I could not find anything for float.


Any help would be greatly appreciated.

Thanks,
Masha

liu...@usc.edu



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


Scraping Wikipedia with Python

2009-08-11 Thread Dotan Cohen
I plan on making a geography-learning Anki [1] deck, and Wikipedia has
the information that I need in nicely formatted tables on the side of
each country's page. Has someone already invented a wheel to parse and
store that data (scrape)? It is probably not difficult to code, and
within the Wikipedia license, but if that wheel has already been
invented then I don't want to redo it. I tried googling for a
Wikipedia-specific solution but found none, is there a general purpose
solution that I could use?

Note that I am a regular Wikipedia contributor and plan on staying
within the realm of Wikipedia's rules.


[1] http://ichi2.net/anki/

-- 
Dotan Cohen

http://what-is-what.com
http://gibberish.co.il
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Mark Lawrence

r wrote:

On Aug 11, 1:47 am, Steven D'Aprano
ste...@remove.this.cybersource.com.au wrote:

On Mon, 10 Aug 2009 20:05:00 -0400, David Lyon wrote:

Ignore feedback... tell people to freak off...

Only useless feedback.



[snip]


I am sorry but i feel many here would not judge fairly based on the
merits of an idea without allowing buddy-systems or pecking-orders
to get in the way. Sad really, only Python suffers in the end.
I disagree with these comments.  I do not believe that Python has a 
buddy system or a pecking order getting in the way of anything.  As you 
are making thsse accusations, either provide hard evidence that can 
persuade me that your perspective on this is correct or shut up.



[snip]




--
Kindest regards.

Mark Lawrence.

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


Re: Is feedparser deprecated?

2009-08-11 Thread John Nagle

Gabriel Genellina wrote:

En Fri, 07 Aug 2009 16:07:48 -0300, John Nagle na...@animats.com
escribió:


   Feedparser requires SGMLlib, which has been removed from Python 3.0.
Feedparser hasn't been updated since 2007. Does this mean Feedparser
is dead?


Since we have generic and easy of use XML parsers like ElementTree and
lxml,  specialized rss parsers like feedparser are not so much required.
I've used ElementTree when I had to parse an rss feed in the past (not so
many times).


   Take a look at what Feedparser has to do to deal with real-world RSS
feeds.  There are several hundred lines of code just to figure out the
source encoding.  There's gzip support, Atom support, base 64 encoding
support... Then there's the RSS polling protocol, which also requires
some support.  A basic XML parser only does part of the job.

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


Re: Any built-in function for smallest positive floating point number?

2009-08-11 Thread Maria Liukis

A bit more of googling gave me an answer:

 import numpy as np
 np.finfo(np.double).tiny
array(2.2250738585072014e-308)


Thanks,
Masha

liu...@usc.edu



On Aug 11, 2009, at 10:29 AM, Maria Liukis wrote:


Hello everybody,

Is somebody aware of built-in Python's function that would return a  
value for smallest positive double precision floating point number  
(analogous to 'realmin' in Matlab). Python has built-in sys.maxint  
but I could not find anything for float.


Any help would be greatly appreciated.

Thanks,
Masha

liu...@usc.edu



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


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


Re: Social problems of Python doc [was Re: Python docs disappointing]

2009-08-11 Thread Steven D'Aprano
On Tue, 11 Aug 2009 07:57:28 -0700, rurpy wrote:

 On 08/11/2009 01:47 AM, Antoine Pitrou wrote:
 rrt8396at  gmail.com  writes:
 On Aug 9, 11:02 pm, David Lyondavid.l...@preisshare.net  wrote:
 Since you're talking about documentation, which is a part of python,
 don't you think you should be discussing it on python-dev ?
 Yea, them's be a friendly bunch to noob ideas ;). Hey i got a better
 idea, lets go to the IRS and see if we can persuade them to stop
 taxing us...

 You know, the most interesting thing in this thread is certainly its
 title : « Social problems of Python doc »

 Yes, the little social problem here should be clear: if you have
 complaints to voice or improvements to suggest to the Python docs, you
 should do so on the issue tracker (*). For most topics, this is the
 only reasonable way to signal problems to the Python developers
 community, and so it is in most free software / open source projects.
 
 the *only* reasonable way?  That's clearly wrong (unless you want to
 wiggle in the room provided by reasonable or most). There is
 discussion on the dev list, there is discussion here.

Discussion here is spitting into the wind. The noise-to-signal ratio is 
high enough that the people who can fix an issue aren't likely to see it 
here. Unless somebody raises a report in the bug tracker, it will go 
nowhere, fast.

The same happens for issues on the dev list: I can't count how many times 
people there have said put it in the bug tracker, or it will be 
forgotten.


 The issue tracker is fine for many things, but the process it provides
 is equivalent to peep-hole optimization.  How does one submit a tracker
 issue for something like the overall organization of the docs (for
 example, the mis-placement of things like data- types in the library
 manual rather than the language manual)?

The same way you would submit a tracker issue for anything.

Documentation bug: Data types are misplaced in the library manual 
instead of the language manual.

Suggested alternative: move page docs.python.org/xyz.html to abc.html



 The big problem with the docs is poor writing (this includes not using
 examples when they can help explain something more clearly than verbiage
 alone).

There's a difference between insufficiently good writing and poor 
writing: think of grading the docs, where 100 is perfect in every way 
and -100 is perfectly awful in every possible way. (It's not a linear 
scale.) A score of 0 is mediocre, just barely acceptable. Poor writing 
has a negative score. In my opinion, Python's docs are perhaps a 40 or 
50, significantly better than most technical docs I've seen.


[...]
  I can rewrite some section so it sounds good to me, but likely it will
 be just as bad (perhaps in different ways) that what is there.

Bug reports are valuable even if you don't have the skills to provide a 
patch. Bug reports with patches are even more valuable, but that doesn't 
mean that the failure to provide a patch *necessarily* dooms your report 
to oblivion.


 The post that started this thread proposed something like paying
 professional writers to improve the docs.  This may or may not be a
 practical suggestion.  But the immediate response it engendered was an
 auto-immune-like group response: the docs are great already, don't
 complain, fix them yourself, yada, yada; the same response that any
 criticism of free software produces.

I haven't seen any such knee-jerk responses. What I've seen is a set of 
sensible, *practical* advice:

- complaining on its own, especially here, is pointless;

- Python is a community effort, if you see something that needs fixing, 
do something about it;

- many of us DON'T want arbitrary people correcting the official docs 
without oversight, and believe that would be a disaster (arbitrary people 
aren't give check-in privileges to add code to Python's standard library, 
nor should they be given check-in privileges to add docs);

- if people are keen on a Python wiki, then by all means publish one, 
just don't expect the Python dev team to build and manage it for you;

- bug reports and patches to the docs are ALWAYS welcome, even if they 
are rejected;

- if you don't have the skills to fix a bug (including doc bugs), an 
alternative is to pay somebody else to do so instead.

 
 It's really too bad the the python community can't seriously discuss
 ways to improves the docs.  There are other possibilities for instance
 the Fedora Docs project (can't say I'm impressed by what they've
 produced but that doesn't mean their model is useless).  There is a need
 for an approval process managed by someone who actually understands what
 good technical writing is.  And perhaps editors who can polish or work
 with programmers who provide the raw technical description of some
 module.

Yes, you're correct. 

[sarcasm] Now that we've agreed on what needs to be done, the problem is 
solved!!! [end sarcasm]



 Some kind of higher level more global process is the only way I can 

Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Steven D'Aprano
On Tue, 11 Aug 2009 15:50:01 +0200, Piet van Oostrum wrote:

 Steven D'Aprano ste...@remove.this.cybersource.com.au (SD) wrote:
 
SD If I'm reading this page correctly, Python does behave as C++ does.
Or at SD least as Larch/C++ does:
 
SD http://www.cs.ucf.edu/~leavens/larchc++manual/lcpp_47.html
 
 They call them `non-standard escape sequences' for a reason: that they
 are not in standard C++.
 
 test.cpp:
 char* temp = abc\yz;
 
 TEMP g++ -c test.cpp
 test.cpp:1:1: warning: unknown escape sequence '\y'


Isn't that a warning, not a fatal error? So what does temp contain?



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


Networked Broadcast Messaging

2009-08-11 Thread squishywaf...@gmail.com
I'm not exactly sure what the term for this would be, but I was
wondering if there were any Python packages that supported some kind
of ad-hoc message broadcasting. What I'd like to do is something like
this:

* On a number of workhorse machines, a process listens for network
messages from our broadcast service. It subscribes to a certain sub-
set of them and will only respond to the messaging events that it is
subscribed to.
* Any machine can broadcast a message out to the network of machines
without specifying an IP address.
* Machines can come and go. Since messages are not directly sent to a
specific IP address from our Python script, the messages are simply
broadcasted to those who are there to listen. If nobody is subscribed
to the message type being sent, nothing happens.

I know XML-RPC and other friends are an option, but I'm looking for
something that doesn't require managing a set of IP addresses or
hostnames. I'm not sure what to Google for such a package/module, any
direction would be greatly appreciated.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: looping through values in a dictionary and appending to a list

2009-08-11 Thread Krishna Pacifici
Nevermind,
got it.

Sorry.

 Krishna Pacifici 08/11/09 2:12 PM 
Hi,
I want to append the values of a dictionary to a list.  I have a dictionary 
sec_dict_clean and I want to append the values to a list, but am having a hard 
time looping through the values in the dictionary.

I have tried something like this:
lista=[]
for i in sec_dict_clean.values():
for j in sec_dict_clean.values()[i]:
lista.append(sec_dict_clean.values()[i])

But I keep on getting an error:
TypeError: list indices must be integers

Any ideas on how to loop through values in a dictionary?

Thanks,
Krishna
pacifi...@warnell.uga.edu/pacifi...@warnell.uga.edu
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Scraping Wikipedia with Python

2009-08-11 Thread John Nagle

Dotan Cohen wrote:

I plan on making a geography-learning Anki [1] deck, and Wikipedia has
the information that I need in nicely formatted tables on the side of
each country's page. Has someone already invented a wheel to parse and
store that data (scrape)? 


Wikipedia has an API for computer access.  See

http://www.mediawiki.org/wiki/API

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


Re: Scraping Wikipedia with Python

2009-08-11 Thread Dotan Cohen
    Wikipedia has an API for computer access.  See

        http://www.mediawiki.org/wiki/API


Yes, I am aware of this as well. Does anyone know of a python class
for easily interacting with it, or do I need to roll my own.

-- 
Dotan Cohen

http://what-is-what.com
http://gibberish.co.il
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Networked Broadcast Messaging

2009-08-11 Thread gregarican
On Aug 11, 2:14 pm, squishywaf...@gmail.com
squishywaf...@gmail.com wrote:
 I'm not exactly sure what the term for this would be, but I was
 wondering if there were any Python packages that supported some kind
 of ad-hoc message broadcasting. What I'd like to do is something like
 this:

 * On a number of workhorse machines, a process listens for network
 messages from our broadcast service. It subscribes to a certain sub-
 set of them and will only respond to the messaging events that it is
 subscribed to.
 * Any machine can broadcast a message out to the network of machines
 without specifying an IP address.
 * Machines can come and go. Since messages are not directly sent to a
 specific IP address from our Python script, the messages are simply
 broadcasted to those who are there to listen. If nobody is subscribed
 to the message type being sent, nothing happens.

 I know XML-RPC and other friends are an option, but I'm looking for
 something that doesn't require managing a set of IP addresses or
 hostnames. I'm not sure what to Google for such a package/module, any
 direction would be greatly appreciated.

Offhand I'd suggest binding a specific UDP port on the listening
workstations. Then the broadcasting workstation(s) could just pull a
standard list of IP's based on its own subnet. Then there'd be no hard-
coded machine names or IP addresses to manage. Just send the message
to all hosts on the same subnet as the broadcaster(s). Plus the UDP
connection would be stateless and not care if the receivers actually
got the message or not...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: better way?

2009-08-11 Thread Kushal Kumaran
On Tue, Aug 11, 2009 at 10:03 PM, someonepetshm...@googlemail.com wrote:
 Hello,

 I'd like to make insert into db if record not exist otherwise update.
 to save typing list of columns in both statements I do following

 snip


 is there better or more readable way to do it?


Well, mysql, in particular, offers an on duplicate key update clause
that you can take a look at.  Don't know about about other databases.

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


Re: Social problems of Python doc [was Re: Python docs disappointing]

2009-08-11 Thread Paul Rubin
Steven D'Aprano st...@remove-this-cybersource.com.au writes:
 - if people are keen on a Python wiki, then by all means publish one, 
 just don't expect the Python dev team to build and manage it for you;

There are already some nice ones at:

   http://en.wikibooks.org/wiki/Python
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Raymond Hettinger
[Paul Rubin]
 I think the Python tutorial is aimed at users who are newbies to
 Python but not newbies to programming.  Writing a tutorial for total
 newbies is a completely different problem, that would result in a much
 different document that's less useful to the existing tutorial's
 intended audience.

There is more than one right answer to what is the best tutorial
for different people.  The www.python.org website lists a number
of tutorials.  Here is the page specifically marked for those
who are new to programming:

 http://wiki.python.org/moin/BeginnersGuide


Raymond



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


Re: better way?

2009-08-11 Thread Pet
On 11 Aug., 20:39, Kushal Kumaran kushal.kumaran+pyt...@gmail.com
wrote:
 On Tue, Aug 11, 2009 at 10:03 PM, someonepetshm...@googlemail.com wrote:
  Hello,

  I'd like to make insert into db if record not exist otherwise update.
  to save typing list of columns in both statements I do following

  snip

  is there better or more readable way to do it?

 Well, mysql, in particular, offers an on duplicate key update clause
 that you can take a look at.  Don't know about about other databases.

 --
 kushal

Oh, forgotten to mention. It's PostGres
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Paul Rubin
r rt8...@gmail.com writes:
 Some say the tutorial is not meant for non-programmers, but for
 programmers with no Python experience. So! How does that justify
 obstruction of the tut? Why not present the same information in a way
 both can easily understand? 

I agree that a tutorial for non-programmers would be useful, but it's
better to have it as a separate document.  The existing tutorial helps
experienced programmers get started with Python very quickly, by
checking off familiar features from other languages and saying how
Python implements them.  Someone familiar with (say) Java or C++ can
read it in a few minutes and start contributing to a Python project.
Pitching it to complete beginners would require covering a lot of
ground that is already well known to someone who programs in other
languages, and would slow it down too much. 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Scraping Wikipedia with Python

2009-08-11 Thread David C Ullrich
On Tue, 11 Aug 2009 21:29:40 +0300, Dotan Cohen wrote:

    Wikipedia has an API for computer access.  See

        http://www.mediawiki.org/wiki/API


 Yes, I am aware of this as well. Does anyone know of a python class for
 easily interacting with it, or do I need to roll my own.

Try reading a little there! Starting there I went to

http://en.wikipedia.org/wiki/Wikipedia:Creating_a_bot

where I found a section on existing bots, comments on how the scraping
is not what you want, and even a Python section with a link to something 
labelled  PyWikipediaBot...




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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Paul Rubin
Raymond Hettinger pyt...@rcn.com writes:
 Here is the page specifically marked for those who are new to programming:
  http://wiki.python.org/moin/BeginnersGuide

Oh cool, I didn't know about that one.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread max bianco
On Thu, Aug 6, 2009 at 2:36 PM, Kee Netheryk...@kagi.com wrote:
 As someone trying to learn the language I want to say that the tone on this
 list towards people who are trying to learn Python  feels like it has become
 anti-newbies.

 Learning a new language is difficult enough without seeing other newbies
 getting shamed for not knowing everything there is to know about Python
 before asking their questions.

Well I have to say your right about the tone but using google before
you ask is not an unreasonable expectation. I have of course broken
this golden rule myself on mailing lists myself , however a response
like use google is totally acceptable to me.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: for key, value in dict.func() - how to get? (which func)

2009-08-11 Thread Rami Chowdhury

Hi Dmitrey,

I think what you're looking for is myDict.items(), or myDict.iteritems().

Cheers,
Rami

On Tue, 11 Aug 2009 12:15:13 -0700, dmitrey dmitrey.kros...@scipy.org  
wrote:



hi all,
which method should I use to get iterator over (key, value) pairs for
Python dict, Python v 2.6 and above?

Of course I could use

for key in myDict.keys():
value = myDict.values()
# do something with the pair key, value

but searching each time for the value take some cputime that is
serious for the task involved

IIRC in python 2.5 I have something like keyvalues(), but I don't see
something like that in current dir(myDict).

Thank you in advance, D.




--
Rami Chowdhury
Never attribute to malice that which can be attributed to stupidity --  
Hanlon's Razor

408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Programming by Contract

2009-08-11 Thread Ethan Furman

Ethan Furman wrote:

Greetings!

I have seen posts about the assert statement and PbC (or maybe it was 
DbC), and I just took a very brief look at pycontract 
(http://www.wayforward.net/pycontract/) and now I have at least one 
question:  Is this basically another way of thinking about unit testing, 
or is the idea of PbC more along the lines of *always* checking the 
input/output of functions to ensure they are correct?  (*Contstant 
vigilance!* as Prof Moody would say ;)


I know asserts can be turned off, so they obviously won't work for the 
latter case, and having seen the sample of pycontract it seems it only 
does its thing during debugging.


So is Design (Programming) by Contract a fancy way of saying Document 
your inputs/outputs! or is there more to it?


~Ethan~


Hmmm...

Well, from the (apparently) complete lack of interest, I shall take away 
the (better?) documentation ideas and unit testing ideas, and not worry 
about the rest.  :)


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


Re: for key, value in dict.func() - how to get? (which func)

2009-08-11 Thread dmitrey
Yes, thank you, items() is the correct approach, on the other hand I
have already get rid of the cycle.
Regards, D.

On Aug 11, 10:26 pm, Rami Chowdhury rami.chowdh...@gmail.com
wrote:
 Hi Dmitrey,

 I think what you're looking for is myDict.items(), or myDict.iteritems().

 Cheers,
 Rami

 On Tue, 11 Aug 2009 12:15:13 -0700, dmitrey dmitrey.kros...@scipy.org  
 wrote:



  hi all,
  which method should I use to get iterator over (key, value) pairs for
  Python dict, Python v 2.6 and above?

  Of course I could use

  for key in myDict.keys():
      value = myDict.values()
      # do something with the pair key, value

  but searching each time for the value take some cputime that is
  serious for the task involved

  IIRC in python 2.5 I have something like keyvalues(), but I don't see
  something like that in current dir(myDict).

  Thank you in advance, D.

 --
 Rami Chowdhury
 Never attribute to malice that which can be attributed to stupidity --  
 Hanlon's Razor
 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)

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


Re: better way?

2009-08-11 Thread Pet
On 11 Aug., 21:23, Rami Chowdhury rami.chowdh...@gmail.com wrote:
 IIRC Postgres has had ON DUPLICATE KEY UPDATE functionality longer than  
 MySQL...


Ok, I've completely failed here :)

Thanks, man





 On Tue, 11 Aug 2009 11:45:50 -0700, Pet petshm...@googlemail.com wrote:
  On 11 Aug., 20:39, Kushal Kumaran kushal.kumaran+pyt...@gmail.com
  wrote:
  On Tue, Aug 11, 2009 at 10:03 PM, someonepetshm...@googlemail.com  
  wrote:
   Hello,

   I'd like to make insert into db if record not exist otherwise update.
   to save typing list of columns in both statements I do following

   snip

   is there better or more readable way to do it?

  Well, mysql, in particular, offers an on duplicate key update clause
  that you can take a look at.  Don't know about about other databases.

  --
  kushal

  Oh, forgotten to mention. It's PostGres

 --
 Rami Chowdhury
 Never attribute to malice that which can be attributed to stupidity --  
 Hanlon's Razor
 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)

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


Re: Scraping Wikipedia with Python

2009-08-11 Thread Brian
On Tue, Aug 11, 2009 at 12:29 PM, Dotan Cohen dotanco...@gmail.com wrote:

 Wikipedia has an API for computer access.  See
 
 http://www.mediawiki.org/wiki/API
 

 Yes, I am aware of this as well. Does anyone know of a python class
 for easily interacting with it, or do I need to roll my own.

 --
 Dotan Cohen


https://mwclient.svn.sourceforge.net/svnroot/mwclient/trunk/mwclient/
-- 
http://mail.python.org/mailman/listinfo/python-list


adding multiple new values to the same key in a dictionary

2009-08-11 Thread Krishna Pacifici
Hi,
I want to be able to add multiple new values to a key in a dictionary.

I have tried the following:

sec_dict_clean=
{88: [87, 89, 78, 98], 58: [57, 59, 48, 68], 69: [79], 95: [94, 96, 85]}

for i in range(len(sec_dict_clean.values())):
for j in range(len(sec_dict_clean.values()[i])):

sec_dict_clean.setdefault(key,[]).append(blocks[sec_dict_clean.values()[i][j]].abundance)

where blocks[...].abundance gives me a single value from an object,

but this gives me the following:

sec_dict_clean=
{88: [87, 89, 78, 98], 58: [57, 59, 48, 68], 69: [79], 95: [94, 96, 85, 4, 12, 
11, 6, 9, 12, 11, 7, 10, 10, 12, 9, 6, 12, 15, 9, 8, 12, 15, 12, 12]}

instead I want each abundance (starts with 4, 12...) to be associated with each 
of the values so that it would look like this:

sec_dict_clean=
{88: ([87, 89, 78, 98], [4,12,11,6]), 58: ([57, 59, 48, 68], [9,12,11,7]), 69: 
([79], [10])...}

You can see there are several errors here (I have more things being appended 
than there are values in the dictionary), but I really just want to know how to 
add multiple values to the same key in a dictionary.

Thanks for any help,
Krishna


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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread r
Ok people follow me here. Open your winders help file and click the
Tutorial link. What is this FLUFF doing here!?!?! Where is the damn
index? Where is the damn tutorial? I want to learn Python not read the
HISTORY OF THE WORLD.

Upon clicking the Tutorial link pre 2.6, a nice menu was placed
before your eyes, WHERE IS IT!?!??? Good thing i know the language or
i would have given up already
-- 
http://mail.python.org/mailman/listinfo/python-list


Need cleanup advice for multiline string

2009-08-11 Thread Robert Dailey
Hey guys. Being a C++ programmer, I like to keep variable definitions
close to the location in which they will be used. This improves
readability in many ways. However, when I have a multi-line string
definition at function level scope, things get tricky because of the
indents. In this case indents are serving two purposes: For syntax and
actual text output. The tabs for function scope should not be included
in the contents of the string. Below is the code I am trying to
improve. Notice how it looks ugly/unreadable because of the way the
string contents are shifted all the way to the left edge of the
document. This breaks the flow of scope. Would you guys solve this
problem by moving failMsg into global scope? Perhaps through some
other type of syntax?

Help is appreciated!

def RunCommand( commandList ):
   commandString =
   print( 'Running Command:',  )
   cmd = subprocess.Popen( commandList )
   returnCode = cmd.wait()
   if returnCode:
  failMsg = '''\
*
The following command returned exit code [{:#x}].
This represents failure of some form. Please review
the command output for more details on the issue.

{}
*
'''
  commandString = ' '.join( commandList )
  raise CommandFailure( failMsg.format( returnCode,
commandString ) )
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Mark Lawrence

r wrote:

Ok people follow me here. Open your winders help file and click the
Tutorial link. What is this FLUFF doing here!?!?! Where is the damn
index? Where is the damn tutorial? I want to learn Python not read the
HISTORY OF THE WORLD.

Upon clicking the Tutorial link pre 2.6, a nice menu was placed
before your eyes, WHERE IS IT!?!??? Good thing i know the language or
i would have given up already
As I keep on repeating, my version works perfectly.  Perhaps this is 
because I have a computing IQ of approximately 2**32, so realised that 
something was wrong, went here and downloaded the corrected version of 
the file, which has presumably been available for months!


http://www.python.org/download/releases/2.6.2/

And you want newbies let loose on the python docs.  As good ole Santa 
would say, ho, ho, ho!

--
Kindest regards.

Mark Lawrence.

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


Re: better way?

2009-08-11 Thread Matthew Woodcraft
Rami Chowdhury rami.chowdh...@gmail.com writes:

 IIRC Postgres has had ON DUPLICATE KEY UPDATE functionality longer than
 MySQL...

PostgreSQL does not have ON DUPLICATE KEY UPDATE.

The SQL standard way to do what the OP wants is MERGE. PostgreSQL
doesn't have that either.

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


Re: better way?

2009-08-11 Thread Rami Chowdhury
Ah, my apologies, I must have been getting it confused with ON UPDATE  
[things]. Thanks for correcting me.


On Tue, 11 Aug 2009 13:10:03 -0700, Matthew Woodcraft  
matt...@woodcraft.me.uk wrote:



Rami Chowdhury rami.chowdh...@gmail.com writes:


IIRC Postgres has had ON DUPLICATE KEY UPDATE functionality longer than
MySQL...


PostgreSQL does not have ON DUPLICATE KEY UPDATE.

The SQL standard way to do what the OP wants is MERGE. PostgreSQL
doesn't have that either.

-M-




--
Rami Chowdhury
Never attribute to malice that which can be attributed to stupidity --  
Hanlon's Razor

408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)
--
http://mail.python.org/mailman/listinfo/python-list


Re: Need cleanup advice for multiline string

2009-08-11 Thread Robert Dailey
On Aug 11, 3:08 pm, Robert Dailey rcdai...@gmail.com wrote:
 Hey guys. Being a C++ programmer, I like to keep variable definitions
 close to the location in which they will be used. This improves
 readability in many ways. However, when I have a multi-line string
 definition at function level scope, things get tricky because of the
 indents. In this case indents are serving two purposes: For syntax and
 actual text output. The tabs for function scope should not be included
 in the contents of the string. Below is the code I am trying to
 improve. Notice how it looks ugly/unreadable because of the way the
 string contents are shifted all the way to the left edge of the
 document. This breaks the flow of scope. Would you guys solve this
 problem by moving failMsg into global scope? Perhaps through some
 other type of syntax?

 Help is appreciated!

 def RunCommand( commandList ):
    commandString =
    print( 'Running Command:',  )
    cmd = subprocess.Popen( commandList )
    returnCode = cmd.wait()
    if returnCode:
       failMsg = '''\
 *
 The following command returned exit code [{:#x}].
 This represents failure of some form. Please review
 the command output for more details on the issue.
 
 {}
 *
 '''
       commandString = ' '.join( commandList )
       raise CommandFailure( failMsg.format( returnCode,
 commandString ) )

And yes, I recognize there are syntax errors. Ignore those for now.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: ElementTree - Howto access text within XML tag element...

2009-08-11 Thread cmalmqui
On Aug 11, 9:51 am, Diez B. Roggisch de...@nospam.web.de wrote:
 cmalmqui schrieb:
  Hi,

  I am writing on a small XML parser and are currently stuck as I am not
  able to get the whole element name in ElementTree.

  Please see the below example where print root[0][0] returns
  Element 'Activity' at 018A3938

  Is there a way to get hold of the Running string in the tag using
  elementTree?

  Activities
      Activity Sport=Running
        Id2009-07-10T14:48:00Z/Id
        Lap StartTime=2009-07-10T14:48:00Z
        .

  For those of you that know how to program XML I have another
  question:
  I am currently hardcoding my XML parser using brackets, is this a
  good approach or should I build it using a search on tag approach.

 What do you mean by that - hardcoding by brackets?

 Diez

Indeed, my current approach has been to hardcode the XML parser using
brackets. Is there a more elegant way?

I am parsing a garmin xml file from a handheld GPS and as you can see
in the below script, I am hardcoding each node:

import xml.etree.cElementTree as etree

def gettext(elem):
text = elem.text or 
for e in elem:
text += gettext(e)
if e.tail:
text += e.tail
return text

tree = etree.parse('10_07_2009 16_48_00_history.tcx')
root = tree.getroot()

elem = root[0][0]

# ID Tag
print type of exercise:  + elem.get(Sport)
print excercise starttime :  + gettext(elem[0])

# iterate over all laps
for i in range(1, len(elem)-1):

# LAP TAG
print \nlap number  :  + str(i)
print lap start time  :  + str(elem[i].get(StartTime))
print lap duration (s):  + gettext(elem[i][0])
print lap length (m)  :  + gettext(elem[i][1])
print max speed (km/h):  + gettext(elem[i][2])
print number of calories  :  + gettext(elem[i][3])
print average heartbeat   :  + gettext(elem[i][4][0])
print max heartbeat   :  + gettext(elem[i][5][0])
print number of records   :  + str(len(elem[i][8])-1)
for j in range(1, len(elem[i][8])-1):
time = gettext(elem[i][8][j][0])#time
lat  = gettext(elem[i][8][j][1][0]) #lat
lon  = gettext(elem[i][8][j][1][1]) #lon
alt  = gettext(elem[i][8][j][2])#alt
dist = gettext(elem[i][8][j][3])#distance from start
bpm  = gettext(elem[i][8][j][4][0]) #beats per minute
#print time +   + lat +   + lon +   + alt +   + dist +
  + bpm

print \nReceiver Info   :  + gettext(elem[len(elem)-1][0])
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Douglas Alan
On Aug 11, 2:00 pm, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:

  test.cpp:1:1: warning: unknown escape sequence '\y'

 Isn't that a warning, not a fatal error? So what does temp contain?

My Annotated C++ Reference Manual is packed, and surprisingly in
Stroustrup's Third Edition, there is no mention of the issue in the
entire 1,000 pages. But Microsoft to the rescue:

 If you want a backslash character to appear within a string,
 you must type two backslashes (\\)

(From http://msdn.microsoft.com/en-us/library/69ze775t.aspx)

The question of what any specific C++ does if you ignore the warning
is irrelevant, as such behavior in C++ is almost *always* undefined.
Hence the warning.

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


Re: ElementTree - Howto access text within XML tag element...

2009-08-11 Thread cmalmqui
On Aug 11, 9:13 am, Ned Deily n...@acm.org wrote:
 In article
 1ad8dac1-8fff-493a-a197-d847e7b6a...@c2g2000yqi.googlegroups.com,

  cmalmqui cmalm...@gmail.com wrote:
  I am writing on a small XML parser and are currently stuck as I am not
  able to get the whole element name in ElementTree.

  Please see the below example where print root[0][0] returns
  Element 'Activity' at 018A3938

  Is there a way to get hold of the Running string in the tag using
  elementTree?

  Activities
      Activity Sport=Running
        Id2009-07-10T14:48:00Z/Id
        Lap StartTime=2009-07-10T14:48:00Z
        .

 Running is the value of the Sport attribute of the Activity
 element.  The documentation for the Element interface lists several ways
 to access element attributes; in your example,

  elem = root[0][0]
  elem.get(Sport)
 'Running'
  elem.attrib

 {'Sport': 'Running'} elem.items()

 [('Sport', 'Running')]

 Seehttp://docs.python.org/library/xml.etree.elementtree.html

 --
  Ned Deily,
  n...@acm.org

Excellent!
Thanks!
The XML magic is getting there slowly...
-- 
http://mail.python.org/mailman/listinfo/python-list


httplib incredibly slow :-(

2009-08-11 Thread Chris Withers

Hi All,

I'm using the following script to download a 150Mb file:

from base64 import encodestring
from httplib import HTTPConnection
from datetime import datetime

conn = HTTPSConnection('localhost')
headers = {}
auth = 'Basic '+encodestring('username:password').strip()
headers['Authorization']=auth
t = datetime.now()
print t
conn.request('GET','/somefile.zip',None,headers)
print 'request:',datetime.now()-t
response = conn.getresponse()
print 'response:',datetime.now()-t
data = response.read()
print 'read:',datetime.now()-t

The output shows it takes over 20 minutes to do this.
However, this is on a local network, and downloading the same file in IE 
takes under 3 seconds!


I saw this issue:

http://bugs.python.org/issue2576

I tried changing the buffer size to 4096 in a subclass as the issue 
suggested, but I didn't see the reported speed improvement.

I'm using Python 2.6.2.

Does anyone know of an alternative library for creating http requests 
and getting their responses that's faster but hopefully has a similar 
interface?


Chris

--
Simplistix - Content Management, Batch Processing  Python Consulting
   - http://www.simplistix.co.uk
--
http://mail.python.org/mailman/listinfo/python-list


Bug in format specification in Python 3?

2009-08-11 Thread Robert Dailey
Hello,

According to the Python 3.1 documentation, I can have a format
specification like so:

print( 'This is a hex number: {:#08x}'.format( 4 ) )

This will print:

This is a hex number: 0x04

I notice that the '0x' portion is counted in the width, which was
specified as 8. This seems wrong to me. Is this by design? If so, why?
I expect that the width portion to only apply to the input + padding
only. I don't consider the '0x' portion part of the padding. But maybe
it is...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Need cleanup advice for multiline string

2009-08-11 Thread Mark Lawrence

Robert Dailey wrote:

On Aug 11, 3:08 pm, Robert Dailey rcdai...@gmail.com wrote:

Hey guys. Being a C++ programmer, I like to keep variable definitions
close to the location in which they will be used. This improves
readability in many ways. However, when I have a multi-line string
definition at function level scope, things get tricky because of the
indents. In this case indents are serving two purposes: For syntax and
actual text output. The tabs for function scope should not be included
in the contents of the string. Below is the code I am trying to
improve. Notice how it looks ugly/unreadable because of the way the
string contents are shifted all the way to the left edge of the
document. This breaks the flow of scope. Would you guys solve this
problem by moving failMsg into global scope? Perhaps through some
other type of syntax?

Help is appreciated!

def RunCommand( commandList ):
   commandString =
   print( 'Running Command:',  )
   cmd = subprocess.Popen( commandList )
   returnCode = cmd.wait()
   if returnCode:
  failMsg = '''\
*
The following command returned exit code [{:#x}].
This represents failure of some form. Please review
the command output for more details on the issue.

{}
*
'''
  commandString = ' '.join( commandList )
  raise CommandFailure( failMsg.format( returnCode,
commandString ) )


And yes, I recognize there are syntax errors. Ignore those for now.
For starters take a look at http://tinyurl.com/o2o8r8 , just about every 
combination of string concatenation going there.  I assume that one of 
these will let you leave failMsg where it belongs.


--
Kindest regards.

Mark Lawrence.

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


Re: Scraping Wikipedia with Python

2009-08-11 Thread Paul Rubin
Dotan Cohen dotanco...@gmail.com writes:
 Thanks. I read the first bit of that page, but did not finish it.
 Grepping it for Python led to to what I need.

maybe you want dbpedia.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Unrecognized escape sequences in string literals

2009-08-11 Thread Ethan Furman

Douglas Alan wrote:

On Aug 11, 2:00 pm, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:



test.cpp:1:1: warning: unknown escape sequence '\y'


Isn't that a warning, not a fatal error? So what does temp contain?



My Annotated C++ Reference Manual is packed, and surprisingly in
Stroustrup's Third Edition, there is no mention of the issue in the
entire 1,000 pages. But Microsoft to the rescue:

 If you want a backslash character to appear within a string,
 you must type two backslashes (\\)

(From http://msdn.microsoft.com/en-us/library/69ze775t.aspx)

The question of what any specific C++ does if you ignore the warning
is irrelevant, as such behavior in C++ is almost *always* undefined.
Hence the warning.

|ouglas


Almost always undefined?  Whereas with Python, and some memorization or 
a small table/list nearby, you can easily *know* what you will get.


Mind you, I'm not really vested in how Python *should* handle 
backslashes one way or the other, but I am glad it has rules that it 
follows for consitent results, and I don't have to break out a byte-code 
editor to find out what's in my string literal.


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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread r
Ah Ha! the docs are broken and i was right all along! Are the good
folks at Python dev rolling a new installer as we speak, or we must
wait for new version?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Need cleanup advice for multiline string

2009-08-11 Thread Bearophile
Robert Dailey:
 This breaks the flow of scope. Would you guys solve this
 problem by moving failMsg into global scope?
 Perhaps through some other type of syntax?

There are gals too here.
This may help:
http://docs.python.org/library/textwrap.html#textwrap.dedent

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


Re: Python docs disappointing - group effort to hire writers?

2009-08-11 Thread Mark Lawrence

r wrote:

Ah Ha! the docs are broken and i was right all along! Are the good
folks at Python dev rolling a new installer as we speak, or we must
wait for new version?
As I pointed out a few minutes ago thicko, the new version has been 
available for months.


--
Kindest regards.

Mark Lawrence.

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


New 2.6 and wx install = DLL load failed: The specified procedure could not be found

2009-08-11 Thread RJ
I just installed python-2.6.2.msi from Python.org and 
wxPython2.8-win32-ansi-2.8.10.1-py26.exe and now can't import this 
wx. (I had 2.4, but uninstalled)
This reminds me of a basic question I had before: what are the 
compilers used for the Win32 binaries? Is this a compiler 
compatibility issue? a wx bug?


C:\projectspython
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type help, copyright, credits or license for more information.
 import wx
Traceback (most recent call last):
  File stdin, line 1, in module
  File 
C:\Python26\lib\site-packages\wx-2.8-msw-ansi\wx\__init__.py, line 45,

in module
from wx._core import *
  File C:\Python26\lib\site-packages\wx-2.8-msw-ansi\wx\_core.py, 
line 4, in 

module
import _core_
ImportError: DLL load failed: The specified procedure could not be found.
 -- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming by Contract

2009-08-11 Thread Charles Yeomans


On Aug 11, 2009, at 3:30 PM, Ethan Furman wrote:


Ethan Furman wrote:

Greetings!
I have seen posts about the assert statement and PbC (or maybe it  
was DbC), and I just took a very brief look at pycontract (http://www.wayforward.net/pycontract/ 
) and now I have at least one question:  Is this basically another  
way of thinking about unit testing, or is the idea of PbC more  
along the lines of *always* checking the input/output of functions  
to ensure they are correct?  (*Contstant vigilance!* as Prof Moody  
would say ;)
I know asserts can be turned off, so they obviously won't work for  
the latter case, and having seen the sample of pycontract it seems  
it only does its thing during debugging.
So is Design (Programming) by Contract a fancy way of saying  
Document your inputs/outputs! or is there more to it?

~Ethan~


Hmmm...

Well, from the (apparently) complete lack of interest, I shall take  
away the (better?) documentation ideas and unit testing ideas, and  
not worry about the rest.  :)








Design by contract is complementary to unit testing (I notice that the  
author of PEP 316 appears confused about this).  DbC is, roughly  
speaking, about explicit allocation of responsibility.  Consider this  
contrived example.


def foo(s):
require(s is not None)
//code
ensure(hasattr(returnValue, '__iter__'))


The require condition tells you that it's the caller's responsibility  
to pass a non-nil argument to foo.  The ensure condition is a  
guarantee that foo will return something suitable for iteration, if  
the precondition in the require condition is satisfied.  These  
conditions can be enforced at runtime, but may not be, for reasons of  
performance.


DbC is in fact about not *always* checking the input/output of  
functions; on the contrary, Bertrand Meyer, the inventor of DbC,  
claims that DbC allows one to eliminate such redundancy, and the  
resulting overhead.


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


Re: Need cleanup advice for multiline string

2009-08-11 Thread Robert Dailey
On Aug 11, 3:40 pm, Bearophile bearophileh...@lycos.com wrote:
 Robert Dailey:

  This breaks the flow of scope. Would you guys solve this
  problem by moving failMsg into global scope?
  Perhaps through some other type of syntax?

 There are gals too here.
 This may help:http://docs.python.org/library/textwrap.html#textwrap.dedent

 Bye,
 bearophile

It's a figure of speech. And besides, why would I want programming
advice from a woman? lol. Thanks for the help.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Bug in format specification in Python 3?

2009-08-11 Thread MRAB

Robert Dailey wrote:

Hello,

According to the Python 3.1 documentation, I can have a format
specification like so:

print( 'This is a hex number: {:#08x}'.format( 4 ) )

This will print:

This is a hex number: 0x04

I notice that the '0x' portion is counted in the width, which was
specified as 8. This seems wrong to me. Is this by design? If so, why?
I expect that the width portion to only apply to the input + padding
only. I don't consider the '0x' portion part of the padding. But maybe
it is...


The width portion is the width of what is produced by the specification.
The '#' tells it to add '0x', so that's part of what's produced. If you
don't want the '0x' to be counted then don't include '#' in the
specification. It makes perfect sense! :-)
--
http://mail.python.org/mailman/listinfo/python-list


Re: dictionary help

2009-08-11 Thread MRAB

Krishna Pacifici wrote:

Wow, thanks MRAB and Simon, you guys are good.

I guess I will go ahead and ask the next question that has also stumped 
me for awhile now.


So basically I need to loop through the values in the new dictionary and 
append attributes of a class object.  Each of the values (and keys) 
represent a block in a grid with a specific location (e.g. 35 is the 
block in row 3 col 5) and each block is an object with several 
attributes associated with it.  I want to call that block and append two 
separate attributes to the dictionary within that same key.


So again it would look something like this:

block 35 has 2 attributes, say a and b, a=2, b=5
block 37 has a=1, b=3
block 46 has a=3, b=8

the two attributes come from two different definitions within the class 
statement,

def detections
...
return a

def abundance
...
return b

so I would want to append to key 36 those two attributes for each block 
so that the resulting dictionary item would look like this:
 a   b  
{36:[35,37,46], [2,1,3], [5,3,8] ...}



That doesn't look like a dictionary. Perhaps want you want is for the
value to be a list of lists:

{36: [[35,37,46], [2,1,3], [5,3,8]] ...}

although you'd have parallel lists, ie a list of blocks, a list of 'a',
and a list of 'b'. A better format might be to keep a block's attributes
with the block itself.

{36: [[35,2,5], [37,1,3], [46,3,8]] ...}

Any help with this would be greatly appreciated.  And thank you so much 
for all of your help thus far, I'm still pretty new to python and am 
enjoying all of the flexibility associated with a scripting and 
programming language.



[snip]

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


  1   2   >