Pyrex 0.3 is now available:
Major new feature: EXTENSION TYPES
You can now define new built-in types in Pyrex, and
use them to wrap arbitrary C data structures. See
the Language Overview for details.
For an example, see Demos/spam.pyx in the distribution.
What is Pyrex?
Pyrex is a new language for writing Python extension modules.
It lets you freely mix operations on Python and C data, with
all Python reference counting and error checking handled
Greg Ewing, Computer Science Dept,
University of Canterbury,
Christchurch, New Zealand
A new version of PyChecker is available for your hacking pleasure.
PyChecker is a tool for finding bugs in Python source code.
It finds problems that are typically caught by a compiler for less
dynamic languages, like C and C++. It is similar to lint.
Comments, criticisms, new ideas, and other feedback is welcome.
Changes from 0.8.10 to 0.8.11:
* Improve error message for syntax errors from user files
* Fix pychecker.bat so it should work now
* Add a warning for using __coerce__ in new-style classes
* Add --deprecated option for using deprecated modules or functions
* Add a warning for using functions with security problems (os.t[e]mpnam)
* Add a warning for comparing against True/False or defining True/False
* Add --badexcept option to warn when using string exceptions or
classes not derived from Exception to raise/catch exceptions
* Fix spurious warnings from using (test and 'true' or 'false)
Various other bugs were also fixed, including some problems
using PyChecker in Python 2.2.
PyChecker is available on Source Forge:
Web page: http://pychecker.sourceforge.net/
Project page: http://sourceforge.net/projects/pychecker/
Mailling List: pychecker-list(a)lists.sourceforge.net
Logilab has released constraint-0.1.
The constraint package is an extensible Constraint Satisfaction Problem
(CSP) solver using constraint propagation algorithms written in 100%
pure Python (tested with Python 2.1)
You can download it from ftp://ftp.logilab.org/pub/constraint, or read a
bit more about it on http://www.logilab.org/python-logic/constraint.html,
and discuss it on the logic-sig mailing list (see
http://lists.logilab.org/mailman/listinfo/python-logic to subscribe)
The package is still young, but we find it useful enough right now, so I
thought I might as well publish it.
What can it do?
* solve some finite-domain CSP
* handle n-ary constraints
How can you extend it:
* by implementing new Domain classes
* by implementing new constraint classes
* by implementing new Distributor classes
How well does it perform?
* 8-queens problems solved in 15 seconds on my 1GHz PC
* SEND+MORE=MONEY problem solved in 8 seconds on the same machine
If you're interested by constraint propagation programming in python,
please join the logic-sig mailing list.
LOGILAB, Paris (France).
Narval, the first software agent available as free software (GPL).
Announce: pyPgSQL - Version 2.1 is released.
pyPgSQL v2.1 has been released. It is a bug fix release to version 2.0, but
also includes some enhancements.
It is available at http://pypgsql.sourceforge.net.
pyPgSQL is a package of two (2) modules that provide a Python DB-API 2.0
compliant interface to PostgreSQL databases. The first module, libpq,
exports the PostgreSQL C API to Python. This module is written in C and
can be compiled into Python or can be dynamically loaded on demand. The
second module, PgSQL, provides the DB-API 2.0 compliant interface and
support for various PostgreSQL data types, such as INT8, NUMERIC, MONEY,
BOOL, ARRAYS, etc. This module is written in Python and works with
PostgreSQL 7.0 or later and Python 2.0 or later.
Note: It is highly recommended that you use PostgreSQL 7.1 or later and
Python 2.1 or later.
PostgreSQL is a sophisticated Object-Relational DBMS, supporting almost all
SQL constructs, including sub-selects, transactions, and user-defined types
and functions. It is the most advanced open-source database available any-
where More information about PostgreSQL can be found at the PostgreSQL home
page at http://www.postgresql.org.
Python is an interpreted, interactive, object-oriented programming lang-
uage. It combines remarkable power with very clear syntax. It has mod-
ules, classes, exceptions, very high level dynamic data types, and dynamic
typing. There are interfaces to many system calls and libraries, as well
as to various windowing systems (X11, Motif, Tk, Mac, MFC). New builtin
modules are easily written in C or C++. Python is also usable as an exten-
sion language for applications that need a programmable interface. Python
is copyrighted but freely usable and distributable, even for commercial
use. More information about Python can be found on the Python home page at
Changes since pyPgSQL Version 2.0
pyPgSQL 2.1 is now compatible and tested to work with PostgreSQL 7.2.x.
Changes to README
* Added documentation for the new TransactionLevel attribute of
the Connection object.
Changes to PgSQL.py
* Added code to implement support for setting PostgreSQL transaction
levels. [Feature Request #481727].
* Got rid of redundant building and storing of the
mapping of column names to column positions in the PgResultSet class. Now,
rows of the same query are instances of a dynamically created class, which
has this mapping as a class attribute instead of an attribute of the
instance. This saves a lot of space, and also slightly increases
performance of cursor fetches.
* Fixed the array parsing so it also works with PostgreSQL versions 7.2.x.
The PostgreSQL developers changed the quoting in the string representation
of arrays in 7.2 beta cycle: strings are now only quoted when otherwise
the array representation would be ambiguous. The new parseArray() method
should handle the old and new way of quoting in arrays. [Bug #539769].
Also added a new testcase for the ARRAY type.
* Improved the array parsing, so that it now passes all
the new mean testcases. Added support for parsing multidimensional arrays.
Eventually, the array parsing code should go as a support function into
* Replaced all typechecks with "is" operators instead
of equals. Mark McEahern had a problem with using pyPgSQL in combination
with a FixedPoint class where the reason was that the FixedPoint class was
not comarable to None. The consensus on python-list was that None and all
types are singletons, so they should be checked using "is", which is also
faster, because it only checks for object identity.
* Fixed a couple of problems found by Steven D. Arnold:
1. A undefined variable was used in a few places where notices were popped
from the notice list.
2. Comparisons between 2 PgNumerics gave the wrong result.
* Fixed problem that occurs when the sum() aggregate returns a
NULL. [Bug #505162].
Changes to pgversion.c
* Allow for development and beta versions of PostgreSQL
Changes to libpqmodule.c
* Removed special escaping of control characters in arrays.
* Added support for two missing OID types: aclitem and macaddr.
* Applied patch by Chris Bainbridge [Patch #505941] "fix for null bytes in
Changes to pgresult.c
* Change the point at which an OID is tested to see if it is a
Large Object from 1700 to 16383.
A new version of the proposed Python standard logging module (as per
PEP 282) has been released. You can get all the information from
There are "download" and "recent changes" links at the top of that
page. The new stuff includes some bug fixes, better support for
class-based filtering and logging, more documentation of the
configuration file format, an example hand-coded configuration file
for those people who can't use the GUI configurator, an example Filter
for regular-expression match-based filtering, and more!
As always, your feedback is most welcome (especially bug reports,
patches and suggestions for improvement).
Red Dove Consultants Ltd.
Changes since the last version:
Fixed bug which caused problem if no args to message (suggested by
Fixed bug in _fixupParents (thanks to Nicholas Veeser) and added
log_test19.py as a test case for this bug.
Added getMessage to LogRecord (code was moved here from
Applied str() to record.msg to allow arbitrary classes to determine
the formatting (as msg can now be a class instance).
Table of Contents added to python_logging.html, the section on Loggers
updated, and the logconf.ini file section annotated.
Added log_test20.py which demonstrates how to use class instances to
provide alternatives to numeric severities as mechanisms for control
Added log_test21.py which builds on log_test20.py to show how you can
use a regular expression-based Filter for flexible matching similar to
e.g. Protomatter Syslog, where you can filter on e.g. "a.*" or "*.b"
_levelNames changed to contain reverse mappings as well as forward
mappings (leveltext->level as well as level -> leveltext). The reverse
mappings are used by fileConfig().
fileConfig() now more forgiving of missing options in .ini file -
sensible defaults now used when some options are absent. Also, eval()
is used less when interpreting .ini file contents - int() and dict
lookup are used in more places.
I'm happy to announce the initial public version of the getpassfix
module has been released.
The getpassfix module addresses a certain bug which occurs when
using the getpass module on particular Windows platforms. For
anyone who uses the getpass module for code which may be run
on Windows should look into using this module.
You can find out more about it from here:
Version 0.3 of the scgi is now available from:
The SCGI protocol is a replacement for the Common Gateway Interface
(CGI) protocol. It is a standard for applications to interface with HTTP
servers. It is similar to FastCGI but is designed to be easier to
Included in this package is mod_scgi, an Apache module that implements
the client side of the protocol. There is also a a Python package called
scgi which implements the server side of the protocol.
Changes in scgi 0.3
* disable verbose debugging output
* if the connection to the SCGI server is refused, sleep a little
and try again since it might have been restarted (as opposed giving
up right away and returning a 500 error to the poor user)
* restart interrupted select() calls
* remove graceful restart code (on HUP signal) in scgi_server.py. It's
complicated and now that mod_scgi retries it's not needed.
* close stdin
Neil Schemenauer <nas(a)mems-exchange.org> | MEMS Exchange
Software Engineer | http://www.mems-exchange.org/
The long-awaited EDDIE version 0.30 has now been released. This is a
major release and incorporates many significant changes to improve the
configuration and extendability. It also incorporates new features
such as remote HTTP/HTTPS monitoring and SNMP client support for
monitoring devices with SNMP or storing SNMP information to RRD files,
for example. The Elvin connection code has been totally re-written and
is much more stable and reliable now.
A fully updated User's Manual, as well as a Developer's Guide, are also
What is EDDIE? The EDDIE Tool is a system and network monitoring,
security and performance analysis tool. It is very customizable and
multi-platform. Currently Linux, Solaris and HP-UX are supported.
Why is this of interest to the Python community? EDDIE has been
written in 100% threaded Python. All system and network checks are
written in native Python. Directive rules, which are written by the
user to perform monitoring and checking tasks, take advantage of a
localized Python environment and are evaluated by the Python
interpreter itself. This allows for complex rules to be written
Everything can be obtained from the usual place,
Out of frustration of not always having strptime() available and not
liking something in the standard library saying something is only
available on "Most modern Unix systems" when it does not have to be
this way, I wrote strptime() in pure Python (requires Python 2.2 or
higher; if there is enough demand I could back-port to older versions
since most of the 2.2 capabilities used were for convenience of
The module can be found at the Python Cookbook at
I wrote strptime() before (over a year ago), but I got around to
rewriting it finally and I removed any dependence on the programmer
knowing any locale-specific info ahead of time. Now you do not need
to enter any locale-specific information; you can use the function
just like the version that is in the time module. There is some extra
functionality, though, so look at the recipe to see what extras are
available (performance and locale abilities mainly).
A completely programmable plug-in for Adobe After Effects
Useful Things is a programmable plug-in for Adobe After Effects. Using
the Python programming language, new "plug-ins" can be created in
Platform: Windows, Macintosh
Perry Kivolowitz (perryk(a)profoundeffects.com)
<a href="http://www.profoundeffects.com">Useful Things</a> -- A
completely programmable plug-in for Adobe After Effects