##// END OF EJS Templates
typing: make `bundlerepository` subclass `localrepository` while type checking...
typing: make `bundlerepository` subclass `localrepository` while type checking Currently, `mercurial/bundlerepo.py` is excluded from pytype, mostly because it complains that various `ui` and `vfs` fields in `localrepository` are missing. (`bundlerepository` dynamically subclasses `localrepository` when it is instantiated, so it works at runtime.) This makes that class hierarchy known to pytype. Having a protocol for `Repository` is probably the right thing to do, but that will be a lot of work and this still reflects the class at runtime. Subclassing also has the benefit of making sure any method overrides have a matching signature, so maybe this is a situation where we do both of these things. (I'm not sure how clear the diagnostics are if a class *almost* implements a protocol, but is missing a method argument or similar.) The subclassing is not done outside of type checking runs to avoid any side effects on already complex code.

File last commit:

r50491:b8389533 default
r52763:9d4ad05b default
Show More
bdiff.pyi
12 lines | 348 B | text/x-python | PythonLexer
Gregory Szorc
cext: add .pyi files for C extensions...
r46652 from typing import (
List,
Tuple,
)
version: int
Matt Harbison
typing: fix a syntax error in mercurial/cext/bdiff.pyi...
r50491 def bdiff(a: bytes, b: bytes) -> bytes: ...
Gregory Szorc
cext: add .pyi files for C extensions...
r46652 def blocks(a: bytes, b: bytes) -> List[Tuple[int, int, int, int]]: ...
def fixws(s: bytes, allws: bool) -> bytes: ...
def splitnewlines(text: bytes) -> List[bytes]: ...
def xdiffblocks(a: bytes, b: bytes) -> List[Tuple[int, int, int, int]]: ...