bindings/python-cffi: add matched property to message objects

Existing users of the legacy python bindings use
message.get_flags(Message.FLAG.MATCH) to determine which messages in a
thread matched. Since the bindings don't provide get_flags anymore,
they should provide a property analogous to the existing "excluded"
property.
This commit is contained in:
David Bremner 2022-01-01 10:36:43 -04:00
parent e9c55864cd
commit 9cc026f3da
3 changed files with 24 additions and 0 deletions

View file

@ -205,6 +205,20 @@ class Message(base.NotmuchObject):
self._msg_p, capi.lib.NOTMUCH_MESSAGE_FLAG_EXCLUDED) self._msg_p, capi.lib.NOTMUCH_MESSAGE_FLAG_EXCLUDED)
return bool(ret) return bool(ret)
@property
def matched(self):
"""Indicates whether this message was matched by the query.
When a thread is created from a search, some of the
messages may not match the original query. This property
is set to *True* for those that do match.
:raises ObjectDestroyedError: if used after destroyed.
"""
ret = capi.lib.notmuch_message_get_flag(
self._msg_p, capi.lib.NOTMUCH_MESSAGE_FLAG_MATCH)
return bool(ret)
@property @property
def date(self): def date(self):
"""The message date as an integer. """The message date as an integer.

View file

@ -97,6 +97,9 @@ class TestMessage:
def test_ghost_no(self, msg): def test_ghost_no(self, msg):
assert not msg.ghost assert not msg.ghost
def test_matched_no(self,msg):
assert not msg.matched
def test_date(self, msg): def test_date(self, msg):
# XXX Someone seems to treat things as local time instead of # XXX Someone seems to treat things as local time instead of
# UTC or the other way around. # UTC or the other way around.

View file

@ -57,6 +57,13 @@ def test_iter(thread):
def test_matched(thread): def test_matched(thread):
assert thread.matched == 1 assert thread.matched == 1
def test_matched_iter(thread):
count = 0
msgs = list(iter(thread))
for msg in msgs:
if msg.matched:
count += 1
assert count == thread.matched
def test_authors_type(thread): def test_authors_type(thread):
assert isinstance(thread.authors, notmuch2.BinString) assert isinstance(thread.authors, notmuch2.BinString)