It's be great to talk with Jonathan-- feel free to connect us. Thanks.


The bug I mentioned manifested itself like this:


Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 190, in _run
    fail_classes=self.retry_fail_classes)
  File "/vagrant/inbox/util/concurrency.py", line 120, in retry_and_report_killed
    **reset_params)()
  File "/vagrant/inbox/util/concurrency.py", line 73, in wrapped
    return func(*args, **kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 217, in _run_impl
    self.state = self.state_handlers[old_state]()
  File "/vagrant/inbox/util/concurrency.py", line 73, in wrapped
    return func(*args, **kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 270, in initial_sync
    self.initial_sync_impl(crispin_client)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 293, in initial_sync_impl
    remote_uids = crispin_client.all_uids()
  File "/vagrant/inbox/crispin.py", line 489, in all_uids
    fetch_result = self.conn.search(['ALL', 'UID'])
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 588, in search
    return self._search(normalise_search_criteria(criteria), charset)
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 621, in _search
    for item in parse_response(data):
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_parser.py", line 46, in parse_response
    return tuple(gen_parsed_response(data))
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_parser.py", line 56, in gen_parsed_response
    for token in src:
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_lexer.py", line 118, in __iter__
    for tok in self.read_token_stream(iter(source)):
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_lexer.py", line 149, in __iter__
    return PushableIterator(six.iterbytes(self.src_text))
  File "/usr/local/lib/python2.7/dist-packages/imapclient/six.py", line 597, in iterbytes
    return (ord(byte) for byte in buf)
TypeError: 'NoneType' object is not iterable
<FolderSyncEngine at 0x5e4e550> failed with TypeError


But turns out Tom fixed it here.  I don't think it's yet on PyPI.