James Gardner: Home > Work > Code

Code

I'm a rather prolific coder. I can't help it. There is something about analysing a problem, exploring its edges and producing a set of tools that best manage that problem that I find totally intoxicating. Unfortunately there is very rarely one best way of managing a problem and I often find that a few small changes in requirements can sometimes lead me to find a totally different solution to the same problem. This is fine for me, I love coding, but it does means you should use my code at your own risk because the probablitly I'll move on to something different fairly quickly is rather large. Anyway, here is a list of some of the code I've written recently:

Currently maintained Python modules:

Archived Projects

Phasing out of my own projects:

Older/More Established Projects

I've been coding for quite a long time so here are some of my older/more established projects, some are very well-known, others I'm probably the only user:

NameStatusSiteDatesDescription
lemon Superceeded by the Python Web Modules http://lemon.sourceforge.net/ 2002-2003 The result of my first serious forray into Python after having done mainly done my web coding with Perl CGI scripts. I decided that I wanted to build a series of web start-ups and that the best way to do that was to first build a set of awesome web tools. I'm not sure that was the correct approach and this first attempt certainly wasn't awesome but some of the later work arguably is.
web, engine, model, snakesql, database, serve, pigeon Unmaintained but still used in some places online http://pythonweb.org 2002-2005 A set of modules collectively know as the Python Web Modules. Started out as a fork and refactoring of lemon aimed at the average Python web developer who didn't fancy using Zope or one of the other frameworks.
Pylons Actively maintained with a large, vocal and happy community

Deploying a Python Package

These are the steps I try to go through when deploying a new version of a package.

  1. Check the version number is correct in all the following places:
    • setup.py
    • doc/source/conf.py
    • doc/source/index.rst (in the title and in the download links)
  2. Make sure the change log is up to date and matches the version you are deploying
  3. Run the doc tests and make sure everything passes
  4. Run ~/env/bin/python setup.py sdist bdist_egg to create the sdist and egg versions
  5. Create an empty virtual Python environment and test that egg you've just created installs correctly: cd dist && python ~/Desktop/Cur/virtualenv.py env && env/bin/easy_install *.tar.gz
  6. Extract the source distribution and ensure the tests can be run: tar zxfv *.tar.gz && cd */test && ../../env/bin/python doc.py
  7. Run make html in the doc directory to build the HTML, copy it to the live site and run due update -TCLDr -s . -S work/code/ to update the templates. Check all the information is correct and as you want it to be
  8. Run ~/env/bin/python setup.py sdist bdist_egg register upload to put it live on PyPi
James Gardner: Home > Work > Code