ANN: urllib3 0.2 - HTTP library with thread-safe connection pooling and file posting support

2008-12-01 Thread Andrey Petrov
Project website: http://code.google.com/p/urllib3/

Also available on pypi: http://pypi.python.org/pypi/urllib3

(Licensed under MIT)

Highlights
==

 * Re-use the same socket connection for multiple requests
   (``HTTPConnectionPool``)
 * File posting (``encode_multipart_formdata``)
 * Built-in redirection and retries (optional)
 * Thread-safe

What's wrong with urllib and urllib2?
=

There are two critical features missing from the Python standard
library:
Connection re-using/pooling and file posting. It's not terribly hard
to
implement these yourself, but it's much easier to use a module that
already
did the work for you.

The Python standard libraries ``urllib`` and ``urllib2`` have little
to do
with each other. They were designed to be independent and standalone,
each
solving a different scope of problems, and ``urllib3`` follows in a
similar
vein.

Why do I want to reuse connections?
===

Performance. When you normally do a urllib call, a separate socket
connection is created with each request. By reusing existing sockets
(supported since HTTP 1.1), the requests will take up less resources
on the
server's end, and also provide a faster response time at the client's
end.
With some simple benchmarks (see `test/benchmark.py
http://code.google.com/p/urllib3/source/browse/trunk/test/
benchmark.py`_
), downloading 15 URLs from google.com is about twice as fast when
using
HTTPConnectionPool (which uses 1 connection) than using plain urllib
(which
uses 15 connections).

This library is perfect for:

 * Talking to an API
 * Crawling a website
 * Any situation where being able to post files, handle redirection,
and
   retrying is useful. It's relatively lightweight, so it can be used
for
   anything!

Examples


Go to the `Examples wiki http://code.google.com/p/urllib3/wiki/
Examples`_
for more nice syntax-highlighted examples.

But, long story short::

  from urllib3 import HTTPConnectionPool

  API_URL = 'http://ajax.googleapis.com/ajax/services/search/web'

  http_pool = HTTPConnectionPool.from_url(API_URL)

  fields = {'v': '1.0', 'q': 'urllib3'}
  r = http_pool.get_url(API_URL, fields)

  print r.status, r.data


Enjoy! Feedback is very welcome, please send it to shazow at gmail.

- Andrey

P.S.
I apologize in advance for the potentially controversial name, but
after much consideration it turned out to be the most descriptive one
I could think of.
--
http://mail.python.org/mailman/listinfo/python-announce-list

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


lockfile 0.4

2008-12-01 Thread skip
I've just released lockfile 0.4.  I separated the test code from the
lockfile module so the module itself should work on Python 2.4.

What is lockfile?  

The lockfile module exports a FileLock class which provides a simple API for
locking files.  Unlike the Windows msvcrt.locking function, the Unix
fcntl.flock, fcntl.lockf and the deprecated posixfile module, the API is
identical across both Unix (including Linux and Mac) and Windows platforms.
The lock mechanism relies on the atomic nature of the link (on Unix) and
mkdir (On Windows) system calls.

-- 
Skip Montanaro - [EMAIL PROTECTED] - http://smontanaro.dyndns.org/
--
http://mail.python.org/mailman/listinfo/python-announce-list

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


SQLObject 0.10.3

2008-12-01 Thread Oleg Broytmann
Hello!

I'm pleased to announce version 0.10.3, a minor bugfix release of 0.10 branch
of SQLObject.


What is SQLObject
=

SQLObject is an object-relational mapper.  Your database tables are described
as classes, and rows are instances of those classes.  SQLObject is meant to be
easy to use and quick to get started with.

SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite,
Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB).


Where is SQLObject
==

Site:
http://sqlobject.org

Development:
http://sqlobject.org/devel/

Mailing list:
https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss

Archives:
http://news.gmane.org/gmane.comp.python.sqlobject

Download:
http://cheeseshop.python.org/pypi/SQLObject/0.10.3

News and changes:
http://sqlobject.org/News.html


What's New
==

News since 0.10.2
-

* Changed interpretation of strings in the DB URI for boolean parameters:
  '0', 'no', 'off' and 'false' are now interpreted as False.

* Fixed a bug with incorrect handling of calls like
  connectionForURI(dburi, cache=False) when dburi already contains some
  parameters in the URI.

* Convert decimal.to_eng_string() to str to work around a bug in Python 2.5.2;
  see http://mail.python.org/pipermail/python-dev/2008-March/078189.html

* Added test_default_style.py.

* Fixed a minor bug in SQLiteConnection that fails to parse Enum columns.

For a more complete list, please see the news:
http://sqlobject.org/News.html

Oleg.
-- 
 Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED]
   Programmers don't die, they just GOSUB without RETURN.
--
http://mail.python.org/mailman/listinfo/python-announce-list

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


Elisa Media Center 0.5.20 Release

2008-12-01 Thread Olivier Tilloy
Dear Python users,

The Elisa team is happy to announce the release of Elisa Media Center
0.5.20, code-named Paranoid Android.

Elisa is a cross-platform and open-source Media Center written in Python.
It uses GStreamer [1] for media playback and pigment [2] to create an
appealing and intuitive user interface.

New features include a mechanism to trust external plugins' integrity
when distributed through the plugin repository, and a better integration
in Windows.

As usual, a bunch of bugs were fixed, a complete list can be found at:

http://bugs.launchpad.net/elisa/+milestone/0.5.20


Installers and sources can be downloaded from
http://elisa.fluendo.com/download/

Bug reports and feature requests are welcome at
http://bugs.launchpad.net/elisa/+filebug


Have a media-centered evening,

The Elisa team


[1] http://www.gstreamer.net/
[2] https://code.fluendo.com/pigment/trac
Elisa 0.5.20 Paranoid Android
===

This is Elisa 0.5.20, twentieth release of the 0.5 branch.

New features since 0.5.19:

- A mechanism to trust external plugins' integrity when distributed through the
  plugin repository
- Elisa by default in the Open With contextual menu of windows for supported
  media types

Bugs fixed since 0.5.19:

- 296796: add to favourites action mouse support broken
- 301769: Elisa doesn't load resources that are inside of eggs
- 302877: FirstRunMessage sent too early in Application startup sequence
- 290221: The 'Add' label looks borked sometimes
- 302334: [linux] 'Add folders' doesn't work if HAL resource provider is not 
loaded
- 302780: DVD is broken even with the correct gstreamer stuff installed
- 303441: [win32] Non playable media leads to black screen
- 296308: update_checker reports wrong distribution name in some cases


Download

You can find source releases of Elisa on the download page:
http://elisa.fluendo.com/download


Elisa Homepage

More details can be found on the project's website: http://elisa.fluendo.com


Support and Bugs

We use Launchpad for bug reports and feature requests:
https://bugs.launchpad.net/elisa/+filebug


Developers

All code is in a Bazaar branch and can be checked out from there.
It is hosted on Launchpad: https://code.launchpad.net/elisa


Contributors to this release:

- Benjamin Kampmann
- David McLeod
- Florian Boucault
- Guido Amoruso
- Guillaume Emont
- Jesús Corrius
- Lionel Martin
- Olivier Tilloy
- Philippe Normand

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

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


Aviate, the Web Deployer

2008-12-01 Thread Amr
Announcing the first public release of Aviate, a cross-platform web
deployment tool written in Python.

Aviate is designed to make deploying your web applications very easy,
while providing you with a rich feature set to make repeated task
performed in a snap, and being extensible so you can extend its
features with your own Python code.

Among its feature is being based on XML, an intuitive GUI to create
deployment files, a large number of built-in commands, multiple
protocol support, extensibility, language constructs, and more.

More details on Aviate:
http://www.vimov.com/aviate/

Download:
http://www.vimov.com/aviate/download/

Front-end:
http://blog.vimov.com/2008/11/aviate-front/
--
http://mail.python.org/mailman/listinfo/python-announce-list

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


Call for papers: Open Source in Data Mining workshop

2008-12-01 Thread Peter Christen

 Call For Papers


  The first Open Source in Data Mining workshop (OSDM'09)

 Monday 27th April 2009

   Bangkok, Thailand

  Workshop Website: http://osdm09.togaware.com

To be held at the 13th

 Pacific-Asia Conference on Knowledge Discovery
and Data Mining (PAKDD'09)
   (http://www.pakdd2009.org)


 Submissions due: Monday 22 December 2008


Open source software is becoming increasingly accepted in public and
private sector organisations in many countries. There is a variety
of open source data mining tools available to both researchers and
practitioners, some being simple research prototypes while others are
fully developed software tools in daily use in industry.

This workshop aims to bring together data mining software developers,
practitioners, researchers and educators, with the objectives to
present open source data mining tools, discuss experiences and lessons
learned developing and using such tools, and exchange ideas on how to
promote the use of open source tools in the field of data mining.


IMPORTANT DATES

Submission of papers: 22December  2008
Notification of Authors:  23January   2009
Camera-ready version:  9February  2009
OSDM'09 workshop: 27April 2009
PAKDD'09 conference:  28-30 April 2009


WORKSHOP PROGRAM

The OSDM'09 workshop is aimed at data mining researchers, educators
and practitioners, and it will include a mix of both peer-reviewed
scientific papers as well as software demonstrations. We plan to have:

* An invited keynote presentation by one of the developers of the
  Weka data mining tool.

* A session with peer-reviewed papers on topics such as:
   - Open source in data mining research.
   - Open source in data mining education.
   - Open source for data mining in government.
   - Open source for data mining in industry and business.
   - Data mining using open source - Experiences.
   - Impact of open source in data mining.
   - Open source methodologies in data mining.

* A more practically oriented session that will include:
   - Demonstrations of open source data mining tools.
   - Tutorials and how-to's, for example how to set-up and manage
 open source data mining tools; how-to choose an open source
 license suitable for data mining, selecting a software
 repository suitable for open source data mining tools, etc.

* A panel session with prominent data mining open source
  developers. Possible topics:
   - Why open source for data mining research and education?
   - Why publish your data mining tool as open source software?


SUBMISSION

Important notice: Submitting a paper to the OSDM'09 workshop means
that if the paper is accepted, at least one author must attend the
workshop to present the paper. For no-show authors, their affiliations
will receive a notification.

All submitted papers must be formatted according to Springer's
manuscript submission guidelines as available at

  http://www.springer.de/comp/lncs/authors.html

For the initial submission, paper must NOT include author's names,
affiliations and email addresses (left as a blank) --- the review
process will be double-blind. Do not include any acknowledgements
referring to funding bodies. Self-citing references should be removed
from the submitted papers (they can be added after review).

We encourage submissions of two types of papers:

1) Regular papers, up-to 12 pages long in single-spaced pages
   with font size at least 11 points (i.e. following the Springer
   LNCS style). These papers will be fully reviewed by at least three
   members of the OSDM'09 program committee.

2) Short papers, aimed for the demonstration, tutorial and how-to
   session. These papers can be up-to 6 pages long, also in Springer
   LNCS style). These papers will be reviewed by at least one member
   of the OSDM'09 program committee as well as the OSDM'09
   organisers.

Papers submitted to OSDM'09 must not be published or under
consideration to be published elsewhere.

The electronic submissions must be in PDF and made through the
OSDM'09 Submission Page, accessible from:

 http://osdm09.togaware.com/


WORKSHOP CHAIRS

- Dr Graham WilliamsTogaware / The Australian Taxation Office
- Dr Peter Christen The Australian National University


PROGRAM COMMITTEE

- Dr Rohan Baxter The Australian Taxation Office,
 Australia
- Prof Michael Berthold   University of Konstanz, Germany
- Dr Christian BorgeltEuropean Center for Soft Computing,
 Spain
- Dr Tim Churches NSW Department of Health, Australia
- Assist Prof Janez DemsarUniversity of Ljubljana, Slovenia
- Assoc Prof Eibe Frank   University of Waikato, New Zealand
- Dr Mark HallPentaho, New Zealand
- Prof 

Re: end of print = lower productivity ?

2008-12-01 Thread Lawrence D'Oliveiro
In message
[EMAIL PROTECTED],
[EMAIL PROTECTED] wrote:

 Now the print statement disappeared, and I have to write print(f)
 instead. These parentheses not only take time to write, they also make
 me think twice about using print for debugging purposes.

Trouble is, print defaulted to printing to stdout, and I usually wanted
debug messages to go to stderr. So print saved me nothing, which is why I
never got into the habit of using it.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Lawrence D'Oliveiro
In message [EMAIL PROTECTED], Roy Smith wrote:

 Likewise for the source control (CVS, SVN, P4, etc) integrations [in
 emacs].

Discovered that by accident today. Had a conflicted update in Subversion,
fixed it up, saved the file, switched to a terminal window, typed svn
status, and lo and behold, the conflict had vanished (along with the .mine
and .rnn files).

I assume it was Emacs doing that, and not a side-effect of the svn status
command. :)
--
http://mail.python.org/mailman/listinfo/python-list


Re: pydoc enforcement.

2008-12-01 Thread Rafe
On Dec 1, 7:27 am, [EMAIL PROTECTED] [EMAIL PROTECTED]
wrote:
 I've been thinking about implementing (although no idea yet *HOW*) the
 following features/extension for the python compile stage and would be
 interested in any thoughts/comments/flames etc.

 Basically I'm interested adding a check to see if:
   1) pydoc's are written for every function/method.
   2) There are entries for each parameter, defined by some
 predetermined syntax.

 My idea is that as much as I love dynamic typing, there are times when
 using some modules/API's that have less than stellar documentation. I
 was thinking that if it was possible to enable some switch that
 basically forced compilation to fail if certain documentation criteria
 weren't met.

 Yes, it should be up to developers to provide documentation in the
 first place. Or, the client developer might need to read the source
 (IF its available)...  but having some forced documentation might at
 least ease the problem a little.

 For example (half borrowing from Javadoc).

 class Foo( object ):

   def bar( self, ui ):
      pass

 Would fail, since the bar method has an unknown parameter called
 ui.
 What I think could be interesting is that the compiler forces some
 documentation such as:

 class Foo( object ):

   def bar( self, ui ):
     
     @Param: ui :  blah blah blah.
     
      pass

 The compiler could check for @Param matching each parameter passed to
 the method/function. Sure, a lot of people might just not put a
 description in, so we'd be no better off. But at least its getting
 them *that* far, maybe it would encourage them to actually fill in
 details.

 Now ofcourse, in statically  typed language, they might have the
 description as Instance of UIClass or something like that. For
 Python, maybe just a description of Instance of abstract class UI or
 List of Dictionaries...  or whatever. Sure, precise class names
 mightn't be mentioned (since we mightn't know what is being used
 then), but having *some* description would certainly be helpful (I
 feel).

 Even if no-one else is interested in this feature, I think it could
 help my own development (and would be an interested first change
 into Python itself).

 Apart from bagging the idea, does anyone have a suggestion on where in
 the Python source I would start for implementing such an idea?

 Thanks

 Ken

As long as it uses RST (reStructuredText) it could be interesting.
Maybe as a wrapper on epydoc or something? I have been simply
generating my docs and reading through them. This is fine for catching
areas which are totally missing, but gets very time consuming to
maintain small changes.

What would be really great, is something which ties in to subversion
to display an easy to see and find alert in the docs when the source
has been updated. It would then require some manual action to hide the
alert (hopefully someone would read the doc again before killing the
alert).

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Richard Riley
Roy Smith [EMAIL PROTECTED] writes:

 Clay Hobbs [EMAIL PROTECTED] wrote:
 The first real text editor I used was Vim, which I actually started
 using about a year ago.  I've looked at Emacs and it just looks
 confusing.

 I've been using emacs for so many years (um let's see, it's got to be close 
 to 25 years now; first saw it on Columbia's TOPS-20 systems in the early 
 80's) that my fingers know what they're doing without my even thinking 
 about it.  In fact, I used to work with another emacs nut.  Every so often, 
 one of use would watch the other do something and ask, What was that?.  
 Inevitably, neither of us could evoke the keystrokes we had just typed.  We 
 would just re-do it, and watch our fingers to see what we typed.  It didn't 
 even have to be on a keyboard; we could air-type it, and that was good 
 enough.

 In any case, the basic logic behind emacs is pretty simple.  C-F is forward 
 one character.  C-B is back one character.  C-N is Next line.  C-P is 
 Previous line.

It's worth pointing out to people making loony signs here that the
arrow keys work too 
--
http://mail.python.org/mailman/listinfo/python-list


Re: Do more imported objects affect performance

