From: l-m-h@web.de
To: notmuch@notmuchmail.org
Cc: Lucas Hoffmann <l-m-h@web.de>
Subject: [PATCH 3/6] python: turn get_config_list into a generator
Date: Thu, 7 Dec 2017 12:40:48 +0100 [thread overview]
Message-ID: <9dd0a4eea760800426b3db18f1fa4a9678786d79.1512646265.git.l-m-h@web.de> (raw)
In-Reply-To: <cover.1512646265.git.l-m-h@web.de>
In-Reply-To: <cover.1512646265.git.l-m-h@web.de>
[-- Attachment #1: Type: text/plain, Size: 44 bytes --]
This is a multi-part message in MIME format.
[-- Attachment #2: Type: text/plain, Size: 246 bytes --]
This mimics the behaviour of the underlying C function more closely as
it also does not store all values in memory.
---
bindings/python/notmuch/database.py | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0003-python-turn-get_config_list-into-a-generator.patch --]
[-- Type: text/x-patch; name="0003-python-turn-get_config_list-into-a-generator.patch", Size: 2742 bytes --]
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index 54966307..32566620 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -690,24 +690,22 @@ class Database(object):
_config_list_destroy.restype = None
def get_config_list(self, prefix=''):
- """Return a list of key, value pairs where the start of key matches the
- given prefix
+ """Return a generator of key, value pairs where the start of key
+ matches the given prefix
Note that only config values that are stored in the database are
searched and returned. The config file is not read. If no `prefix` is
given all config values are returned.
- This could be used to get all config values or all named queries into a
- dict for example::
+ This could be used to get all named queries into a dict for example::
- config = {k: v for k, v in db.get_config_list()}
queries = {k[6:]: v for k, v in db.get_config_list('query.')}
:param prefix: a string by which the keys should be selected
:type prefix: str
- :returns: all key-value pairs where `prefix` matches the beginning
+ :yields: all key-value pairs where `prefix` matches the beginning
of the key
- :rtype: a list of pairs of str
+ :ytype: pairs of str
:raises: :exc:`NotmuchError` in case of failure.
"""
@@ -717,13 +715,25 @@ class Database(object):
byref(config_list_p))
if status != STATUS.SUCCESS:
raise NotmuchError(status)
- config_list = []
while self._config_list_valid(config_list_p):
key = self._config_list_key(config_list_p).decode('utf-8')
value = self._config_list_value(config_list_p).decode('utf-8')
- config_list.append((key, value))
+ yield key, value
self._config_list_move_to_next(config_list_p)
- return config_list
+
+ def get_configs(self, prefix=''):
+ """Return a dict of key, value pairs where the start of key matches the
+ given prefix
+
+ :param prefix: a string by which the keys should be selected
+ :type prefix: str
+ :returns: all key-value pairs where `prefix` matches the beginning
+ of the key
+ :rtype: a dict of str: str
+ :raises: :exc:`NotmuchError` in case of failure.
+
+ """
+ return dict(self.get_config_list(prefix))
"""notmuch_database_set_config"""
_set_config = nmlib.notmuch_database_set_config
next prev parent reply other threads:[~2017-12-07 11:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-04 17:20 [PATCH 1/2] python: add bindings for notmuch_database_get_config{, _list} l-m-h
2017-06-04 17:20 ` [PATCH 2/2] python: add convenience function to get named queries l-m-h
2017-06-10 11:37 ` David Bremner
2017-06-10 11:10 ` [PATCH 1/2] python: add bindings for notmuch_database_get_config{, _list} David Bremner
2017-06-20 20:06 ` Lucas Hoffmann
2017-06-26 23:19 ` David Bremner
2017-12-07 11:40 ` [PATCH 0/6] " l-m-h
2017-12-19 11:13 ` David Bremner
2017-12-07 11:40 ` [PATCH 1/6] python: add bindings to access config l-m-h
2017-12-07 11:40 ` [PATCH 2/6] python: add default arg to get_config_list l-m-h
2017-12-07 11:40 ` l-m-h [this message]
2017-12-07 11:40 ` [PATCH 4/6] test: Add tests for new python bindings l-m-h
2017-12-07 11:40 ` [PATCH 5/6] python: Rename get_config_list to get_configs l-m-h
2017-12-22 21:59 ` David Bremner
2017-12-22 22:26 ` [PATCH 0/1] " l-m-h
2017-12-22 22:26 ` [PATCH 1/1] python: Fix method name in docs l-m-h
2017-12-24 14:05 ` David Bremner
2017-12-07 11:40 ` [PATCH 6/6] test: Add test to unset config items with the python bindings l-m-h
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9dd0a4eea760800426b3db18f1fa4a9678786d79.1512646265.git.l-m-h@web.de \
--to=l-m-h@web.de \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).