Patchwork D11927: pytype: stop excluding procutil.py

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

Comments

phabricator - Dec. 15, 2021, 8:47 p.m.
mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This avoids these false warnings:
  
    File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 78, in <module>:
        No attribute 'register' on Type[io.BufferedIOBase] [attribute-error]
    File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 117, in <module>:
        No attribute 'register' on Type[io.IOBase] [attribute-error]
    File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 770, in runbgcommandpy3:
        No attribute 'close' on int [attribute-error]
      In Union[IO[Union[bytes, str]], int]

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11927

AFFECTED FILES
  mercurial/utils/procutil.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
@@ -32,7 +32,6 @@ 
 mercurial/testing/storage.py  # tons of [attribute-error]
 mercurial/ui.py               # [attribute-error], [wrong-arg-types]
 mercurial/unionrepo.py        # ui, svfs, unfiltered [attribute-error]
-mercurial/utils/procutil.py   # [attribute-error], [module-attr], [bad-return-type]
 mercurial/utils/memorytop.py  # not 3.6 compatible
 mercurial/win32.py            # [not-callable]
 mercurial/wireprotoframing.py # [unsupported-operands], [attribute-error], [import-error]
@@ -68,7 +67,6 @@ 
   >    -x mercurial/thirdparty \
   >    -x mercurial/ui.py \
   >    -x mercurial/unionrepo.py \
-  >    -x mercurial/utils/procutil.py \
   >    -x mercurial/utils/memorytop.py \
   >    -x mercurial/win32.py \
   >    -x mercurial/wireprotoframing.py \
diff --git a/mercurial/utils/procutil.py b/mercurial/utils/procutil.py
--- a/mercurial/utils/procutil.py
+++ b/mercurial/utils/procutil.py
@@ -75,7 +75,9 @@ 
         return res
 
 
+# pytype: disable=attribute-error
 io.BufferedIOBase.register(LineBufferedWrapper)
+# pytype: enable=attribute-error
 
 
 def make_line_buffered(stream):
@@ -114,7 +116,9 @@ 
         return total_written
 
 
+# pytype: disable=attribute-error
 io.IOBase.register(WriteAllWrapper)
+# pytype: enable=attribute-error
 
 
 def _make_write_all(stream):
@@ -767,6 +771,7 @@ 
             raise
         finally:
             if stdin_bytes is not None:
+                assert not isinstance(stdin, int)
                 stdin.close()
         if not ensurestart:
             # Even though we're not waiting on the child process,