2008-12-01 Thread Rafe
On Dec 1, 7:26 am, Filip Gruszczyński [EMAIL PROTECTED] wrote:
 I have following question: if I use

 from module import *

 instead

 from module import Class

 am I affecting performance of my program? I believe, that all those
 names must be stored somewhere, when they are imported and then
 browsed when one of them is called. So am I putting a lot of garbage
 to this storage and make those searches longer?

 --
 Filip Gruszczyński

Why use it if you don't need it? Your post implies a choice and the
'*' import can really make things muddy if it isn't actually necessary
(rare). Why not just import the module and use what you need? It is
way easier to read/debug and maintains the name-space.

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


Re: Mathematica 7 compares to other languages

2008-12-01 Thread Almar Klein
I did some image processing in Mathematica once. It allocated 2GB
of memory to do display a normal size image. The professor (not of
my university) who gave the course I was following then, was a big
Mathematica fan. He also used lots of sentences containing
quite striking, highly efficient, extreme and other power-terms. I
know see whom he got it from. When I hear a person talk like that for
long enough, everything he says starts to sound like lies. One good
example was the bold statement that Mathematica is MUCH faster
than Matlab. Clearly, when considering low level task like convolution
both programs will use efficient C implementations, and I can't imagine
one being faster than the other.

Personally, I liked Mathematica for symbolic calculations, but for
numerical stuff, frankly, it sucks.

Glad to get that off my chest.
Cheers,
  Almar


2008/12/1 Xah Lee [EMAIL PROTECTED]

 On Nov 30, 7:30 pm, Xah Lee [EMAIL PROTECTED] wrote:
  Wolfram Research's Mathematica Version 7 has just been released.
 
  See: http://www.wolfram.com/products/mathematica/index.html
 
  Among it's marketing material, it has a section on how mathematica
  compares to competitors.
 http://www.wolfram.com/products/mathematica/analysis/

 Stephen Wolfram has a blog entry about Mathematica 7. Quite amazing:

 http://blog.wolfram.com/2008/11/18/surprise-mathematica-70-released-today/

 Mathematica today in comparsion to all other existing langs, can be
 perhaps compared to how lisp was to other langs in the say 1980s:
 Quite far beyond all.

 Seeing how lispers today still talking about how to do basic list
 processing with its unusable cons, and how they get giddy with 1980's
 macros (as opposed to full term rewriting), and still lack pattern
 matching, one feels kinda sad.

 see also:

 • Fundamental Problems of Lisp
  http://xahlee.org/UnixResource_dir/writ/lisp_problems.html

  Xah
 ∑ http://xahlee.org/

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

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


Re: tkinter question

2008-12-01 Thread [EMAIL PROTECTED]
On Oct 26, 7:02 am, Chuckk Hubbard [EMAIL PROTECTED]
wrote:
 Hello.
 How about this?  I changed the if statements so the coordinates are
 always updated, but only changed if within the right limits, otherwise
 updated to the existing value.  Now if you drag outside the limits of
 one dimension, it still moves in the other dimension.  Not sure if
 that's what you want.  I'm amazed that this can be so simple, I came
 up with an intricate system for my app, not realizing I could bind
 events to canvas items!
 BTW, I've never come across csoundroutines, can you give me a synopsis
 of what it's for?  I'm using thePythonCsoundAPI.  This is why I
 commented out all the references to csoundroutines, I don't have it
 installed at the moment.
 -Chuckk

 #!/usr/bin/python
 from Tkinter import *
 #import csoundroutines as cs

 root = Tk()

 global canv
 xx = {}

 def makeFrame(root):
   global canv
 #  test = cs.csdInstrumentlist3('bay-at-night.csd')
   canv = Canvas (root, height = 200, width = 350)

 #  for i in range (0, len(test.instr_number)):
   for i in range (0, 4):
 #    canv.create_text(10, i *10, text=str(test.instr_number[i]) +
     canv.create_text(10, i *10, text=str(i) +
 '...', tags=('movable'))
     xx[i] = canv.tag_bind('movable', 'B1-Motion', slide) #B1-motion
 is a drag with left button down
     canv.pack()

 def slide (event):
   '''
   triggered when something is dragged on the canvas - move thing
 under
 mouse ('current') to new position
   '''
   if 0  event.x  200:
       newx = event.x
   else: newx = canv.coords('current')[0]
   if 0  event.y  100:
     newy = event.y
   else: newy = canv.coords('current')[1]
   canv.coords('current', newx, newy)

 makeFrame(root)
 root.mainloop()





 On Fri, Oct 3, 2008 at 3:44 PM, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
  I saw this (close to this anyway) lieing around on the internet and
  was wanting to use it to define a start point exc but I need the
  graphics to stay within a set y coords and I am not realy sure how to
  do that.  I have no idea on how to bind a min/max y to it.  (the
  concept is inspired by the javacsoundblue).

  #!/usr/bin/python
  from Tkinter import *
  import csoundroutines as cs

  root = Tk()

  global canv
  xx = {}

  def makeFrame(root):
    global canv
    test = cs.csdInstrumentlist3('bay-at-night.csd')
    canv = Canvas (root, height = 200, width = 350)

    for i in range (0, len(test.instr_number)):
      canv.create_text(10, i *10, text=str(test.instr_number[i]) +
  '...', tags=('movable'))
      xx[i] = canv.tag_bind('movable', 'B1-Motion', slide) #B1-motion
  is a drag with left button down
      canv.pack()

  def slide (event):
    '''
    triggered when something is dragged on the canvas - move thing
  under
  mouse ('current') to new position
    '''
    newx = event.x
    if event.y  10 and event.y  0:
      newy = event.y
      canv.coords('current', newx, newy)

  makeFrame(root)
  root.mainloop()
  --
 http://mail.python.org/mailman/listinfo/python-list

 --http://www.badmuthahubbard.com- Hide quoted text -

 - Show quoted text -

sorry to take so long to reply...  You should be able to find the
latest version of csound routines in the csound blog..  an older
version is in dex tracker available on source forge..
--
http://mail.python.org/mailman/listinfo/python-list


Re: tkinter question

2008-12-01 Thread [EMAIL PROTECTED]
On Oct 26, 7:02 am, Chuckk Hubbard [EMAIL PROTECTED]
wrote:
 Hello.
 How about this?  I changed the if statements so the coordinates are
 always updated, but only changed if within the right limits, otherwise
 updated to the existing value.  Now if you drag outside the limits of
 one dimension, it still moves in the other dimension.  Not sure if
 that's what you want.  I'm amazed that this can be so simple, I came
 up with an intricate system for my app, not realizing I could bind
 events to canvas items!
 BTW, I've never come across csoundroutines, can you give me a synopsis
 of what it's for?  I'm using thePythonCsoundAPI.  This is why I
 commented out all the references to csoundroutines, I don't have it
 installed at the moment.
 -Chuckk

 #!/usr/bin/python
 from Tkinter import *
 #import csoundroutines as cs

 root = Tk()

 global canv
 xx = {}

 def makeFrame(root):
   global canv
 #  test = cs.csdInstrumentlist3('bay-at-night.csd')
   canv = Canvas (root, height = 200, width = 350)

 #  for i in range (0, len(test.instr_number)):
   for i in range (0, 4):
 #    canv.create_text(10, i *10, text=str(test.instr_number[i]) +
     canv.create_text(10, i *10, text=str(i) +
 '...', tags=('movable'))
     xx[i] = canv.tag_bind('movable', 'B1-Motion', slide) #B1-motion
 is a drag with left button down
     canv.pack()

 def slide (event):
   '''
   triggered when something is dragged on the canvas - move thing
 under
 mouse ('current') to new position
   '''
   if 0  event.x  200:
       newx = event.x
   else: newx = canv.coords('current')[0]
   if 0  event.y  100:
     newy = event.y
   else: newy = canv.coords('current')[1]
   canv.coords('current', newx, newy)

 makeFrame(root)
 root.mainloop()





 On Fri, Oct 3, 2008 at 3:44 PM, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
  I saw this (close to this anyway) lieing around on the internet and
  was wanting to use it to define a start point exc but I need the
  graphics to stay within a set y coords and I am not realy sure how to
  do that.  I have no idea on how to bind a min/max y to it.  (the
  concept is inspired by the javacsoundblue).

  #!/usr/bin/python
  from Tkinter import *
  import csoundroutines as cs

  root = Tk()

  global canv
  xx = {}

  def makeFrame(root):
    global canv
    test = cs.csdInstrumentlist3('bay-at-night.csd')
    canv = Canvas (root, height = 200, width = 350)

    for i in range (0, len(test.instr_number)):
      canv.create_text(10, i *10, text=str(test.instr_number[i]) +
  '...', tags=('movable'))
      xx[i] = canv.tag_bind('movable', 'B1-Motion', slide) #B1-motion
  is a drag with left button down
      canv.pack()

  def slide (event):
    '''
    triggered when something is dragged on the canvas - move thing
  under
  mouse ('current') to new position
    '''
    newx = event.x
    if event.y  10 and event.y  0:
      newy = event.y
      canv.coords('current', newx, newy)

  makeFrame(root)
  root.mainloop()
  --
 http://mail.python.org/mailman/listinfo/python-list

 --http://www.badmuthahubbard.com- Hide quoted text -

 - Show quoted text -

 haven't tried this yet but I look foward to trying it out..
--
http://mail.python.org/mailman/listinfo/python-list


Re: pydoc enforcement.

2008-12-01 Thread Marc 'BlackJack' Rintsch
On Sun, 30 Nov 2008 16:27:07 -0800, [EMAIL PROTECTED] wrote:

 Basically I'm interested adding a check to see if:
   1) pydoc's are written for every function/method.

Pylint warns for missing docstrings.

   2) There are entries for each parameter, defined by some
   predetermined syntax.

But which syntax?  There are several in use out there.  Even the (I 
think) popular epydoc allows at least three, its own, something JavaDoc 
like, and ReST.

And I dislike forcing to document every parameter.  There's lots of code 
that is clear just by the names of the parameters and one or two usage 
examples in the docs.  Forcing to state the obvious again does not add 
information for the user and is annoying for the programmer.

 My idea is that as much as I love dynamic typing, there are times when
 using some modules/API's that have less than stellar documentation. I
 was thinking that if it was possible to enable some switch that
 basically forced compilation to fail if certain documentation criteria
 weren't met.

But that doesn't enforce good or even real documentation either.  Even 
worse, you can't spot the undocumented parts of the code anymore, because 
now every docable object has documentation like this just to make the 
compiler happy:

def spam(foo, bar):

:param foo: a foo object.
:param bar: a bar object.


Which basically tells the same as no documentation at all.

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


Re: Python surpasses Perl in popularity?

2008-12-01 Thread Casper H . S . Dik
Stephane CHAZELAS [EMAIL PROTECTED] writes:

It's true it was vague and misleading,

/bin is not the standard place to look for sh as far as the
POSIX standard is concerned. That doesn't mean that standard
commands (POSIX or not) cannot be found in /bin. But /bin/sh has
been made a non-standard place for sh. It's the legacy
place. Those commands that have not undergone non-backward
compatible changes with POSIX can still be found in /bin, the
others are to be found in /usr/xpgx/bin (for the standard
versions).

The proper place is `getconf PATH`.  POSIX doesn't list any
pathnames.

Of course, the problem is then where did getconf come from?.

Casper
-- 
Expressed in this posting are my opinions.  They are in no way related
to opinions held by my employer, Sun Microsystems.
Statements on Sun products included here are not gospel and may
be fiction rather than truth.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Project structure - Best practices

2008-12-01 Thread Rafe
On Nov 30, 11:43 pm, Filip Gruszczyński [EMAIL PROTECTED] wrote:
 This is first time that I am building python application that is
 larger than a single module and I would like to do it right. I google
 it a bit, finding some stuff about not using src directory (which I
 have seen so many times, that I believed it be standard) and using
 packages. Still, there are few things, that I would like to achieve
 with this structure:
 * being able to use pychecker a lot - catching all typos in one shot
 instead of running app many times really saves me a lot of time
 * being able to write some unit tests
 * having clean division of code among packages and modules (I have
 seen some projects, where modules are pretty large - I would like to
 keep them logically divided, event if they stay smaller)

 My project is a tool for people interested in role playing games. My
 current structure looks something like this:

 /src
 rpgDirectory.py (main script, running the app)

 src/rpg
 plans.py
 support.py
 gui.py
 iosystem.py

 src/rpg/character
 model.py
 sheet.py
 gui.py
 handlers.py
 requirements.py

 The problem is, that modules from src/rpg/character use classes
 defined in support.py. Therefore I have to use absolute paths to
 import it and this works only, when I run rpgDirectory.py. When I use
 pychecker, it can't import this module and fails. Any suggestions, how
 can I avoid this and what structure should I use?

 --
 Filip Gruszczyński

Hi,

I have read in many places that relative imports aren't recommend as a
standard. This includes PEP 8 (http://www.python.org/dev/peps/
pep-0008/) which states:

 - Relative imports for intra-package imports are highly discouraged.
  Always use the absolute package path for all imports.
  Even now that PEP 328 [7] is fully implemented in Python 2.5,
  its style of explicit relative imports is actively discouraged;
  absolute imports are more portable and usually more readable.

...and I completely agree. I always use the standard import form
unless absolutely necessary. However, I use 'as' to shorten the path
to the last module. For example:
 import app.foo.bar as bar
 instance = bar.Class()

The only relative import I use when I am getting another module in
the same package. If I have:

app/
__init__.py
constants.py
foo/
   __init__.py
   bar.py
   here.py
utils/
__init__.py

... and I am inside app/foo/here.py, I might have some imports at the
top of the module which look like this...

import app.constants as appC
import app.utils

import bar


Python will look for 'bar' in the local package before looking through
the python path. I could have imported constants as just c, but
single letter variables are dangerous and I work with an application
where it is common in the community to use 'c' for
'constants' (regardless of the danger). Lastly, I could import
'app.utils' as 'utils', but this is such a common module name that I
like to preserve the name-space or at least prefix it (so I suppose
something like 'apputils' would be acceptable, but I'd only be saving
one character, the '.', so what's the point?).

I find that no matter how well I plan what my structure will be, I end
up making small changes such as flattening a sub-package or converting
a module to a sub-package to break things down further. As someone who
recently started learning python, I would recommend that you just make
a quick sketch of what you think might work and then just begin
coding. Adjust to logic along the way.

At some point planning begins to eat time rather than save it. get
through the fastest initial 80%, maybe push for a few more %, then
just go for it (I assume you have this luxury. If not then you
probably have a team that can help refine the plan anyway.)


Hope this helps.

- Rafe


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


Re: noob needs help

2008-12-01 Thread Rafe
On Dec 1, 12:50 am, toveysnake [EMAIL PROTECTED] wrote:
 I decided that I want to learn python, and have no previous
 programming experience. I was reading the guide A byte of python and
 got to the part where you create and run the program helloworld.py I
 used kate to create this program and save it as helloworld.py. I then
 entered the command python helloworld.py into the terminal(I am using
 ubuntu 8.10) and I get this error:

 [EMAIL PROTECTED]:~$ python helloworld.py
 python: can't open file 'helloworld.py': [Errno 2] No such file or
 directory

 Am I saving the file in the wrong spot?(I saved it in documents)
 Should I use a different editor? Is there a better python book
 available online?

if you go to the directory where you put the file and run the python
command, it should work (or supply the full path and not just
'helloworld.py')

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


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread BlueBird


Alessio Pace wrote:
 Hi,

 I have to distribute a Python application which relies on an external
 library, and I'm not very fluent in this kind of stuff with Python (I
 come from the Java world where I would have used the Maven build tool
 to create an assembly with dependencies of all it is needed to run
 the app), so I was wondering if someone here could give me some
 suggestions :-)

 The external library is generally not present on the machines where I
 have to distribute my app, and the set of machines on which I have to
 distribute this application is not known a priori (it is just known
 they are Unix systems). In fact by means of SSH I will have to copy
 (and install) the app+library and make it runnable onto the specified
 destination(s).

I have never used it myself, but bbfreeze claims to create packaged
versions of an application, for windows and Unix :

http://pypi.python.org/pypi/bbfreeze/0.95.2


cheers,

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Duncan Booth
Roy Smith [EMAIL PROTECTED] wrote:

 Clay Hobbs [EMAIL PROTECTED] wrote:
 The first real text editor I used was Vim, which I actually started
 using about a year ago.  I've looked at Emacs and it just looks
 confusing.
 
 I've been using emacs for so many years (um let's see, it's got to be
 close to 25 years now; first saw it on Columbia's TOPS-20 systems in
 the early 80's) that my fingers know what they're doing without my
 even thinking about it.  In fact, I used to work with another emacs
 nut.  Every so often, one of use would watch the other do something
 and ask, What was that?.  Inevitably, neither of us could evoke the
 keystrokes we had just typed.  We would just re-do it, and watch our
 fingers to see what we typed.  It didn't even have to be on a
 keyboard; we could air-type it, and that was good enough.
 
