aboutsummaryrefslogtreecommitdiff
path: root/bindings/python-cffi
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2022-02-15 20:53:12 -0400
committerDavid Bremner <david@tethera.net>2022-02-15 20:54:56 -0400
commitf1b2ab70c39cacb53c0b3c1d49358260a8d1818d (patch)
tree8b06d207475c256081a10ec5eb1fbd7c959610e0 /bindings/python-cffi
parentcf342d7302544532a1f66fd7a1cc42df99fcd228 (diff)
parent7b5921877e748338359a25dae578771f768183af (diff)
Merge tag '0.35' into debian/bullseye-backportsdebian/0.35-1_bpo11+1archive/debian/0.35-1_bpo11+1
notmuch 0.35 release
Diffstat (limited to 'bindings/python-cffi')
-rw-r--r--bindings/python-cffi/notmuch2/_build.py7
-rw-r--r--bindings/python-cffi/notmuch2/_database.py2
-rw-r--r--bindings/python-cffi/notmuch2/_message.py18
-rw-r--r--bindings/python-cffi/setup.py3
-rw-r--r--bindings/python-cffi/tests/test_config.py4
-rw-r--r--bindings/python-cffi/tests/test_database.py4
-rw-r--r--bindings/python-cffi/tests/test_message.py3
-rw-r--r--bindings/python-cffi/tests/test_tags.py15
-rw-r--r--bindings/python-cffi/tests/test_thread.py9
-rw-r--r--bindings/python-cffi/version.txt1
10 files changed, 47 insertions, 19 deletions
diff --git a/bindings/python-cffi/notmuch2/_build.py b/bindings/python-cffi/notmuch2/_build.py
index f6184b97..a55b484f 100644
--- a/bindings/python-cffi/notmuch2/_build.py
+++ b/bindings/python-cffi/notmuch2/_build.py
@@ -1,5 +1,5 @@
import cffi
-
+from _notmuch_config import *
ffibuilder = cffi.FFI()
ffibuilder.set_source(
@@ -16,8 +16,8 @@ ffibuilder.set_source(
#ERROR libnotmuch version < 5.1 not supported
#endif
""",
- include_dirs=['../../lib'],
- library_dirs=['../../lib'],
+ include_dirs=[NOTMUCH_INCLUDE_DIR],
+ library_dirs=[NOTMUCH_LIB_DIR],
libraries=['notmuch'],
)
ffibuilder.cdef(
@@ -54,6 +54,7 @@ ffibuilder.cdef(
NOTMUCH_STATUS_NO_DATABASE,
NOTMUCH_STATUS_DATABASE_EXISTS,
NOTMUCH_STATUS_BAD_QUERY_SYNTAX,
+ NOTMUCH_STATUS_NO_MAIL_ROOT,
NOTMUCH_STATUS_LAST_STATUS
} notmuch_status_t;
typedef enum {
diff --git a/bindings/python-cffi/notmuch2/_database.py b/bindings/python-cffi/notmuch2/_database.py
index 14a8f15c..d7485b4d 100644
--- a/bindings/python-cffi/notmuch2/_database.py
+++ b/bindings/python-cffi/notmuch2/_database.py
@@ -139,7 +139,7 @@ class Database(base.NotmuchObject):
path = os.fsencode(path)
return path
- def __init__(self, path=None, mode=MODE.READ_ONLY, config=CONFIG.EMPTY):
+ def __init__(self, path=None, mode=MODE.READ_ONLY, config=CONFIG.SEARCH):
if isinstance(mode, str):
mode = self.STR_MODE_MAP[mode]
self.mode = mode
diff --git a/bindings/python-cffi/notmuch2/_message.py b/bindings/python-cffi/notmuch2/_message.py
index 2f232076..aa1cb875 100644
--- a/bindings/python-cffi/notmuch2/_message.py
+++ b/bindings/python-cffi/notmuch2/_message.py
@@ -206,6 +206,20 @@ class Message(base.NotmuchObject):
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
def date(self):
"""The message date as an integer.
@@ -357,14 +371,14 @@ class Message(base.NotmuchObject):
This method will only work if the message was created from a
thread. Otherwise it will yield no results.
- :returns: An iterator yielding :class:`Message` instances.
+ :returns: An iterator yielding :class:`OwnedMessage` instances.
:rtype: MessageIter
"""
# The notmuch_messages_valid call accepts NULL and this will
# become an empty iterator, raising StopIteration immediately.
# Hence no return value checking here.
msgs_p = capi.lib.notmuch_message_get_replies(self._msg_p)
- return MessageIter(self, msgs_p, db=self._db)
+ return MessageIter(self, msgs_p, db=self._db, msg_cls=OwnedMessage)
def __hash__(self):
return hash(self.messageid)
diff --git a/bindings/python-cffi/setup.py b/bindings/python-cffi/setup.py
index cda52338..55fb2d24 100644
--- a/bindings/python-cffi/setup.py
+++ b/bindings/python-cffi/setup.py
@@ -1,6 +1,7 @@
import setuptools
+from _notmuch_config import *
-with open('version.txt') as fp:
+with open(NOTMUCH_VERSION_FILE) as fp:
VERSION = fp.read().strip()
setuptools.setup(
diff --git a/bindings/python-cffi/tests/test_config.py b/bindings/python-cffi/tests/test_config.py
index 1b2695f5..67b0dea4 100644
--- a/bindings/python-cffi/tests/test_config.py
+++ b/bindings/python-cffi/tests/test_config.py
@@ -23,9 +23,9 @@ class TestIter:
def test_set_get(self, maildir):
# Ensure get-set works from different db objects
- with dbmod.Database.create(maildir.path) as db0:
+ with dbmod.Database.create(maildir.path, config=dbmod.Database.CONFIG.EMPTY) as db0:
db0.config['spam'] = 'ham'
- with dbmod.Database(maildir.path) as db1:
+ with dbmod.Database(maildir.path, config=dbmod.Database.CONFIG.EMPTY) as db1:
assert db1.config['spam'] == 'ham'
def test_get_keyerror(self, db):
diff --git a/bindings/python-cffi/tests/test_database.py b/bindings/python-cffi/tests/test_database.py
index 9b3219c0..f1d12ea6 100644
--- a/bindings/python-cffi/tests/test_database.py
+++ b/bindings/python-cffi/tests/test_database.py
@@ -13,7 +13,7 @@ import notmuch2._message as message
@pytest.fixture
def db(maildir):
- with dbmod.Database.create(maildir.path) as db:
+ with dbmod.Database.create(maildir.path, config=notmuch2.Database.CONFIG.EMPTY) as db:
yield db
@@ -293,7 +293,7 @@ class TestQuery:
maildir.deliver(body='baz',
headers=[('In-Reply-To', '<{}>'.format(msgid))])
notmuch('new')
- with dbmod.Database(maildir.path, 'rw') as db:
+ with dbmod.Database(maildir.path, 'rw', config=notmuch2.Database.CONFIG.EMPTY) as db:
yield db
def test_count_messages(self, db):
diff --git a/bindings/python-cffi/tests/test_message.py b/bindings/python-cffi/tests/test_message.py
index 532bf921..56701d05 100644
--- a/bindings/python-cffi/tests/test_message.py
+++ b/bindings/python-cffi/tests/test_message.py
@@ -97,6 +97,9 @@ class TestMessage:
def test_ghost_no(self, msg):
assert not msg.ghost
+ def test_matched_no(self,msg):
+ assert not msg.matched
+
def test_date(self, msg):
# XXX Someone seems to treat things as local time instead of
# UTC or the other way around.
diff --git a/bindings/python-cffi/tests/test_tags.py b/bindings/python-cffi/tests/test_tags.py
index faf3947b..f2c6209d 100644
--- a/bindings/python-cffi/tests/test_tags.py
+++ b/bindings/python-cffi/tests/test_tags.py
@@ -23,7 +23,7 @@ class TestImmutable:
"""
maildir.deliver()
notmuch('new')
- with database.Database(maildir.path) as db:
+ with database.Database(maildir.path, config=database.Database.CONFIG.EMPTY) as db:
yield db.tags
def test_type(self, tagset):
@@ -33,7 +33,7 @@ class TestImmutable:
def test_hash(self, tagset, maildir, notmuch):
h0 = hash(tagset)
notmuch('tag', '+foo', '*')
- with database.Database(maildir.path) as db:
+ with database.Database(maildir.path, config=database.Database.CONFIG.EMPTY) as db:
h1 = hash(db.tags)
assert h0 != h1
@@ -42,7 +42,7 @@ class TestImmutable:
def test_neq(self, tagset, maildir, notmuch):
notmuch('tag', '+foo', '*')
- with database.Database(maildir.path) as db:
+ with database.Database(maildir.path, config=database.Database.CONFIG.EMPTY) as db:
assert tagset != db.tags
def test_contains(self, tagset):
@@ -159,7 +159,8 @@ class TestMutableTagset:
_, pathname = maildir.deliver()
notmuch('new')
with database.Database(maildir.path,
- mode=database.Mode.READ_WRITE) as db:
+ mode=database.Mode.READ_WRITE,
+ config=database.Database.CONFIG.EMPTY) as db:
msg = db.get(pathname)
yield msg.tags
@@ -195,7 +196,8 @@ class TestMutableTagset:
_, pathname = maildir.deliver(flagged=True)
notmuch('new')
with database.Database(maildir.path,
- mode=database.Mode.READ_WRITE) as db:
+ mode=database.Mode.READ_WRITE,
+ config=database.Database.CONFIG.EMPTY) as db:
msg = db.get(pathname)
msg.tags.discard('flagged')
msg.tags.from_maildir_flags()
@@ -205,7 +207,8 @@ class TestMutableTagset:
_, pathname = maildir.deliver(flagged=True)
notmuch('new')
with database.Database(maildir.path,
- mode=database.Mode.READ_WRITE) as db:
+ mode=database.Mode.READ_WRITE,
+ config=database.Database.CONFIG.EMPTY) as db:
msg = db.get(pathname)
flags = msg.path.name.split(',')[-1]
assert 'F' in flags
diff --git a/bindings/python-cffi/tests/test_thread.py b/bindings/python-cffi/tests/test_thread.py
index 1f44b35d..619d2aac 100644
--- a/bindings/python-cffi/tests/test_thread.py
+++ b/bindings/python-cffi/tests/test_thread.py
@@ -13,7 +13,7 @@ def thread(maildir, notmuch):
maildir.deliver(body='bar',
headers=[('In-Reply-To', '<{}>'.format(msgid))])
notmuch('new')
- with notmuch2.Database(maildir.path) as db:
+ with notmuch2.Database(maildir.path, config=notmuch2.Database.CONFIG.EMPTY) as db:
yield next(db.threads('foo'))
@@ -57,6 +57,13 @@ def test_iter(thread):
def test_matched(thread):
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):
assert isinstance(thread.authors, notmuch2.BinString)
diff --git a/bindings/python-cffi/version.txt b/bindings/python-cffi/version.txt
deleted file mode 100644
index 3f8003cd..00000000
--- a/bindings/python-cffi/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.34.2