[Python-Dev] python-dev Summary for 2005-01-01 through 2005-01-15 [draft]

Brett C. bac at OCF.Berkeley.EDU
Fri Feb 4 02:39:39 CET 2005

Wow, another summary out the same week as the previous one!  Perk of keeping 
things short and to the point.  Then again keeping them this simple and short 
begs the question of whether the summaries are worth it still at that point.

Regardless, probably will send this one out Saturday or Sunday so corrections 
need to get in by then.


Summary Announcements
PyCon_ will be upon us come late March!  Still time to plan to go.

A warning on the thoroughness off this summary is in order.  While trying to 
delete a single thread of email I managed to accidentally delete my entire 
python-dev mailbox.  I did the best I could to retrieve the emails but it's 
possible I didn't resuscitate all of my emails, so I may have overlooked something.

.. _PyCon: http://www.pycon.org/

PEP movements
.. tip:: PEP updates by email are available as a topic from the 
`Python-checkins`_ mailing list.

`PEP 246`_ was a major topic of discussion during the time period covered by 
this summary.  This all stemmed from `Guido's blog`_ entries on optional type 
checking. This led to a huge discussion on many aspects of protocols, 
interfaces, and adaptation and the broadening of this author's vocabulary to 
include "Liskov violation".

"Monkey typing" also became a new term to know thanks to Phillip J. Eby's 
proto-PEP on the topic (found at 
http://peak.telecommunity.com/DevCenter/MonkeyTyping).  Stemming from the 
phrase "monkey see, monkey do", it's Phillip version of taking PEP 246 
logically farther (I think; the whole thing is more than my currently 
burned-out-on-school brain can handle right now).

.. _Python-checkins: http://mail.python.org/mailman/listinfo/python-checkins
.. _PEP 246: http://www.python.org/peps/pep-0246.html
.. Guido's blog: http://www.artima.com/weblogs/index.jsp?blogger=guido

Contributing threads:
   - `getattr and __mro__ <>`__
   - `Son of PEP 246, redux <>`__
   - `PEP 246: lossless and stateless <>`__
   - `PEP 246: LiskovViolation as a name <>`__
   - `"Monkey Typing" pre-PEP, partial draft <>`__

Optional type checking: how to inadvertently cause a flame war worse than 
`Guido's blog`_ had comments on the idea of adding optional static type 
checking to Python.  While just comments in a blog, it caused a massive 
response from people, mostly negative from what I gathered.  After Guido 
discussed things some more it culminated in a blog entry found at 
http://www.artima.com/weblogs/viewpost.jsp?thread=87182 that lays out what his 
actual plans are.  I highly recommend reading it since it suggests adding 
optional run-time type checking for function arguments along with some other 

All of this led to `PEP 246`_ getting updated.  For some more details on that 
see the `PEP movements`_ section of this summary.

And if there is a lesson to be learned from all of this, it's that when Alex 
Martelli and Phillip J. Eby start a technical discussion it's going to be long, 
in-depth, complex, and lead to my inbox being brimming in python-dev email.

Let's get the AST branch done!
Guido posted an email to the list stating he would like to to make progress 
towards integrating "things like type inferencing, integrating PyChecker, or 
optional static type checking" into Python.  In order to make that easier he 
put out a request that people work on the AST branch and finish it.

For those that don't know about Python's back-end, the compiler as it stands 
now takes the parse tree from the parser and emits bytecode directly from that. 
  This is far from optimal since the parse tree is more verbose than needed and 
it is not the easiest thing to work with.

The AST branch attempts to fix this by taking a more traditional approach to 
compiling.  This means the parse tree is used to generate an AST (abstract 
syntax tree; and even more technically could be considered a control flow graph 
in view of how it is implemented) which in turn is used to emit bytecode.  The 
AST itself is much easier to work with when compared to the parse tree; better 
to know you are working with an 'if' guard thanks to it being an 'if' node in 
the AST than checking if the parse tree statement you are working with starts 
with 'if' and ends with a ':'.

While all of this sounds great, the issue is the AST branch is not finished 
yet.  It is not entirely far off, but new features from 2.4 (decorators and 
generator expressions) need to be added along with more bug fixing and clean up.

This means the AST branch is going to get finished for 2.5 somehow.  But help 
is needed.  While the usual suspects who have previously contributed to the 
branch are hoping to finish it, more help is always appreciated.  If you care 
to get involved, check out the AST branch (tagged as 'ast-branch' in CVS; see 
the `python-dev FAQ`_ on how to do a tagged branch checkout), read 
Python/compile.txt and just dive in!  There will also be a sprint on the AST 
branch at PyCon.

.. _python-dev FAQ: http://www.python.org/dev/devfaq.html

Contributing threads:
   - `Please help complete the AST branch <>`__
   - `Will ASTbranch compile on windows yet? <>`__
   - `ast branch pragmatics <>`__
   - `Re: [Python-checkins] python/dist/src/Python pythonrun.c,, <>`__

Ditching unbound methods in Py3k
Guido suggested removing unbound methods from Python since their usefulness of 
checking their first argument and other slight differences from functions just 
didn't seem worth keeping around and complicating the language.  So the idea 
seems sound.

But then people with uses for the extra information kept in unbound methods 
(im_func and im_self) popped up.  To make the long thread short, enough people 
stepped up mentioning uses they had for the information for Guido to retract 
the suggestion in the name of backwards compatibility.

But unbound methods are now on the list of things to go in Python 3000.

Contributing threads:
   - `Let's get rid of unbound methods <>`__
   - `Getting rid of unbound methods: patch available <>`__
   - `PEP 246 - concrete assistance to developers of new	adapter classes <>`__

Getting exceptions to be new-style classes
A patch to allow exceptions to be new-style classes is currently at 
http://www.python.org/1104669 .  The plan is to get that patch in order, apply 
it, and as long as a ton of code does not break from exceptions moving from 
classic to new-style classes it will be made permanent in 2.5 .

This in no way touches on the major changes as touched upon in a `previous 
which will need a PEP to get the hierarchy cleaned up and discuss any possible 
changes to bar 'except' statements.

Contributing threads:
   - `Exceptions *must*? be old-style classes? <>`__

Skipped Threads
- Mac questions
- 2.3.5 schedule, and something I'd like to get in
-  csv module TODO list
- an idea for improving struct.unpack api
- Minor change to behaviour of csv module
- PATCH/RFC for AF_NETLINK support
- logging class submission
- Recent IBM Patent releases
- frame.f_locals is writable
- redux: fractional seconds in strptime
- Darwin's realloc(...) implementation never shrinks allocations

More information about the Python-Dev mailing list