diff mbox series

[1/2] list-archive-maker: collect recipents in lists instead of strings

Message ID 20210414141235.26630-1-u.kleine-koenig@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series [1/2] list-archive-maker: collect recipents in lists instead of strings | expand

Commit Message

Uwe Kleine-König April 14, 2021, 2:12 p.m. UTC
This is more pythonic and should also be quicker to execute.

Note there is an (intended) side effect of this change. If cc already
contains "twentyone@example.com" and pair[1] is "one@example.com", the
latter was detected as already contained in cc.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 list-archive-maker.py | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)


base-commit: 45172ee760eb6210d9c153b6fe92888c79b662b0

Comments

Konstantin Ryabitsev April 15, 2021, 3:07 p.m. UTC | #1
On Wed, 14 Apr 2021 16:12:34 +0200, Uwe Kleine-König wrote:
> This is more pythonic and should also be quicker to execute.
> 
> Note there is an (intended) side effect of this change. If cc already
> contains "twentyone@example.com" and pair[1] is "one@example.com", the
> latter was detected as already contained in cc.

Applied, thanks!

[1/2] list-archive-maker: collect recipents in lists instead of strings
      commit: bade6f603831c88ce54eed656f453d1101402451
[2/2] list-archive-maker: better handle mails with misencoded real names
      commit: 21a3a883974f0bc9569aef0fcc6e14706b810f31

Best regards,
diff mbox series

Patch

diff --git a/list-archive-maker.py b/list-archive-maker.py
index 7e1d276bdf62..b4050198e16a 100755
--- a/list-archive-maker.py
+++ b/list-archive-maker.py
@@ -139,8 +139,8 @@  def process_archives(sources, outdir, msgids, listids, rejectsfile):
             # Remove headers not in WANTHDRS list and any Received:
             # lines that do not mention the list email address
             newhdrs = []
-            to = ''
-            cc = ''
+            to = []
+            cc = []
             recvtime = None
             is_our_list = False
             for hdrname, hdrval in list(msg._headers): # noqa
@@ -196,32 +196,26 @@  def process_archives(sources, outdir, msgids, listids, rejectsfile):
 
                 elif lhdrname == 'to':
                     for pair in email.utils.getaddresses([hdrval]):
-                        if cc.find(pair[1]) >= 0:
+                        if pair[1] in cc:
                             # already in Cc, so no need to add it to To
                             continue
-                        if len(to) and to.find(pair[1]) < 0:
-                            to += ', %s' % email.utils.formataddr(pair)
-                        else:
-                            to += email.utils.formataddr(pair)
+                        to.append(email.utils.formataddr(pair))
 
                 elif lhdrname == 'cc':
                     for pair in email.utils.getaddresses([hdrval]):
-                        if to.find(pair[1]) >= 0:
+                        if pair[1] in to:
                             # already in To, so no need to add it to CCs
                             continue
-                        if len(cc) and cc.find(pair[1]) < 0:
-                            cc += ', %s' % email.utils.formataddr(pair)
-                        else:
-                            cc += email.utils.formataddr(pair)
+                        cc.append(email.utils.formataddr(pair))
 
                 else:
                     newhdrs.append((hdrname, hdrval))
 
             if len(to):
-                newhdrs.append(('To', to))
+                newhdrs.append(('To', ', '.join(to)))
 
             if len(cc):
-                newhdrs.append(('Cc', cc))
+                newhdrs.append(('Cc', ', '.join(cc)))
 
             if not is_our_list:
                 # Sometimes a message is cc'd to multiple mailing lists and the