python-dev Summary for 2006-09-01 through 2006-09-15

steven.bethard at steven.bethard at
Fri Nov 3 18:57:32 CET 2006

python-dev Summary for 2006-09-01 through 2006-09-15

.. contents::

[The HTML version of this Summary is available at]


QOTF: Quote of the Fortnight

Through a cross-posting slip-up, Jean-Paul Calderone managed to provide us with some inspiring thoughts on mailing-list archives:

    One could just as easily ask why no one bothers to read mailing list
    archives to see if their question has been answered before.

    No one will ever know, it is just one of the mysteries of the universe.

Contributing thread:

- `[Twisted-Python] Newbie question <>`__

Monthly Arlington sprints

Jeffrey Elkner has arranged for monthly Arlington Python sprints. See the `Arlington sprint wiki`_ for more details.

.. _Arlington sprint wiki:

Contributing thread:

- `Arlington sprints to occur monthly <>`__


Signals, threads and blocking C functions

Gustavo Carneiro explained a problem that pygtk was running into.  Their main loop function, ``gtk_main()``, blocks forever. If there are threads in the program, they cannot receive signals because Python catches the signal and calls ``Py_AddPendingCall()``, relying on the main thread to call ``Py_MakePendingCalls()``.  Since with pygtk, the main thread is blocked calling a C function, it has no way other than polling to decide when ``Py_MakePendingCalls()`` needs to be called.  Gustavo was hoping for some sort of API so that his blocking thread could get notified when ``Py_AddPendingCall()`` had been called.

There was a long discussion about the feasibility of this and other solutions to his problem. One of the main problems is that almost nothing can safely be done from a signal handler context, so some people felt like having Python invoke arbitrary third-party code was a bad idea. Gustavo was reasonably confident that he could write to a pipe within that context, which was all he needed to do to solve his problem, but Nick Maclaren explained in detail some of the problems, e.g. writing proper synchronization primitives that are signal-handler safe.

Jan Kanis suggested that threads in a pygtk program should occasionally check the signal handler flags and calls PyGTK's callback to wake up the main thread. But Gustavo explained that things like the GnomeVFS library have their own thread pools and know nothing about Python so can't make such a callback.

Adam Olsen suggested that Python could create a single non-blocking pipe for all signals. When a signal was handled, the signal number would be written to that pipe as a single byte. Third-party libraries, like pygtk, could poll the appropriate file descriptor, waking up and handing control back to Python when a signal was received. There were some disadvantages to this approach, e.g. if there is a large burst of signals, some of them would be lost, but folks seemed to think that these kinds of things would not cause many real-world problems. Gustavo and Adam then worked out the code in a little more detail.

The `Py_signal_pipe patch`_ was posted to SourceForge.

.. _Py_signal_pipe patch:

Contributing thread:

- `Signals, threads, blocking C functions <>`__

API for str.rpartition()

Raymond Hettinger pointed out that in cases where the separator was not found, ``str.rpartition()`` was putting the remainder of the string in the wrong spot, e.g. ``str.rpartition()`` worked like::

    'axbxc'.rpartition('x') == ('axb', 'x', 'c')
    'axb'.rpartition('x') == ('a', 'x', 'b')
    'a'.rpartition('x') == ('a', '', '')  # should be ('', '', 'a')

Thus code that used ``str.rpartition()`` in a loop or recursively would likely never terminate. Raymond checked in a fix for this, spawning an enormous discussion about how the three bits ``str.rpartition()`` returns should be named.  There was widespread disagreement on which side was the "head" and which side was the "tail", and the only unambiguous one seemed to be "left, sep, right". Raymond and others were not as happy with this version because it was no longer suggestive of the use cases, but it looked like this might be the best compromise.

Contributing threads:

- `Problem withthe API for str.rpartition() <>`__
- `Fwd: Problem withthe API for str.rpartition() <>`__

Unicode Imports

Kristjan V. Jonsson submitted a `unicode import patch`_ that would allow unicode paths in sys.path and use the unicode file API on Windows. It got a definite "no" from the Python 2.5 release managers since it was already too late in the release process. Nonetheless there was a long discussion about whether or not it should be considered a bug or a feature. Martin v. Lowis explained that it was definitely a feature because it would break existing introspection tools expecting things like __file__ to be 8-bit strings (not unicode strings as they would be with the patch).

.. _unicode import patch:

Contributing thread:

- `Unicode Imports <>`__

Exception and __unicode__

Marcin 'Qrczak' Kowalczyk reported a `TypeError from unicode()`_ when applied to an Exception class. Brett Cannon explained the source of this: BaseException defined a ``__unicode__`` descriptor which was complaining when it was handed a class, not an instance. The easiest solution seemed to be the best for Python 2.5: simply rip out the ``__unicode__`` method entirely. M.-A. Lemburg suggested that for Python 2.6 this should be fixed by introducing a tp_unicode slot.

.. _TypeError from unicode():

Contributing thread:

- `2.5 status <>`__

Slowdown in inspect module

Fernando Perez reported an enormous slowdown in Python 2.5's inspect module. Nick Coghlan figured out that this was a result of ``inspect.findsource()`` calling ``os.path.abspath()`` and ``os.path.normpath()`` repeatedly on the module's file name. Nick provided a `patch to speed things up`_ by caching the absolute, normalized file names.

.. _patch to speed things up:

