|Thursday, December 19, 2002|
PyObjC version 0.8 shipped today. It is a major upgrade over 0.7. Huge upgrade. Many bugs fixed, many features added or refined. The documentation is still lacking, but the Cocoa-Python template has been greatly augmented such that it is much more self-explanatory and illuminates a number of the new features.
The version number of 0.8 is to reflect that there are a handful of features that need to be added/refined and that the documentation is largely non-existant. Unit tests are included in this build, but are incomplete. They will be greatly improved for the next release, as well.
Four particularly oustanding features/additions in this release:
* Set classes from Foundation [NSSet, NSArray, NSDictionary] can be used in most contexts where a python <list> or <dict> is normally used. I.e. "for x in someArray" works if someArray is an instance of NSArray. The underlying implementation is actually considerably more flexible than this description implies.
* The installer package was automatically generated by a python script. Creating a new installer package is as easy as typing 'python Scripts/make_distrib.py' from within the pyobjc source.
* The installer package now includes examples (along with the traditional Project Builder Project Template). The Web Services Tool example has had lots of documentation added. The Cocoa-Python Project Template has also had loads of documentation added and was simplified.
* When writing Python classes that appear in NIB files, the bridge now automatically defines the Objective-C representation of the Python class based on the class definition found in the NIB file. That is, a class defined as class MyWindowController(AutoBaseClass): will automatically inherit from NSWindowController and have all of the appropriate outlets defined, based on the definition of MyWindowController from the associated NIB file. See the Cocoa-Python Project Template or the various examples for more information.
This release would not have been possible without truly awesome contributions from Ronald Oussoren, Just van Rossum, Jack Jensen and the folks on python-dev.