The EuroPython Conference 2003 (EPC2003) returns to Belgium this June,
and the conference organizers are now accepting proposals for
presentations and tutorials. We expect this year to be even more
successful, and we're not just talking about the Chimay.
We are looking for participation in the following conference tracks:
Python Frameworks, Python Language, Python in Business, Python in
Science and Industry, and Zope. Track descriptions are available at
<http://www.europython.org/sessions/descriptions>. The deadline for
submissions is Monday, April 21.
You can propose a 30 minute talk, a 45 minute talk, or a 2 hour
tutorial. To propose a talk or tutorial, please visit the Talk
Submission page at <http://www.europython.org/Talks/callFor>.
For more information about the conference tracks, please contact the
track chairpersons listed at
<http://www.europython.org/sessions/descriptions>. For general
questions about the conference, please visit the conference website at
<http://www.europython.org/>. Also, if you would like to help us make
this year's EuroPython conference another success, please volunteer!
You can join us on the EuroPython mailing list at
About EuroPython Conference 2003:
EuroPython Conference 2003 is the premiere venue for meeting Python
and Zope developers from Europe and beyond. As one of the first
community-organized Python and Zope conferences, the EuroPython
Conference delivers the atmosphere and information developers want.
The conference will be held June 25-27, 2003 in Charleroi, Belgium.
Information is available at the EuroPython website at
<http://www.europython.org/>. For more information, contact
A simple module for converting dates from Gregorian to Discordian.
This is a very simple module which allows for conversion from
normal dates (via 'time.time', 'time.localtime', etc.) to
Discordian dates (a silly made-up dating system that divides a
year into five seasons of 73 days each). The module can either be
used as a standalone command line application (which prints the
current date in Discordian form) or as a extension module.
Getting the software
The current version of discord is 1.0.
The latest version of the software is available in a tarball here:
The official URL for this Web site is
This module requires Python 2.0 or greater.
This code is released under the GPL.
- 1.0; 2003 Mar 18. Initial release.
Erik Max Francis / max(a)alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ Nine worlds I remember.
\__/ Icelandic Edda of Snorri Sturluson
Maths reference / http://www.alcyone.com/max/reference/maths/
A mathematics reference.
Announcing PyTables 0.4
I'm happy to announce the first beta release of PyTables. It is labelled
beta because it has been thoroughly tested, even in production environments,
and it is getting fairly mature.
Besides, from now on, the API will remain mostly stable, so you can start
using PyTables now with the guarantee that your code will also work (well,
mostly ;-) in the future. The large amount of unit tests included in
PyTables will also ensure the backward compatibility as well as the quality
of future releases will remain at least as good as it is now (although
hopefully it should increase!).
- numarray objects (NumArray, CharArray and RecArray) supported
- As a consequence of a large internal code redesign (numarray is at
the core of PyTables now), performance has been improved by a factor
of 10 (see "How Fast Is It?" section)
- It consumes far less memory than previous version
- Support for reading generic HDF5 files added (!)
- Some bugs and memory leaks existing in 0.2 solved
- Updated documentation
- Added more unit tests (more than 200 now!)
What it is
In short, PyTables provides a powerful and very Pythonic interface to
process table and array data.
Its goal is to enable the end user to manipulate easily scientific
data tables and Numerical and numarray Python objects in a persistent
hierarchical structure. The foundation of the underlying hierarchical
data organization is the excellent HDF5 library
A table is defined as a collection of records whose values are stored
in fixed-length fields. All records have the same structure and all
values in each field have the same data type. The terms
"fixed-length" and strict "data types" seems to be quite a strange
requirement for an interpreted language like Python, but they serve a
useful function if the goal is to save very large quantities of data
(such as is generated by many scientific applications, for example) in
an efficient manner that reduces demand on CPU time and I/O resources.
Quite a bit effort has been invested to make browsing the hierarchical
data structure a pleasant experience. PyTables implements just two
(orthogonal) easy-to-use methods for browsing.
What is HDF5?
For those people who know nothing about HDF5, it is is a general
purpose library and file format for storing scientific data made at
NCSA. HDF5 can store two primary objects: datasets and groups. A
dataset is essentially a multidimensional array of data elements, and
a group is a structure for organizing objects in an HDF5 file. Using
these two basic constructs, one can create and store almost any kind of
scientific data structure, such as images, arrays of vectors, and
structured and unstructured grids. You can also mix and match them in
HDF5 files according to your needs.
How fast is it?
PyTables can write table records between 20 and 30 times faster than
cPickle and between 3 and 10 times faster than struct (it is a module
present in the Standard Library); and retrieves information around 100
times faster than cPickle and between 8 and 10 times faster than
When compared with SQLite (http://www.sqlite.org/), one of the fastest
(free) relational databases available, PyTables achieves between a 60%
and 80% the speed of SQLite during selects of dataset sizes that fit
in the O.S. filesystem memory cache. However, when those sizes does
not fit in the cache (i.e. when dealing with large amounts of data),
PyTables beats SQLite by a factor of 2 or even more (depending on the
kind of record selected), and its performance in this case is only
limited by the I/O speed of the disk subsystem.
Go to http://pytables.sourceforge.net/doc/PyCon.html#section4 for a
detailed description on the conducted benchmarks.
I'm using Linux as the main development platform, but PyTables should
be easy to compile/install on other UNIX machines. This package has
also passed all the tests on a UltraSparc platform with Solaris 7 and
Solaris 8. It also compiles and passes all the tests on a SGI
Origin2000 with MIPS R12000 processors and running IRIX 6.5.
If you are using Windows and you get the library to work, please let
At the bottom of this message there is some code that shows basic
capabilities of PyTables. You may also look at
for online code.
Go to the PyTables web site for downloading and more details:
Share your experience
Let me know of any bugs, suggestions, gripes, kudos, etc. you may
-- Francesc Alted
*-*-*-**-*-*-**-*-*-**-*-*- Small code example *-*-*-**-*-*-**-*-*-**-*-*-*
from tables import *
identity = Col("CharType", 22, " ", pos = 0) # character String
idnumber = Col("Int16", 1, pos = 1) # short integer
speed = Col("Float32", 1, pos = 1) # single-precision
# Open a file in "w"rite mode
fileh = openFile("objecttree.h5", mode = "w")
# Get the HDF5 root group
root = fileh.root
# Create the groups:
group1 = fileh.createGroup(root, "group1")
group2 = fileh.createGroup(root, "group2")
# Now, create a table in "group0" group
array1 = fileh.createArray(root, "array1", ["string", "array"], "String
# Create 2 new tables in group1
table1 = fileh.createTable(group1, "table1", Particle)
table2 = fileh.createTable("/group2", "table2", Particle)
# Create the last table in group2
array2 = fileh.createArray("/group1", "array2", [1,2,3,4])
# Now, fill the tables:
for table in (table1, table2):
# Get the record object associated with the table:
row = table.row
# Fill the table with 10 records
for i in xrange(10):
# First, assign the values to the Particle record
row['identity'] = 'This is particle: %2d' % (i)
row['idnumber'] = i
row['speed'] = i * 2.
# This injects the Record values
# Flush the table buffers
# Select actual data from table.
# on entries where TDCcount field is greater than 3 and pressure less than 50
out = [ x['identity'] for x in table.iterrows()
if x['idnumber'] > 3 and 4 < x['speed'] < 10 ]
# Finally, close the file (this also will flush all the remaining buffers!)
Coming Friday is the *last day* to register for PyCon DC online.
After that, the rates go up to $250, and you'll have to pay on-site.
Speakers! This applies to you too.
Already registered? BOOK YOUR HOTEL ROOM NOW! Late March is cherry
blossom time in DC, and hotels fill up quickly. Ditto for flights.
We've already got over 200 attendees registered. Don't miss it!
--Guido van Rossum (home page: http://www.python.org/~guido/)
A basic Wikki Wikki is up for the UK Python Conference at
Could anyone who will be attending the conference please add their name to
the Attendees page?
This will be the place to discuss travel arrangements, sort out lifts and
ride shares etc. We also plan to have organisation of the various short
And of course since it is a Wikki, if you think of something else that
should be included you can add it yourself.
John Precedo (johnp(a)reportlab.com) Developer
Reportlab Europe Ltd (http://www.reportlab.com)
We've released ZODB4 alpha 1, the first official release of the ZODB
code from the Zope3 project. You can get it at
This release contains essentially the same software that will be in the
upcoming Zope3 milestone release. This version of ZODB is very
different from ZODB3. The Persistent base class is a new-style class,
allowing persistent objects to use many of the features of Python 2.2
There are still many changes planned for future versions of ZODB4, but
the current release is stable enough to call an alpha. The current test
suite passes with Python 2.2.2 and Python 2.3 CVS on both Linux and
Windows (2k). It will be possible to migrate data out of a 4.0a1
database into some future version.
This release contains the top-level persistence, transaction, and zodb
packages, as well as zope.interface and zope.testing. The
implementation depends on zope.interface, but only in fairly limited
way. The zope.testing package is only used by a few unit tests.
The zodb package includes FileStorage, two storages based on BerkeleyDB,
and ZEO, a client-server protocol for ZODB.
Friday, March 21 is the deadline if you want to get the $200
pre-conference price. PyCon will cost $250 at the door, and there is no
PyCon DC 2003
The first PyCon will be held 26-28 March, 2003, at George Washington
University's Cafritz Conference Center in Washington DC. There will be
a development sprint Mon/Tues before the conference.
PyCon is a community-oriented conference targeting developers (both
those using Python and those working on the Python project). It gives
you opportunities to learn about significant advances in the Python
development community, to participate in a programming sprint with
some of the leading minds in the Open Source community, and to meet
fellow developers from around the world. The organizers have worked
hard to ensure that the conference be affordable and accessible to
all. We look forward to seeing you there.
Aahz (aahz(a)pythoncraft.com) <*> http://www.pythoncraft.com/
Register for PyCon now! http://www.python.org/pycon/reg.html
Aahz (aahz(a)pythoncraft.com) <*> http://www.pythoncraft.com/
Register for PyCon now! http://www.python.org/pycon/reg.html
Kodos 1.0.0 has been released and is available at:
Kodos is a regular expression designer, tester, debugger and validator
allows a developer to create and modify regular expressions against a
test string. The intuitive interface allows the developer the ability
to modify the regular expression (regex) and to see the effects
against their test string in real-time.
- Matches can be easily viewed and each match can be seen distinctly
- Regex groups and named groups are clearly displayed
- Sample source code is shown so even python developers new to regular
expressions can quickly add the produced regular expressions to their
- Ability to load and save your test cases
- Kodos relies on PyQt for the GUI elements.
Features new to version 1.0.0:
- Display in the "match tab" now automaticcaly scrolls to the selected
match number (eliminates need to scroll manually to find the match).
- Save File As dialog will now prompt if the selected file already
exists (allowing you to replace the existing file or select another
To read more detailed information, view screenshots and download Kodos
please visit: http://kodos.sourceforge.net