itools is a Python library, it groups a number of packages into a single
meta-package for easier development and deployment:
itools.catalog itools.i18n itools.tmx
itools.cms itools.ical itools.uri
itools.csv itools.odf itools.vfs
itools.datatypes itools.pdf itools.web
itools.gettext itools.rest itools.workflow
itools.handlers itools.rss itools.xhtml
itools.html itools.schemas itools.xliff
itools.http itools.stl itools.xml
Version 0.16.3 of itools does not use anymore the package uTidylib 
(it was required by itools.cms), now the itools API for (X)HTML is used
But the big news this Thursday is the new file handler (named "Table")
to manage structured data. This feature is still in an experimental
state, the API will probably change in the next releases.
Another important change, the Virtual File System (itools.vfs) now can
open files in "append" mode. This is supported by the local file system
layer, and by the itools.cms database. So far only the handler Table
takes advantage of this feature to improve scalability.
All handlers have a new method, "abort_changes", which will reset the
changes made to a handler and not yet saved. Folders have an specific
implementation that improves memory usage when a transaction is aborted,
The itools.xhtml package has two new functions, "sanitize_stream" and
"sanitize_str"; they will clean an (X)HTML fragment of potentially
The (X)HTML document handlers have two new methods: "to_xhtml" and
"to_html". They return a byte string that represents the state of the
handler, as XHTML and HTML respectively.
The HTML parser is now compatible with the XML parser, the events it
returns have the same structure. And the state of the HTML document
handler is now identical to the state of the XHTML document handler.
(This way the itools.xhtml and itools.html packages are getting closer,
in preparation for a future merge.)
There is a fix in the XML parser (itools.xml), it did not correctly
parse attribute values when there was more than one entity reference.
And another small fix in the "set_prefix" function from itools.stl, now
the "<a>" tags are also processed.
The reST support (itools.rest) has seen some changes to the API. First
the function "to_html_events" will return an stream of (X)HTML events
from a reST text. Second the new function "to_str(text, format)" is
recommended over "to_xml", "to_html" and "to_latex", which become
deprecated. Last, the "Document" class has been removed, as it was
redundant (use the functions instead).
And the usual bunch of fixes for itools.cms; most notably the new
procedure for when the user forgets her password: now instead of
sending a new password by email we send a link to a form that allows
the user to choose her new password. Also, a number of methods
have been deprecated, check the UPDATE-0.16.3 file for the details.
- J. David Ibáñez worked on itools.vfs, itools.handlers, itools.xml and
- Henry Obein fixed bugs;
- Sylvain Taverne worked on itools.xhtml, itools.rest and itools.cms;
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
19 Jul '07
19 Jul '07
This is dbcook, a framework to cook databases from recipes, written
as python declarations. Eventually the result may be edible (;-)
If u're interested, have a look, dbcook/usage/example1.py might be a
start. The directory-structure is still in flux - u need to get the
internal dbcook/ accessible somehow (PYTHONPATH or else). Licensed as
svn co https://dbcook.svn.sf.net/svnroot/dbcook/trunkhttp://dbcook.sf.net
Here a short description what it probably is, and can do:
A framework for declarative mapping of object hierarchies/relations
into a (relational or not) database.
The "language" itself is made with independence in mind, although
currently all available builder stuff is over SQLAlchemy as backend
(so it looks like wrapping declarative translator).
It completely hides/automates the table/key/column/mapper/whatever
creation. The user can only control certain characteristics of the
way the mapping happens, mostly related to hierarchy and relations
between objects (subclasses, instances, leafs, uniqueness etc).
it's about 10 months old now. It can handle:
- data column types
- reference columns -> foreign keys
- class inheritance, and class inclusion (inheritance without
database mapping of the base), and virtual classes (those never
have instances). More in mapcontext._Base
- polymorphism, giving 3 kinds of queries for each mapped class: ALL,
base-only, subclasses only
- any combination of table-inheritance-types within the tree
(concrete/joined/no-single-yet; beware that sql-polymorphism only
works with joined-table for now)
- automatic solving of cyclical references/dependencies (and putting
proper alter_table / post_update)
- associations (many2many) - implicit and explicit
- more? maybe
import dbcook.usage.plainwrap as o2r
class Text( o2r.Type): pass
class Address( Base):
place = Text()
class Person( o2r.Base):
name = Text()
address = o2r.Type4SubStruct( Address)
friend = o2r.Type4SubStruct( 'Person')
class Employee( Person):
job = Text()
..... and no mentioning of tables, columns etc whatsoever .....
Once the mapping is built, any of these can be done:
- use it as plain SA - session.query( class).. and similar
- query-clause expressions can be automatically created from plain
python functions over objects' attributes, e.g.:
lambda self: (self.friend.manager.age < 40) & self.name.endswith('a')
- generate a source of the equivalent plain SA-calls to build it
So far it is just a library. There is no single way to use it. The
directory usage/ has 2 possible reflectors (things that walk the
declared classes and gather info from them), one is just plain python
(plainwrap.py), another is for my static_type/ framework. You can
make your own for your own taste.
The usage/samanager thing tries to (correctly - context like) keep all
related things in one place - mappings, dbs, engines, sessions, etc.
If destroy() is requested, it'll try hard to clear all side-effects
of its existence.
Certain pieces are (almost) independent and are usable as is without
all the rest: expression.py, usage/hack*py, sa_generator.py - all
The tests/ directory contains 2 types of tests - sa/ which proves that
the way SA is used in dbcook is correct/working, and mapper/other
which check whether the cooker does right thing as result. It still
uses makefile to run all stuff.
- needs kjbuckets (from gadfly) for graph-arithmetics
- needs sqlalchemy, 0.3.6+?
- optional static_type/ framework - makes staticly-declared structs
(a-la java/C semantics) in python - do mail if interested.
Some todo's, long- or short- term:
- nicer/some way of declaring collections
(SA: relation(.. use_list=True))
- some documentation, translate all in both languages.
- tests for all the stuff, in most of combinations,
instead of just trying this/that
- generate sql-server-side functions, triggers etc
- autoload / reverse-engineering
- single-table inheritance
- other reflectors/"syntaxes" - e.g. elixir-like
- concrete-polymorphism: polymunion of (type,id) key
svilen_dobrev at users point sourceforge point net
Might be easier to reach me at sqlalchemy's newsgroup.
<P><A HREF="http://dbcook.sf.net">dbcook 0.1</A> - A framework for
declarative mapping of object hierarchies/relations
into a (relational or not) database. (19-jul-2007)
I've been getting ready for OSCon 2007 next week, and theres quite a bit
of Python related activity there.
Based on a suggestion from Jeff Rush, (who can't be there), I've
proposed a Python Advocacy BoF on Monday, from 6:30pm - 7:30pm. For
anyone arriving early, this will be a great opportunity to coordinate
Python advocacy activites at OSCon.
Theres also a regular Python BoF on Wednesday from 8:30pm - 9:30pm.
Apart from those, I've tagged  a bunch of sessions I felt were Python
related. This list includes sessions outside the main Python track.
Hachoir is a framework for binary file manipulation: file format
recognition, metadata extraction, search files in any binary stream
(forensics), view file content with human representation, etc. It's
composed of many component:
* hachoir-metadata: fault tolerant metadata extraction;
* hachoir-subfile: search subfiles in a disk image or any other
* hachoir-urwid, hachoir-wx, hachoir-gtk, hachoir-gtk: user interface
view file content (curses, wxPython, pygtk, web+ajax);
* hachoir-core: library to split binary data into a field tree;
* hachoir-parser: collection of 70 file format parsers;
* hachoir-regex: regular expression optimization/manipulation and
matching (used by hachoir-subfile).
List of supported file formats:
(jpeg, ttf, exe, rar, ogg, ntfs, ole2, torrent, ...)
Examples of metadata extraction:
Hachoir works any operating system and only depends on Python (2.4+).
Packages are available for Debian, Mandriva, Gentoo, Arch and FreeBSD.
hachoir-core goal is to ease binary parser writing. It takes care of
problem, has bit resolution (for addresses and sizes), and only use
charset for text. It gives a nice API to the programmer (see parsers
code): each field is an object. A parser is lazy: its value, display
description, etc. is computed on demand (when the program ask it). So
possible to parse very complex structures and huge files (60 GB or
not a problem).
hachoir-core and hachoir-metadata are "fault tolerant": on parser/
error or file error (truncated or damaged file), the program doesn't
but continue to next valid state. It allows to extract informations on
hachoir-metadata create a dictionary with typed values: track number
integer, creation date is datetime.datetime object, etc. and all text
stored as Unicode string. The API allows easy reuse of extracted data.
Source code has good code coverage with automatic tests (lot of
Fuzzing is sometimes used to find more bugs.
Some experimental programs exist like hachoir-strip: program to remove
personal information (author name, timestamp, copyright, etc.) from a
picture, movie, sound, archive, etc. Another example: swf_extract.py
to extract pictures and sounds from a SWF (Flash) document.
Victor Stinner aka haypo
IMDbPY 3.1 is available (tgz, deb, rpm, exe) from:
IMDbPY is a Python package useful to retrieve and manage the data of
the IMDb movie database about both movies and people.
In this release there are many fixes to stay up-to-date with the new
IMDb's layout. Moreover there is support for the new 'synopsis' and
'parents guide' pages.
Platform-independent and written in pure Python (and few C lines), it
can retrieve data from both the IMDb's web server and a local copy of
the whole database.
IMDbPY package can be very easily used by programmers and developers
to provide access to the IMDb's data to their programs.
Some simple example scripts are included in the package; other
IMDbPY-based programs are available from the home page.
Davide Alberani <alberanid(a)libero.it> [PGP KeyID: 0x465BFD47]
Pydev and Pydev Extensions 1.3.8 have been released
Details on Pydev Extensions: http://www.fabioz.com/pydev
Details on Pydev: http://pydev.sf.net
Details on its development: http://pydev.blogspot.com
Release Highlights in Pydev Extensions:
* Code-analysis: Detects mixing of spaces and tabs.
* Code-analysis: Reimport not flagged when inside of try..except
Release Highlights in Pydev:
* Fixed problems related to the pydev package explorer that appeared when
using java 1.6 (ConcurrentModificationException)
* Other minor bug-fixes
What is PyDev?
PyDev is a plugin that enables users to use Eclipse for Python and Jython
development -- making Eclipse a first class Python IDE -- It comes with many
goodies such as code completion, syntax highlighting, syntax analysis,
refactor, debug and many others.
ESSS - Engineering Simulation and Scientific Software
Pydev - Python Development Enviroment for Eclipse
July 16, 2007 - 0.3.0 Release
Added -L and -C options for Cheese Shop's new XML-RPC methods
'changelog' and 'release_updates'
Added -F option to fetch source, egg or do a subversion checkout
Added 'svn' option for -T
Better package name list cache handling
What is yolk?
Yolk is a command-line tool for querying The Cheese Shop and your
installed Python packages.
Yolk is in the early stages of development but you may find it useful.
* Show which installed packages have newer versions available by querying PyPI
* List Python packages installed by distutils, setuptools, or easy_install
* Determine which packages are activated or not (--multi-version)
* Determine which packages are deployed in development mode
* Examine package metadata
* Show dependencies of packages installed by setuptools, if available
* Query PyPI for various package information using XML-RPC interface
* Examine entry maps and entry points for setuptools deployed Python packages
* Determine download URL or subversion checkout URL of a package
* Easily download source, egg or do a subversion checkout by simply
giving the package name
* Check latest releases on The Cheese Shop or detailed Cheese Shop ChangeLog
* Determine which pkgs were installed by distutils/setuptools or your
package manager (Gentoo only so far)
* And if none of that interests you, a little Red Leicester then, perhaps?
With Python<=2.3 yolk only lists installed packages if the setup.py
uses setuptools or if the package was installed via easy_install.
Users of Python>=2.5 get the whole enchillada.
Where can I get it?
'easy_install -U yolk'
yolk is available in Gentoo's portage system as 'dev-python/yolk'
yolk is Copyright 2007 Rob Cakebread, released under the terms of the GPL-2