Kurt McKee

lessons learned in production

Hey there! This article was written in 2010.

It might not have aged well for any number of reasons, so keep that in mind when reading (or clicking outgoing links!).

listparser v0.13 - "Revelations"

Posted 1 February 2010 in listparser

I'm pleased to announce the release of listparser v0.13! This is an important bugfix release, and I recommend everyone upgrade immediately.

Bug fixes

The last release of listparser contained an infinite loop bug in the Injector code. Large documents that contained undeclared character references would trigger the bug, which occurred because the cache never got cleared, and each call to read() would return the same cached content over and over and over. This is fixed, and indeed the Injector code has been significantly simplified.

Additionally, I fixed a long-standing intermittent bug in the unit tests. Back when I released version 0.10, I mentioned that I was occasionally seeing a test fail; after a little sleuthing I discovered that the unit tests were sometimes starting to run before the server thread was ready to accept localhost URL requests. This bug is now fixed.

Unit testing

I've overhauled and modularized the unit testing code; most significantly, very few of the test files are retrieved from the server thread anymore, which has noticeably sped up the test suite. Additionally, a number of tests now call the function they're meant to test (such as _mkfile() and _rfc822()), rather than pushing everything through parse(). Finally, more tests were added, bringing the code coverage very close to 100% again.

Get it!

With all of these changes, I think that this may be the most stable listparser release ever. You can download listparser from PyPI and copy listparser.py into your project, or you can install it easily using easy_install:

$ easy_install listparser

Have fun!

listparser is a Python library that parses subscription lists (also called reading lists) and returns all of the feeds, subscription lists, and "opportunity" URLs that it finds. It supports OPML, RDF+FOAF, and the iGoogle exported settings format.

[
homepage |
download |
repository |
documentation |
bugs ]