From bf53d6de4e68d9b6c419048a6c8d131af9d7af0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= Date: Wed, 27 May 2020 19:01:18 +0200 Subject: [PATCH 1/2] MeFilter: drop advertizing me_tag option The me_tag option does nothing that couldn't be done with the tags option that works on all Filters. Recommend using tags instead of me_tag in the documentation and drop the custom handle_message. Add some code to make existing rules work as expected. As a side-effect this makes [MeFilter] tags = -something work as expected. It used to do nothing, now it removes the something tag. --- afew/filters/MeFilter.py | 14 ++++++++------ docs/filters.rst | 6 +++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/afew/filters/MeFilter.py b/afew/filters/MeFilter.py index 38b1c97..b8e1d6b 100644 --- a/afew/filters/MeFilter.py +++ b/afew/filters/MeFilter.py @@ -11,7 +11,7 @@ class MeFilter(Filter): message = 'Tagging all mails sent directly to myself' _bare_email_re = re.compile(r"[^<]*<(?P[^@<>]+@[^@<>]+)>") - def __init__(self, database, me_tag='to-me', tags_blacklist=[]): + def __init__(self, database, me_tag=None, tags_blacklist=[]): super().__init__(database, tags_blacklist=tags_blacklist) my_addresses = set() @@ -23,8 +23,10 @@ def __init__(self, database, me_tag='to-me', tags_blacklist=[]): self.query = ' OR '.join('to:"%s"' % address for address in my_addresses) - self.me_tag = me_tag - - def handle_message(self, message): - if not self._tag_blacklist.intersection(message.get_tags()): - self.add_tags(message, self.me_tag) + # The me_tag option does nothing that couldn't be done with the + # "normal" tags option. If the me_tag is explicitly configured or there + # is no tags option make use of it. + if not me_tag is None or (not self._tags_to_add and not self._tags_to_remove): + if me_tag is None: + me_tag = 'to-me' + self._tags_to_add.append(me_tag) diff --git a/docs/filters.rst b/docs/filters.rst index 8ca9c20..5ae0b91 100644 --- a/docs/filters.rst +++ b/docs/filters.rst @@ -176,7 +176,11 @@ MeFilter Add filter tagging mail sent directly to any of addresses defined in Notmuch config file: `primary_email` or `other_email`. -Default tag is `to-me` and can be customized with `me_tag` option. +Default tag action is `+to-me`. + +(In the past there used to be advertised a `me_tag` option to overwrite the tag +to apply. The current code still handles it as it used to work, but usage is +discouraged.) SentMailsFilter --------------- From c6b3da534486265108816c00769a7d00156e7b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= Date: Wed, 27 May 2020 19:03:56 +0200 Subject: [PATCH 2/2] MeFilter: generalize init function Instead of accepting only tags_blacklist just pass everything but me_tags to the super class's init function. This way the message can be overwritten in the config which up to now yields an exception: TypeError: __init__() got an unexpected keyword argument 'message' --- afew/filters/MeFilter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/afew/filters/MeFilter.py b/afew/filters/MeFilter.py index b8e1d6b..122b765 100644 --- a/afew/filters/MeFilter.py +++ b/afew/filters/MeFilter.py @@ -11,8 +11,8 @@ class MeFilter(Filter): message = 'Tagging all mails sent directly to myself' _bare_email_re = re.compile(r"[^<]*<(?P[^@<>]+@[^@<>]+)>") - def __init__(self, database, me_tag=None, tags_blacklist=[]): - super().__init__(database, tags_blacklist=tags_blacklist) + def __init__(self, database, me_tag=None, **kwargs): + super().__init__(database, **kwargs) my_addresses = set() my_addresses.add(notmuch_settings.get('user', 'primary_email'))