Contributing thread:

- ` very slow under 2.5 <>`__

Cross-platform float consistency

Andreas Raab asked about trying to minimize some of the cross-platform differences in floating-point calcuations, by using something like fdlibm_. Tim Peters pointed him to a `previous thread on this issue`_ and suggested that best route was probably to package a Python wrapper for fdlibm_ and see how much interest there was.

.. _fdlibm:
.. _previous thread on this issue:

Contributing thread:

- `Cross-platform math functions? <>`__

Refcounting and errors in functions

Mihai Ibanescu pointed out that refcount status for functions that can fail is generally poorly documented. Greg Ewing explained that refcounting behavior should be independent of whether the call succeeds or fails, but it was clear that this was not always the case. Mihai promised to file a low-severity bug so that this problem wouldn't be lost.

Contributing thread:

- `Py_BuildValue and decref <>`__

Python 2.3.6

Barry Warsaw offered to push out a Python 2.3.6 if folks were interested in getting some bugfixes out to the platforms which were still running Python 2.3.  After an underwhelming response, he retracted the offer.  (Stay tuned though - more on 2.3.6 in future summaries.)

Contributing threads:

- `Interest in a Python 2.3.6? <>`__
- `Interest in a Python 2.3.6? <>`__
- `Python 2.4.4 was: Interest in a Python 2.3.6? <>`__

Effbot Python library documentation

Johann C. Rocholl asked about the status of, Fredrik Lundh's alternative format and rendering for the Python library documentation. Fredrik indicated that due to the pushback from some folks on python-dev, they've been working mainly "under the radar" on this. (At least until some inconsiderate soul put them in the summary...) ;-)

Contributing threads:

- `That library reference, yet again <>`__
- `That library reference, yet again <>`__

Deferred Threads
- `IronPython and AST branch <>`__

Previous Summaries
- `Py2.5 issue: decimal context manager misimplemented, misdesigned, and misdocumented <>`__
- `Error while building 2.5rc1 pythoncore_pgo on VC8 <>`__
- `gcc 4.2 exposes signed integer overflows <>`__
- `no remaining issues blocking 2.5 release <>`__
- `new security doc using object-capabilities <>`__

Skipped Threads
- `A test suite for unittest <>`__
- `Fwd: [Python-checkins] r51674 - python/trunk/Misc/Vim/vimrc <>`__
- `Weekly Python Patch/Bug Summary <>`__
- `Windows build slave down until Tuesday-ish <>`__
- `[Python-checkins] TRUNK IS UNFROZEN, available for 2.6 work if you are so inclined <>`__
- `Exception message for invalid with statement usage <>`__
- `buildbot breakage <>`__
- `Change in file() behavior in 2.5 <>`__
- `'with' bites Twisted <>`__
- `What windows tool chain do I need for python 2.5 extensions? <>`__
- `2.5c2 <>`__
- `_PyGILState_NoteThreadState should be static or not? <>`__
- `BRANCH FREEZE: release25-maint, 00:00UTC 12 September 2006 <>`__
- `datetime's strftime implementation: by design or bug <>`__
- `Subversion 1.4 <>`__
- `RELEASED Python 2.5 (release candidate 2) <>`__
- `Maybe we should have a C++ extension for testing... <>`__
- `.pyc file has different result for value "1.79769313486232e+308" than .py file <>`__
- `release is done, but release25-maint branch remains near-frozen <>`__
- `fun threading problem <>`__
- `Thank you all <>`__


This is a summary of traffic on the `python-dev mailing list`_ from
September 01, 2006 through September 15, 2006.
It is intended to inform the wider Python community of on-going
developments on the list on a semi-monthly basis.  An archive_ of
previous summaries is available online.

An `RSS feed`_ of the titles of the summaries is available.
You can also watch comp.lang.python or comp.lang.python.announce for
new summaries (or through their email gateways of python-list or
python-announce, respectively, as found at

This python-dev summary is the 12th written by 
Steve Bethard. 

To contact me, please send email:

- Steve Bethard (steven.bethard at

Do *not* post to comp.lang.python if you wish to reach me.

The `Python Software Foundation`_ is the non-profit organization that
holds the intellectual property for Python.  It also tries to advance
the development and use of Python.  If you find the python-dev Summary
helpful please consider making a donation.  You can make a donation at .  Every cent counts so even a
small donation with a credit card, check, or by PayPal helps.

Commenting on Topics

To comment on anything mentioned here, just post to
`comp.lang.python`_ (or email python-list at which is a
gateway to the newsgroup) with a subject line mentioning what you are
discussing.  All python-dev members are interested in seeing ideas
discussed by the community, so don't hesitate to take a stance on
something.  And if all of this really interests you then get involved
and join `python-dev`_!

How to Read the Summaries

This summary is written using reStructuredText_. Any unfamiliar
punctuation is probably markup for reST_ (otherwise it is probably
regular expression syntax or a typo :); you can safely ignore it.  We
do suggest learning reST, though; it's simple and is accepted for
`PEP markup`_ and can be turned into many different formats like HTML
and LaTeX.

.. _python-dev:
.. _python-dev mailing list:
.. _comp.lang.python:
.. _PEP Markup:

.. _reST:
.. _reStructuredText:
.. _Python Software Foundation:

.. _archive:
.. _RSS feed:

More information about the Python-list mailing list