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:

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.

Tags: ,
posted at: 21:32 | permalink | comments

Fri, 18 Feb 2011

Domain renewal scam

Domain Renewal Group letter

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.

Tags:
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:

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:

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

Mon, 10 May 2010

Thunderbird 3 attachment reminder

I've been using Thunderbird 3 for a while now and one of the features that I really like is the attachment reminder. It works by looking for specific keywords you've typed in in the body text.

TB3 attachment reminder goodness

So far I've found that "attached", "attachment" and "CV" all trigger the reminder. It's been well thought out in that it is visually obvious but doesn't get in the way and doesn't steal focus.

Thanks Thunderbird developers. I'm sure this will save me more than once.

posted at: 11:17 | permalink | comments

Sat, 30 Jan 2010

TypeError: object.__init__() takes no parameters

At my employer we are in the process of migrating from Python 2.4 to 2.6. When running some existing code under Python 2.6 we started getting DeprecationWarnings about "object.__new__() takes no parameters" and "object.__init__() takes no parameters".

A simple example that triggers the warning:

class MyClass(object):

    def __new__(cls, a, b):
        print 'MyClass.__new__', a, b
        return super(MyClass, cls).__new__(cls, a, b)

    def __init__(self, a, b):
        print 'MyClass.__init__', a, b
        super(MyClass, self).__init__(a, b)

obj = MyClass(6, 7)

This gives:

$ python2.4 simple-warning.py
MyClass.__new__ 6 7
MyClass.__init__ 6 7

$ python2.6 simple-warning.py
MyClass.__new__ 6 7
simple-warning.py:5: DeprecationWarning: object.__new__() takes no parameters
  return super(MyClass, cls).__new__(cls, a, b)
MyClass.__init__ 6 7
simple-warning.py:9: DeprecationWarning: object.__init__() takes no parameters
  super(MyClass, self).__init__(a, b)

It turns out that a change to Python for 2.6 (and 3) means that object.__new__ and object.__init__ no longer take arguments - a TypeError is raised when arguments are passed. To avoid breaking too much pre-existing code, there is a special case that will cause a DeprecationWarning instead of TypeError if both __init__ and __new__ are overridden. This is the case we were running into with our code at work.

The reason for this change seems to make enough sense: object doesn't do anything with arguments to __init__ and __new__ so it shouldn't accept them. Raising an error when arguments are passed highlights code where the code might be doing the wrong thing.

Unfortunately this change also breaks Python's multiple inheritance in a fairly serious way when cooperative super calls are used. Looking at the ticket for this change, this issue was thought about but perhaps the implications were not fully understood. Given that using super with multiple inheritance is common and "correct" practice, it would seem that this change to Python is a step backwards.

Read more...

Tags:
posted at: 19:07 | permalink | comments