annotate scripts/pyflakes @ 8455:d727e81e0097 stable

vcs: fix cloning remote repository with HTTP authentication (Issue #379) Using a remote clone URI of http://user:pass@host/... triggered an exception: ... E File ".../kallithea/lib/utils.py", line 256, in is_valid_repo_uri E GitRepository._check_url(url) E File ".../kallithea/lib/vcs/backends/git/repository.py", line 183, in _check_url E passmgr.add_password(*authinfo) E File "/usr/lib/python3.7/urllib/request.py", line 848, in add_password E self.reduce_uri(u, default_port) for u in uri) E File "/usr/lib/python3.7/urllib/request.py", line 848, in <genexpr> E self.reduce_uri(u, default_port) for u in uri) E File "/usr/lib/python3.7/urllib/request.py", line 875, in reduce_uri E host, port = splitport(authority) E File "/usr/lib/python3.7/urllib/parse.py", line 1022, in splitport E match = _portprog.fullmatch(host) E TypeError: cannot use a string pattern on a bytes-like object The authinfo tuple is obtained via mercurial.util.url, which unfortunately returns a tuple of bytes whereas urllib expects strings. It seems that mercurial internally has some more hacking around urllib as urllibcompat.py, which we don't use. Therefore, transform the bytes into strings before passing authinfo to urllib. As the realm can be None, we need to check it specifically otherwise safe_str would return a string 'None'. A basic test that catches the mentioned problem is added, even though it does not actually test that cloning with auth info will actually work (it only tests that it fails cleanly if the URI is not reachable). Additionally, one use of 'test_uri' in hg/repository.py still needed to be transformed from bytes to string. For git this was already ok.
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Wed, 22 Jul 2020 21:55:57 +0200
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)