Kurt McKee

lessons learned in production

Articles tagged with listparser

listparser 0.18 | 24 April 2015

I'm pleased to announce the release of listparser 0.18!

This release simply replaces the regular expression-based RFC 822 date parser with procedural code. The package is available on PyPI.

listparser is a Python module that parses subscription lists (also called reading lists) and returns all of the feeds and …

Date parsing | 17 December 2012

I have lost patience with the RFC 822 date parsing in both feedparser and listparser. Back in 2009 when I started writing listparser I decided to use regular expressions to turn RFC 822 date strings into Python datetime objects. Earlier this year when I discovered that feedparser's RFC 822 parser …

listparser 0.17 - "Territory expansion" | 16 December 2012

I'm pleased to announce that listparser 0.17 is available for immediate download! This release features support for Python 2.4 through 3.3, Jython 2.5.2 and 2.5.3, as well as PyPy 1.8.0. The codebase runs on all of these with no modification, and …

listparser now has a unified codebase | 19 April 2012

listparser now supports both Python 2 and Python 3 with a single codebase. I'd wondered how difficult it would be, and it turns out: not very! I'm delighted with the results, particularly because I can now generate coverage reports that take into account every interpreter that listparser runs on (including …

listparser 0.16 - "Refresh" | 17 December 2011

I'm pleased to announce that a new version of listparser has been released!

The big change this release is that users can now more easily install listparser in Python 3 environments, thanks to an updated setup.py file. This is made possible by running listparser through the 2to3 tool automatically …

listparser v0.15 - "A special day" | 15 November 2010

I am absolutely thrilled to announce the latest version of listparser. The big news is that it now supports IronPython, which means that listparser runs on three different Python interpreters (CPython, Jython, and now IronPython)!

There's a complication with IronPython, however; it doesn't ship with any XML parsers, which means …

LiveJournal FOAF file support | 19 September 2010

I'm really pleased to announce that, after reporting a LiveJournal bug over a year ago, the one-word patch - strangely attributed to another user - will soon be running live on the site! In celebration, I've started patching listparser to support LiveJournal FOAF files. My hope is that feed readers using listparser …

listparser v0.13 - "Revelations" | 1 February 2010

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 …

Fixing listparser's unit tests | 18 January 2010

For the past six months I've been actively working to make listparser the single best subscription list parser available, and I've had a blast working toward that goal. I've spent most of my time improving the library, but my unit test code has begun to resemble a shanty town; the …

listparser v0.12 - "Safety net" | 3 January 2010

I'm pleased to announce that listparser v0.12 is now available for download!

In this release I ironed out several crasher bugs on Jython 2.5.1 and Python 3.0. I additionally realized that there was a bug in the HTTP User-Agent code and fixed that (developers weren't able …

listparser v0.11 - "Floodgates" | 25 December 2009

I'm proud to announce the release of listparser v0.11!

I've made two simple changes. First, listparser now runs on Jython 2.5.1. Second, parse() accepts local filenames. Up until now it's been necessary to use a URL notation like file:///home/smith/opml.xml, but no more! I'm …

listparser v0.10 - "Internet-ready" | 12 December 2009

It's been over two months since the last listparser release, but believe me: the wait has been worth it!

Python 3 support

listparser is now 100% Python 3 compatible! I can prove it, too: it passes all of the 159 unit tests! This is in addition to the existing support …

listparser 0.9 - "Celery wolves" | 3 October 2009

I'm very pleased to announce that listparser v0.9 is now available! There are some big changes in this release.

RDF+FOAF

listparser now supports RDF+FOAF, an XML-based subscription list format that the vast majority of Planet-based websites produce. If you like reading what the Pidgin developers are up …

Replacing magical code | 20 September 2009

listparser has had some magical code in it for a while, and today I removed the two most obvious magics.

If you've ever looked at the code and have seen the expect-related code, you've probably said "wat". Yes, the code was absurd, but it's now gone. If you don't …

listparser v0.8 - "Three day weekend" | 4 September 2009

This past week has been really exciting for a number of reasons, but not least of which is the work that's gone in listparser. Almost immediately after releasing the last version I started working on the next big thing: listparser now supports the iGoogle exported settings format!

For everyone who's …

listparser v0.7 - "The Codex" | 28 August 2009

It's that time again! I just uploaded the latest version of listparser, and this one's an important milestone: listparser now has documentation!

There's really not a whole lot else to be said about this release, but I can safely project that the next release is going to come hot on …

Writing documentation | 10 August 2009

I know that one of the most challenging things about writing software is writing documentation. Usually this is chalked up to "programmers prefer to program" and "writing documentation isn't glamorous" and so forth, but as I rely on high-quality documentation, I want to provide others with the same.

To that …

listparser v0.5 - "Going green" | 1 August 2009

listparser v0.5 is now available. I spent time improving its HTTP support, so now it supports HTTP ETag and Last-Modified headers, HTTP redirects, and it sends a configurable User-Agent header. Additionally, you can now parse strings and file-like objects, which means that if you already have the OPML file …

listparser v0.4 - "07/18,29" | 18 July 2009

I just released listparser v0.4. It now supports categories and tags, and in two ways:

  1. The category attribute of the <outline> element.
  2. Nested <outline> elements.

While the OPML specification uses the category attribute, I also wanted to support nested <outline> elements because that's how Google Reader indicates what tags …

listparser v0.3 - "...and Recursion for all." | 3 July 2009

listparser v0.3 is now available on github (watch for the announcement on Freshmeat), and it is of course the best version yet! There's now support for OPML inclusions, using either link or include. What this means for you is that it's now possible to import a subscription list that …

Claims in subscription lists | 1 July 2009

The OPML specification (version 2) allows for the subscription list to contain information that's actually duplicated from the feed it's linking to. The information is contained in attributes called htmlUrl, description, and title. Since that information is available in the feed itself, and because the information in the subscription list …

listparser v0.2 - "Leveling up" | 26 June 2009

I just pushed listparser v0.2 to github and will shortly submit a release announcement to Freshmeat. Changes since v0.1:

  • RFC 822 date and time support added (+39 tests)
  • Added more thorough OPML version attribute detection (+5 tests)
  • dateModified and dateCreated OPML tags supported (+4 tests)
  • Added test cases …
Normalizing years | 22 June 2009

I've been implementing the RFC 822 date and time specification in listparser in order to support the dateCreated and dateModified tags, and while doing so I've found a fun problem to mull over.

RFC 822, in classic shortsighted fashion, calls for years to be represented using only two digits. OPML …

Subscribing to a subscription list... | 20 June 2009

I just realized that github is hosting a listparser project subscription list now that I've created a project.opml file in the git repository. Assuming you have a feed reader that can handle OPML subscriptions, you can now follow the project development by adding the following URL:

http://github.com …

listparser 0.1 - "Achievement unlocked" | 19 June 2009

I just pushed listparser 0.1 out to github and submitted a release announcement to Freshmeat. Although the Freshmeat admins need to manually verify the release announcement before publishing it, github makes it really easy to release because it understands git tags and can generate zip files and tarballs using …

listparser on Freshmeat | 10 June 2009

I've created an entry for listparser on Freshmeat. This means greater exposure, particularly since Freshmeat's project release announcements are aggregated to Slashdot. Next up: crafting the first listparser release...

Announcing listparser | 8 June 2009

listparser is now off the ground. It sports seven unit tests and somewhere between a "poverty" and a "paucity" of documentation. I'm not giving it a release number or a silly release phrase yet, but be on the lookout for that in the near future.

Since listparser depends on BeautifulSoup …

listparser.py | 4 June 2009

I'm really pleased to say that this morning I finished implementing basic unit testing for my subscription list parser, listparser.py. Its purpose is currently to tear through OPML files - such as those generated when exporting your subscription list from Google Reader - and find all of the feeds it can …