diff options
| author | Floris Bruynooghe <flub@devork.be> | 2019-11-17 17:41:35 +0100 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2019-12-03 08:12:30 -0400 |
| commit | e2df30f7a98f91543d0b3561dbb366eb4b3d812c (patch) | |
| tree | 7b1bb0c60d8723e9e58158b151afbb5d0989c56f /bindings/python-cffi/notdb/_thread.py | |
| parent | a950aa28449feef76246ad2b64224fd72e2e574c (diff) | |
Rename package to notmuch2
This is based on a previous discussion on the list where this was more
or less seen as the least-bad option.
Diffstat (limited to 'bindings/python-cffi/notdb/_thread.py')
| -rw-r--r-- | bindings/python-cffi/notdb/_thread.py | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/bindings/python-cffi/notdb/_thread.py b/bindings/python-cffi/notdb/_thread.py deleted file mode 100644 index e1ef6b07..00000000 --- a/bindings/python-cffi/notdb/_thread.py +++ /dev/null @@ -1,190 +0,0 @@ -import collections.abc -import weakref - -from notdb import _base as base -from notdb import _capi as capi -from notdb import _errors as errors -from notdb import _message as message -from notdb import _tags as tags - - -__all__ = ['Thread'] - - -class Thread(base.NotmuchObject, collections.abc.Iterable): - _thread_p = base.MemoryPointer() - - def __init__(self, parent, thread_p, *, db): - self._parent = parent - self._thread_p = thread_p - self._db = db - - @property - def alive(self): - if not self._parent.alive: - return False - try: - self._thread_p - except errors.ObjectDestroyedError: - return False - else: - return True - - def __del__(self): - self._destroy() - - def _destroy(self): - if self.alive: - capi.lib.notmuch_thread_destroy(self._thread_p) - self._thread_p = None - - @property - def threadid(self): - """The thread ID as a :class:`BinString`. - - :raises ObjectDestroyedError: if used after destoryed. - """ - ret = capi.lib.notmuch_thread_get_thread_id(self._thread_p) - return base.BinString.from_cffi(ret) - - def __len__(self): - """Return the number of messages in the thread. - - :raises ObjectDestroyedError: if used after destoryed. - """ - return capi.lib.notmuch_thread_get_total_messages(self._thread_p) - - def toplevel(self): - """Return an iterator of the toplevel messages. - - :returns: An iterator yielding :class:`Message` instances. - - :raises ObjectDestroyedError: if used after destoryed. - """ - msgs_p = capi.lib.notmuch_thread_get_toplevel_messages(self._thread_p) - return message.MessageIter(self, msgs_p, db=self._db) - - def __iter__(self): - """Return an iterator over all the messages in the thread. - - :returns: An iterator yielding :class:`Message` instances. - - :raises ObjectDestroyedError: if used after destoryed. - """ - msgs_p = capi.lib.notmuch_thread_get_messages(self._thread_p) - return message.MessageIter(self, msgs_p, db=self._db) - - @property - def matched(self): - """The number of messages in this thread which matched the query. - - Of the messages in the thread this gives the count of messages - which did directly match the search query which this thread - originates from. - - :raises ObjectDestroyedError: if used after destoryed. - """ - return capi.lib.notmuch_thread_get_matched_messages(self._thread_p) - - @property - def authors(self): - """A comma-separated string of all authors in the thread. - - Authors of messages which matched the query the thread was - retrieved from will be at the head of the string, ordered by - date of their messages. Following this will be the authors of - the other messages in the thread, also ordered by date of - their messages. Both groups of authors are separated by the - ``|`` character. - - :returns: The stringified list of authors. - :rtype: BinString - - :raises ObjectDestroyedError: if used after destoryed. - """ - ret = capi.lib.notmuch_thread_get_authors(self._thread_p) - return base.BinString.from_cffi(ret) - - @property - def subject(self): - """The subject of the thread, taken from the first message. - - The thread's subject is taken to be the subject of the first - message according to query sort order. - - :returns: The thread's subject. - :rtype: BinString - - :raises ObjectDestroyedError: if used after destoryed. - """ - ret = capi.lib.notmuch_thread_get_subject(self._thread_p) - return base.BinString.from_cffi(ret) - - @property - def first(self): - """Return the date of the oldest message in the thread. - - The time the first message was sent as an integer number of - seconds since the *epoch*, 1 Jan 1970. - - :raises ObjectDestroyedError: if used after destoryed. - """ - return capi.lib.notmuch_thread_get_oldest_date(self._thread_p) - - @property - def last(self): - """Return the date of the newest message in the thread. - - The time the last message was sent as an integer number of - seconds since the *epoch*, 1 Jan 1970. - - :raises ObjectDestroyedError: if used after destoryed. - """ - return capi.lib.notmuch_thread_get_newest_date(self._thread_p) - - @property - def tags(self): - """Return an immutable set with all tags used in this thread. - - This returns an immutable set-like object implementing the - collections.abc.Set Abstract Base Class. Due to the - underlying libnotmuch implementation some operations have - different performance characteristics then plain set objects. - Mainly any lookup operation is O(n) rather then O(1). - - Normal usage treats tags as UTF-8 encoded unicode strings so - they are exposed to Python as normal unicode string objects. - If you need to handle tags stored in libnotmuch which are not - valid unicode do check the :class:`ImmutableTagSet` docs for - how to handle this. - - :rtype: ImmutableTagSet - - :raises ObjectDestroyedError: if used after destoryed. - """ - try: - ref = self._cached_tagset - except AttributeError: - tagset = None - else: - tagset = ref() - if tagset is None: - tagset = tags.ImmutableTagSet( - self, '_thread_p', capi.lib.notmuch_thread_get_tags) - self._cached_tagset = weakref.ref(tagset) - return tagset - - -class ThreadIter(base.NotmuchIter): - - def __init__(self, parent, threads_p, *, db): - self._db = db - super().__init__(parent, threads_p, - fn_destroy=capi.lib.notmuch_threads_destroy, - fn_valid=capi.lib.notmuch_threads_valid, - fn_get=capi.lib.notmuch_threads_get, - fn_next=capi.lib.notmuch_threads_move_to_next) - - def __next__(self): - thread_p = super().__next__() - return Thread(self, thread_p, db=self._db) |