I also started using Emacs about 25 years ago, but then when I moved to 
using DOS machines which at the time weren't capable of running Emacs I 
suffered withdrawal symptoms until I found Epsilon (http://lugaru.com) 
which started life as an Emacs style editor on DOS.

I still use Epsilon today, even when I'm using Linux: it isn't free 
software in any sense of the word, but I find that a lot of the things I 
use it for it actually does better than Emacs. If you are willing to 
consider paying for an editor then download the evaluation copy of Epsilon 
and give it a go.

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


Re: HELP!...Google SketchUp needs a Python API

2008-12-01 Thread cptnwillard
Don't feed the troll.

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


Re: Python surpasses Perl in popularity?

2008-12-01 Thread Andre Majorel
On 2008-11-30, Stephane Chazelas [EMAIL PROTECTED] wrote:
 2008-11-30, 06:11(+00), Tam Ha:
 Stephane CHAZELAS wrote:
 There's a common confusion in this in the nature of /bin/sh.
 There's no standard (neither POSIX nor Unix) that specifies that
 /bin/sh should be any variant of the Bourne shell.

 Sure there is, POSIX.
 [...]

 And on this. First, POSIX has no juridiction on defining the
 Bourne shell, let alone its location as the Bourne shell is
 completely outside POSIX, it's a legacy shell and as been for
 years. Then, POSIX makes it clear that the location of its sh
 utility (again, which the Bourne shell is not) is unspecified,
 only that the lookup of sh via $PATH in a conformant
 environment should resolve to a conformant sh.

 And if you need some examples to be convinced, see the different
 choices of those 4 different POSIX conformant Unices:

 Solaris (7, 8, 9 at least):
   /bin/sh: legacy Bourne/SVr4 shell
   /usr/xpg4/bin/sh: a POSIX compliant shell (actually ksh88)
   Solaris choice was to keep /bin/sh as the Bourne shell for
   backward compatibility (as changing it for a POSIX shell
   introduces a slight chance of breaking some existing scripts
   as there are a few corner-case areas where the POSIX shells
   are not backward compatible with the Bourne shell), and make
   /bin a non standard place. How to get a conformant environment
   (typically one where /usr/xpg4/bin/sh is before /bin) is
   described in standards(5). The default one is not, which makes
   Solaris a pain when porting scripts.

 HPUX (10.10 and newer at least):
   /usr/bin/sh (and /bin/sh if there's a symlink /bin -
   usr/bin): a POSIX compliant shell (based on ksh88)

   /usr/old/bin/sh: the Bourne shell (though I think nowadays,
   it's part of an optional package).

 Tru64:
   /bin/sh can behave either as a Bourne shell or a POSIX shell
   (ksh88) depending on the environment

How does it decide ? argv[0] ? isatty (STDIN_FILENO) ?

 most Linux based systems and most other Unices:
   /bin/sh is a POSIX compliant shell (bash generally for Linux)
   and there's no Bourne shell (either there has never been or it
   has been removed/replaced by a POSIX shell).

Two other Unixen I know of that have a non-POSIX sh are SCO Open
Server and UnixWare. I'm not sure they even provide a
POSIX-compliant alternative like Solaris does.

On the other hand, their utilities (awk, grep, sed et al.) seem
to be POSIX-compliant, at least to the extent that I've always
managed. Unlike Solaris where I've often had to use the ones in
/usr/xpg4/bin.

Many people assume standard equates portable. As far as
shell programming is concerned, the safest way to get portability
is to ignore the standard and code for the Bourne shell.

-- 
André Majorel URL:http://www.teaser.fr/~amajorel/
After 15 minutes, I wanted to marry her. After a half hour, I completely
gave up the idea of snatching her purse. -- _Take the Money and Run_
--
http://mail.python.org/mailman/listinfo/python-list


Re: Mathematica 7 compares to other languages

2008-12-01 Thread budden
Mathematica is a great language, but:
1. it is too slow
2. It is often hard to read
3. It gives sence to every keystroke. You press escape by occasion and
it goes in a code as a new
symbol, w/o error. Nasty.
3. I know 5-th version. It does not allow to track the source as SLIME
does. This feature as absolutely
necessary for serious development

So, in fact, Mathematica do not scale well IMO.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to dynamically get an attribute from a module from within the same module

2008-12-01 Thread Rafe
snip
 3) using the bare name:
 whatever
 1) and 2) are useful when the desired name is variable, not a constant like 
 whatever.

I thought that went without saying.


  I have been using #1 for two reasons. First, I will never run this
  module directly, so __name__ will always be the module name and not 
  __main__.

 (note that it works even with __main__)

Nice. Thanks.

  Second, I can use this in a class to decide whether I want
  the module where the class came from or, if I make the class a base
 I don't completely understand your use case. In the expression:
     getattr(some_module, attribute_name)
 you may use any module as the first argument (the current module, or any  
 other).

Right, I was just confused about the effects of inheritance and scope.
If I put a method in a baseclass, which is inherited in another
module, and then run the method from an instance of the sub-class...

- sys.modules[__name__] returns the baseclass module.

- sys.modules[self.__class__.__module__] returns the subclass
module.

in the end I found it felt more logical to put the code in a module-
level function and call it from the class. All of this was part of a
fairly large factory method implementation.


I now know that globals() refers to module-level names. The pros and
cons were the main point of this thread and so far I have...

1) getattr(module, whatever) seems the most pythonic way to do it
but it takes more than one line and requires a little more thought
about scope and inheritance.

2) globals()[whatever] is concise, but it seems a little like a
shortcut which requires special knowledge (though a very small
amount).

I did a quick benchmark test:
 tmp2.py 
import time
import sys

import tmp

class A(tmp.A): pass
class B(tmp.A): pass
class C(tmp.A): pass
class D(tmp.A): pass
class E(tmp.A): pass
class F(tmp.A): pass
class G(tmp.A): pass
class H(tmp.A): pass
class I(tmp.A): pass
class J(tmp.A): pass


def test_globals_vs_gettattr():
t1 = time.time()
for i in range(0, 100):
H = globals()[H]
t2 = time.time()
print globals() too %s seconds. % str(t2-t1)

t1 = time.time()
mod = sys.modules[__name__]
for i in range(0, 100):
H = getattr(mod, H)
t2 = time.time()
print getattr() too %s seconds. % str(t2-t1)
 /tmp2.py 

tmp.py just has a simple class in it. I just wanted to add some
complexity, but I doubt this had any affect on the times.

 import tmp2
 tmp2.test_globals_vs_gettattr()
globals() too .146900010109 seconds.
getattr() too .43423515 seconds.


Just to see how much the call to sys.modules was affecting the test, I
moved it outside the loop and reloaded the module for a second test.
 reload(tmp2)
module 'tmp2' from '\\nas6tb\PROJECTS\tech\users\rafe.sacks\python
\tmp2.py'
 tmp2.test_globals_vs_gettattr()
globals() too .13913242 seconds.
getattr() too .25460381 seconds.

This second test is pointless in practice since I would be calling
sys.modules each time anyway.

Even though the getattr() way is around 3.5 times slower, I had to run
the code 1,000,000 times before the difference became humanly
recognizable. I also realize benchmarks should be taken with a grain
of salt since my setup may differ greatly from others'.

I guess, in the end, I'd use getattr() because it feels more pythonic,
and more basic. I got pretty deep in to learning python before I had
to learn what the globals() dict could do for me.


Cheers,

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


Re: Is there any library that can convert RGB colors to ANSI colors?

2008-12-01 Thread Peter Otten
ZelluX wrote:

 Convert RGB colors to the closest ANSI colors. For example, given RGB
 color FF, it should print [31m.

from functools import partial

def to_rgb(color):
return (color  16)  0xFF, (color  8)  0xFF, color  0xFF

target_colors = {
0x00: \33[30m,
0xFF: \33[31m,
# ...
0xFF: \33[37m,}

def euclidian(c1, c2):
r, g, b = to_rgb(c1)
s, h, c = to_rgb(c2)
r -= s
g -= h
b -= c
return r*r+g*g+b*b

def closest_color(color, target_colors=target_colors, dist=euclidian):
return min(target_colors, key=partial(dist, color))

if __name__ == __main__:
black = target_colors[0]
for color in 0xff, 0x00ff00, 0x808080, 0x008000:
bestmatch = closest_color(color)
code = target_colors[bestmatch]
print #%06x -- %sSAMPLE%s % (color, code, black)

If the results are not good enough for your application you can convert to
another colorspace before calculating the distance.

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


What about a decorator module version 3.0?

2008-12-01 Thread Michele Simionato
I am thinking about releasing a new version of the decorator module,
completely rewritten from scratch. The new implementation takes half
the lines of the original one and it is much more general, so I like
it more. However, there is an issue of compatibility with the past and
I am asking here for feedback from my users.

I have already broken backward compatibility in the past, with version
2.0 of the module, and I could break it again in version 3.0. However,
the breakage in version 2.0 was very minor and at the time the module
had very few users so that nobody ever complained.

Nowadays there are a lot of people using it and there are frameworks
relying on it (such as Pylons) so I am relectant to break
compatibility, even in minor ways.

I want to ask people how do they use the module. If you just use the
decorator function, that will continue to work as before and I do not
think I will ever break that functionality - actually I am thinking of
enhancing it.

However, over the time I have added other utilities to the module - I
am referring to getinfo and new_wrapper - and I would like to get rid
of them. Actually I would like to deprecate them in decorator 3.0 and
to remove them in decorator 3.1 or later on, after a grace period of
one year or so.

Also, I would like to remove a new feature introduced in version 2.3,
i.e. the direct support to decorator factories. I added it in haste
and now I have changed my mind. Is there anybody using that
functionality? I want to offer an alternative which does not involve
magically adding a __call__ method to a class.

In general I want to remove a few things because I feel they add to
the learning curve without offering a compelling benefit, or because I
think the new implementation offer better ways to do the same job.

If nobody uses those features I will remove them; on the other hand,
if this is too much of a breakage, I will just start a new project
with a different name. The old decorator module will continue to live
forever, but the developement on it will stop and the new things will
go in the new module.

Personally, I would like to keep the name, and to add some support for
Python 3.0: decorator 3.0 sounds good for Python 3.0, and the change I
have in mind is the same kind of change which happened for Python 3.0,
i.e. a simplification more than an addition of new features.

What do you people think?
--
http://mail.python.org/mailman/listinfo/python-list


Re: distinct fcntl flags for stdin and stdout

2008-12-01 Thread Nick Craig-Wood
mbuna [EMAIL PROTECTED] wrote:
  Hello,
  when I set non blocking flag with fcntl on sys.stdin, then sys.stdout
  turns into non blocking mode too. Is it normal behaviour? How can I
  turn stdin into non blocking mode but not stdout? Thanks.
 
  This is a quick program that shows the (my?) problem:
 
  import fcntl
  import os
  import sys
 
  print STDIN, sys.stdin, fd=%d % sys.stdin.fileno()
  print STDOUT, sys.stdout, fd=%d % sys.stdout.fileno()
  print os.O_NDELAY=%04x % os.O_NDELAY
  def state():
  flag = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
  print stdin: flag=%04x % flag
  flag = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
  print stdout: flag=%04x % flag
  state()
  print setting non blocking on stdin...
  flag = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
  fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, flag | os.O_NDELAY)
  state()
  print removing non blocking on stdin...
  flag = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
  fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, flag  ~os.O_NDELAY)
  state()
 
 
  RESULT
  STDIN open file 'stdin', mode 'r' at 0x2aacd120 fd=0
  STDOUT open file 'stdout', mode 'w' at 0x2aacd198 fd=1
  os.O_NDELAY=0800
  stdin: flag=8002
  stdout: flag=8002
  setting non blocking on stdin...
  stdin: flag=8802
  stdout: flag=8802
  removing non blocking on stdin...
  stdin: flag=8002
  stdout: flag=8002

If you try this with output redirected to a file, you get this (under
linux)

STDIN open file 'stdin', mode 'r' at 0xb7d03020 fd=0
STDOUT open file 'stdout', mode 'w' at 0xb7d03068 fd=1
os.O_NDELAY=0800
stdin: flag=0002
stdout: flag=8001
setting non blocking on stdin...
stdin: flag=0802
stdout: flag=8001
removing non blocking on stdin...
stdin: flag=0002
stdout: flag=8001

So I suspect your result is because stdin and stdout refer to the same
file (eg /dev/tty0 or /dev/pts/25).

No idea whether this is correct behaviour or not though!

-- 
Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick
--
http://mail.python.org/mailman/listinfo/python-list


Re: Do more imported objects affect performance

2008-12-01 Thread Nick Craig-Wood
Rafe [EMAIL PROTECTED] wrote:
  On Dec 1, 7:26?am, Filip Gruszczy?ski [EMAIL PROTECTED] wrote:
  I have following question: if I use
 
  from module import *
 
  instead
 
  from module import Class
 
  am I affecting performance of my program? I believe, that all those
  names must be stored somewhere, when they are imported and then
  browsed when one of them is called. So am I putting a lot of garbage
  to this storage and make those searches longer?
 
  Why use it if you don't need it? Your post implies a choice and the
  '*' import can really make things muddy if it isn't actually necessary
  (rare). Why not just import the module and use what you need? It is
  way easier to read/debug and maintains the name-space.

Importing the module is actualy slower...  If you import the name into
your namespace then there is only one lookup to do.  If you import the
module there are two.

$ python -m timeit -s 'from timeit import Timer' 'Timer'
1000 loops, best of 3: 0.0784 usec per loop

$ python -m timeit -s 'import timeit' 'timeit.Timer'
100 loops, best of 3: 0.243 usec per loop

I'm not suggestion you should ever use from module import * only
ever import the things you actually need, eg
from module import MyClass, my_function

And here is the test again, actually calling something with the same
difference in execution speed :-

$ python -m timeit -s 'from os import nice' 'nice(0)'
100 loops, best of 3: 1.21 usec per loop

$ python -m timeit -s 'import os' 'os.nice(0)'
100 loops, best of 3: 1.48 usec per loop

-- 
Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick
--
http://mail.python.org/mailman/listinfo/python-list


Re: What about a decorator module version 3.0?

2008-12-01 Thread Eduardo O. Padoan
On Mon, Dec 1, 2008 at 9:16 AM, Michele Simionato
[EMAIL PROTECTED] wrote:
 I am thinking about releasing a new version of the decorator module,
 [...]

Just FYI, the module being discussed here is
http://www.phyast.pitt.edu/~micheles/python/documentation.html

I dont use it myself, but given how much I use decorators, I probably should.

-- 
Eduardo de Oliveira Padoan
http://djangopeople.net/edcrypt/
Distrust those in whom the desire to punish is strong. -- Goethe,
Nietzsche, Dostoevsky
--
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to dynamically get an attribute from a module from within the same module

2008-12-01 Thread Jeremy Sanders
Rafe wrote:

 I guess, in the end, I'd use getattr() because it feels more pythonic,
 and more basic. I got pretty deep in to learning python before I had
 to learn what the globals() dict could do for me.

Why not store your individual classes inside another class or keep them in a
dict? That would be clearer, would not mess around with global namespace,
and more pythonic IMHO.

Jeremy

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


Re: Python surpasses Perl in popularity?

2008-12-01 Thread Stephane Chazelas
2008-12-01, 08:51(+00), Casper H.S  Dik:
 Stephane CHAZELAS [EMAIL PROTECTED] writes:

It's true it was vague and misleading,

/bin is not the standard place to look for sh as far as the
POSIX standard is concerned. That doesn't mean that standard
commands (POSIX or not) cannot be found in /bin. But /bin/sh has
been made a non-standard place for sh. It's the legacy
place. Those commands that have not undergone non-backward
compatible changes with POSIX can still be found in /bin, the
others are to be found in /usr/xpgx/bin (for the standard
versions).

 The proper place is `getconf PATH`.  POSIX doesn't list any
 pathnames.

 Of course, the problem is then where did getconf come from?.
[...]

Sorry, I was specifically speaking of Solaris 7, 8, 9. getconf
PATH is not enough, you have to pick the correct getconf, and
that getconf be called in the relevant environment. For
instance, in later versions of Solaris, I beleive you get
/usr/xpg6/bin or /usr/xpg4/bin first depending on the
environment.

Also, PATH is not necessarily the only thing needed to get you
the conformant utilities. See BIN_SH on Tru64, POSIXLY_CORRECT
on GNU...

I beleive the only thing POSIX requires is that how to get into
the proper environment be documented (but it is unspecified). 
On Solaris, I beleive it's in the standards(5) man page.

-- 
Stéphane
--
http://mail.python.org/mailman/listinfo/python-list


finding the difference between the two version of the python program...

2008-12-01 Thread Piyush Anonymous
is there a tool which, given two version of programs, finds the difference
like set of classes added, deleted and modified?
assuming the python program is written in oops way.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Nick Craig-Wood
Josh [EMAIL PROTECTED] wrote:
  If you were a beginning programmer and willing to make an investment in 
  steep learning curve for best returns down the road, which would you pick?

IMHO I'd want these features

  * Keyboard macros
  * Regular expression search and replace
  * Integration with version control
  * Infinite undo
  * Syntax colouring (not essential)
  * Bracket matching (useful but not essential)
  * Integration with compiler with error throwback (essential for C code work)
  * Automatic indenting (a great time saver)

I know that emacs (my choice) and vim have all these features, don't
know about Eclipse.

In fact if I had to pick one feature that a programmer's editor must
have it would be keyboard macros.

-- 
Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread Mikko Viitamäki
On Sun, Nov 30, 2008 at 2:22 PM, Alessio Pace [EMAIL PROTECTED] wrote:
 Hi,

 I have to distribute a Python application which relies on an external
 library, and I'm not very fluent in this kind of stuff with Python (I
 come from the Java world where I would have used the Maven build tool
 to create an assembly with dependencies of all it is needed to run
 the app), so I was wondering if someone here could give me some
 suggestions :-)

 The external library is generally not present on the machines where I
 have to distribute my app, and the set of machines on which I have to
 distribute this application is not known a priori (it is just known
 they are Unix systems). In fact by means of SSH I will have to copy
 (and install) the app+library and make it runnable onto the specified
 destination(s).

 My question is: how would you do that?  At the moment my current
 solution is to make a tarball of the sources of my app + the
 distutils archive of the external library, copy all into the target
 machine, decompress and install via distutils(*) the external library,
 setup some PYTHONPATH stuff on the destination machine, and finally be
 able to launch the application.

 (*) specifying a prefix into the user home, as I'm not root there


 So in the end I was wondering if there is a more elegant way of doing
 this because, as I said before, I'm not very experienced in these kind
 of tasks in Python.

 Thanks in advance for any suggestion or comment.

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

Hi,
I was reading Learning Python yesterday and I think this was mentioned:
http://peak.telecommunity.com/DevCenter/PythonEggs

I don't have experience either so no guarantees
cheers
/mikko/
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread Alessio Pace
On 1 Dic, 10:37, BlueBird [EMAIL PROTECTED] wrote:
 Alessio Pace wrote:
  Hi,

  I have to distribute a Python application which relies on an external
  library, and I'm not very fluent in this kind of stuff with Python (I
  come from the Java world where I would have used the Maven build tool
  to create an assembly with dependencies of all it is needed to run
  the app), so I was wondering if someone here could give me some
  suggestions :-)

  The external library is generally not present on the machines where I
  have to distribute my app, and the set of machines on which I have to
  distribute this application is not known a priori (it is just known
  they are Unix systems). In fact by means of SSH I will have to copy
  (and install) the app+library and make it runnable onto the specified
  destination(s).

 I have never used it myself, but bbfreeze claims to create packaged
 versions of an application, for windows and Unix :

 http://pypi.python.org/pypi/bbfreeze/0.95.2


Thank you. What's the difference with Freeze shipped with Python, or
with PyInstaller ? Do you have experiences with any of them?


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


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread Alessio Pace
On 1 Dic, 10:37, BlueBird [EMAIL PROTECTED] wrote:
 Alessio Pace wrote:
  Hi,

  I have to distribute a Python application which relies on an external
  library, and I'm not very fluent in this kind of stuff with Python (I
  come from the Java world where I would have used the Maven build tool
  to create an assembly with dependencies of all it is needed to run
  the app), so I was wondering if someone here could give me some
  suggestions :-)

  The external library is generally not present on the machines where I
  have to distribute my app, and the set of machines on which I have to
  distribute this application is not known a priori (it is just known
  they are Unix systems). In fact by means of SSH I will have to copy
  (and install) the app+library and make it runnable onto the specified
  destination(s).

 I have never used it myself, but bbfreeze claims to create packaged
 versions of an application, for windows and Unix :

 http://pypi.python.org/pypi/bbfreeze/0.95.2


Thank you. What's the difference with Freeze shipped with Python, or
with PyInstaller ? Do you have experiences with any of them?


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


How to instantiate in a lazy way?

2008-12-01 Thread Slaunger
Hi comp.lang.python,

I am a novice Python programmer working on a project where I deal with
large binary files (50 GB each)
consisting of a series of variable sized data packets.

Each packet consists of a small header with size and other information
and a much large payload containing the actual data.

Using Python 2.5, struct and numpy arrays I am capable of parsing such
a file quite efficiently into Header and Payload objects which I then
manipulate in various ways.

The most time consuming part of the parsing is the conversion of a
proprietary form of 32 bit floats into the IEEE floats used internally
in Python in the payloads.

For many use cases I am actually not interested in doing the parsing
of the payload right when I pass through it, as I may want to use the
attributes of the header to select the 1/1000 payload which I actually
have to look into the data for and do the resourceful float
conversion.

I would therefore like to have two variants of a Payload class. One
which is instantiated right away with the payload being parsed up in
the float arrays available as instance attributes and another variant,
where the Payload object at the time of instantiation only contains a
pointer to the place (f.tell()) in file where the payload begins. Only
when the non-existing attribute for a parsed up module is actully
accessed should the data be read, parsed up and the attribute created.

In pseudocode:

class PayloadInstant(object):

   This is a normal Payload, where the data are parsed up when
instantiated


@classmethod
def read_from_file(cls, f, size):

Returns a PayloadInstant instance with float data parsed up
and immediately accessible in the data attribute.
Instantiation
is slow but after instantiation, access is fast.


def __init___(self, the_data):
self.data = the_data

class PayloadOnDemand(object):

Behaves as a PayloadInstant object, but instantiation is faster
as only the position of the payload in the file is stored
initially in the object.
Only when acessing the initially non-existing data attribute
are the data actually read and the attribure created and bound to
the instance.
This will actually be a little slower than in PayloadInstant as
the correct file position
has to be seeked out first.
On later calls the object has as efficient attribute access as
PayloadInstant


@classmethod
def read_from_file(cls, f, size):
pos = f.tell()
f.seek(pos + size) #Skip to end of payload
return cls(pos)

# I probably need some __getattr__ or __getattribute__ magic
here...??

def __init__(self, a_file_position):
self.file_position = a_file_position

My question is this a a pyhtonic way to do it, and they I would like a
hint as to how to make the hook
inside the PayloadOnDemand class, such that the inner lazy creation of
the attribute is completely hidden from the outside.

I guess I could also just make a single class, and let an OnDemand
attribute decide how it should behave.

My real application is considerably more complicated than this, but I
think the example grasps the problem in a nutshell.

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Roy Smith
In article [EMAIL PROTECTED],
 Richard Riley [EMAIL PROTECTED] wrote:

 Roy Smith [EMAIL PROTECTED] writes:
 
  Clay Hobbs [EMAIL PROTECTED] wrote:
  The first real text editor I used was Vim, which I actually started
  using about a year ago.  I've looked at Emacs and it just looks
  confusing.
 
  I've been using emacs for so many years (um let's see, it's got to be close 
  to 25 years now; first saw it on Columbia's TOPS-20 systems in the early 
  80's) that my fingers know what they're doing without my even thinking 
  about it.  In fact, I used to work with another emacs nut.  Every so often, 
  one of use would watch the other do something and ask, What was that?.  
  Inevitably, neither of us could evoke the keystrokes we had just typed.  We 
  would just re-do it, and watch our fingers to see what we typed.  It didn't 
  even have to be on a keyboard; we could air-type it, and that was good 
  enough.
 
  In any case, the basic logic behind emacs is pretty simple.  C-F is forward 
  one character.  C-B is back one character.  C-N is Next line.  C-P is 
  Previous line.
 
 It's worth pointing out to people making loony signs here that the
 arrow keys work too 

Yeah, I guess.  I use the arrows keys to mindlessly scroll around in a 
file, especially when I just want to show some code to somebody.  It serves 
two purposes.  First, I can lean way back from the keyboard and reach out 
with one hand (giving the other person better visibility).  Second, it 
makes it easier for a non-emacs person to jump in and drive for a while 
(they saw me use the arrow keys and do the same, no explanations needed).

For any serious editing, however, it's strictly the keys on the main part 
of the keyboard.  It's just so much faster when your hands never have to 
leave their home position.  To use the arrow keys, I need to pick my hand 
up and move it over to the arrow key cluster.  Slow, slow, slow.
--
http://mail.python.org/mailman/listinfo/python-list


SQLObject 0.9.8

2008-12-01 Thread Oleg Broytmann
Hello!

I'm pleased to announce version 0.9.8, a minor bug fix release of SQLObject.


What is SQLObject
=

SQLObject is an object-relational mapper.  Your database tables are described
as classes, and rows are instances of those classes.  SQLObject is meant to be
easy to use and quick to get started with.

SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite,
Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB).


Where is SQLObject
==

Site:
http://sqlobject.org

Development:
http://sqlobject.org/devel/

Mailing list:
https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss

Archives:
http://news.gmane.org/gmane.comp.python.sqlobject

Download:
http://cheeseshop.python.org/pypi/SQLObject/0.9.8

News and changes:
http://sqlobject.org/News.html


What's New
==

News since 0.9.7


* Changed interpretation of strings in the DB URI for boolean parameters:
  '0', 'no', 'off' and 'false' are now interpreted as False.

* Fixed a bug with incorrect handling of calls like
  connectionForURI(dburi, cache=False) when dburi already contains some
  parameters in the URI.

* Convert decimal.to_eng_string() to str to work around a bug in Python 2.5.2;
  see http://mail.python.org/pipermail/python-dev/2008-March/078189.html

* Added test_default_style.py.

* Fixed a minor bug in SQLiteConnection that fails to parse Enum columns.

For a more complete list, please see the news:
http://sqlobject.org/News.html

Oleg.
-- 
 Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED]
   Programmers don't die, they just GOSUB without RETURN.
--
http://mail.python.org/mailman/listinfo/python-list


SQLObject 0.10.3

2008-12-01 Thread Oleg Broytmann
Hello!

I'm pleased to announce version 0.10.3, a minor bugfix release of 0.10 branch
of SQLObject.


What is SQLObject
=

SQLObject is an object-relational mapper.  Your database tables are described
as classes, and rows are instances of those classes.  SQLObject is meant to be
easy to use and quick to get started with.

SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite,
Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB).


Where is SQLObject
==

Site:
http://sqlobject.org

Development:
http://sqlobject.org/devel/

Mailing list:
https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss

Archives:
http://news.gmane.org/gmane.comp.python.sqlobject

Download:
http://cheeseshop.python.org/pypi/SQLObject/0.10.3

News and changes:
http://sqlobject.org/News.html


What's New
==

News since 0.10.2
-

* Changed interpretation of strings in the DB URI for boolean parameters:
  '0', 'no', 'off' and 'false' are now interpreted as False.

* Fixed a bug with incorrect handling of calls like
  connectionForURI(dburi, cache=False) when dburi already contains some
  parameters in the URI.

* Convert decimal.to_eng_string() to str to work around a bug in Python 2.5.2;
  see http://mail.python.org/pipermail/python-dev/2008-March/078189.html

* Added test_default_style.py.

* Fixed a minor bug in SQLiteConnection that fails to parse Enum columns.

For a more complete list, please see the news:
http://sqlobject.org/News.html

Oleg.
-- 
 Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED]
   Programmers don't die, they just GOSUB without RETURN.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Roy Smith
In article [EMAIL PROTECTED],
 Nick Craig-Wood [EMAIL PROTECTED] wrote:

   * Syntax colouring (not essential)

I never used to use syntax coloring, until somebody turned me on to it a 
couple of years ago.  I was griping on a company mailing list that some 
previous code monkey had commented out a big swath (more than a screenfull) 
of C++ code by sticking a /* at the beginning and a */ at the end.  I 
had just wasted a bunch of time trying to debug a problem, not noticing 
that the code I was looking at was commented out.  Somebody pointed out 
that if I turned on syntax coloring, it would be obvious.  I've been hooked 
ever since.
--
http://mail.python.org/mailman/listinfo/python-list


Re: unicode and hashlib

2008-12-01 Thread Bryan Olson

Jeff H wrote:

[...] So once I have character strings transformed
internally to unicode objects, I should encode them in 'utf-8' before
attempting to do things that guess at the proper way to encode them
for further processing.(i.e. hashlib)


It looks like hashlib in Python 3 will not even attempt to digest a 
unicode object. Trying to hash 'abcdefg' in in Python 3.0rc3 I get:


  TypeError: object supporting the buffer API required

I think that's good behavior, except that the error message is likely to 
send beginners to look up the obscure buffer interface before they find 
they just need mystring.decode('utf8') or bytes(mystring, 'utf8').



a='André'
b=unicode(a,'cp1252')
b

u'Andr\xc3\xa9'

hashlib.md5(b.encode('utf-8')).hexdigest()

'b4e5418a36bc4badfc47deb657a2b50c'


Incidentally, MD5 has fallen and SHA-1 is falling. Python's hashlib also 
includes the stronger SHA-2 family.



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


Python introspection and namespace weird question

2008-12-01 Thread Rayene Ben Rayana
Hello everybody,

Is there an easy way to do something like this in python ?

 red_car = MyVehicleClass()
 car = red_car
 car.labels()
['red_car' , 'car' ]

In other words, does an instance has access to its name pointers ?

Thanks in advance,

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


Re: How to instantiate in a lazy way?

2008-12-01 Thread Slaunger
Slaunger wrote:

 class PayloadOnDemand(object):
     
     Behaves as a PayloadInstant object, but instantiation is faster
     as only the position of the payload in the file is stored
 initially in the object.
     Only when acessing the initially non-existing data attribute
     are the data actually read and the attribure created and bound to
 the instance.
     This will actually be a little slower than in PayloadInstant as
 the correct file position
     has to be seeked out first.
     On later calls the object has as efficient attribute access as
 PayloadInstant
     

     @classmethod
     def read_from_file(cls, f, size):
         pos = f.tell()
         f.seek(pos + size) #Skip to end of payload
         return cls(pos)

Extend with ref to file instead:
  return cls(f, pos)

     # I probably need some __getattr__ or __getattribute__ magic
 # there...??

To answer my own rethorical question I guess I should do something
like this

def __getattr__(self, attr_name):

Only called if attr_name is not in the __dict__ for the
instance

if attr_name == 'data':
self.__dict__[attr_name] = read_data(self.f,
self.file_position)


     def __init__(self, a_file_position):
         self.file_position = a_file_position

and then I need to also store a reference to the file in the
constructor...

def __init__(self, a_file, a_file_position):
self.f = a_file
self.file_position = a_file_position

Have I understood correctly how to to it the on demand way?

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Richard Riley
Roy Smith [EMAIL PROTECTED] writes:

 In article [EMAIL PROTECTED],
  Richard Riley [EMAIL PROTECTED] wrote:

 Roy Smith [EMAIL PROTECTED] writes:
 
  Clay Hobbs [EMAIL PROTECTED] wrote:
  The first real text editor I used was Vim, which I actually started
  using about a year ago.  I've looked at Emacs and it just looks
  confusing.
 
  I've been using emacs for so many years (um let's see, it's got to be 
  close 
  to 25 years now; first saw it on Columbia's TOPS-20 systems in the early 
  80's) that my fingers know what they're doing without my even thinking 
  about it.  In fact, I used to work with another emacs nut.  Every so 
  often, 
  one of use would watch the other do something and ask, What was that?.  
  Inevitably, neither of us could evoke the keystrokes we had just typed.  
  We 
  would just re-do it, and watch our fingers to see what we typed.  It 
  didn't 
  even have to be on a keyboard; we could air-type it, and that was good 
  enough.
 
  In any case, the basic logic behind emacs is pretty simple.  C-F is 
  forward 
  one character.  C-B is back one character.  C-N is Next line.  C-P is 
  Previous line.
 
 It's worth pointing out to people making loony signs here that the
 arrow keys work too 

 Yeah, I guess.  I use the arrows keys to mindlessly scroll around in a 
 file, especially when I just want to show some code to somebody.  It serves 
 two purposes.  First, I can lean way back from the keyboard and reach out 
 with one hand (giving the other person better visibility).  Second, it 
 makes it easier for a non-emacs person to jump in and drive for a while 
 (they saw me use the arrow keys and do the same, no explanations needed).

 For any serious editing, however, it's strictly the keys on the main part 
 of the keyboard.  It's just so much faster when your hands never have to 
 leave their home position.  To use the arrow keys, I need to pick my hand 
 up and move it over to the arrow key cluster.  Slow, slow, slow.

