Patchwork D11931: pytype: stop excluding ssutil.py

login
register
mail settings
Submitter phabricator
Date Dec. 15, 2021, 8:48 p.m.
Message ID <differential-rev-PHID-DREV-ymt2ky36frg2bxqs4yak-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50257/
State New
Headers show

Comments

phabricator - Dec. 15, 2021, 8:48 p.m.
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

Patch

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