<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/bindings/python-cffi, branch 0.30_rc3</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.30_rc3</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.30_rc3'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2020-07-03T09:45:17Z</updated>
<entry>
<title>version: bump to 0.30~rc3</title>
<updated>2020-07-03T09:45:17Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2020-07-03T09:45:17Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=038b3e7c302fed34b8734d3dcac2c5568d4147f3'/>
<id>urn:sha1:038b3e7c302fed34b8734d3dcac2c5568d4147f3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bindings/python-cffi: copy version file into bindings dir</title>
<updated>2020-07-03T09:38:55Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2020-06-30T00:22:47Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=3a42abb456893b71b530f099a1467400f2b0ea71'/>
<id>urn:sha1:3a42abb456893b71b530f099a1467400f2b0ea71</id>
<content type='text'>
Attempt to avoid breaking "pip install ."

As far as I can tell, we need to have a copy (not just a relative
symlink) of the version file.
</content>
</entry>
<entry>
<title>python-cffi: read version from notmuch version file</title>
<updated>2020-06-19T10:01:13Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-19T09:46:28Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=81057164cddf6a5c1d4c30a23767c4de8e615c1c'/>
<id>urn:sha1:81057164cddf6a5c1d4c30a23767c4de8e615c1c</id>
<content type='text'>
This keeps it in sync with the main notmuch version which is less
confusing to users.
</content>
</entry>
<entry>
<title>Support aborting the atomic context</title>
<updated>2020-06-16T11:17:39Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-14T15:23:19Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=776a54a0e437651abd69a03b9f7d591ea1f992cb'/>
<id>urn:sha1:776a54a0e437651abd69a03b9f7d591ea1f992cb</id>
<content type='text'>
Since it is possible to use an atomic context to abort a number of
changes support this usage.  Because the only way to actually abort
the transaction is to close the database this must also do so.

Amended by db: Note the limitation requiring close is a limitation of
the underlying notmuch API, which should be fixed in a future notmuch
release.
</content>
</entry>
<entry>
<title>Make messages returned by Thread objects owned</title>
<updated>2020-06-16T11:02:02Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-15T20:58:50Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=2d895a0119b423b117d10e890c9e0eb5d2a9cdf8'/>
<id>urn:sha1:2d895a0119b423b117d10e890c9e0eb5d2a9cdf8</id>
<content type='text'>
This reverses the logic of StandaloneMessage to instead create a
OwnedMessage.  Only the Thread class allows retrieving messages more
then once so it can explicitly create such messages.

The added test fails with SIGABRT without the fix for the message
re-use in threads being present.
</content>
</entry>
<entry>
<title>python/notmuch2: do not destroy messages owned by a query</title>
<updated>2020-06-16T11:02:02Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2020-06-15T20:58:49Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=131757907907380213b32934d9e73cec942ace43'/>
<id>urn:sha1:131757907907380213b32934d9e73cec942ace43</id>
<content type='text'>
Any messages retrieved from a query - either directly via
search_messages() or indirectly via thread objects - are owned by that
query. Retrieving the same message (i.e. corresponding to the same
message ID / database object) several times will always yield the same
C object.

The caller is allowed to destroy message objects owned by a query before
the query itself - which can save memory for long-lived queries.
However, that message must then never be retrieved again from that
query.

The python-notmuch2 bindings will currently destroy every message object
in Message._destroy(), which will lead to an invalid free if the same
message is then retrieved again. E.g. the following python program leads
to libtalloc abort()ing:

import notmuch2
db   = notmuch2.Database(mode = notmuch2.Database.MODE.READ_ONLY)
t    = next(db.threads('*'))
msgs = list(zip(t.toplevel(), t.toplevel()))
msgs = list(zip(t.toplevel(), t.toplevel()))

Fix this issue by creating a subclass of Message, which is used for
"standalone" message which have to be freed by the caller. Message class
is then used only for messages descended from a query, which do not need
to be freed by the caller.
</content>
</entry>
<entry>
<title>python config access: fix style and KeyError bug</title>
<updated>2020-06-16T00:50:03Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-15T21:55:53Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1bca41698a03980b701558fb5c481ef0a340460d'/>
<id>urn:sha1:1bca41698a03980b701558fb5c481ef0a340460d</id>
<content type='text'>
This fixes some minor style/pep8 things and adds tests for the new
config support.  Also fixes a bug where KeyError was never raised
on a missing key.
</content>
</entry>
<entry>
<title>python/notmuch2: add bindings for the database config strings</title>
<updated>2020-06-16T00:50:03Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2020-06-15T21:55:52Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=5a58754841f4d3e62d104ad338c8ca2c481dc32e'/>
<id>urn:sha1:5a58754841f4d3e62d104ad338c8ca2c481dc32e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update tox.ini for python3.8 and fix pypy3.6</title>
<updated>2020-06-15T14:25:39Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-14T19:25:46Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=b7e3a347ac71d2d31747259d4b3bfa089fbaa2b1'/>
<id>urn:sha1:b7e3a347ac71d2d31747259d4b3bfa089fbaa2b1</id>
<content type='text'>
Python 3.8 has been released for a while now, make sure we keep
supporting it correctly.

PyPy 3.6 wasn not configured correctly.
</content>
</entry>
<entry>
<title>Add missing set methods to tagsets</title>
<updated>2020-06-15T10:14:11Z</updated>
<author>
<name>Floris Bruynooghe</name>
<email>flub@devork.be</email>
</author>
<published>2020-06-14T18:33:55Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a00f3a1f7a646d9834a5de57a29cf3e900dbdcdf'/>
<id>urn:sha1:a00f3a1f7a646d9834a5de57a29cf3e900dbdcdf</id>
<content type='text'>
Even though we use collections.abc.Set which implements all these
methods under their operator names, the actual named variations of
these methods are shockingly missing.  So let's add them manually.
</content>
</entry>
</feed>
