typing: lock in the type annotations that were lost with the pyupgrade changes
For some reason, these reverted from a specific type to something less useful
after the changes that culminated in 70a75d379daf. (e.g. the `remotefilectx`
method went from `Generator[remotefilectx, Any, None]` to
`Generator[nothing, Any, None]`.) The previous typing for `merge.filemap` was
`Generator[Tuple[Any, Tuple[Any, Any, Any]], Any, None]`, and decayed to
`Generator[nothing, Any, None]`. I don't feel like unravelling the specific
types here, so restore the equivalent of that.
--- a/hgext/remotefilelog/remotefilectx.py Mon Jan 06 20:02:17 2025 -0500
+++ b/hgext/remotefilelog/remotefilectx.py Sun Jan 12 21:35:30 2025 -0500
@@ -9,6 +9,7 @@
import collections
import time
+import typing
from mercurial.node import bin, hex, nullrev
from mercurial import (
@@ -20,6 +21,11 @@
)
from . import shallowutil
+if typing.TYPE_CHECKING:
+ from typing import (
+ Iterator,
+ )
+
propertycache = util.propertycache
FASTLOG_TIMEOUT_IN_SECS = 0.5
@@ -379,7 +385,7 @@
# the correct linknode.
return False
- def ancestors(self, followfirst=False):
+ def ancestors(self, followfirst=False) -> Iterator[remotefilectx]:
ancestors = []
queue = collections.deque((self,))
seen = set()
--- a/mercurial/merge.py Mon Jan 06 20:02:17 2025 -0500
+++ b/mercurial/merge.py Sun Jan 12 21:35:30 2025 -0500
@@ -11,7 +11,7 @@
import os
import struct
import typing
-from typing import Dict, Optional, Tuple
+from typing import Dict, Iterator, Optional, Tuple
from .i18n import _
from .node import nullrev
@@ -673,7 +673,7 @@
return sum(len(self._actionmapping[a]) for a in actions)
- def filemap(self, sort=False):
+ def filemap(self, sort=False) -> Iterator[tuple]: # TODO: fill out tuple
if sort:
yield from sorted(self._filemapping.items())
else:
--- a/mercurial/store.py Mon Jan 06 20:02:17 2025 -0500
+++ b/mercurial/store.py Sun Jan 12 21:35:30 2025 -0500
@@ -16,6 +16,7 @@
from typing import (
Generator,
+ Iterator,
List,
Optional,
)
@@ -116,7 +117,7 @@
)
-def _reserved():
+def _reserved() -> Iterator[int]:
"""characters that are problematic for filesystems
* ascii escapes (0..31)