D11912: pytype: stop excluding changegroup.py

mharbison72 (Matt Harbison) phabricator at mercurial-scm.org
Tue Dec 14 21:11:34 UTC 2021


mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  The false positives that were detected seem to be related to what happens to the
  variables after the local methods are used:
  
    File "/mnt/c/Users/Matt/hg/mercurial/changegroup.py", line 353, in ondupchangelog:
        No attribute 'append' on range [attribute-error]
      In Union[List[nothing], range]
    File "/mnt/c/Users/Matt/hg/mercurial/changegroup.py", line 357, in onchangelog:
        No attribute 'update' on None [attribute-error]

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  mercurial/changegroup.py
  tests/test-check-pytype.t

CHANGE DETAILS

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
@@ -10,7 +10,6 @@
 probably hiding real problems.
 
 mercurial/bundlerepo.py       # no vfs and ui attrs on bundlerepo
-mercurial/changegroup.py      # mysterious incorrect type detection
 mercurial/chgserver.py        # [attribute-error]
 mercurial/cmdutil.py          # No attribute 'markcopied' on mercurial.context.filectx [attribute-error]
 mercurial/context.py          # many [attribute-error]
@@ -56,7 +55,6 @@
 
   $ pytype -V 3.6 --keep-going --jobs auto mercurial \
   >    -x mercurial/bundlerepo.py \
-  >    -x mercurial/changegroup.py \
   >    -x mercurial/chgserver.py \
   >    -x mercurial/cmdutil.py \
   >    -x mercurial/context.py \
diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -354,6 +354,7 @@
 
             def onchangelog(cl, rev):
                 ctx = cl.changelogrevision(rev)
+                assert efilesset is not None  # help pytype
                 efilesset.update(ctx.files)
                 repo.register_changeset(rev, ctx)
 
@@ -531,12 +532,13 @@
             if added:
                 phases.registernew(repo, tr, targetphase, added)
             if phaseall is not None:
-                if duprevs:
-                    duprevs.extend(added)
+                duplicates = duprevs
+                if duplicates:
+                    duplicates.extend(added)
                 else:
-                    duprevs = added
-                phases.advanceboundary(repo, tr, phaseall, [], revs=duprevs)
-                duprevs = []
+                    duplicates = added
+                phases.advanceboundary(repo, tr, phaseall, [], revs=duplicates)
+                duprevs = duplicates = []
 
             if changesets > 0:
 



To: mharbison72, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list