From patchwork Wed Dec 15 20:48:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D11931: pytype: stop excluding ssutil.py From: phabricator X-Patchwork-Id: 50257 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 15 Dec 2021 20:48:01 +0000 mharbison72 created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY Pytype simply can't distinguish the type for this one entry's value from the other values: File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 142, in _hostsettings: No attribute 'append' on None [attribute-error] In Optional[Union[Any, List[nothing], bool, bytes]] File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 142, in _hostsettings: No attribute 'append' on bool [attribute-error] In Optional[Union[Any, List[nothing], bool, bytes]] File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 142, in _hostsettings: No attribute 'append' on bytes [attribute-error] In Optional[Union[Any, List[nothing], bool, bytes]] File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 147, in _hostsettings: No attribute 'append' on None [attribute-error] In Optional[Union[Any, List[Tuple[Any, Any]], bool, bytes]] File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 147, in _hostsettings: No attribute 'append' on bool [attribute-error] In Optional[Union[Any, List[Tuple[Any, Any]], bool, bytes]] File "/mnt/c/Users/Matt/hg/mercurial/sslutil.py", line 147, in _hostsettings: No attribute 'append' on bytes [attribute-error] In Optional[Union[Any, List[Tuple[Any, Any]], bool, bytes]] REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D11931 AFFECTED FILES mercurial/sslutil.py tests/test-check-pytype.t CHANGE DETAILS To: mharbison72, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/tests/test-check-pytype.t b/tests/test-check-pytype.t --- a/tests/test-check-pytype.t +++ b/tests/test-check-pytype.t @@ -27,7 +27,6 @@ mercurial/pure/osutil.py # [invalid-typevar], [not-callable] mercurial/pure/parsers.py # [attribute-error] mercurial/repoview.py # [attribute-error] -mercurial/sslutil.py # [attribute-error] mercurial/testing/storage.py # tons of [attribute-error] mercurial/ui.py # [attribute-error], [wrong-arg-types] mercurial/unionrepo.py # ui, svfs, unfiltered [attribute-error] @@ -59,7 +58,6 @@ > -x mercurial/pure/osutil.py \ > -x mercurial/pure/parsers.py \ > -x mercurial/repoview.py \ - > -x mercurial/sslutil.py \ > -x mercurial/testing/storage.py \ > -x mercurial/thirdparty \ > -x mercurial/ui.py \ diff --git a/mercurial/sslutil.py b/mercurial/sslutil.py --- a/mercurial/sslutil.py +++ b/mercurial/sslutil.py @@ -139,12 +139,18 @@ alg, fingerprint = fingerprint.split(b':', 1) fingerprint = fingerprint.replace(b':', b'').lower() + # pytype: disable=attribute-error + # `s` is heterogeneous, but this entry is always a list of tuples s[b'certfingerprints'].append((alg, fingerprint)) + # pytype: enable=attribute-error # Fingerprints from [hostfingerprints] are always SHA-1. for fingerprint in ui.configlist(b'hostfingerprints', bhostname): fingerprint = fingerprint.replace(b':', b'').lower() + # pytype: disable=attribute-error + # `s` is heterogeneous, but this entry is always a list of tuples s[b'certfingerprints'].append((b'sha1', fingerprint)) + # pytype: enable=attribute-error s[b'legacyfingerprint'] = True # If a host cert fingerprint is defined, it is the only thing that