Wed, 16 May 2012
IMAPClient 0.9 released
I'm pleased to announce version 0.9 of IMAPClient, the easy-to-use and Pythonic IMAP client library.
Highlights for this release:
- Support for Gmail's label API. Thanks to Brian Neal for the patches for this.
- Significant cleanup and refactoring in preparation for Python 3 compatibility.
- The "livetest" module can now be safely used against IMAP accounts with real data. Previously it could only be used with dummy accounts due to the destructive nature of the tests.
- Fixed handling of IMAP servers that return all-digit folder name without quotes. Thanks to Rhett Garber for the bug report.
- Much improved test coverage (again, in preparation for Python 3 support)
- Fixed rename live test so that it uses folder namespaces
- Parse STATUS responses robustly - fixes folder_status() with MS Exchange.
- Numerous livetest fixes to work around oddities with the MS Exchange IMAP implementation.
The NEWS file and manual have more details on all of the above.
As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site.
The main focus of the next release (0.10) will be Python 3 support as this is easily the most requested feature. Watch this space for more news on this.
posted at: 16:02 | permalink | comments
Sat, 07 Apr 2012
Introducing elemental
The first release of my first Elisp project is out. The project is called "elemental" and the intro from the README goes:
elemental is a set of Emacs Lisp functions for intelligently jumping between and transposing list/tuple/dictionary/function-parameter elements. These functions are primarily useful when editing software source code.
It's probably easier to get an understanding what it does by demonstration so I've uploaded a quick screencast to Youtube.
The project is hosted on Bitbucket: https://bitbucket.org/mjs0/elemental
Feedback and patches welcome!
posted at: 23:04 | permalink | comments
Wed, 11 Jan 2012
IMAPClient 0.8.1 released
Version 0.8.1 of IMAPClient has just been released. This version works around a subtle bug in distutils which was preventing installation on Windows from working. Thanks to Bob Yexley for the bug report.
This release also contains a few small documentation updates and packaging fixes. The NEWS file has more details.
As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site.
posted at: 23:20 | permalink | comments
Wed, 09 Nov 2011
IMAPClient 0.8 released
Version 0.8 of IMAPClient is out! Although I didn't get everything into this release that I had hoped to, there's still plenty there. Thanks to Johannes Heckel and Andrew Scheller for their contributions to this release.
Highlights for 0.8:
- OAUTH authentication support
- IDLE support (example)
- Full NOOP support
- Comprehensive Sphinx based docs. A HTML version of the docs is included in the source distribution. They are also hosted online at http://imapclient.readthedocs.org/
- Folder rename support
- New "debug" property to simplify protocol debugging
- Live test and interactive shell features are now part of the imapclient Python package and can be called from the command-line. (For example: python -m imapclient.interact ...)
- New normalise_times attribute allows caller to select whether datetimes returned by fetch() are native or not
- interactive shell now works with both IPython 0.10 and 0.11 (and later)
- BODY/BODYSTRUCTURE parsing fixes
- Programmer friendly version information now available (imapclient.version_info)
The NEWS file and main documentation has more details on all of the above.
As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site.
posted at: 22:10 | permalink | comments
Sat, 12 Mar 2011
Fibonacci Quilt
A quilt incorporating the starting numbers of the Fibonacci sequence. Designed by me, expertly crafted by Susanna and adorably used by Amelia.
posted at: 21:32 | permalink | comments
Fri, 18 Feb 2011
Domain renewal scam
My domain is up for renewal soon and I recently received a very official looking letter from a company called Domain Renewal Group. On the surface it looks like a renewal notice from my registrar but if you read more closely mention that the letter "isn't an invoice" and that if you return the form and pay them you'd be transferring the domain from your current registrar to them. Never mind that the price they're asking is almost 5 times higher than what my actual register wants for an annual renewal.
I bet this catches plenty of people out - that's what their business model depends on. Bottom feeding scum.
Plenty of others have blogged about these guys as well, but I thought I'd add my voice. As more people learn about these kinds of scams they become less effective.
posted at: 09:31 | permalink | comments
Wed, 09 Feb 2011
IMAPClient 0.7 released
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.
- livetest.py 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 FastMail.fm 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.
posted at: 15:15 | permalink | comments
Fri, 17 Sep 2010
IMAPClient 0.6.2 is out
This release fixes some parsing issues when dealing with FETCH items that include square brackets (eg. "BODY[HEADER.FIELDS (From Subject)]") and includes the example when the package is installed using PyPI.
Also, IMAPClient now uses the excellent Distribute instead of setuptools.
As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site.
In the pipeline now is better (Sphinx based) documentation, cleaning up the tests, OAUTH support and Python 3 support.
posted at: 13:31 | permalink | comments
Thu, 02 Sep 2010
IMAPClient 0.6.1 released
I've just released IMAPClient 0.6.1.
The only functional change in the release is that it now automatically patches imaplib's IMAP4_SSL class to fix Python Issue 5949. This is a bug that's been fixed in later Python 2.6 versions and 2.7 but still exists in Python versions that are in common use. Without fix this you may experience hangs when using SSL.
The patch is only applied if the running Python version is known to be one of the affected versions. It is applied when IMAPClient is imported.
The only other change in this release is that I've now marked IMAPClient as "production ready" on PyPI and have updated the README to match. This was prompted by a request to clarify the current status of the project and seeing that all current functionality is solid and, I don't plan to change the existing APIs in backwards-incompatible ways, I've decided to indicate the project as suitable for production use.
As always, IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site. Feedback, bug reports and patches are most welcome.
posted at: 22:56 | permalink | comments
Tue, 11 May 2010
IMAPClient 0.6 released
IMAPClient 0.6 is finally out! Highlights:
- Completely new response parsing code. Complex response items like BODYSTRUCTURE and ENVELOPE are now handled properly and interaction with the Gmail and MS Exchange IMAP implementations works correctly.
- Support for the COPY command
- Support for the XLIST extension (used by Gmail)
- select_folder() now returns a parsed response containing all reported details about the selected folder.
- the return value from list_folders(), list_sub_folders() and xlist_folders() now include the IMAP folder flags and folder delimiter.
- Handling of internationalised folder names has been cleaned up. Folder names now are always returned as unicode strings.
- Many bug fixes.
Be aware that there have been several API changes with this release. See the NEWS file for further details.
IMAPClient can be installed from PyPI (pip install imapclient) or downloaded from the IMAPClient site. As always, feedback, bug reports and patches are most welcome.
Special thanks goes to Mark Hammond. He has contributed a significant amount of code and effort to this release. Incidentally, Mark is using IMAPClient as part of the backend for the Raindrop Mozilla Labs project.
posted at: 13:45 | permalink | comments