I'm pleased to announce the 0.8.0b1 release of SQLObject. This is the first
beta of the new branch. Taking into account that it is a result of rather
large job the beta period will be prolonged. Meanwhile the stable 0.7
branch will be maintained, and there will be at least 0.7.3 release.
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, and
Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also
known as SAPDB).
Where is SQLObject
News and changes:
Features & Interface
* It is now possible to create tables that reference each other.
Constraints (in the DBMSes that support constraints) are added after the
tables have been created.
* Added ``createSQL`` as an option for sqlmeta. Here you can add
related SQL you want executed by sqlobject-admin create after table
creation. createSQL expects a string, list, or dictionary. If using
a dictionary the key should be a dbName value (ex. 'postgres') and
the value should be a string or list. Examples in
sqlobject/tests/test_sqlobject_admin.py or at
* Added method ``sqlhub.doInTransaction(callable, *args, **kwargs)``,
to be used like::
This will run ``process_request(os.environ)``. The return
value will be preserved.
* Added method ``.getOne([default])`` to ``SelectResults`` (these are
the objects returned by ``.select()`` and ``.selectBy()``). This
returns a single object, when the query is expected to return only
one object. The single argument is the value to return when zero
results are found (more than one result is always an error). If no
default is given, it is an error if no such object exists.
* Added a WSGI middleware (in ``sqlobject.wsgi_middleware``) for
configuring the database for the request. Also handles
transactions. Available as ``egg:SQLObject`` in Paste Deploy
* New joins! ManyToMany and OneToMany; not fully documented yet, but still
more sensible and smarter.
* SELECT FOR UPDATE
* New module dberrors.py - a hierarchy of exceptions. Translation of DB API
module's exceptions to the new hierarchy is performed for SQLite and MySQL.
* SQLiteConnection got a new keyword "factory" - a name or a reference to
a factory function that returns a connection class; useful for
implementing functions or aggregates. See test_select.py and
test_sqlite_factory.py for examples.
* SQLObject now disallows columns with names that collide with existing
variables and methods, such as "_init", "expire", "set" and so on.
* Configurable client character set (encoding) for MySQL.
* Added a close option to .commit(), so you can close the transaction as
you commit it.
* Added .expireAll() methods to sqlmeta and connection objects, to expire
all instances in those cases.
* String IDs.
* FOREIGN KEY for MySQL.
* Support for sqlite3 (a builtin module in Python 2.5).
* SelectResults cannot be queried for truth value; in any case it was
meaningless - the result was always True; now __nonzero__() raises
NotImplementedError in case one tries bool(MyTable.select()) or
* Fixed problem with sqlite and threads; connections are no longer shared
between threads for sqlite (except for :memory:).
* The reference loop between SQLObject and SQLObjectState eliminated using
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.
itools is a Python library, it groups a number of packages into a single
meta-package for easier development and deployment:
itools.catalog itools.http itools.uri
itools.cms itools.i18n itools.vfs
itools.csv itools.ical itools.web
itools.datatypes itools.rss itools.workflow
itools.gettext itools.schemas itools.xhtml
itools.handlers itools.stl itools.xliff
itools.html itools.tmx itools.xml
In this release a bunch of bugs have been fixed:
- [itools.handlers] The method "acquire" works (#597).
- [itools.catalog] Fix unindexing in some obscure conditions. Fix search
for on-memory catalogs.
- [itools.xml] Raise "NotImplementedError" when building a bare XML
document from scratch, instead of failing later with an obscure error.
- [itools.ical] Fix problem with CRLF in property values (#594).
- [itools.http] Fix loading form values from multimart requests, when
there is more than one value assigned to the same name.
Loading request objects from files or strings works now (not just from
- [itools.web] The response "304 Not Modified" is working again (#601).
- [itools.cms] Now the calendar widget can show conflicts for the week
and month views (#626).
- Hervé Cauwelier fixed some bugs;
- Nicolas Deram fixed some bugs;
- J. David Ibáñez fixed some bugs;
J. David Ibáñez
Itaapy <http://www.itaapy.com> Tel +33 (0)1 42 23 67 45
9 rue Darwin, 75018 Paris Fax +33 (0)1 53 28 27 88
This release includes a security fix, fixing a situation where you
could escape the root when serving static files and running the Paste
HTTP server publicly. If you used other WSGI servers or used the
Paste HTTP server behind Apache this does not effect you. For an
update of Paste 1.0 that includes *only* the security fix, use
What Is Paste?
Install: easy_install Paste PasteScript PasteDeploy
Paste is a set of WSGI components, each of which can be used in
isolation. But used together they form an unstoppable force. Team
These components let you do things like create applications that proxy
to other websites, mount multiple applications under different
prefixes, catch exceptions and interactively inspect the environment,
and much more.
Paste Deploy is a configuration system for these components. Paste
Script is a jack of all trades that builds new project file layouts,
runs WSGI server stacks, and does application deployment.
* Security fix for paste.urlparser.StaticURLParser. The problem
allowed escaping the root (and reading files) when used with
paste.httpserver (this does not effect other servers, and does
not apply when proxying requests from Apache to
* paste.httpserver and paste.fixture.TestApp url-unquote
SCRIPT_NAME and PATH_INFO, as specified in the CGI spec.
Thanks to Jon Nelson for pointing out both these issues.
* paste.registry now works within the EvalException
* Added a __traceback_decorator__ magic local variable, to allow
arbitrary manipulation of the output of
paste.exceptions.collector before formatting.
* Added unicorn power to paste.pony (from Chad Whitacre)
* For paste.httpserver SSL support: add support loading an
explicit certificate context, and using ssl_pem='*' create an
unsigned SSL certificate (from Jason Kirtland).
* Allow variable assignments at the end of paster serve, like
paster serve http_port=80; then you can use %(http_port)s in
your config files (requires up-to-date Paste Deploy).
* Really nothing interesting.
Ian Bicking | ianb(a)colorstudy.com | http://blog.ianbicking.org
This is not a release announcement per se, but I just got this library
working on Linux, so I am prepared to show it to the Python community at
Pyd is a library for the D programming language. It is analogous to
Boost.Python. It wraps the Python/C API with a much cleaner interface,
allowing you to directly expose your D functions and classes to Python,
without touching the C API. See the website for some simple examples.
It's also pretty easy to build (it uses distutils for compilation) and
compiles lightning fast (a strength of D's), at least compared to
D, if you're unfamiliar with it, is a systems programming language. It
aims to be a successor to C++. It is multi-paradigm, statically-typed
(but has many type inference features), compiles to native machine code,
uses single inheritance plus interfaces and mixins, and is garbage
collected. Dynamic arrays and hash tables are built-in language
constructs. It is link-compatible with C, but doesn't bother to be
syntax compatible (although it does use a C-style syntax). Linking
against C libraries (like the Python/C API) is a usually simple matter
of re-writing the header files in D.
D is designed by Walter Bright, who has been writing C and C++ compilers
for 20 years. D will be undergoing a 1.0 release on January 1st.
There are two implementations of D: The reference implementation,
written by Walter Bright, which is called DMD
(http://digitalmars.com/d/), and the open-source implementation, which
is called GDC (http://dgcc.sourceforge.net/). The former has a Windows
bias, and the latter has a Linux bias, although both mostly work on both.
It is my opinion, and the view of several others in the D community,
that Python and D are a perfect fit for each other. With Pyd, it is very
easy to code rapidly in Python, and drop into D when more speed is required.
Pyd is still a relatively new library. I started development on it in
June, and I could count the current number of users on one hand. I also
haven't done a proper release, as I am still rapidly adding features.
For all that, I am insterested in what people think of it. The library's
deficiencies won't become clear until people start using it.
The Board of Directors of the Python Software Foundation is issuing
this call for nominations of new Directors. Self-nominations are the
norm, so don't wait for somebody else to nominate you. If you are
interested in serving as a Director, please write to psf(a)python.org.
Directors need not be PSF members.
Since the PSF is a small organization, the Directors and Officers are
the PSF's executive in more than name: we not only discuss the work to
be done, we also initiate and oversee the work (through committees),
and we get a lot of the work done ourselves. It is therefore
beneficial to have a large number of active Directors. As Tim Peters
eloquently put it,
This is pragmatic: volunteer time is hard to come by for PSF busy
work, and, overall, directors seem to feel more compelling
obligation in this regard than non-director PSF members. So, the
bigger the board, the more gets done.
At the annual Members' Meeting in 2004 nine people stood for election
to the Board, but there were only seven positions, so two candidates
were not elected. This was a mistake; we cannot afford to turn away
volunteers. In 2005, when eight people stood for election, the Board
was first increased to eight positions, allowing all the candidates to
serve. The size of the Board can change again. (Section 5.4 of the
PSF bylaws states: "the number of directors shall be fixed by the
members at each annual meeting of members.")
The PSF's Directors and Officers conduct business via monthly meetings
(one hour on IRC) and an active mailing list. We discuss the work
being done and the work to be done, and Directors vote on resolutions.
David Goodger, PSF Secretary
On behalf of the PSF Board of Directors
.. I would like to announce the fourth release of PyMite.
.. PyMite is for 8-bit embedded developers wanting to code in Python,
.. NOT for Python programmers wanting to develop for 8-bit systems
:Author: Dean Hall
:Copyright: Copyright 2002 Dean Hall.
All of the source code for PyMite is licensed under
the GNU General Public License v2.
PyMite is a flyweight Python interpreter written from scratch
to execute on 8-bit and larger microcontrollers with resources
as limited as 32 KiB of program memory (flash) and 4 KiB of RAM.
PyMite supports a subset of the Python syntax and can execute
a subset of the Python bytecodes. PyMite can also be compiled,
tested and executed on a desktop computer.
My thanks go to these people for their contribution to PyMite:
- Josh Lifton: Used PyMite in PhD work,
donated many code fixes and tests.
- Philipp Adelt: Enhancements to pmImgCreator.py,
issues and fixes.
- www.webfaction.com: for providing quality,
free project hosting on www.python-hosting.com
This is PyMite release 04
* Release 04, 2006/12/14
- #62: Created Release 04 package
- #51: Updated to Python 2.5 bytecodes
- #57: Created doc showing what PyMite does [not] support
- #60: Implemented heap_sweep
- #59: Improved bytecode UNPACK_SEQUENCE
- #58: Added support for keyword "in"
- #26: Implemented more builtin functions
- #49: Removed null check from object methods
- #56: Implemented \*_POWER bytecodes
- #17: Completed the implementation of obj_isEqual()
- #54: Changed seglist API to encapsulate segnum & segindx
- #10: Created sequence_getSubscript()
- #33: Created new ARM target
- #36: Deprecated dwh_types.h
- #53: Fixed Win32/x86 build break
- #38: Made use of pycscope.py conditional in Makefile
- #37: Created PM_RAISE()
- #34: Converted all "Py" to "Pm"
- #50: Integrated __LINE__ into PM_RAISE
- #48: Organized and deploy unit tests
- #45: Finished interpret loop edits
- #35: Macroized all operations on object descriptors
- #42: Fixed misuse of PM_RAISE
- #43: Fixed mem_getInt()
- #40: Fixed heap chunk transfer
'twander' Version 3.204 is now released and available for download at:
The last public release was 3.195.
If you are unfamiliar with this program, see the end of this message
for a brief description.
- A new boolean configuration option, CMDMENUSORT (default: False),
has been added. This allows the user to force the Command Menu to
appear in sorted order (as opposed to the default which is to
display commands in the order they are defined).
- It is now possible to temporarily assign the current directory
to any of the Directory Shortcut keys. The user presses
KEDIRSCSET (default: Control-8) and is presented with a dialog
to enter which of the 12 Directory Shortcut keys to load with
the current directory. This allows directory waypoints to
be saved as shortcuts during the user's workflow. The shortcuts
revert to the definitions found in the Configuration File if
the program is exited and restarted or if a configuration
reload (default: Control-r) is initiated within the running
- A new configuration verb, ASSOC, has been added to implement file
"Associations". Associations allow the user to define which program
to start when the user selects a non-executable file and does a
mouse doubleclick or presses "Enter". For example, this
configuration statement associates files whose names end with the
string ".text" with emacs:
ASSOC .text emacs [SELECTION]
There is also provision for a "default" association that is invoked
if the user double-clicks or presses "Enter" on a non-executable
file that has no specific association defined for it:
ASSOC * MyFineEditor [SELECTION]
The right-hand-side of association statements can make use of almost
all of the 'twander' configuration language features such as runtime
prompting, symbolic variable substitution, execution variables, and
CHANGES & BUG FIXES
- The default mouse assignment to popup the shortcut menu (MOUSESC)
has been moved to Alt-Control-LeftButton. This was necessary
because the previous assignment interfered with the mouse command to
move up a directory level (MOUSEUP).
- The "Shortcut Key" help menu has been removed. It was redundant
with the identical menu on the menu bar and mouse popup menu.
- The titlebar status strings have been shortened to keep to overall
title length more reasonable.
- Selected help menus have now been formatted into 3 columns (as
opposed to the previous 2 column format) to make long help screens
fit on the display better.
- A new help menu, "Associations" has been added to display any
user-defined Associations (as described above).
- The order of the help menus has been changed to be slightly more
intuitive (to the author anyway :).
- The new features and changes are reflected in the manual.
- The example Configuration File (.twander) now contains examples of
"Execution Variables". These were introduced in 3.193 but examples
were not included in the example configuration.
Complete details of all fixes, changes, and new features can be found in
the WHATSNEW.txt and documentation files included in the distribution.
Users are strongly encouraged to join the twander-users mailing list as
described in the documentation.
A FreeBSD port has been submitted as well.
What Is 'twander'?
'twander' is a macro-programmable Filesystem Browser that runs on both
Unix-like systems as well as Win32 systems. It embraces the best ideas
of both similar GUI-driven programs (Konqueror, Windows Explorer) as
well as text-based interfaces (Midnight Commander, List, Sweep).
Or, If You Prefer The "Elevator Pitch"
- A better file browser for Unix and Win32.
(Tested on FreeBSD, Linux, Win32. Probably works on Mac OS/X, but not tested.)
- A way to make browsing the same on all the OSs you use.
- A macro-programmable tool that lets *you* define the features.
- A GUI navigation front-end for your shell.
- A way to "can" workflows for your technically-challenged colleagues.
- A way to free yourself from the shackles of the mouse.
- A way to significantly speed up your day-to-day workflow.
- A Python/Tkinter application - about 5000 lines of code/comments
- A RCT (Really Cool Tool) that will have you addicted in a day or two
See the web page for more information, a screen shot, and the complete
Copyright, Michael P. Soulier, 2006.
About Release 0.4:
This release adds a TftpServer class with a sample implementation in bin.
The server uses a single thread with multiple handlers and a select() loop to
handle multiple clients simultaneously.
Only downloads are supported at this time.
About Release 0.3:
This release fixes a major RFC 1350 compliance problem with the remote TID.
About Release 0.2:
This release adds variable block sizes, and general option support,
implementing RFCs 2347 and 2348. This is accessible in the TftpClient class
via the options dict, or in the sample client via the --blocksize option.
About Release 0.1:
This is an initial release in the spirit of "release early, release often".
Currently the sample client works, supporting RFC 1350. The server is not yet
implemented, and RFC 2347 and 2348 support (variable block sizes) is underway,
planned for 0.2.
Tftpy is a TFTP library for the Python programming language. It includes
client and server classes, with sample implementations. Hooks are included for
easy inclusion in a UI for populating progress indicators. It supports RFCs
1350, 2347 and 2348.
This library was developed against Python 2.3.
Project page: http://sourceforge.net/projects/tftpy/
License is the CNRI Python License.
See COPYING in this distribution.
- Server only supports downloads.
- Client only supports downloads.
- Only 'octet' mode is supported
- The only option supported is blksize
Michael P. Soulier <msoulier(a)digitaltorque.ca>
"Any intelligent fool can make things bigger and more complex... It
takes a touch of genius - and a lot of courage to move in the opposite
direction." --Albert Einstein
Pyfs is a (sort of) python replacement for shell+rsh+ftp+telnet, in a very
alpha development stage. Pyfs works on every platforms supporting Python,
with network connections in mind. Having the pyfs server running on the
machine A (a PC, a Nokia phone with Symbian S60, an XBOX console), you can
connect to A from another machine B (using the pyfs client), either via
TCP/IP, either via Bluetooth. After the connection is established, you can
interact with the remote python shell on A, or also start a form of
UNIX-like shell on A, with commands like cp, rm, ls, mkdir, etc, and even
transfer files, in both directions.