It is with great pleasure that I announce that the release of a
beta version of Pyro 3.6-- the greatest Pyro release yet!
"What is Pyro?"
"Pyro is short for PYthon Remote Objects. It is an advanced and powerful
Distributed Object Technology system written entirely in Python, that is
designed to be very easy to use. Never worry about writing network
communication code again."
Go to Pyro's Sourceforge download page to get it, and please give it
a good testing. It would be great to hear of any issues or problems
you encounter, before putting out the final 3.6 release.
Pyro has been a Sourceforge project for over 6 years now.
I have made a HUGE amount of improvements and fixes since the previous
version, 3.5, which was released about 14 months ago (sorry!).
If you want to review what has been done, read the 'changes' chapter
in the manual, and/or visit Pyro's "todo" wiki page:
Thanks for your support, and I'm looking forward to release a
final Pyro-3.6 version soon !
--Irmen de Jong
PS: Sourceforge's shell access is down at the moment so I can't update
the Pyro web page itself yet.
Versions 1.1 of shm and shm_wrapper -- two modules which enable IPC
(shared memory and sempahores) via Python -- are now available. The
former is Vladimir Marangozov's old shm module with some bug fixes, the
latter is my wrapper which I find more Pythonic. Feedback is welcome.
Whole-site HTML validation, link checking and more
I'm pleased to announce the 0.8.0 release of SQLObject.
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:
News since 0.7
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
* With empty parameters AND() and OR() returns None.
* Allows to use set/frozenset sets/Set/ImmutableSet sets as sequences
passed to the IN operator.
* ID columns are now INT UNSIGNED for MySQL.
* 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
* Another round of bugfixes for MySQL errors 2006 and 2013 (SERVER_GONE,
* Fixed a bug in MSSQLConnection caused by column names being unicode.
* Fixed a bug in FirebirdConnection caused by column names having trailing
* Order by several columns with inheritance.
* Fixed aggregators and accumulators with inheritance.
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.
Leipzig Python User Group
Next Meeting Tuesday, February 13, 2007
We will meet on February 13 at 8:00 pm at the training center
of Python Academy in Leipzig, Germany
This time our main topic will be Pyrex
Pyrex makes writing Python extension much easier.
Members of our User Group achieved run time improvements
with Pyrex that exceed the factor of ten.
As usual, there also will be discussions about other Python topics.
Food and soft drinks are provided. Please send a short confirmation
mail to info(a)python-academy.de, so we can prepare appropriately.
Everybody who uses Python, plans to do so or is interested in learning
more about the language is encouraged to participate.
While the meeting language will be mainly German, English speakers are
very welcome. We will provide English interpretation if needed.
Current information about the meetings can always be found at
Leipzig Python User Group
Stammtisch am 09.01.2007
Wir treffen uns am 09.01.2007 um 20:00 Uhr wieder im
im Schulungszentrum der Python Academy in Leipzig
Unser Thema ist diesmal Trac (http://trac.edgewall.org/).
Stefan Schwarzer wird die Nutzung von Trac mit Beispielen
Für das leibliche Wohl wird gesorgt.
Wir bitten um kurze Anmeldung per e-mail an: info(a)python-academy.de
An den Treffen der Python Anwendergruppe kann jeder teilnehmen,
der Interesse an Python hat, die Sprache bereits nutzt oder nutzen möchte.
Die Arbeitssprachen des Treffens ist Deutsch. Englisch sprechende
Python-Enthusiasten sind trotzdem herzlich eingeladen. Wir übersetzen gern.
Aktuelle Informationen zu den Treffen sind immer unter
Throxy: throttling HTTP proxy in one Python file
* Simulate a slow connection (like dial-up).
* Adjustable bandwidth limit for download and upload.
* Optionally dump HTTP headers and content for debugging.
* Decompress gzip content encoding for debugging.
* Multiple connections, without threads (uses asyncore).
* Only one source file, written in pure Python.
To use it, run throxy.py on your local machine and adjust your browser
settings to use 127.0.0.1:8080 as HTTP proxy.
Simulate analog modem connection:
$ python throxy.py -u28.8 -d57.6
Show all HTTP headers (request & reply):
$ python throxy.py -qrs
Dump HTTP headers and content to a file, without size limits:
$ python throxy.py -rsRS -l0 -L0 -g0 > dump.txt
Tell command line tools to use the proxy:
$ export http_proxy=127.0.0.1:8080
Command line options:
--version show program's version number and exit
-h, --help show this help message and exit
-i <ip> listen on this interface only (default all)
-p <port> listen on this port number (default 8080)
-d <kbps> download bandwidth in kbps (default 28.8)
-u <kbps> upload bandwidth in kbps (default 28.8)
-o allow remote clients (WARNING: open proxy)
-q don't show connect and disconnect messages
-s dump headers sent to server
-r dump headers received from server
-S dump content sent to server
-R dump content received from server
-l <bytes> maximum length of dumped text content (default 1024)
-L <bytes> maximum length of dumped binary content (default 256)
-g <bytes> maximum size for gzip decompression (default 8192)
Subversion repository (or simple download):
Pretty source code (and change history):
This is a very early release. Please send feedback per email.
Alternatively, you can file bugs and feature requests here:
FlightFeather's goal is "social networking for everyone". This means
that *anyone* should have a chance to run a *popular* social
networking site -- on minimal hardware, and without wasting bandwidth.
Version 0.3.3 is the current development release. It modifies the way
the FlightFeather server loads the configuration, protocol, session,
and storage modules on startup. The actual loading process now takes
place after all options have been parsed. If the "-c" or "--command"
option is present, the server does not import these modules at all,
since they are not required. The new implementation also fixes a bug
that caused the test versions of the above modules to always load, in
addition to any modules specified on the command line.
The current beta release of FlightFeather is 0.2.8. You can download
these releases (free/open source under the GPL) from the "BoSStats"
site, which runs on FlightFeather.
You are always welcome to participate in the discussion on the
"BoSStats" site; the topic covered (what makes a good boss, office
politics, etc.) is valuable in and of itself. Please, however,
refrain from posting test comments, as the site is live.
A Brief Overview of FlightFeather and BoSStats
You can see FlightFeather in action on the BoSStats site. BoSStats is
dedicated to improving the world of work: you can discuss what makes a
good boss, or share your experiences of office politics. You can also
comment and vote on the posts made by others. The application does
not set cookies, and no registration is required for anything except
BoSStats is a good testbed for FlightFeather, and has value of its
own, since meaningful advice about work-related problems is very hard
to find. A "Wisdom of Crowds" solution -- particularly with strong
privacy protection (see below) -- is a necessary addition to this
FlightFeather's most important feature is that all write requests
generate (or modify) HTML files. In consequence, a pure read (the
most common operation) merely serves static pages.
The major design focus for FlightFeather are responsiveness and
performance; the system should eventually support very high traffic
volumes. In addition, FlightFeather allows for a great deal of user
privacy -- a critical, rapidly emerging problem in the social
The next New York City Python Users Group meeting is this Tuesday, Feb.
13th, 6:30pm at at the Millennium Partners office at 666 Fifth Avenue (53rd
St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who
are interested in Python to attend. However, we need a list of first and
last names to give to building security to make sure you can gain access to
the building. RSVP to clajo04(a)mac.com to add your name to the list.
More information can be found on the yahoo group page:
Hope to see you there!
GNUmed version 0.2.4.2 has been polished and released !
For the impatient: Go grab your copy at wiki.gnumed.de.
Next to bug fixes and code cleanup this release has a nice selection of new
features as well ...
We need testers. Let us know if it works for you.
The GNUmed team worked hard to release yet another stable version.
As features are being added more and more success stories of happy users reach
For this version patient consultation management has been reworked and
stabilized. New features include document import via an XSane interface,
better episode management, the ability to export documents from the archive
to storage media, drag and drop of files onto GNUmed for even easier
archival, DICOM viewer integration, a webbrowser link to medical information
on the web, a custom database backup script, a stage 2 link to the ifap index
drug database as well as a framework for custom script hooks.
Localization files were added and updated.
All features have been documented over at wiki.gnumed.de.
Packages are available for Debian unstable, Ubuntu Feisty, MS Windows and any
other GNU/Linux using the archives (tgz).
The latest not yet released GNUmed code has been successfully tested on Mac
OSX. One of the next releases will include support for the another OS.
Have fun and please report bugs and success stories. To stay in touch just
head over to blog.gnumed.de every once in a while.
Leipzig / Germany
[www.gnumed.de] -> PGP welcome, HTML ->/dev/null