typing: add a handful more annotations to `mercurial/vfs.py`
These came out of refactoring into a protocol class, but they can stand on their
own.
The `audit` callback is kinda screwy because the internal lambda and the callable
for `pathutil.pathauditor` have different args and a different return type. It's
conditionalized where it is called, and can be cleaned up later if desired.
--- a/mercurial/vfs.py Sat Sep 21 13:53:05 2024 -0400
+++ b/mercurial/vfs.py Mon Sep 23 14:58:37 2024 -0400
@@ -19,6 +19,7 @@
Any,
BinaryIO,
Callable,
+ Dict,
Iterable,
Iterator,
List,
@@ -27,6 +28,7 @@
Tuple,
Type,
TypeVar,
+ Union,
)
from .i18n import _
@@ -455,7 +457,12 @@
See pathutil.pathauditor() for details.
"""
+ audit: Union[pathutil.pathauditor, Callable[[bytes, Optional[bytes]], Any]]
+ base: bytes
createmode: Optional[int]
+ options: Dict[bytes, Any]
+ _audit: bool
+ _trustnlink: Optional[bool]
def __init__(
self,
@@ -688,11 +695,11 @@
return self.vfs._auditpath(path, mode)
@property
- def options(self):
+ def options(self) -> Dict[bytes, Any]:
return self.vfs.options
@options.setter
- def options(self, value):
+ def options(self, value: Dict[bytes, Any]) -> None:
self.vfs.options = value
@property
@@ -703,7 +710,7 @@
class filtervfs(proxyvfs, abstractvfs):
'''Wrapper vfs for filtering filenames with a function.'''
- def __init__(self, vfs: vfs, filter) -> None:
+ def __init__(self, vfs: vfs, filter: Callable[[bytes], bytes]) -> None:
proxyvfs.__init__(self, vfs)
self._filter = filter