From patchwork Tue Dec 14 21:11:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D11912: pytype: stop excluding changegroup.py From: phabricator X-Patchwork-Id: 50241 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 14 Dec 2021 21:11:34 +0000 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 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 @@ -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: