Re: [python] get all messages of a thread

Subject: Re: [python] get all messages of a thread

Date: Wed, 1 Jun 2011 15:35:35 +1000

To: Patrick Totzke

Cc: notmuch

From: Brian May


On 28 May 2011 23:18, Patrick Totzke <patricktotzke@googlemail.com> wrote:

>    if r: #because we cant iterate on NoneType
>

I don't understand why, but this line sets r._msgs to None. So it crashes,
because it has no message ids to look for.

If you change it to

if r is not None:

... then it works for me.

Oh, I see, for your code, there is a implied call to __len__, and the
__len__ function is completely broken for the reasons described in the
documentation:

      .. note:: As this iterates over the messages, we will not be able to=
               iterate over them again! So this will fail::

                 #THIS FAILS
                 msgs = Database().create_query('').search_message()
                 if len(msgs) > 0:              #this 'exhausts' msgs
                     # next line raises
NotmuchError(STATUS.NOT_INITIALIZED)!!!
                     for msg in msgs: print msg

               Most of the time, using the
               :meth:`Query.count_messages` is therefore more
               appropriate (and much faster). While not guaranteeing
               that it will return the exact same number than len(),
               in my tests it effectively always did so.



-- 
Brian May <brian@microcomaustralia.com.au>

Thread: