IMAPClient 0.7 released

Posted on

The next version of IMAPClient was quietly released on the weekend. I've been pretty busy so I'm just getting to telling the world about it now.

This release is earlier then planned because IMAPClient is featured in the IMAP chapter of Brandon Rhodes' new edition of the book Foundations of Python Network Programming. Brandon had made several bug reports and feature requests while working on the book and some of the examples in the book relied on unreleased changes to IMAPClient. IMAPClient 0.7 works with book's examples.

What this does mean is that IMAPClient 0.7 doesn't have Python 3 support. I have been making headway with this however and with a little luck and a little more time, 0.8 should be Python 3 compatible.

Highlights for 0.7:

  • BODY and BODYSTRUCTURE FETCH response parsing was fixed. Previously, the object returned for multipart messages was difficult to deal with reliably (and not really correct). Existing code that makes BODY/BODYSTRUCTURE FETCH requests with IMAPClient may need to be updated.
  • the live test scripts and the unit tests have been converted to use the excellent unittest2 framework. This makes writing tests easier, improves test failure output and, for the live tests, provides significant improvement over the previous crude test script.
  • now takes an INI file for the IMAP account parameters to test against instead of requiring that they are passed on command line.
  • support for the NAMESPACE command IMAP added
  • fetch() now supports optional modifiers. These are required for extensions such as RFC 4551 (conditional store). Thanks to Thomas Jost for the patch.
  • the live tests now work with the IMAP implementation. Some special casing was required for some tests.

The NEWS document has more details on all the above.

Proper documentation is also on its way. I've been slowly making headway with Sphinx based documentation.

As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site.