Have to disagree. I could never use C-f etc. If I want to navigate the
cursor its generally to browse and the 10th of a second it takes to rest
hand on the cursor pad is immaterial in the time compared to sit  back
and read the code.

I find the reference to using control keys to naviaget code character
and line at time leads to more people abandoning emacs than you would
believe. All it needs is a cursor keys or, for hardcore types, the
following key sequences.

Still. all to their own.


-- 
 important and urgent problems of the technology of today are no longer the 
satisfactions of the primary needs or of archetypal wishes, but the reparation 
of the evils and damages by the technology of yesterday.  ~Dennis Gabor, 
Innovations:  Scientific, Technological and Social, 1970
--
http://mail.python.org/mailman/listinfo/python-list


Re: pydoc enforcement.

2008-12-01 Thread Richard Riley
Marc 'BlackJack' Rintsch [EMAIL PROTECTED] writes:

 On Sun, 30 Nov 2008 16:27:07 -0800, [EMAIL PROTECTED] wrote:

 Basically I'm interested adding a check to see if:
   1) pydoc's are written for every function/method.

 Pylint warns for missing docstrings.

   2) There are entries for each parameter, defined by some
predetermined syntax.

 But which syntax?  There are several in use out there.  Even the (I 
 think) popular epydoc allows at least three, its own, something JavaDoc 
 like, and ReST.

 And I dislike forcing to document every parameter.  There's lots of code 
 that is clear just by the names of the parameters and one or two usage 
 examples in the docs.  Forcing to state the obvious again does not add 
 information for the user and is annoying for the programmer.

 My idea is that as much as I love dynamic typing, there are times when
 using some modules/API's that have less than stellar documentation. I
 was thinking that if it was possible to enable some switch that
 basically forced compilation to fail if certain documentation criteria
 weren't met.

 But that doesn't enforce good or even real documentation either.  Even 
 worse, you can't spot the undocumented parts of the code anymore, because 
 now every docable object has documentation like this just to make the 
 compiler happy:

 def spam(foo, bar):
 
 :param foo: a foo object.
 :param bar: a bar object.
 

 Which basically tells the same as no documentation at all.

 Ciao,
   Marc 'BlackJack' Rintsch

+1. Agreed 100%. There is nothing worse than auto generate useless
documentation or over commenting of obvious variables/members. If
anything it leads to problems later during maintenance.

-- 
 important and urgent problems of the technology of today are no longer the 
satisfactions of the primary needs or of archetypal wishes, but the reparation 
of the evils and damages by the technology of yesterday.  ~Dennis Gabor, 
Innovations:  Scientific, Technological and Social, 1970
--
http://mail.python.org/mailman/listinfo/python-list


Re: HELP!...Google SketchUp needs a Python API

2008-12-01 Thread Richard Riley
[EMAIL PROTECTED] writes:

 Don't feed the troll.


Yet you did and made the previous post visible to me.

If you don't want people to feed the troll, do not do it yourself.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Do more imported objects affect performance

2008-12-01 Thread Filip Gruszczyński
I see. Thanks for a really good explanation, I like to know, how to do
things in the proper way :)

2008/12/1 Nick Craig-Wood [EMAIL PROTECTED]:
 Rafe [EMAIL PROTECTED] wrote:
  On Dec 1, 7:26?am, Filip Gruszczy?ski [EMAIL PROTECTED] wrote:
  I have following question: if I use
 
  from module import *
 
  instead
 
  from module import Class
 
  am I affecting performance of my program? I believe, that all those
  names must be stored somewhere, when they are imported and then
  browsed when one of them is called. So am I putting a lot of garbage
  to this storage and make those searches longer?

  Why use it if you don't need it? Your post implies a choice and the
  '*' import can really make things muddy if it isn't actually necessary
  (rare). Why not just import the module and use what you need? It is
  way easier to read/debug and maintains the name-space.

 Importing the module is actualy slower...  If you import the name into
 your namespace then there is only one lookup to do.  If you import the
 module there are two.

 $ python -m timeit -s 'from timeit import Timer' 'Timer'
 1000 loops, best of 3: 0.0784 usec per loop

 $ python -m timeit -s 'import timeit' 'timeit.Timer'
 100 loops, best of 3: 0.243 usec per loop

 I'm not suggestion you should ever use from module import * only
 ever import the things you actually need, eg
 from module import MyClass, my_function

 And here is the test again, actually calling something with the same
 difference in execution speed :-

 $ python -m timeit -s 'from os import nice' 'nice(0)'
 100 loops, best of 3: 1.21 usec per loop

 $ python -m timeit -s 'import os' 'os.nice(0)'
 100 loops, best of 3: 1.48 usec per loop

 --
 Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick
 --
 http://mail.python.org/mailman/listinfo/python-list




-- 
Filip Gruszczyński
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread Mike Driscoll
On Nov 30, 6:22 am, Alessio Pace [EMAIL PROTECTED] wrote:
 Hi,

 I have to distribute a Python application which relies on an external
 library, and I'm not very fluent in this kind of stuff with Python (I
 come from the Java world where I would have used the Maven build tool
 to create an assembly with dependencies of all it is needed to run
 the app), so I was wondering if someone here could give me some
 suggestions :-)

 The external library is generally not present on the machines where I
 have to distribute my app, and the set of machines on which I have to
 distribute this application is not known a priori (it is just known
 they are Unix systems). In fact by means of SSH I will have to copy
 (and install) the app+library and make it runnable onto the specified
 destination(s).

 My question is: how would you do that?  At the moment my current
 solution is to make a tarball of the sources of my app + the
 distutils archive of the external library, copy all into the target
 machine, decompress and install via distutils(*) the external library,
 setup some PYTHONPATH stuff on the destination machine, and finally be
 able to launch the application.

 (*) specifying a prefix into the user home, as I'm not root there

 So in the end I was wondering if there is a more elegant way of doing
 this because, as I said before, I'm not very experienced in these kind
 of tasks in Python.

 Thanks in advance for any suggestion or comment.

 Alessio Pace.

I recommend GUI2Exe, a nice wrapper to py2exe, py2app, PyInstaller,
cx_Freeze and bbFreeze:

http://code.google.com/p/gui2exe/

I've only used the py2exe portion of the program, but it works great
and the developers behind the project are very responsive and helpful.

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


11001, 'getaddrinfo failed' : Error in httplib but not in urllib2

2008-12-01 Thread RajNewbie
Hi all,
I am trying to connect to localhost via httplib, but it fails.
To check whether it is a firewall problem etc, I tried to connect
via urllib2, but it went through fine.
Could some one help me out on this? I cannot use urllib2 in the
program because I have to send files via post to a url, and urllib2
doesn't support it (Python2.4)

Please see the code below:
--HTTPLIB--
h = httplib.HTTPConnection(http://127.0.0.1:8000;)
h.request('GET', /accounts/)
res = h.getresponse()

--URLLIB2--
req = urllib2.Request(http://127.0.0.1:8000/accounts/;)
fd = urllib2.urlopen(req)

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Slaunger
On 29 Nov., 21:44, Josh [EMAIL PROTECTED] wrote:
 If you were a beginning programmer and willing to make an investment in
 steep learning curve for best returns down the road, which would you pick?

 I know this topic has been smashed around a bit already, but 'learning
 curve' always seems to be an arguement. If you feel that one is easier
 or harder than the others to learn feel free to tell, but let's not make
 that the deciding factor. Which one will be most empowering down the
 road as a development tool?

 Thanks in advance,

 JR

Many have written that they have no experience with using Eclipse.

Well, I have a little, and I just want to add my experience.

I am a novice Python programmer and I use Eclipse with the PyDev and
SubClipse
extensions which gives me a Python environment and integration with
Subversion,
which is the version control system I use. My OS is Windows XP and
Server 2003.

Other people are working on the same project using either eclipse on a
linux box
or another editor of choice.

Eclipse works very well for me. The facilities I like are:
* A handy object browser which lets be jump into the part of the code
I am interested in
 (I work with several, quite large modules).
* Autocompletion: When I write . it gives me a suggestion of the
methods/attributes available
  and the doc string (if available) is shown as a tool tip. It can
autogenerate a generic signature
  for a method call with the attribute names prefilled. Very handy as
I quite often forget the order
  of arguments.
* Unit tests: It is quite convenient to write and run unit tests in
the environment (unittest run targets)
* Refactoring: Intelligent rename for instance is handy for renaming
methods and attributes across modules
* Debugger: I debugger environment which works well for me with
watchlists, step-into, step over.
* Chroma-coded
* Auto-indentation
* Macros for block commenting, indenting and unindenting.
* Nice integrated diff toll which integrates well with subversion.
* And tons of other things which I have not explored yet. Like a
coverage run target for instance.
* Some Syntax checking

I am personally satisfied with the startup time and overall
responsiveness of Eclipse, but users of Emacs/Vim
may have other bars for responsiveness than me.

Sometimes I experience some problems with cascading inexplicable
errors ocurring in the IDE when running unit test suites.
This is annoying and they do not occur when I run the tests stand-
alone outside on the command line.

This IDE works well for me. I do not have an opinion about how it
works in comparison with Emacs and Vim,
just wanted to give my opinion on Eclipse and Python as this had not
been discussed so much.

On the prestige level it is certainly not considered as cool to use
Eclipse as Emacs/Vim where I am working.
I often hear the opinion that you are not a proper coder/hacker is you
do not master any of these classic editors.

I also think it depends much upon your coding style. Personally I
spend much more time thinking on how to implement
this-and-that, than actually coding. That may reflect that I am still
a novice Python Programmer.

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


Re: 11001, 'getaddrinfo failed' : Error in httplib but not in urllib2

2008-12-01 Thread Tim Golden

RajNewbie wrote:

Hi all,
I am trying to connect to localhost via httplib, but it fails.
To check whether it is a firewall problem etc, I tried to connect
via urllib2, but it went through fine.


Could some one help me out on this? I cannot use urllib2 in the

program because I have to send files via post to a url, and urllib2
doesn't support it (Python2.4)

Please see the code below:
--HTTPLIB--
h = httplib.HTTPConnection(http://127.0.0.1:8000;)
h.request('GET', /accounts/)
res = h.getresponse()


Which aspect of the documentation:

http://docs.python.org/library/httplib.html

leads you to think that the first parameter to
httplib.HTTPConnection should be a URL?

dump

import httplib
httplib.HTTPConnection (127.0.0.1)

httplib.HTTPConnection instance at 0x00AAB508

httplib.HTTPConnection (localhost)

httplib.HTTPConnection instance at 0x00B40558




/dump

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


setuptools - library dependencies

2008-12-01 Thread redbaron
I try to write setup.py which compiles  C Extenstion (A). The problem
is the fact, that my C Extension depends on another C lib (B). I've
digged it setuptools sources a bit and found libraries option for
setuptools.setup.
Now it compile B library at build_clib stage and A Extenstion at
build_ext stage. But it doesn't pack B library in final egg file, only
A one. Even more, it compiles B as static lib, but links it to A as
dynamic, it leads to undefined symbols in A. How could I either:

1) link A with B staticaly?
2) put B in final egg in same dir as A?
--
http://mail.python.org/mailman/listinfo/python-list


Re: finding the difference between the two version of the python program...

2008-12-01 Thread Tino Wildenhain

Hi,

Piyush Anonymous wrote:
is there a tool which, given two version of programs, finds the 
difference like set of classes added, deleted and modified?

assuming the python program is written in oops way.


diff for example can do this.

There is also an difflib in python which you can use
to roll your own diff.

Regards
TIno


smime.p7s
Description: S/MIME Cryptographic Signature
--
http://mail.python.org/mailman/listinfo/python-list


Re: How to instantiate in a lazy way?

2008-12-01 Thread Nick Craig-Wood
Slaunger [EMAIL PROTECTED] wrote:
  Slaunger wrote:
 
  class PayloadOnDemand(object):
  ? ? 
  ? ? Behaves as a PayloadInstant object, but instantiation is faster
  ? ? as only the position of the payload in the file is stored
  initially in the object.
  ? ? Only when acessing the initially non-existing data attribute
  ? ? are the data actually read and the attribure created and bound to
  the instance.
  ? ? This will actually be a little slower than in PayloadInstant as
  the correct file position
  ? ? has to be seeked out first.
  ? ? On later calls the object has as efficient attribute access as
  PayloadInstant
  ? ? 
 
  ? ? @classmethod
  ? ? def read_from_file(cls, f, size):
  ? ? ? ? pos = f.tell()
  ? ? ? ? f.seek(pos + size) #Skip to end of payload
  ? ? ? ? return cls(pos)
 
  Extend with ref to file instead:
return cls(f, pos)
 
  ? ? # I probably need some __getattr__ or __getattribute__ magic
  # there...??
 
  To answer my own rethorical question I guess I should do something
  like this
 
  def __getattr__(self, attr_name):
  
  Only called if attr_name is not in the __dict__ for the
  instance
  
  if attr_name == 'data':
  self.__dict__[attr_name] = read_data(self.f,
  self.file_position)
 
 
  ? ? def __init__(self, a_file_position):
  ? ? ? ? self.file_position = a_file_position
 
  and then I need to also store a reference to the file in the
  constructor...
 
  def __init__(self, a_file, a_file_position):
  self.f = a_file
  self.file_position = a_file_position
 
  Have I understood correctly how to to it the on demand way?

I wouldn't use __getattr__ unless you've got lots of attributes to
overload.  __getattr__ is a recipe for getting yourself into trouble
in my experience ;-)

Just do it like this...

class PayloadOnDemand(object):
  def __init__(self, a_file, a_file_position):
  self._data = None
  self.f = a_file
  self.file_position = a_file_position

  @property
  def data(self):
  if self._data is None:
  self._data = self.really_read_the_data()
  return self._data

then you'll have a .data attribute which when you read it for the
first time it will populate itself.

If None is a valid value for data then make a sentinel, eg

class PayloadOnDemand(object):
  sentinel = object()

  def __init__(self, a_file, a_file_position):
  self._data = self.sentinel
  self.f = a_file
  self.file_position = a_file_position

  @property
  def data(self):
  if self._data is self.sentinel:
  self._data = self.really_read_the_data()
  return self._data


-- 
Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick
--
http://mail.python.org/mailman/listinfo/python-list


Re: 11001, 'getaddrinfo failed' : Error in httplib but not in urllib2

