On Fri, Jul 15 2022, David Bremner wrote: > If the bindings are installed, use them to avoid one exec of notmuch > search per message. tnx. continues to work for me where I have symlink to nmbug in ~/bin/. some time in the future i'll investigate whether i get python3 path/to/nmbug.zip ... working but not today... the series looks good to me. Tomi > --- > notmuch-git.py | 33 ++++++++++++++++++++++++++++----- > 1 file changed, 28 insertions(+), 5 deletions(-) > > I decided to leave the old (slow) path in for now, since it is fast > enough for use of nmbug to manage notmuch developement tags. > > > diff --git a/notmuch-git.py b/notmuch-git.py > index 4d9887c8..ceb86fbc 100644 > --- a/notmuch-git.py > +++ b/notmuch-git.py > @@ -698,6 +698,32 @@ def _is_unmerged(ref='@{upstream}'): > stdout=_subprocess.PIPE, wait=True) > return base != fetch_head > > +class DatabaseCache: > + def __init__(self): > + try: > + from notmuch2 import Database > + self._notmuch = Database() > + except ImportError: > + self._notmuch = None > + self._known = {} > + > + def known(self,id): > + if id in self._known: > + return self._known[id]; > + > + if self._notmuch: > + try: > + _ = self._notmuch.find(id) > + self._known[id] = True > + except LookupError: > + self._known[id] = False > + else: > + (_, stdout, stderr) = _spawn( > + args=['notmuch', 'search', '--output=files', 'id:{0}'.format(id)], > + stdout=_subprocess.PIPE, > + wait=True) > + self._known[id] = stdout != None > + return self._known[id] > > @timed > def get_status(): > @@ -705,14 +731,11 @@ def get_status(): > 'deleted': {}, > 'missing': {}, > } > + db = DatabaseCache() > with PrivateIndex(repo=NOTMUCH_GIT_DIR, prefix=TAG_PREFIX) as index: > maybe_deleted = index.diff(filter='D') > for id, tags in maybe_deleted.items(): > - (_, stdout, stderr) = _spawn( > - args=['notmuch', 'search', '--output=files', 'id:{0}'.format(id)], > - stdout=_subprocess.PIPE, > - wait=True) > - if stdout: > + if db.known(id): > status['deleted'][id] = tags > else: > status['missing'][id] = tags > -- > 2.35.1 > > _______________________________________________ > notmuch mailing list -- notmuch@notmuchmail.org > To unsubscribe send an email to notmuch-leave@notmuchmail.org _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org