I have written a decorator module to make easier to write good
(i.e. decorators preserving the signature of the functions they
The documentations contains a (hopefully) nice collections of use cases
(which are also test cases, sice I take doctest very seriously ;).
You can find it here:
It is released under the Python licence.
Let me know if you are using it and if you would like further
Feeback is welcome!
The Southern California Python Interest Group (aka SoCal Piggies) will
meet tomorrow 05/17 at USC from 7 PM to 9 PM. If you are interested,
please check the group's Wiki for more details:
I would like to announce the release of Rekall/WEB. Through the power of
Python, you can now turn your Rekall desktop application into a web based
application, with any loss of functionality and with a comparable look 'n
feel. You can now design on the desktop and deploy on the web. There is no
long an need to go through endless cycles of editing, uploading, and
testing. You can even design your database tables, develope and test complex
quiries, develope your back-end business logic, etc all within one powerful
easy to use desktop application - Rekall. Take a look at
www.rekallrevealed.org for a very simple example of a Rekall/WEB powered web
site. More information on Rekall/WEB is available at both
www.rekallrevealed.org and www.totalrekall.co.uk
NOTE: we are no longer meeting at Stanford; the May meeting is at
Google in Mountain View.
The next meeting of BayPIGgies will be Thurs, May 19 at 7:30pm.
NOTE: to celebrate our first meeting at Google, Google will be providing
a buffet dinner starting at 6:45pm.
Alex Martelli will be repeating his OSCON/PyCon presentations about OOP
and design patterns -- with improvements!
BayPIGgies meetings alternate between IronPort (San Bruno, California)
and Google (Mountain View, California). For more information and
directions, see http://www.baypiggies.net/
Advance notice: The June 9 meeting agenda has been set. Drew Perttula
will be talking about his Python-based lighting system controller.
Advance notice: The July 14 meeting agenda has not been set. Please send
e-mail to baypiggies(a)baypiggies.net if you want to suggest an agenda (or
volunteer to give a presentation).
Aahz (aahz(a)pythoncraft.com) <*> http://www.pythoncraft.com/
"And if that makes me an elitist...I couldn't be happier." --JMS
A classic dilemma for conferences is that if you have many tracks,
you may find that all of a sudden, a room is swamped, and there is
a queue of people wanting to get in. Another problem is that you
risk scheduling talks against each other that have a very large
set of interested people in common.
At Europython we are this year going to try a new way of scheduling,
in order to reduce these problems. Before the schedule is made, we
will give all attendees the opportunity to register what talks they
are most interested in. We then want to make a schedule that is
optimised based on these data.
Since I am no expert in optimising algorithms of this type, and since
the time I have available for these things is limited, I'm turning to
the readers of c.l.p and python-logic for help.
I'm offering the following bounty for a working solution (in Python):
- Free attendance at this years Europython, as a guest of honour
- A Europython T-shirt in a limited special edition
- Fame and gratitude from conference attendees who get better scheduling
The winner of the bounty is the person who scores most points, according
to the criteria below. If we get more than one solution that does good
optimisation, we will award more than one bounty.
Here are the parameters:
1. There are 10 tracks with between 1 and 30 talks in each track.
You may not schedule two talks in the same track against each other,
unless there is more talks than available calendar time.
2. A track should be continuous. Each track that is continuous gives you
3. We expect about 300 attendees. About half of them are expected to
register their interests. Interests may range from a single talk
to more than half of all the talks. You get one point for each
talk an attendee can attend out of the ones the attendee has registered
4. Talks are of varying lengths. Lengths can be 30, 45, 60 and 90 minutes.
The large majority of talks are 30 minutes. Only a very few are 45
5. Rooms come in different sizes
Room A has 180 seats
Room B has 140 seats
Room C has 140 seats
Room D has 70 seats
Room E has 70 seats
Room A-D should be scheduled throughout the conference while room E
is extra expansion space, only to be used when absolutely necessary.
For every person scheduled above (Room capacity * (Number of responding
attendees / Total number of attendees)) you get one point taken off
6. There are a total of 10 90-minute time blocks.
Day 1: 09:00
Day 1: 11:00
Day 1: 14:00
Day 1: 16:00
Day 2: 09:00
Day 2: 11:00
Day 2: 14:00
Day 2: 16:00
Day 3: 09:00
Day 3: 11:00
A track should not change room in the middle of a time block. Doing
so reduces your score by 50 points.
7. Input data
You get your input data in the form of a list of tuples; one tuple
Each tuple looks like this:
(<talk id>, <talk length>, <track id>, [list of interested attendees])
Talk length is an integer, all other items are strings.
8. Output data
You should supply your output data in the form of a list of tuples; one
tuple per talk.
Each tuple should look like this:
(<talk id>, <room>, <day>, <starting time>)
Talk id should be the same as in the input. Room should be a one letter
string with a value in the range A-E. Day should be a one letter string
in the range 1-3. Starting time should be a string on the form HH:MM,
in the 24 hour clock.
Solutions should be sent by email to europython(a)python.org no later than
1 June 2005. Currently we haven't started gathering real data, but there should be some available for real world testing before 1 June.
X2Y is a flexible, configurable and extendable server-based document
processing framework written in python.
It has the following feaures:
- Cross platform
- Fully documented
- Run as either a cron job, scheduled task or by hand
- Fully configurable logging and notification
- Fully configurable processing chains, including multiple seperate
processing chains on a single server
- Scriptable conversion plugins, inputs and outputs
- Processors can be written in ANY language
- Input from local file system, http get or imap folder supplied as
- Output to local file system, http post or mail message supplied as
- Supplied processors for EasyPDF and OpenOffice for document conversion
Potential applications include server-side document conversion, virus
We are particularly interested in hearing from anyone who develops new
inputs, outputs and processors!
For more information, please see:
Simplistix - Content Management, Zope & Python Consulting
The first publicly-released version of the xlrd (Excel read) package is now available for
* PyPI (Windows installer only; unresolved problem with uploading source-distribution
Purpose: Provide a library for developers to extract data from Microsoft Excel (tm)
spreadsheet files. It is not an end-user tool.
Platform: Any. You dont need to be on Windows. If you are, you can avoid hassles with
approaches like COM, ODBC, save-as-CSV, etc
Python requirements: Works with Python 2.2 or later. There are no dependencies on
modules or packages outside the standard Python distribution.
Versions of Excel supported: 2004, 2002, XP, 2000, 97, 95, 5.0, 4.0, 3.0.
* Strong support for handling dates, and documentation of Excel date problems and how
to avoid them.
* Unicode aware; correctly handles "compressed" Unicode in modern files; decodes
legacy charsets in older files (if Python has the codec).
* Extracts all data (including Booleans and error-values)
Exclusions: xlrd will not attempt to decode password-protected (encrypted) files.
Otherwise, it will safely and reliably ignore any of these if present:
* Anything to do with the on-screen presentation of the data (fonts, panes, column
widths, row heights, ...)
* Charts, Macros, Pictures, any other embedded object. WARNING: currently this
includes embedded worksheets.
* Visual Basic (VBA) modules
* Formulas (results of formula calculations are extracted, of course)
* Comments and hyperlinks
WANTED: *ALPHA* testers with:
* bigendian platforms, and/or
* Excel 95 (or earlier) files created in non-Latin1 locales
Feedback: mailto: sjmachin(a)lexicon.net preferably with [xlrd] in the message subject.
------- End of forwarded message -------
I'm pleased to announce the release of my program
mma - Musical MIDI Accompaniment
version: Beta 0.14
MMA is a accompaniment generator -- it creates midi tracks
for a soloist to perform with. User supplied files contain
pattern selections, chords, and MMA directives.
MMA is very versatile and generates excellent tracks. It comes
with an extensive user-extendable library with a variety of
patterns for various popular rhythms, an extensive user manual,
and many demo songs.
MMA is a command line driven program. It creates MIDI files
which need a sequencer or MIDI file play program.
MMA is written in Python. You'll need Python 2.3 (or later)
for MMA to function.
MMA is supplied in 4 tar.gz archives. Included:
mma-bin -- the main script and library files.
mma-html -- documentation in HTML format.
mma-pdf -- documentation in PDF format.
mma-songs -- a collection of about 230 songs in MMA format.
If you get all four download packages the total size is still
less than 1.5 megabytes.
MMA is currently in final BETAs. We are hoping for a 1.0 release
in summer 2005. Right now we need help in debugging the program,
creating songs for distribution, and new and improved
Best of all, MMA is free. It is released under the terms of the GNU
General Public License. It has been developed on a Linux platform,
but should be usable on just about any system. A detailed page now
exists on our web site on how-to install on a Windows system.
MMA is available on my personal home page:
If you have any questions or comments, please send them
Beta 0.14: A number of bug fixes, many more system macros,
ALLTRACKS command added, major fixes to chord generation.
Bob van der Poel ** Wynndel, British Columbia, CANADA **