annotate scripts/pyflakes @ 8751:ad239692ea95

mail: fix duplicate "From" headers Problem introduced in 9a0c41175e66: When iterating the headers dict and setting "msg[key] = value", it wasn't replacing the header but performing add_header so we sometimes ended up with two From headers. It is also a general problem that while the headers dict only can contain each key once, it can contain entries that only differ in casing and thus will fold to the same message header, making it possible to end up adding duplicate headers. "msg.replace_header(key, value)" is not a simple solution to the problem: it will raise KeyError if no such previous key exists. Now, make the problem more clear by explicitly using add_header. Avoid the duplication problem by deleting the key (no matter which casing) before invoking add_header. Delete promises that "No exception is raised if the named field isn’t present in the headers".
author Mads Kiilerich <mads@kiilerich.com>
date Wed, 04 Nov 2020 00:35:21 +0100
parents abb83e4edfd9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8240
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
1 #!/usr/bin/env python3
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
2 """
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
3 pyflakes with filter configuration for Kallithea.
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
4 Inspired by pyflakes/api.py and flake8/plugins/pyflakes.py .
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
5 """
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
6
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
7 import sys
8287
abb83e4edfd9 scripts: run isort on scripts too
Mads Kiilerich <mads@kiilerich.com>
parents: 8240
diff changeset
8
8240
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
9 import pyflakes.api
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
10 import pyflakes.messages
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
11
8287
abb83e4edfd9 scripts: run isort on scripts too
Mads Kiilerich <mads@kiilerich.com>
parents: 8240
diff changeset
12
8240
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
13 class Reporter:
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
14
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
15 warned = False
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
16
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
17 def flake(self, warning):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
18 # ignore known warnings
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
19 if isinstance(warning, pyflakes.messages.UnusedVariable):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
20 return
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
21 if warning.filename == 'kallithea/bin/kallithea_cli_ishell.py':
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
22 if isinstance(warning, pyflakes.messages.ImportStarUsed) and warning.message_args == ('kallithea.model.db',):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
23 return
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
24 if isinstance(warning, pyflakes.messages.UnusedImport) and warning.message_args == ('kallithea.model.db.*',):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
25 return
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
26
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
27 print('%s:%s %s [%s %s]' % (warning.filename, warning.lineno, warning.message % warning.message_args, type(warning).__name__, warning.message_args))
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
28 self.warned = True
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
29
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
30 def unexpectedError(self, filename, msg):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
31 print('Unexpected error for %s: %s' % (filename, msg))
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
32
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
33
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
34 reporter = Reporter()
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
35
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
36 for filename in sorted(set(sys.argv[1:])):
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
37 pyflakes.api.checkPath(filename, reporter=reporter)
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
38 if reporter.warned:
51af7c12ffb1 cleanup: run pyflakes as a part of scripts/run-all-cleanup
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
39 raise SystemExit(1)