I'm pleased to announce version 0.11.0, the first stable release of 0.11 branch
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
News and changes:
News since 0.10
Features & Interface
* Dropped support for Python 2.3. The minimal version of Python for
SQLObject is 2.4 now.
* Dropped support for PostgreSQL 7.2. The minimal supported version of
PostgreSQL is 7.3 now.
* New magic attribute 'j' similar to 'q' was added that automagically does
join with the other table in MultipleJoin or RelatedJoin.
* SQLObject can now create and drop a database in MySQL, PostgreSQL, SQLite
* Added some support for schemas in PostgreSQL.
* Added DecimalStringCol - similar to DecimalCol but stores data as strings
to work around problems in some drivers and type affinity problem in
* Added sqlobject.include.hashcol.HashCol - a column type that automatically
hashes anything going into it, and returns out an object that hashes
anything being compared to itself. Basically, it's good for really simple
one-way password fields, and it even supports the assignment of None to
indicate no password set. By default, it uses the md5 library for
hashing, but this can be changed in a HashCol definition.
* RowDestroyedSignal and RowUpdatedSignal were added.
* Use reversed() in manager/command.py instead of .__reversed__().
* Minor change in logging to console - logger no longer stores the output
file, it gets the file from module sys every time by name; this means
logging will use new sys.stdout (or stderr) in case the user changed
* Changed the order of testing of SQLite modules - look for external
PySQLite2 before sqlite3.
For a more complete list, please see the news:
Oleg Broytmann http://phd.pp.ru/ phd(a)phd.pp.ru
Programmers don't die, they just GOSUB without RETURN.
APSW 3.6.17-r1 is now available. The home page is at
http://code.google.com/p/apsw/ which includes full documentation, source and
binary distributions for Windows (Python 2.3 onwards including 3.0 & 3.1).
The opensource license used is the zlib/png license.
APSW is a wrapper around the SQLite embedded database that provides all
SQLite API functionality in Python. It is not DBAPI compliant as it
provides SQLite semantics. pysqlite provides DBAPI semantics. You can see
the two approaches contrasted at
Changelist is below and a clickable version at
APSW has migrated from Subversion to Mercurial for source code control.
Hosting remains at Google Code
Updated a test due to VFS xUnlock errors now being ignored sometimes by
SQLite (SQLite ticket 3946).
The downloads page in the help didn’t mention the Windows Python 3.1 installer.
Running the test suite is now integrated into setup.py so you can do the
building and testing all in one go. Sample command line:
$ python setup.py install test
The test suite will now check the functionality of the FTS3, RTree and ICU
extensions if they were included. (The Windows binary distribution includes
FTS3 and RTree by default.)
Fixed issue 55 where FTS3 was unintentionally omitted from the Windows
Various documentation updates.
We'll have our regular Toronto Python User's Group (PyGTA) meeting on
Tuesday the 18th of August. This month's topic:
Exceptional Conditions: when to ignore, assert, raise, log, except,
When programming in Python, we often run into situations which are
not "normal" or expected. Python allows you to deal with these
situations in any number of different ways:
* ignoring the error (letting a lower-level library raise an
* asserting an assumption (raising a generic error that says
something shouldn't have happened)
* raising an explicit error
* returning a "success" flag with your "real" return value
* providing finally/context-manager operations (unconditional
* logging the exceptional condition and continuing
* logging the condition into a database
* sending a syslog message
* catching a particular error and ignoring
* catching all errors and ignoring
* displaying a nice error message to the user
* emailing a user
In our round-table on Tuesday we'll try to hash out when/where/why
you would choose any or all of these approaches. Do you have coding
standards that make exceptional conditions un-exceptional? Do you
have tools you use to make logs more useful? Do you have a
rule-of-thumb you apply to choose an approach? Are there different
requirements for GUI versus Web applications? What about
embedded/appliance applications? How much information should a user
be given about a failure condition? We'll look at the various tools
available and how to use them as well.
We'll meet at our regular time and location, Linux Caffe at 7:10pm.
BTW, we're looking for speakers and/or topics for September, October and
beyond. We're particularly interested in new-user friendly topics that
can help the (large) new crop of Pythonistas advance quickly. Email me
with your suggestions or ideas, or bring them up at the meeting.
Hope to see you on Tuesday,
Mike C. Fletcher
Designer, VR Plumber, Coder
I am pleased to announce version 2.19.0 of the Python bindings for GObject.
The new release is available from ftp.gnome.org as and its mirrors
as soon as its synced correctly:
What's new since PyGObject 2.18.0?
- Add macros to help with Python list to/from GList/GSList conversions.
- GIO docs practically completed (Gian)
- GFileInfo.list_attributes should accept None/NULL (Gian)
- Strip out Windows DLL API macros (John Finlay)
- Document that many functions got moved gobject -> glib (Paul)
- Allow h2def.py to work when there are tabs or multiple spaces after
the struct keyword. (Murray Cumming)
- Fix build when builddir is not the same as srcdir
- Make gio.Emblem constructor new-style (Paul)
- Cleanup GIO overrides to use Python function/method names (Paul)
- Make codegen report errors using Python function/method names (Paul)
- Fix object type in gio.BufferedInputStream_fill_async (Gian)
- Wrap gio.BufferedInputStream.fill_async (Gian)
- Add gio.BufferedOutputStream which was forgotten in the types (Gian)
- Split overrides for gio.MemoryOutputStream (Gian)
- Wrap gio.memory_input_stream_new_from_data (Gian)
- Introduces the girepository module from the former PyBank
(Simon van der Linden)
- Add API appeared in 2.20 but not marked as such in gio docs (Gian)
- Wrap gio.FileOutputStream.query_info_async (Gian)
- Wrap gio.FileInputStream.query_async (Gian)
- Install executable codegen parts with executing permissions (Paul)
- Wrap gio.DataInputStream.read_line_async and read_until_async (Paul)
- Fix gio.OutputStream.splice_async (Paul)
- Add GIO 2.20 API and update docs (Gian)
GObject is a object system library used by GTK+ and GStreamer.
PyGObject provides a convenient wrapper for the GObject library for use
in Python programs, and takes care of many of the boring details such as
managing memory and type casting. When combined with PyGTK, PyORBit and
gnome-python, it can be used to write full featured Gnome applications.
Like the GObject library itself PyGObject is licensed under the
GNU LGPL, so is suitable for use in both free software and proprietary
applications. It is already in use in many applications ranging
from small single purpose scripts up to large full
PyGObject requires glib >= 2.14.0 and Python >= 2.3.5 to build.
GIO bindings require glib >= 2.16.0.
Gian Mario Tagliaretti
GNOME Foundation member
here it is .. GOZERBOT 0.9.1 !!
Main change this time is the distribution method, we now provide a
tar.gz with all the dependencies included. This means that you can run
the bot locally without any root required. Python 2.5 or higher
needed, see http://gozerbot.org
GOZERBOT is a channel bot that aids with conversation in irc channels
jabber conference rooms. its mainly used to serve rss feeds and to
custom commands made for the channel. More then just a channel bot
aims to provide a platform for the user to program his own bot and
into something thats usefull. This is done with a plugin structure
makes it easy to program your own. But GOZERBOT comes with some
included, there are now over 100 plugins already written and ready for
We have released the DjangoCon Schedule at:
http://www.djangocon.org/2009/conference/schedule/ and will be
releasing more information over the next day or two.
DjangoCon is on 8th - 12th September in Portland, Oregon at the
DoubleTree Green Hotel. We had a great time last year at Google HQ,
where 250 people turned up for the first ever DjangoCon.
Keynotes are: Avi Bryant, Ian Bicking and Ted Leung. We have a wide
variety of talks from all aspects of the community, including a
Technical Design Panel where you get to discuss design
ideas/confusions with the Core devs.
You can purchase tickets for the conference here -
DjangoCon Chairman - http://www.djangocon.org/
I am please to announce the M2Crypto 0.20 release, which was in
development for over nine months. Over 30 bugs fixed by more than ten
people. Download links and bug filing instructions on the homepage at
M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA,
DSA, DH, HMACs, message digests, symmetric ciphers (including AES); SSL
functionality to implement clients and servers; HTTPS extensions to
Python's httplib, urllib, and xmlrpclib; unforgeable HMAC'ing
AuthCookies for web session management; FTP/TLS client and server;
S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An S/MIME
messenger for Zope. Smartcards supported with the Engine interface.
- Deprecated M2Crypto.PGP subpackage since nobody seems to be using it
nor is it being maintained (if you do use it, please let me know)
- Added fedora_setup.sh to help work around differences on Fedora Core
-based distributions (RedHat, CentOS, ...); thanks to Miloslav Trmac
- Added X509.load_request_bio and load_request_string, by Hartmut Goebel
and Pavel Shramov
- Added alias X509.Request.set_subject for set_subject_name to match
X509.X509, by Pavel Shramov
- OBJ_* wrappers did not work properly with OpenSSL 0.9.8a and earlier,
fix by Pavel Shramov
- Added ASN1_UTCTIME.get_datetime and set_datetime, by Pavel Shramov
- Fixed obj_obj2txt, which returned nonsense, fix by Barney Stratford
- m2urllib did not close sockets properly, fix by Miloslav Trmac
- Allow SSL peer certificate to have subjectAltName without dNSName and
use commonName for hostname check, fix by Miloslav Trmac
- threading_locking_callback did not block on a lock when the lock
was held by another thread, by Miloslav Trmac
- Allow more blocking OpenSSL functions to run without GIL, by Miloslav
- Fixed httpslib to send only the path+query+fragment part of the URL
when using CONNECT proxy, by James Bowes
- SSLServer.__init__ now takes optional bind_and_activate parameter and
initializes by calling SocketServer.BaseServer.__init__, which
are Python 2.6 compatibility fixes, by Christian
- ftpslib now works with Python 2.6, by Theodore A. Roth
- httpslib.ProxyHTTPSConnection needs to cast port into integer,
by John M. Schanck
- Added support for RSASSA-PSS signing and verifying, by Chris Collis
- Added support for disabling padding when using RSA encryption,
by Chris Collis
- ASN1_INTEGERs can now be larger than fits in an int, for example to
support X509 certificates with large serial numbers, patch by Mikhail
Vorozhtsov and testcase by Barry G.
- Reverted a change done in 0.17 to m2urllib2 which changed urls to
include host when it should stay as it was
- httpslib no longer uses urllib; instead it uses urlparse for url parsing
- SMIME.text_crlf and text_crlf_bio were always raising TypeError; fixed
- EVP.load_key and load_key_bio fixed to raise EVP.EVPError and
BIO.BIOError instead of str (str exceptions not allowed in Python 2.6
- SSL.Session.load_session fixed to raise SSL.SSLError instead of str
- SMIME.load_pkcs7, load_pkcs7_bio, smime_load_pkcs7,
smime_load_pkcs7_bio, text_crlf, text_crlf_bio fixed to raise
BIO.BIOError, SMIME.PKCS7_Error and SMIME.SMIME_Error as appropriate
instead of str
- Added FIPS mode to unit tests, and used FIPS-compliant key sizes in
other tests, by Miloslav Trmac. Note that tests run much slower because
- Unit tests cover 80% of the code
Heikki Toivonen - http://heikkitoivonen.net
Chicago Python User Group
We welcome back Dr John Hunter. Matplotlib is probably the most
popular open source 2D plotting library ever. It has multiple
rendering engines, supports tons of plot formats, and even typesets
complicated equations properly. Matplotlib, makes "easy things easy
and hard things possible. "
Our host for the meeting is Sully's House Tap Room & Grill. All ages
are welcome to this Free Private Event. For those of age, Sully’s
House offer 20 Beers on tap, and 35 Bottles - all craft and
microbrewery, specializing in Belgium, Irish and German selections.
Enjoy great Bar Food & Pizza from our Italian Oven and Daily
discounted menu specials. The host has given us a dedicated
bartender. We will meet in the private party room on the second floor
that is well equipped with top of the line video equipment – 100” HD
screen & full A/V accessibility with Rock Band & Wii. Nice big space,
bring a friend. Thanks Sully's!!!
This *will* be our best meeting yet. Put this on your calendar. All
levels welcome! New to Python, welcome. Scientist, welcome. Financial
plotting people, welcome. Curious... come on up to the second floor at
Sullys this Thursday. Forward this to others!
* (45 min) Matplotlib, the popular 2D Plotting by Dr. John Hunter,
the creator of Matplotlib
* (15 min) Rohit Sankaran: Rendezvous - for scheduling meetings and
other events. It's not the same codebase as Meetshop but it strives
for similar functionality.
* (15 min) bcfg2 configuration management - Narayan Desai
* (15 min) Application messaging architecture using AMQP - Garrett
* (15 min) Configator: It Chomps Config - Pete Fein
Thursday, August 13th, ~7pm
Sully’s House Tap Room & Grill, 1501 N. Dayton St. Chicago, Illinois
At the corner of Blackhawk and Dayton http://www.sullyshouse.com/
(2) Blocks from the North & Clybourn Red Line stop. Free street
ChiPy is a group of Chicago Python Programmers, l33t, and n00bs.
Meetings are held monthly at various locations around Chicago.
Also, ChiPy is a proud sponsor of many Open Source and Educational
efforts in Chicago. Stay tuned to the mailing list for more info.
ChiPy website: <http://chipy.org>
ChiPy Mailing List: <http://mail.python.org/mailman/listinfo/chicago>
ChiPy Announcement *ONLY* Mailing List: <http://mail.python.org/mailman/listinfo/chipy-announce
Python website: <http://python.org>
Thursday, August 27, 7pm in Room 2015, Engineering Buildging I, NCSU
Centennial Campus, Raleigh.
Canonical developer Gary Poster will give his OSCON presentation
"Launchpad Foundations: If the Abstractions Don't Kill Us..." The talk
is about how Launchpad uses the zope.interface and zope.component
libraries. The talk is based on interviews with Launchpad engineers. The
talk discusses how we might improve our use of the Zope Component
Architecture, how the technology might be change, and how the technology
might be used in other contexts like Django. We will adjourn for food
and beverage at a local eatery after the meeting.
office: 332 Chapman Hall phone: (919) 599-3530
mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599
We're pleased to announce a new venue for our Python classes.
Python author and trainer Mark Lutz will be teaching a 3-day
Python class on October 20-22, in Sarasota, Florida. Come
spend 3 days mastering Python, and enjoy all that Florida and
its Gulf Coast have to offer while you're here.
This is a public training session open to individual enrollments,
and covers the same topics and hands-on lab work as the over 200
onsite sessions that Mark has taught. The class provides an
in-depth introduction to both Python and its common applications,
and parallels the instructor's best-selling Python books.
This class is also newly retooled to cover recent changes in
both Python 2.6 and 3.1. Whether you're using 2.X, using 3.X,
or stuck somewhere between them, you'll find that our class is
aimed at your needs. For more information on this session,
please visit its web page:
For additional background on the class itself, as well as a
preview of our 2010 Florida class schedule, see our home page:
Thanks for your interest,
--Mark Lutz's Python Training Services