2008-12-01 Thread RajNewbie
On Dec 1, 7:43 pm, Tim Golden [EMAIL PROTECTED] wrote:
 RajNewbie wrote:
  Hi all,
      I am trying to connect to localhost via httplib, but it fails.
      To check whether it is a firewall problem etc, I tried to connect
  via urllib2, but it went through fine.

      Could some one help me out on this? I cannot use urllib2 in the

  program because I have to send files via post to a url, and urllib2
  doesn't support it (Python2.4)

  Please see the code below:
  --HTTPLIB--
  h = httplib.HTTPConnection(http://127.0.0.1:8000;)
  h.request('GET', /accounts/)
  res = h.getresponse()

 Which aspect of the documentation:

 http://docs.python.org/library/httplib.html

 leads you to think that the first parameter to
 httplib.HTTPConnection should be a URL?

 dump import httplib
  httplib.HTTPConnection (127.0.0.1)

 httplib.HTTPConnection instance at 0x00AAB508 httplib.HTTPConnection 
 (localhost)

 httplib.HTTPConnection instance at 0x00B40558



 /dump

 TJG

oops.
My mistake. I am sorry to post such a braindead question here.
I mistook the host for the url here. Sorry.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Two attributes! Why?

2008-12-01 Thread Emanuele D'Arrigo
On Nov 29, 5:21 am, Steven D'Aprano [EMAIL PROTECTED]
cybersource.com.au wrote:
 This is a side-effect of name-mangling. Double-underscore names are only
 mangled when they are referred to directly as attributes, not when they
 are passed to setattr, getattr etc. Those functions don't do any name
 mangling.

Ah! That make sense! Thank you!

It's a bit of an obscure thing right now. I don't see mention of it in
the description of the setattr/getattr built-ins:

http://docs.python.org/library/functions.html

Wouldn't be good to have a hint of the issue there?

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


Re: end of print = lower productivity ?

2008-12-01 Thread Tim Chase

For a proof, let's see what Google has to say about this:
Windows text editor. Vim is on page 3, near the turning
point where nobody is talking about text-editor anymore and
more about text-editor reviews. Even worse is Emacs, on page
6, after many other popular text-editors have been mentioned
several times.


That's a pretty malformed proof:

http://www.google.com/search?q=people%20you%20should%20listen%20to%20regarding%20choice%20of%20text-editor

You don't appear anywhere in the top *10* pages...QED  ;-)

However, if you want to play that game, vim.org appears on page #1 of

http://www.google.com/search?q=best+text+editor

Use what editor works for you -- but if evolution in the 
language's features makes difficulties for you but not for users 
of other editors, it's your editor that's the problem, not the 
language.


Viva-la-print-function'ly yers,

-tkc






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


Re: Project structure - Best practices

2008-12-01 Thread Aahz
In article [EMAIL PROTECTED],
Rafe  [EMAIL PROTECTED] wrote:

...and I completely agree. I always use the standard import form
unless absolutely necessary. However, I use 'as' to shorten the path
to the last module. For example:
 import app.foo.bar as bar
 instance = bar.Class()

Why bother with ``as`` in this case?

from app.foo import bar
-- 
Aahz ([EMAIL PROTECTED])   * http://www.pythoncraft.com/

It is easier to optimize correct code than to correct optimized code.
--Bill Harlan
--
http://mail.python.org/mailman/listinfo/python-list


Re: pydoc enforcement.

2008-12-01 Thread J. Cliff Dyer

On Sun, 2008-11-30 at 16:27 -0800, [EMAIL PROTECTED] wrote:
 I've been thinking about implementing (although no idea yet *HOW*) the
 following features/extension for the python compile stage and would be
 interested in any thoughts/comments/flames etc.
 
 Basically I'm interested adding a check to see if:
   1) pydoc's are written for every function/method.
   2) There are entries for each parameter, defined by some
 predetermined syntax.
 
 My idea is that as much as I love dynamic typing, there are times when
 using some modules/API's that have less than stellar documentation. I
 was thinking that if it was possible to enable some switch that
 basically forced compilation to fail if certain documentation criteria
 weren't met.
 
 Yes, it should be up to developers to provide documentation in the
 first place. Or, the client developer might need to read the source
 (IF its available)...  but having some forced documentation might at
 least ease the problem a little.
 
 For example (half borrowing from Javadoc).
 
 class Foo( object ):
 
   def bar( self, ui ):
  pass
 
 
 Would fail, since the bar method has an unknown parameter called
 ui.
 What I think could be interesting is that the compiler forces some
 documentation such as:
 
 class Foo( object ):
 
   def bar( self, ui ):
 
 @Param: ui :  blah blah blah.
 
  pass
 
 
 The compiler could check for @Param matching each parameter passed to
 the method/function. Sure, a lot of people might just not put a
 description in, so we'd be no better off. But at least its getting
 them *that* far, maybe it would encourage them to actually fill in
 details.
 
 Now ofcourse, in statically  typed language, they might have the
 description as Instance of UIClass or something like that. For
 Python, maybe just a description of Instance of abstract class UI or
 List of Dictionaries...  or whatever. Sure, precise class names
 mightn't be mentioned (since we mightn't know what is being used
 then), but having *some* description would certainly be helpful (I
 feel).
 
 Even if no-one else is interested in this feature, I think it could
 help my own development (and would be an interested first change
 into Python itself).
 
 Apart from bagging the idea, does anyone have a suggestion on where in
 the Python source I would start for implementing such an idea?
 
 Thanks
 
 Ken

For the reasons already stated, I think it's probably a bad idea to
enforce this at compile time.  I think it's a great idea to make sure
that this information is present in all your code, but unless you want
to see useless stubs, the correct time to enforce this is at commit
time.  Don't accept any improperly documented patches.  

Syntax is not enough to ensure what you want to ensure.  The semantics
have to be right as well.

Cheers,
Cliff




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


Re: Python surpasses Perl in popularity?

2008-12-01 Thread Stephane Chazelas
2008-12-1, 10:16(+00), Andre Majorel:
[...]
 Tru64:
   /bin/sh can behave either as a Bourne shell or a POSIX shell
   (ksh88) depending on the environment

 How does it decide ? argv[0] ? isatty (STDIN_FILENO) ?

That was answered in another article with a quote of the sh man
page on Tru64: via an environment variable: BIN_SH.

 most Linux based systems and most other Unices:
   /bin/sh is a POSIX compliant shell (bash generally for Linux)
   and there's no Bourne shell (either there has never been or it
   has been removed/replaced by a POSIX shell).

 Two other Unixen I know of that have a non-POSIX sh are SCO Open
 Server and UnixWare. I'm not sure they even provide a
 POSIX-compliant alternative like Solaris does.

Again, see http://www.in-ulm.de/~mascheck/various/shells/

[...]
 Many people assume standard equates portable. As far as
 shell programming is concerned, the safest way to get portability
 is to ignore the standard and code for the Bourne shell.

Yes, it's enough and relatively safe in most cases. It's the
only option if you want to be portable to systems over 15 years
old.

But nowadays, especially since the specifications have been made
public, I find that it is sufficiently widespread to make POSIX a
safer bet. At least having a specification gives you some sort
of guarantee: if you write your script by the rules that are
clearly (most of the time) specified, then it should work on any
compliant system. If it doesn't work, then it's not your fault
(though it's true in many case, you'll still be the one who'll
have to do something about it).

-- 
Stéphane
--
http://mail.python.org/mailman/listinfo/python-list


Re: double import protection - how to ?

2008-12-01 Thread Helmut Jarausch

Peter Otten wrote:

Helmut Jarausch wrote:


Peter Otten wrote:

Helmut Jarausch wrote:



Then it's a problem with a problem with a webserver written in Python
(Karrigell-3.0) and probably related to multi-threading (the statements in
my module get definitely executed more than once).


Maybe you have the reload_modules* option switched on? That would defeat
Python's caching in order to ease development.

(*) see http://karrigell.sourceforge.net/en/configuration.htm



Thanks Peter for the hint.
Indeed, I am trying to port my application to Karrigell-3.0,
where Python's caching is bypassed and the statements in the
module get executed each time. So, I have to install a trap door
using a global variable.

Helmut.


--
Helmut Jarausch

Lehrstuhl fuer Numerische Mathematik
RWTH - Aachen University
D 52056 Aachen, Germany
--
http://mail.python.org/mailman/listinfo/python-list


Re: Pyhon (with wxPython) on Windows' cygwin: can it be done fully ?

2008-12-01 Thread J. Cliff Dyer

On Sat, 2008-11-29 at 13:31 -0800, Lie wrote:
 pdb and logging is too much for beginners, which most likely does not
 yet understand the workings of the debugger and logger (and pdb's many
 quirks). Don't forget that we're all beginners once. Python's learning
 curve shouldn't raise with time, it should get lower so more people
 can join in the board.

 import logging
 logging.basicConfig(level=logging.DEBUG)

 logging.debug(HERE!)
DEBUG:root:HERE!
 logging.debug(THERE!)
DEBUG:root:THERE!
 logging.info(abc)
INFO:root:abc


Ooh.  Tough one.

The only thing that's missing is to have this clearly documented in
tutorials.  (Maybe level 2, once you've learned the basics).

And if that's too hard for you, you can still use print(HERE!).  But
why sweat the productivity loss of the two parens when robust logging
is really that easy, and can be turned on or off at one place?






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


Re: How to instantiate in a lazy way?

2008-12-01 Thread Slaunger
On 1 Dec., 16:30, Nick Craig-Wood [EMAIL PROTECTED] wrote:

 I wouldn't use __getattr__ unless you've got lots of attributes to
 overload.  __getattr__ is a recipe for getting yourself into trouble
 in my experience ;-)

 Just do it like this...

 class PayloadOnDemand(object):
       def __init__(self, a_file, a_file_position):
           self._data = None
           self.f = a_file
           self.file_position = a_file_position

       @property
       def data(self):
           if self._data is None:
               self._data = self.really_read_the_data()
           return self._data

 then you'll have a .data attribute which when you read it for the
 first time it will populate itself.

 If None is a valid value for data then make a sentinel, eg

 class PayloadOnDemand(object):
       sentinel = object()

       def __init__(self, a_file, a_file_position):
           self._data = self.sentinel
           self.f = a_file
           self.file_position = a_file_position

       @property
       def data(self):
           if self._data is self.sentinel:
               self._data = self.really_read_the_data()
           return self._data

 --
 Nick Craig-Wood [EMAIL PROTECTED] --http://www.craig-wood.com/nick- Skjul 
 tekst i anførselstegn -

 - Vis tekst i anførselstegn -

OK, I get it. In my case I have four attributes to create when one of
them is accessed, I do not know if that is a lot of attributes;-) One
thing I like about the __getattr__ is that it is only called that one
single time where an attempt to read a data attribute fails because
the attribute name is not defined in the __dict__ of the object.

With the property methology you do the value check on each get, which
does not look as clean. The property methology is also a little less
arcane I guess for less experienced Python programmers to understand
when re-reading the code.

What kind of trouble are you referring to in __getattr__? Is it
recursive calls to the method on accessing object attributes in that
method itself or other complications?

On a related issue, thank you for showing me how to use @property as a
decorator - I was not aware of that possibility, just gotta understand
how to decorate a setter and delete method as well, but I should be
able to look that up by myself...

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


Import of egg packages installed with easy_install

2008-12-01 Thread Alexey Vlasov
Hi.

There's an already installed with easy_install packet, let's say flup,
to the home catalog:
$ ls -la ~/python/lib/python2.5/site-packages/
total 176
drwxr-xr-x  3 4096 Nov 29 18:57 .
drwxr-xr-x  3 4096 Nov 29 18:51 ..
-rw-r--r--  1 208 Nov 29 18:57 easy-install.pth
-rw-r--r--  1 134573 Nov 29 18:51 flup-1.0.1-py2.5.egg
-rw-r--r--  1 2362 Nov 29 18:51 site.py
-rw-r--r--  1 1853 Nov 29 18:51 site.pyc


$ cat ~/python/lib/python2.5/site-packages/easy-install.pth
import sys; sys.__plen = len(sys.path)
./flup-1.0.1-py2.5.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:];
p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert =
p+len(new)

$ echo $PYTHONPATH
/usr/lib64/portage/pym:/home/username/python/lib64/python2.5/site-packages

$ python
Python 2.5.2 (r252:60911, Nov 13 2008, 15:01:36)
[GCC 4.1.2 (Gentoo 4.1.2 p1.1)] on linux2
Type help, copyright, credits or license for more information.
 import flup

No errors.

Then I create a simple CGI script:

#!/usr/bin/python

print Content-type: text/plain;
print

import sys
sys.path.insert (0,
'/home/username/python/lib64/python2.5/site-packages')
print sys.path
import flup


Browser says:
['/home/username/python/lib64/python2.5/site-packages',
'/home/username/http', '/usr/lib64/python25.zip',
'/usr/lib64/python2.5', '/usr/lib64/python2.5/plat-linux2',
'/usr/lib64/python2.5/lib-tk', '/usr/lib64/python2.5/lib-dynload',
'/usr/lib64/python2.5/site-packages']

in error log:
[Sat Nov 29 19:41:15 2008] [error] Traceback (most recent call last):
[Sat Nov 29 19:41:15 2008] [error] File path.cgi, line 9, in module
[Sat Nov 29 19:41:15 2008] [error] import flup
[Sat Nov 29 19:41:15 2008] [error] ImportError: No module named flup


If you start it with console, you get the same, but there appears also
another path:
/home/username/python/lib64/python2.5/site-packages/flup-1.0.1-py2.5.egg

As I understand it is the problem actually, but I can't get why sys.path
doesn't contain this path when I request with HTTP.

-- 
BRGDS. Alexey Vlasov.
--
http://mail.python.org/mailman/listinfo/python-list


python 2.5.2 or Python 2.6 compilation problem on AIX 5.3

2008-12-01 Thread [EMAIL PROTECTED]
Hello:
I am trying to compile Python 2.5.2 on AIX 5.3 with gcc 4.2.3. I am
getting following error. (I also tried Python 2.6 with same error)

creating build/temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/
Modules
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -
Wstrict-prototypes -I. -I/share/tmhsdsd2/tmp/Python-2.5.2/./Include -
I. -IInclude -I./Include -I/usr/local/include -I/share/tmhsdsd2/tmp/
Python-2.5.2/Include -I/share/tmhsdsd2/tmp/Python-2.5.2 -c /share/
tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.c -o build/temp.aix-5.3-2.5/
share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o
creating build/lib.aix-5.3-2.5

./Modules/ld_so_aix gcc -pthread -bI:Modules/python.exp build/
temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o -L/
usr/local/lib -lpython2.5 -o build/lib.aix-5.3-2.5/_struct.so
collect2: library libpython2.5 not found
*** WARNING: renaming _struct since importing it failed:
0509-022 Cannot load module build/lib.aix-5.3-2.5.
0509-026 System error: A file or directory in the path name
does not exist.
error: No such file or directory
make: 1254-004 The error code from the last command is 1.


Stop.


I am not able to find the problem. I would appreciate, if you could
help. I used following command line options to confugure.
 ./configure --prefix=/home/hci/dinakar/python25 -enable-shared --with-
gcc

Thank you.
Dinakar
--
http://mail.python.org/mailman/listinfo/python-list


Re: Pyhon (with wxPython) on Windows' cygwin: can it be done fully ?

2008-12-01 Thread Fernando H. Sanches
At first I also disliked print's new syntax, but later I realised it
could be useful.

However, I agree that the parentheses are annoying. Not because of the
parens theirselves, but because of the Shift key.

Why programmers stilll can't have special keyboards with parens keys
that doesn't need pressing shift? Isn't time C programmers have  a
 key and perl programmers a $ one? And why the heck we need shift
