PyTPMOTW: First Post!

Doug Hellmann’s excellent PyMOTW series started 3 years ago yesterday, and I’ve loved every minute of it. His sheer commitment and dedication to his craft is to be commended; it’s not easy to find the discipline to sit down every single week and commit the time and research to carve bits in such a way that people who come across them leave with a greater understanding of, and a higher level of confidence with the topic at hand. Thanks, Doug!

Doug’s work has inspired me to take on a sort of sister series called Python Third Party Module of the Week. While there’s probably no way I could possibly cover every single third party module, I’ll try to cover them in enough variety and depth to make things interesting. Here’s a sampling of the modules on the “short list” for the series, but feel free to make suggestions of your own in the comments!

So, there’s 10 third party modules to start with. I might change it up, but these are off the top of my head. I’ve used all of them, most of them for production code. I do most of my work in the system/network space, and entirely in a *nix environment. I’m happy to take suggestions for whatever everyone is interested in, though. I can and do code for the web pretty regularly too; I’ve written a module myself for Django, and I’m helping to create an app template (later, hopefully, a framework) to aid rapid development with Tornado, so don’t be fooled by the rugged “systems”-related modules – I want your suggestions about anything.

There are also things I’d love to do more with, like PyGame, Pyro, and wxPython, but these strike me as frameworks more than modules. I’m looking to cover things you import into your app and use, not things that dictate the entire construction of your application like a framework tends to do.

What Do You Want to See?

There’s a vast ocean of third-party modules. If you’re a module author or a fan of a particular module, feel free to suggest it in the comments here or send me mail or a tweet. My Twitter handler is @bkjones, and that’s also my gmail user name 😉

Also, if there’s a particular thing you need to do with Python and aren’t sure which module to use, let me know! I’ll try to figure out the best-of-breed module for the task and write about it here. Win win!

Why Don’t You Write?

No reason to stop here! I had considered doing “Python Technique of the Week”, but chose this instead. It’d be great to see someone cover things like delegation, mixins, generators, context managers, event-driven programming, the observer pattern… whatever, maybe pulling exemplary code from open source projects, or at least providing decent examples — You do it!

It’s also pretty clear from my perusal of PyPI that a “Python Framework of the Week” would actually run quite a long time without running out of things to write about, and would probably be pretty popular. A post I wrote some time ago about ReportLab has been in the top 5 posts on this site since it was posted

If you’re already writing about Python on a regular basis, post a link, and if you’re not already there, submit your blog to the kind folks at Planet Python (Python topic/category feed URLs only please) so we can all keep up with everything. There’s some brilliant content out there that I’ve come across, and it doesn’t all make it to Reddit, Hacker News, or the Planet.

  • Guilherme Freitas


  • Danny Navarro

    I’d be interested in argparse and python-cjson

  • Phil

    On the top of my head, here’s a couple of ones:


  • Doug Hellmann

    Great idea, Brian!

    I’m +1 for BeautifulSoup.

  • David

    One module per week is pretty tough for the more involved 3rd party modules. You might break them up into smaller pieces, or do a “Python Third Party Module As I Get It Done” instead.

  • m0j0

    Don’t think I didn’t consider that. The problem with ‘as I get it done’ is that if you don’t commit to a deadline, the audience has no expectation and forgets about it, and the writer has no expectation to meet and will inevitably find something “more important” to do. The commitment needs to be there. That said, there may be modules where it’s just too much to cover in a week, in which case I’ll break it up over a couple of weeks. I also do mention that I’m trying to stay away from framework-like things and limit myself to relatively simple modules that you import alongside other modules and use as-needed. I don’t really want to cover things like wxPython or TurboGears, which more or less dictate how your entire app is built and come with all sorts of bells and whistles that entire books are written about.

  • Kevin Dahlhausen

    What a great idea, and thanks to you for helping out the python community with this.

    +1 for BeautifulSoup

    Also, Mechanize (or equivalent) would be cool for programmatic access to web sites.

    Tahchee is nice – it creates websites from Cheetah templates.

    Lxml is a great choice. Nice to note that it doesn’t work on Google App Engine (learned that one kinda late!)

  • Matt Doar

    Excellent! My addition is something SOAP related, perhaps suds

  • Dave Coutts

    +1 for seeing examples of BerryMQ being used.

  • srid

    Some modules I use – or intent to use – regularly:

    – cmdln (utility for writing svn-like command line programs)
    – jinja2 (HTML templates)
    – pyttsx (cross-platform text-to-speech)
    – pyro (distributed object middleware)
    – pyparsing (parsing made easy)
    – pygments (code highlighting)
    – modern-package-template (create Python project layout)
    – docutils (reST)
    – appscript (macosx scripting)