Three new things tried in recent days:
- Packaging a Python module
- Using doctest in anger (tweaking doctests in Routes doesn’t really count)
- Publishing a package to PyPi
For #1, I used setuptools, kick-started by Ian Bicking’s excellent presentation (the official docs are good too). Completely painless, and it pretty much covers #3 too. All in all I would say that it was easier than building and publishing a Rubygem.
Re #2, doctest isn’t going to replace regular unit tests for me, but for describing a public API I think it’s excellent. In the case of LinkHeader, exercising the public API doesn’t leave much else – it’s a very simple package. Here’s a small excerpt:
>>> parse('<http://example.com/foo>; rel="foo bar", <http://example.com>; rel=up; type=text/html') LinkHeader([Link('http://example.com/foo', rel='foo bar'), Link('http://example.com', rel='up', type='text/html')])
which demonstrates how to parse a link header into something a client can easily interrogate.
LinkHeader will be used by DescribedRoutes to add discoverability to web apps and by PathTo clients in order to discover and interact with application resources. All of this works in Ruby already of course; my current personal project is to replicate it in Python with support for the Pylons web framework. The Link Header standard is progressing meanwhile, with a new version published only this week.