for ( and not for [ or {, since the first one is much more used
(even outside programming)?

Really, we don't need to change our syntax, we need to change our
keyboards. We are so blinded by tradition that we are losing
productivity.
--
http://mail.python.org/mailman/listinfo/python-list


Re: HTML File Parsing

2008-12-01 Thread worldgnat
On Oct 28, 3:18 pm, Stefan Behnel [EMAIL PROTECTED] wrote:
 Felipe De Bene wrote:
  I'm having problems parsing an HTML file with the following syntax :

  TABLE cellspacing=0 cellpadding=0 ALIGN=CENTER BORDER=1 width='100%'
      TH BGCOLOR='#c0c0c0' Width='3%'User ID/TH
      TH Width='10%' BGCOLOR='#c0c0c0'Name/THTH width='7%'
  BGCOLOR='#c0c0c0'Date/TH
  and so on

  whenever I feed the parser with such file I get the error :

  HTMLParser.HTMLParseError: bad end tag: /TH BGCOLOR='#c0c0c0', at
  line 515, column 45

 Your HTML page is not HTML, i.e. it is broken. Python's HTMLParser is not made
 for parsing broken HTML. However, you can use the parse of lxml.html to fix up
 your HTML for you.

 http://codespeak.net/lxml/

 Stefan

It doesn't just choke on bad HTML, it also chokes on javascript that
writes HTML, e.g.  document.write('scr'+'ipt language=javascript1.1
src=http:/... will also result in an error.

However, when I did:

parser = aqparser() #An implementation of HTMLParser
parser.CDATA_CONTENT_ELEMENTS = ()

it worked. Strange...

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


Re: How to distribute a Python app together with its dependencies?

2008-12-01 Thread Alessio Pace
On 1 Dic, 15:21, Mike Driscoll [EMAIL PROTECTED] wrote:
 On Nov 30, 6:22 am, Alessio Pace [EMAIL PROTECTED] wrote:



  Hi,

  I have to distribute a Python application which relies on an external
  library, and I'm not very fluent in this kind of stuff with Python (I
  come from the Java world where I would have used the Maven build tool
  to create an assembly with dependencies of all it is needed to run
  the app), so I was wondering if someone here could give me some
  suggestions :-)

  The external library is generally not present on the machines where I
  have to distribute my app, and the set of machines on which I have to
  distribute this application is not known a priori (it is just known
  they are Unix systems). In fact by means of SSH I will have to copy
  (and install) the app+library and make it runnable onto the specified
  destination(s).

  My question is: how would you do that?  At the moment my current
  solution is to make a tarball of the sources of my app + the
  distutils archive of the external library, copy all into the target
  machine, decompress and install via distutils(*) the external library,
  setup some PYTHONPATH stuff on the destination machine, and finally be
  able to launch the application.

  (*) specifying a prefix into the user home, as I'm not root there

  So in the end I was wondering if there is a more elegant way of doing
  this because, as I said before, I'm not very experienced in these kind
  of tasks in Python.

  Thanks in advance for any suggestion or comment.

  Alessio Pace.

 I recommend GUI2Exe, a nice wrapper to py2exe, py2app, PyInstaller,
 cx_Freeze and bbFreeze:

 http://code.google.com/p/gui2exe/

 I've only used the py2exe portion of the program, but it works great
 and the developers behind the project are very responsive and helpful.

 Mike

Hi all and thanks for the replies.  Apparenlty I managed to make the
standalone application with bbfreeze (used directly), I still have to
tune a little bit how it can pack in it also classes which are loaded
dynamically, and which from a static examination of the code are not
found then...

I'll try to give a look at GUI2Exe also, thank you for the suggestion.

Regards,
Alessio Pace.
--
http://mail.python.org/mailman/listinfo/python-list


optimization

2008-12-01 Thread Neal Becker
I noticed in some profiling, that it seems that:

def Func ():
  def something():
...

It appears that if Func is called many times, this nested func definition will 
cause significant overhead.  Is this true?  I guess I've become accustomed to 
decent compilers performing reasonable transformations and so have tended to 
write code for clarity.

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


Re: optimization

2008-12-01 Thread skip

Neal I noticed in some profiling, that it seems that:

Neal def Func ():
Neal   def something():
Neal ...

Neal It appears that if Func is called many times, this nested func
Neal definition will cause significant overhead.  Is this true?  I
Neal guess I've become accustomed to decent compilers performing
Neal reasonable transformations and so have tended to write code for
Neal clarity.

It could.  OTOH, the code object which implements the something body is
stored as a local var (or a constant, can't remember off the top of my
head), so it's not compiled over and over again.

-- 
Skip Montanaro - [EMAIL PROTECTED] - http://smontanaro.dyndns.org/
--
http://mail.python.org/mailman/listinfo/python-list


Chmod to a group only

2008-12-01 Thread Kless
How to chmod a file to: o-rwx ? (to change only the others mode)

os.chmod(fname, )

I was reading this [1], but the truth is that anything as 'S_IRUSR'
doesn't help enought.


[1] http://www.python.org/doc/2.5.2/lib/os-file-dir.html
--
http://mail.python.org/mailman/listinfo/python-list


Reg: PIL2.4 Error: AttributeError: pixel_access

2008-12-01 Thread Kottiyath
Hi all,
I am facing the following problem in PIL 2.4:
Code:
img = ImageGrab.grab()
img.save(image2.jpg)

Error:
img.save(image2.jpg)
  File C:\Python24\Lib\site-packages\PIL\Image.py, line 1372, in
save
self.load()
  File C:\Python24\Lib\site-packages\PIL\Image.py, line 599, in load
return self.im.pixel_access(self.readonly)
AttributeError: pixel_access

When I googled this error, I saw that such an error could be because
of some botched installation. So, I re-installed PIL. But still this
error persists.

The version is
 print Image.VERSION
1.1.6

I had installed PIL in Python2.5 earlier and had done image capture
also. But I need to go back to Python2.4 (because pymedia exe is
available for only python2.4) and now I am facing this issue.

I am pretty new to application programming, so if someone can help me
out, it would be very helpful.

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


Re: Debugging in Python

2008-12-01 Thread Trent Mick

Scott David Daniels wrote:

Stef Mientki wrote:

  I'm not completely satisfied with even the best debuggers,
most of the good ones are too difficult,
so I want to wrap rpdb2 and
don't want to miss any great features ;-)


I think ActiveState has a free 21-day trial, so you could check it out
yourself if you are willing to spend the concentrated time to check it
out.  


That is correct. Also the Python debugging docs are here, if that might 
help:

 http://docs.activestate.com/komodo/5.0/debugpython.html


Their license terms are reasonable (the license is attached to _you_,
not a particular machine you run it on, as I remember.


Also correct: with a Komodo IDE license you can use Komodo on any 
machine that you use.



Trent

--
Trent Mick
trentm at activestate.com
--
http://mail.python.org/mailman/listinfo/python-list


Re: Python introspection and namespace weird question

2008-12-01 Thread Chris Rebert
On Mon, Dec 1, 2008 at 6:04 AM, Rayene Ben Rayana
[EMAIL PROTECTED] wrote:
 Hello everybody,

 Is there an easy way to do something like this in python ?

 red_car = MyVehicleClass()
 car = red_car
 car.labels()
 ['red_car' , 'car' ]

 In other words, does an instance has access to its name pointers ?

In short, No. (Cue another debate over whether Python uses call-by-X
semantics...)

Typically people who want to do such things actually want/should use a
dictionary mapping string keys to instance values instead.

Note that in certain limited cases, voodoo involving the locals() or
globals() built-in functions or the `inspect` module can work, but not
in the common general case. But generally these techniques are
considered bad style and kludgey unless you're writing a debugger or
something equally meta, with using a dictionary as explained
previously being much preferred.

For example, for your particular code above, the following happens to work:
[name for name, obj in locals().iteritems() if obj is car] #==
['red_car' , 'car' ]

But this will only give the names in the current function of the
particular car object. Likewise, globals() works only for module-level
names, and the `inspect` module's magic only works for names in
calling functions (i.e. those below the current one in the callstack).

Cheers,
Chris
-- 
Follow the path of the Iguana...
http://rebertia.com


 Thanks in advance,

 Rayene


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


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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Peter Anderson
What I have done is skipped the whole Vim/Emacs obscure editor thing and 
opted for PyScripter (see 
http://mmm-experts.com/Products.aspx?ProductID=4 ). It might not be as 
complete/complex as these other editors but it is easy to use and just 
lets me get on with the task of cutting code.


As a fall-back I also use EditPlus (see 
http://www.editplus.com/index.html ). Its only for Windows and its 
shareware so you need to pay for it. Its clip library makes it a VERY 
GOOD text editor. It's a real shame there are NO text editors with such 
a comprehensive and easy to modify clip library function (I would be 
really pleased to be proven wrong on this last point :-) ).


However, the best advice I think that can be given about editors is keep 
trying them until you find the one YOU like. We all like different 
things, especially when it comes to editors.


Regards,
Peter
--
*Peter Anderson*
There is nothing more difficult to take in hand, more perilous to 
conduct, or more uncertain in its success, than to take the lead in the 
introduction of a new order of things—Niccolo Machiavelli, /The Prince/, 
ch. 6

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


Re: optimization

2008-12-01 Thread Terry Reedy

[EMAIL PROTECTED] wrote:

Neal I noticed in some profiling, that it seems that:

Neal def Func ():
Neal   def something():
Neal ...

Neal It appears that if Func is called many times, this nested func
Neal definition will cause significant overhead.  Is this true?  I
Neal guess I've become accustomed to decent compilers performing
Neal reasonable transformations and so have tended to write code for
Neal clarity.

It could.  OTOH, the code object which implements the something body is
stored as a local var (or a constant, can't remember off the top of my
head), so it's not compiled over and over again.


Constant.  With 3.0...

 def f():
def g():
pass


 import dis
 dis.dis(f)
  2   0 LOAD_CONST   1 (code object g at 
0x0137D920, file pyshell#4, line 2)

  3 MAKE_FUNCTION0
  6 STORE_FAST   0 (g)
  9 LOAD_CONST   0 (None)
 12 RETURN_VALUE

If the inner function is constant and does not directly access outer 
function locals, and if every last tick of speed is a concern, then it 
can be move out and given a name like _outer_helper.


I would go for clarity and correctness first, but I would also wonder 
whether an inner function that is independent of its setting and 
therefore movable might be turned into something of more general use and 
usefully moved out for purposes other than just speed.


Terry Jan Reedy




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


Re: python 2.5.2 or Python 2.6 compilation problem on AIX 5.3

2008-12-01 Thread Terry Reedy

[EMAIL PROTECTED] wrote:

Hello:
I am trying to compile Python 2.5.2 on AIX 5.3 with gcc 4.2.3. I am
getting following error. (I also tried Python 2.6 with same error)

creating build/temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/
Modules
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -
Wstrict-prototypes -I. -I/share/tmhsdsd2/tmp/Python-2.5.2/./Include -
I. -IInclude -I./Include -I/usr/local/include -I/share/tmhsdsd2/tmp/
Python-2.5.2/Include -I/share/tmhsdsd2/tmp/Python-2.5.2 -c /share/
tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.c -o build/temp.aix-5.3-2.5/
share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o
creating build/lib.aix-5.3-2.5

./Modules/ld_so_aix gcc -pthread -bI:Modules/python.exp build/
temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o -L/
usr/local/lib -lpython2.5 -o build/lib.aix-5.3-2.5/_struct.so
collect2: library libpython2.5 not found


Have you checked all the directories on PATH to see if any contain 
libpython2.5?



*** WARNING: renaming _struct since importing it failed:
0509-022 Cannot load module build/lib.aix-5.3-2.5.
0509-026 System error: A file or directory in the path name
does not exist.
error: No such file or directory
make: 1254-004 The error code from the last command is 1.


Stop.


I am not able to find the problem. I would appreciate, if you could
help. I used following command line options to confugure.
 ./configure --prefix=/home/hci/dinakar/python25 -enable-shared --with-
gcc

Thank you.
Dinakar
--
http://mail.python.org/mailman/listinfo/python-list



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


Re: Import of egg packages installed with easy_install

2008-12-01 Thread Diez B. Roggisch
Alexey Vlasov wrote:

 Hi.
 
 There's an already installed with easy_install packet, let's say flup,
 to the home catalog:
 $ ls -la ~/python/lib/python2.5/site-packages/
 total 176
 drwxr-xr-x  3 4096 Nov 29 18:57 .
 drwxr-xr-x  3 4096 Nov 29 18:51 ..
 -rw-r--r--  1 208 Nov 29 18:57 easy-install.pth
 -rw-r--r--  1 134573 Nov 29 18:51 flup-1.0.1-py2.5.egg
 -rw-r--r--  1 2362 Nov 29 18:51 site.py
 -rw-r--r--  1 1853 Nov 29 18:51 site.pyc
 
 
 $ cat ~/python/lib/python2.5/site-packages/easy-install.pth
 import sys; sys.__plen = len(sys.path)
 ./flup-1.0.1-py2.5.egg
 import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:];
 p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert =
 p+len(new)
 
 $ echo $PYTHONPATH
 /usr/lib64/portage/pym:/home/username/python/lib64/python2.5/site-packages
 
 $ python
 Python 2.5.2 (r252:60911, Nov 13 2008, 15:01:36)
 [GCC 4.1.2 (Gentoo 4.1.2 p1.1)] on linux2
 Type help, copyright, credits or license for more information.
 import flup
 
 No errors.
 
 Then I create a simple CGI script:
 
 #!/usr/bin/python
 
 print Content-type: text/plain;
 print
 
 import sys
 sys.path.insert (0,
 '/home/username/python/lib64/python2.5/site-packages')
 print sys.path
 import flup
 
 
 Browser says:
 ['/home/username/python/lib64/python2.5/site-packages',
 '/home/username/http', '/usr/lib64/python25.zip',
 '/usr/lib64/python2.5', '/usr/lib64/python2.5/plat-linux2',
 '/usr/lib64/python2.5/lib-tk', '/usr/lib64/python2.5/lib-dynload',
 '/usr/lib64/python2.5/site-packages']
 
 in error log:
 [Sat Nov 29 19:41:15 2008] [error] Traceback (most recent call last):
 [Sat Nov 29 19:41:15 2008] [error] File path.cgi, line 9, in module
 [Sat Nov 29 19:41:15 2008] [error] import flup
 [Sat Nov 29 19:41:15 2008] [error] ImportError: No module named flup
 
 
 If you start it with console, you get the same, but there appears also
 another path:
 /home/username/python/lib64/python2.5/site-packages/flup-1.0.1-py2.5.egg
 
 As I understand it is the problem actually, but I can't get why sys.path
 doesn't contain this path when I request with HTTP.

It's not sufficient to add simply your local site-packages, you must install
it using the module site's addsitedir-function, like this:

import site
site.addsitedir(/home/username/python/lib/python2.5/site-packages)

The reason is that otherwise the *.pth-files in the site-packages aren't
picked up.

Diez

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


Re: end of print = lower productivity ?

2008-12-01 Thread Alan G Isaac

I actually trust that the developers had good
reasons for this change, but I think it is
silly to argue that it is costless.  The
question is, what is the cost-benefit trade-off?

One obvious cost is that working at the
interpreter prompt is now slightly less
convenient.  Just because the cost is small
does not mean it should not be offset by a
benefit.

I am less sympathetic to the suggestion that
there is an inconvenience when working in
an editor, but clearly some people find one.

My preferred transition would have been to
retain the `print` statement but add a `printf`
function (i.e., the new `print` function).
Presumably many would find this a repulsive
redundancy and a needless maintenance headache.

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


Dec 1st Python Meeting Cancellation

2008-12-01 Thread Mike Driscoll
Hi all!

Sorry for the very short notice, but the Python Programming group is
canceling tonight's meeting due to inclement weather, lack of interest
and sickness. We hope to see you at our next meeting, which will be
Monday, January 5th, 2009.

Happy holidays!

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


Checking a string against multiple matches

2008-12-01 Thread Aaron Scott
I've been trying to read up on this, but I'm not sure what the
simplest way to do it is.

I have a list of string. I'd like to check to see if any of the
strings in that list matches another string.

Pseudocode:

if two in [one, two, three, four]:
 return True

Is there any built-in iteration that would do such a thing, or do I
have to write a function to check for me? I was using .index on the
list, but it would return True for strings that contained the search
string rather than match it exactly, leading to false positives in my
code.
--
http://mail.python.org/mailman/listinfo/python-list


Spring Python 0.9.0 is released

2008-12-01 Thread Goldfish
Spring Python, the python version of the Spring Framework, has just
released version 0.9.0. This release includes a key update to
springpython.security.web module, where authorization has been patched
to support CherryPy 3.1.

To download the 0.9.0 release, or an archived release, and for access
to sample applications use 
http://www.springsource.com/download/community?project=Spring%20Extensions

Please visit the website at http://springpython.webfactional.com for
information about features, releases, source code, licensing, and
official documentation.
==
Release Notes - Spring Python - Version 0.9
Bug

* [SESPRINGPYTHONPY-81] - Fix AccessDecisionManager based on
CherryPy 3 upgrade

Task

* [SESPRINGPYTHONPY-76] - Convert sample applications to new
XMLConfig format.

==
Key Features of Spring Python include:

* Inversion Of Control - The idea is to decouple two classes at the
interface level. This lets you build many reusable parts in your
software, and your whole application becomes more pluggable. You can
use either the XmlApplicationContext or the
DecoratorBasedApplicationContext.

* Aspect-oriented Programming - Spring Python provides great ways to
wrap advice around objects. It is utilized for remoting. Another use
is for debug tracers and performance tracing.

* DatabaseTemplate - Reading from the database requires a monotonous
cycle of opening cursors, reading rows, and closing cursors, along
with exception handlers. With this template class, all you need is the
SQL query and row-handling function. Spring Python does the rest.

* Database Transactions - Wrapping multiple database calls with
transactions can make your code hard to read. This module provides
multiple ways to define transactions without making things
complicated.

* Security - Plugin security interceptors to lock down access to your
methods, utilizing both authentication and domain authorization.

* Remoting - It is easy to convert your local application into a
distributed one. If you have already built your client and server
pieces using the IoC container, then going from local to distributed
is just a configuration change.

* Samples - to help demonstrate various features of Spring Python,
some sample applications have been created:
o PetClinic - Everybody's favorite Spring sample application has been
rebuilt from the ground up using various web containers including:
CherryPy. Go check it out for an example of how to use this framework.
o Spring Wiki - Wikis are powerful ways to store and manage content,
so we created a simple one as a demo!
o Spring Bot - Use Spring Python to build a tiny bot to manage the IRC
channel of your open source project.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Checking a string against multiple matches

2008-12-01 Thread Jerry Hill
On Mon, Dec 1, 2008 at 2:31 PM, Aaron Scott [EMAIL PROTECTED] wrote:
 Pseudocode:

 if two in [one, two, three, four]:
 return True

That works, just like you wrote it:

 two in [one, two, three, four]
True

 two in [one, twofer, three, four]
False

If that doesn't answer your question, maybe you could give some examples.

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


Re: Checking a string against multiple matches

2008-12-01 Thread Peter Otten
Aaron Scott wrote:

 I've been trying to read up on this, but I'm not sure what the
 simplest way to do it is.
 
 I have a list of string. I'd like to check to see if any of the
 strings in that list matches another string.
 
 Pseudocode:
 
 if two in [one, two, three, four]:
  return True

Why /pseudo/ ?

 if two in [one, two, three, four]:
... print match
... else:
... print no match
...
match
 if seven in [one, two, three, four]:
... print match
... else:
... print no match
...
no match
 
 Is there any built-in iteration that would do such a thing, or do I
 have to write a function to check for me? I was using .index on the
 list, but it would return True for strings that contained the search
 string rather than match it exactly, leading to false positives in my
 code.

You didn't check carefully. list.index() gives you a value error when no
matching item is found:

 [one, two, three, four].index(seven)
Traceback (most recent call last):
  File stdin, line 1, in module
ValueError: list.index(x): x not in list

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


Re: Two attributes! Why?

2008-12-01 Thread Terry Reedy

Emanuele D'Arrigo wrote:

On Nov 29, 5:21 am, Steven D'Aprano [EMAIL PROTECTED]
cybersource.com.au wrote:

This is a side-effect of name-mangling. Double-underscore names are only
mangled when they are referred to directly as attributes, not when they
are passed to setattr, getattr etc. Those functions don't do any name
mangling.


Even as attributes, they are only mangled within the class definition.
__*
Class-private names. Names in this category, when used within the 
context of a class definition, are re-written to use a mangled form to 
help avoid name clashes between “private” attributes of base and derived 
classes. See section Identifiers (Names). 


Class-private is intended to mean 'private', not known and not used 
outside the class definition.  I believe the 'mangled' form is 
intentionally not documented.



Ah! That make sense! Thank you!

It's a bit of an obscure thing right now. I don't see mention of it in
the description of the setattr/getattr built-ins:
http://docs.python.org/library/functions.html
Wouldn't be good to have a hint of the issue there?


I think not.  The functions tell the truth when they say 'no such 
attribute' Any mention might suggest that trying to access private names 
from outside the class is a sensible thing to do.


Perhaps the __* doc quoted above could be improved.  Is anything there 
unclear?


Terry Jan Reedy

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


Re: Chmod to a group only

2008-12-01 Thread Kless
On 1 dic, 18:17, Kless [EMAIL PROTECTED] wrote:
 How to chmod a file to: o-rwx ? (to change only the others mode)

 os.chmod(fname, )

 I was reading this [1], but the truth is that anything as 'S_IRUSR'
 doesn't help enought.

 [1]http://www.python.org/doc/2.5.2/lib/os-file-dir.html

I have tried:

mode = os.stat(fname).st_mode
os.chmod(fname, mode | stat.S_IRWXO) = Changes to o+rwx

and if is used:
os.chmod(fname, mode  stat.S_IRWXO) = Delete all modes


Any help? please
--
http://mail.python.org/mailman/listinfo/python-list


Re: What about a decorator module version 3.0?

2008-12-01 Thread Terry Reedy

Michele Simionato wrote:



What do you people think?


I am not a user yet, but my opinion anyway...

Release a final 2.x version with whatever internal changes but with 
external api unchanged or at least backward compatible.  Mark items to 
be deleted as deprecated.  Keep that available indefinately.


Then release a 3.0 version with Py3.0 support and deprecated items deleted.

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Stef Mientki

Peter Anderson wrote:
What I have done is skipped the whole Vim/Emacs obscure editor thing 
and opted for PyScripter (see 
http://mmm-experts.com/Products.aspx?ProductID=4 ). It might not be as 
complete/complex as these other editors but it is easy to use and just 
lets me get on with the task of cutting code.
if it works it's a fair good editor, but if it doesn't (I have to 
restart the editor about each hour) ...


As a fall-back I also use EditPlus (see 
http://www.editplus.com/index.html ). Its only for Windows

but PyScripter is also only for windows ;-)
and its shareware so you need to pay for it. Its clip library makes it 
a VERY GOOD text editor. It's a real shame there are NO text editors 
with such a comprehensive and easy to modify clip library function (I 
would be really pleased to be proven wrong on this last point :-) ).

What so great about it ?
I use a template manager, written in pure python, works under any OS 
(where Python is installed) and can be used with any text editor and is 
open source and completely free. I think it has at least the same 
capabilities as the Komodo clip library.

Somewhere in the middle of the following page are a few notes:
 http://mientki.ruhosting.nl/data_www/pylab_works/pw_code_editor.html
and you can find the sources here:
 http://code.google.com/p/pylab-works/downloads/list



However, the best advice I think that can be given about editors is 
keep trying them until you find the one YOU like. We all like 
different things, especially when it comes to editors.



+1

cheers,
Stef


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


Re: Python introspection and namespace weird question

2008-12-01 Thread Rayene Ben Rayana
Thanks Chris,

Yeah it is kinda meta thing. My app allows to create a scene (a set of GUI
objects). A scene can be saved as a python script. And, it can be loaded
again using execfile().

each GUI object has a label. So, in the script scene, declaring an object in
a scene file should look like this:

red_car = MyVehicleClass(*label* = 'red_car')

But, I wanted to simplify the syntax of scene files and avoid repetition so
it would look like

red_car = MyVehicleClass()

with the *label* attribute automatically set to the name of the
corresponding variable.
I tried your locals().iteritems tip and it works perfectly.

The question now is: Given what I just explained, do you still think it is
bad programming to do that ? Should I better use the first syntax ?

Cheers,

Rayene,

I want to use that to simplify the syntax of the

On Mon, Dec 1, 2008 at 7:37 PM, Chris Rebert [EMAIL PROTECTED] wrote:

 On Mon, Dec 1, 2008 at 6:04 AM, Rayene Ben Rayana
 [EMAIL PROTECTED] wrote:
  Hello everybody,
 
  Is there an easy way to do something like this in python ?
 
  red_car = MyVehicleClass()
  car = red_car
  car.labels()
  ['red_car' , 'car' ]
 
  In other words, does an instance has access to its name pointers ?

 In short, No. (Cue another debate over whether Python uses call-by-X
 semantics...)

 Typically people who want to do such things actually want/should use a
 dictionary mapping string keys to instance values instead.

 Note that in certain limited cases, voodoo involving the locals() or
 globals() built-in functions or the `inspect` module can work, but not
 in the common general case. But generally these techniques are
 considered bad style and kludgey unless you're writing a debugger or
 something equally meta, with using a dictionary as explained
 previously being much preferred.

 For example, for your particular code above, the following happens to work:
 [name for name, obj in locals().iteritems() if obj is car] #==
 ['red_car' , 'car' ]

 But this will only give the names in the current function of the
 particular car object. Likewise, globals() works only for module-level
 names, and the `inspect` module's magic only works for names in
 calling functions (i.e. those below the current one in the callstack).

 Cheers,
 Chris
 --
 Follow the path of the Iguana...
 http://rebertia.com

 
  Thanks in advance,
 
  Rayene
 
 
  --
  http://mail.python.org/mailman/listinfo/python-list
 
 

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


Re: HELP!...Google SketchUp needs a Python API

2008-12-01 Thread r
Rome is Burning!
Pay particular attention to the second paragraph.


Narcissistic culture

Main article: The Culture of Narcissism
Historian and social critic Christopher Lasch described this topic in
his book, The Culture of Narcissism,[3] published in 1979. He
defines a narcissistic culture as one in which every activity and
relationship is defined by the hedonistic need to acquire the symbols
of spiritual wealth, this becoming the only expression of rigid, yet
covert, social hierarchies. It is a culture where liberalism only
exists insofar as it serves a consumer society, and even art, sex and
religion lose their liberating power.

In such a society of constant competition, there can be no allies, and
little transparency. The threats to acquisitions of social symbols are
so numerous, varied and frequently incomprehensible, that
defensiveness, as well as competitiveness, becomes a way of life. Any
real sense of community is undermined -- or even destroyed -- to be
replaced by virtual equivalents that strive, unsuccessfully, to
synthesize a sense of community. It can mean also many other things.

Contrary to Lasch, Bernard Stiegler argues in his book, Aimer,
s’aimer, nous aimer: Du 11 septembre au 21 avril, that consumer
capitalism is in fact destructive of what he calls primordial
narcissism, without which it is not possible to extend love to others.

-food for thought-
--
http://mail.python.org/mailman/listinfo/python-list


Re: Checking a string against multiple matches

2008-12-01 Thread Aaron Scott
Damn you, Python, and your loose documentation! It never occurred to
me to actually TRY my pseudocode, since I couldn't find anything on
that type of statement. Anyway, feel free to ignore me from now on.
--
http://mail.python.org/mailman/listinfo/python-list


Re: end of print = lower productivity ?

2008-12-01 Thread Terry Reedy

Alan G Isaac wrote:

I actually trust that the developers had good
reasons for this change, but I think it is
silly to argue that it is costless.


Guido ever argued that.


The question is, what is the cost-benefit trade-off?


Uniformity of language, flexibility, and removal of the  hack that 
Guido hated after adding.  Check the pydev discussions.



One obvious cost is that working at the
interpreter prompt is now slightly less
convenient.


But neither 'print' nor 'print()' is needed at the interpreter prompt.

 Just because the cost is small

does not mean it should not be offset by a
benefit.

I am less sympathetic to the suggestion that
there is an inconvenience when working in
an editor, but clearly some people find one.


That is the only time 'print' or 'print()' is needed.

I find it a minor nuisance also, but then I should learn to touch-type 
() better anyway for all the other uses.



My preferred transition would have been to
retain the `print` statement but add a `printf`
function (i.e., the new `print` function).
Presumably many would find this a repulsive
redundancy and a needless maintenance headache.


Yes.

tjr

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


newbie question: parse a variable inside an RE?

2008-12-01 Thread joemacbusiness
Hi All,

How do I parse a variable inside an RE?
What is the re.search() syntax when your
search string is a variable?
It's easy to parse hardcoded RE's but not
if you use a variable.

Here is my code, input and runtime:

$ cat test45.py
#!/usr/bin/python

import re

resp = raw_input('Selection: ')
newresp = resp.strip()
print you chose , newresp

fname = open('test44.in')
for I in fname:
#if re.search('^newresp', %s%(I)): # returns nothing
#if re.search(^newresp, %s%(I)):   # syntax error
if re.search(^newresp, %s%(I)):  # returns nothing
print I,

[EMAIL PROTECTED] work]$ cat test44.in
a1
b1
g1
g2
h1
h4
4g
5g
h5

$ python test45.py
Selection: g
you chose  g
$

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


Re: Checking a string against multiple matches

2008-12-01 Thread Jerry Hill
On Mon, Dec 1, 2008 at 3:29 PM, Aaron Scott [EMAIL PROTECTED] wrote:
 Damn you, Python, and your loose documentation! It never occurred to
 me to actually TRY my pseudocode, since I couldn't find anything on
 that type of statement. Anyway, feel free to ignore me from now on.

I'm not sure where you think the in operator should be documented.
It's in the documentation for sequence types:
http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange

The tutorial points there too, in its discussion of strings.

It's also in the language reference, in the section on comparision operators:
http://docs.python.org/reference/expressions.html#id12

Was there someplace you were looking that you expected to find
something about the containment operator and couldn't find it?  Maybe
it would be worth adding a See Also someplace?

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


Re: Emacs vs. Eclipse vs. Vim

2008-12-01 Thread Ben Finney
Peter Anderson [EMAIL PROTECTED] writes:

 What I have done is skipped the whole Vim/Emacs obscure editor thing
 and opted for PyScripter

PyScripter is not obscure, compared to Emacs and Vim?

I think I need a new ironometer.

-- 
 \  “I went to a garage sale. ‘How much for the garage?’ ‘It's not |
  `\for sale.’” —Steven Wright |
_o__)  |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list


Re: python 2.5.2 or Python 2.6 compilation problem on AIX 5.3

2008-12-01 Thread [EMAIL PROTECTED]
On Dec 1, 1:06 pm, Terry Reedy [EMAIL PROTECTED] wrote:
 [EMAIL PROTECTED] wrote:
  Hello:
  I am trying to compile Python 2.5.2 on AIX 5.3 with gcc 4.2.3. I am
  getting following error. (I also tried Python 2.6 with same error)

  creating build/temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/
  Modules
  gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -
  Wstrict-prototypes -I. -I/share/tmhsdsd2/tmp/Python-2.5.2/./Include -
  I. -IInclude -I./Include -I/usr/local/include -I/share/tmhsdsd2/tmp/
  Python-2.5.2/Include -I/share/tmhsdsd2/tmp/Python-2.5.2 -c /share/
  tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.c -o build/temp.aix-5.3-2.5/
  share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o
  creating build/lib.aix-5.3-2.5

  ./Modules/ld_so_aix gcc -pthread -bI:Modules/python.exp build/
  temp.aix-5.3-2.5/share/tmhsdsd2/tmp/Python-2.5.2/Modules/_struct.o -L/
  usr/local/lib -lpython2.5 -o build/lib.aix-5.3-2.5/_struct.so
  collect2: library libpython2.5 not found

 Have you checked all the directories on PATH to see if any contain
 libpython2.5?


Thanks for your response. libpython2.5.a is in the current directory
same as Makefile.

Thank you.
Dinakar
--
http://mail.python.org/mailman/listinfo/python-list


Is it safe to modify the dict returned by vars() or locals()

2008-12-01 Thread Helmut Jarausch

Hi,

I am looking for an elegant way to solve the following problem:

Within a function

def Foo(**parms)

I have a list of names, say  VList=['A','B','C1']
and I like to generate abbreviation
_A identical to parms['A']

for that I could write

def Foo(**parms) :
  for N in VList :
if  N in parms :
  vars()[N]= parms[N]
else :
  vars()[N]= None

Does this work, is it typical Python?

Many thanks for a hint,
Helmut.

--
Helmut Jarausch

Lehrstuhl fuer Numerische Mathematik
RWTH - Aachen University
D 52056 Aachen, Germany
--
http://mail.python.org/mailman/listinfo/python-list


Re: Chmod to a group only

2008-12-01 Thread Peter Otten
Kless wrote:

 On 1 dic, 18:17, Kless [EMAIL PROTECTED] wrote:
 How to chmod a file to: o-rwx ? (to change only the others mode)

 os.chmod(fname, )

 I was reading this [1], but the truth is that anything as 'S_IRUSR'
 doesn't help enought.

 [1]http://www.python.org/doc/2.5.2/lib/os-file-dir.html
 
 I have tried:
 
 mode = os.stat(fname).st_mode
 os.chmod(fname, mode | stat.S_IRWXO) = Changes to o+rwx

How did the result of the above differ from what you want? The way I read
your original post something like the above would have been my answer...

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


Re: newbie question: parse a variable inside an RE?

2008-12-01 Thread Vlastimil Brom
2008/12/1 [EMAIL PROTECTED]

 Hi All,

 How do I parse a variable inside an RE?
 What is the re.search() syntax when your
 search string is a variable?
 It's easy to parse hardcoded RE's but not
 if you use a variable.

 Here is my code, input and runtime:

 $ cat test45.py
 #!/usr/bin/python

 import re

 resp = raw_input('Selection: ')
 newresp = resp.strip()
 print you chose , newresp

 fname = open('test44.in')
 for I in fname:
 #if re.search('^newresp', %s%(I)): # returns nothing
 #if re.search(^newresp, %s%(I)):   # syntax error
if re.search(^newresp, %s%(I)):  # returns nothing
print I,

 [EMAIL PROTECTED] work]$ cat test44.in
 a1
 b1
 g1
 g2
 h1
 h4
 4g
 5g
 h5

 $ python test45.py
 Selection: g
 you chose  g
 $

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

It doesn't seem very robust, but it can be made work, try e.g.:
for item in fname:
  if re.search(^+newresp, %s % (item,)):
  print item,

(prints: g1 g2 in a similar code)
(if you know, that item is a string, the %s interpolation is not needed; you
can also use re match, without hte need for ^ .
hth
  vbr
--
http://mail.python.org/mailman/listinfo/python-list


  1   2   3   >