diff mercurial/manifest.py @ 52503:048c11993d6a

typing: (mostly) align the signatures of `imanifestrevisionstored` overrides When we change the implementations to subclass this explicitly, pytype complains that the signatures mismatch for various methods. It seems hung up on ones in `mercurial.manifest` that have type hints on the return value, but lacked it in the Protocol class (which it thinks returns `None` if there's no annotation). The tricky part is that a lot of the return types in the `mercurial.manifest` module are custom types specific to that module (e.g. `'manifestctx' | 'treemanifestctx'`). Those should probably be replaced with Protocol classes. I was going to avoid making a long series longer by disabling that check for now by putting `Any` as the return type on the Protocol class methods, and then realized the problem is the class isn't marked as a Protocol (that property isn't inherited). For now, lock in the synchronized signatures.
author Matt Harbison <matt_harbison@yahoo.com>
date Wed, 23 Oct 2024 12:44:09 -0400
parents 0851d94bfdaa
children d37d8dfe65bd
line wrap: on
line diff
--- a/mercurial/manifest.py	Tue Oct 22 22:28:10 2024 -0400
+++ b/mercurial/manifest.py	Wed Oct 23 12:44:09 2024 -0400
@@ -2332,7 +2332,7 @@
                     md.set(f, new_node, new_flag)
             return md
 
-    def read_delta_new_entries(self, *, shallow=False) -> manifestdict:
+    def read_delta_new_entries(self, *, shallow: bool = False) -> manifestdict:
         """see `interface.imanifestrevisionbase` documentations"""
         # If we are using narrow, returning a delta against an arbitrary
         # changeset might return file outside the narrowspec. This can create
@@ -2621,7 +2621,7 @@
         bases = (store.deltaparent(r),)
         return self.read_any_fast_delta(bases, shallow=shallow)[1]
 
-    def readfast(self, shallow=False) -> AnyManifestDict:
+    def readfast(self, shallow: bool = False) -> AnyManifestDict:
         """Calls either readdelta or read, based on which would be less work.
         readdelta is called if the delta is against the p1, and therefore can be
         read quickly.
@@ -2694,7 +2694,7 @@
     def read(self):
         return excludeddir(self.nodeconstants, self._dir, self._node)
 
-    def readfast(self, shallow=False):
+    def readfast(self, shallow: bool = False):
         # special version of readfast since we don't have underlying storage
         return self.read()