Patchwork D7389: branchmap: annotate constructor type for branchcache

login
register
mail settings
Submitter phabricator
Date Nov. 14, 2019, 9:08 p.m.
Message ID <differential-rev-PHID-DREV-gzqddoz27nbufcvjl3ir-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/43192/
State Superseded
Headers show

Comments

phabricator - Nov. 14, 2019, 9:08 p.m.
durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  This type signature is...big. But it's correct as far as I can tell,
  and it detected a bug.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/branchmap.py

CHANGE DETAILS




To: durin42, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py
--- a/mercurial/branchmap.py
+++ b/mercurial/branchmap.py
@@ -27,6 +27,23 @@ 
     stringutil,
 )
 
+if not globals():
+    from typing import (
+        Any,
+        Callable,
+        Dict,
+        Iterable,
+        List,
+        Optional,
+        Set,
+        Tuple,
+        Union,
+    )
+
+    assert any(
+        (Any, Callable, Dict, Iterable, List, Optional, Set, Tuple, Union,)
+    )
+
 subsettable = repoviewutil.subsettable
 
 calcsize = struct.calcsize
@@ -165,6 +182,7 @@ 
         closednodes=None,
         hasnode=None,
     ):
+        # type: (Union[Dict[bytes, List[bytes]], Iterable[Tuple[bytes, List[bytes]]]], bytes,  int, Optional[bytes], Optional[Set[bytes]], Optional[Callable[[bytes], bool]]) -> None
         """ hasnode is a function which can be used to verify whether changelog
         has a given node or not. If it's not provided, we assume that every node
         we have exists in changelog """
@@ -177,7 +195,7 @@ 
         if closednodes is None:
             self._closednodes = set()
         else:
-            self._closednodes = set(closednodes)
+            self._closednodes = closednodes
         self._entries = dict(entries)
         # whether closed nodes are verified or not
         self._closedverified = False