Mercurial > hg
changeset 46038:8dca9051a859
cext: add .pyi files for C extensions
I'm unsure if all the annotations are completely accurate. But having
these helps type checkers reason about our C extensions.
Differential Revision: https://phab.mercurial-scm.org/D9281
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 07 Nov 2020 16:28:30 -0800 |
parents | 9624bf057c2a |
children | b9ebe0bfed4e |
files | mercurial/cext/base85.pyi mercurial/cext/bdiff.pyi mercurial/cext/mpatch.pyi mercurial/cext/osutil.pyi mercurial/cext/parsers.pyi |
diffstat | 5 files changed, 132 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/cext/base85.pyi Sat Nov 07 16:28:30 2020 -0800 @@ -0,0 +1,6 @@ +from typing import Optional + +version: int + +def b85encode(text: bytes, pad: Optional[int]) -> bytes: ... +def b85decode(text: bytes) -> bytes: ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/cext/bdiff.pyi Sat Nov 07 16:28:30 2020 -0800 @@ -0,0 +1,12 @@ +from typing import ( + List, + Tuple, +) + +version: int + +def bdiff(a: bytes, b: bytes): bytes +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]]: ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/cext/mpatch.pyi Sat Nov 07 16:28:30 2020 -0800 @@ -0,0 +1,10 @@ +from typing import ( + List, +) + +version: int + +class mpatchError(Exception): ... + +def patches(text: bytes, bins: List[bytes]) -> bytes: ... +def patchedsize(orig: int, data: bytes) -> int: ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/cext/osutil.pyi Sat Nov 07 16:28:30 2020 -0800 @@ -0,0 +1,26 @@ +from typing import ( + AnyStr, + IO, + List, + Sequence, +) + +version: int + +class stat: + st_dev: int + st_mode: int + st_nlink: int + st_size: int + st_mtime: int + st_ctime: int + +def listdir(path: bytes, st: bool, skip: bool) -> List[stat]: ... +def posixfile(name: AnyStr, mode: bytes, buffering: int) -> IO: ... +def statfiles(names: Sequence[bytes]) -> List[stat]: ... +def recvfds(sockfd: int) -> List[int]: ... +def setprocname(name: bytes) -> None: ... +def getfstype(path: bytes) -> bytes: ... +def getfsmountpoint(path: bytes) -> bytes: ... +def unblocksignal(sig: int) -> None: ... +def isgui() -> bool: ...
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/cext/parsers.pyi Sat Nov 07 16:28:30 2020 -0800 @@ -0,0 +1,78 @@ +from typing import ( + Callable, + Dict, + Iterator, + List, + Optional, + Set, + Tuple, + Union, +) + +version: int +versionerrortext: str + +class dirstatetuple: + __doc__: str + + def __len__(self) -> int: ... + def __getitem__(self, key: int) -> Union[bytes, int]: ... + +# From dirs.c + +class dirs: + __doc__: str + def __init__(self, source, skipchar: bytes): ... + def __iter__(self) -> Iterator[bytes]: ... + def addpath(self, path: bytes) -> None: ... + def delpath(self, path: bytes) -> None: ... + +# From manifest.c +class lazymanifest: + def __init__(self, data: bytes): ... + def __iter__(self) -> Iterator[bytes]: ... + + def __len__(self) -> int: ... + def __getitem__(self, item: bytes) -> Optional[Tuple[bytes, bytes]]: ... + def __setitem__(self, key: bytes, value: Tuple[bytes, bytes]) -> None: ... + def __delitem__(self, key: bytes) -> None: ... + + def iterkeys(self) -> Iterator[bytes]: ... + def iterentries(self) -> Iterator[Tuple[bytes, bytes, bytes]]: ... + def copy(self) -> lazymanifest: ... + def filtercopy(self, matchfn: Callable[[bytes], bool]) -> lazymanifest: ... + def diff(self, other: lazymanifest, clean: Optional[bool]) -> Dict[bytes, Tuple[bytes, Tuple]]: ... + def text(self) -> bytes: ... + +# From revlog.c + +class index: + __doc__: str + + nodemap: Dict[bytes, int] + + def ancestors(self, *args: int) -> Iterator[int]: ... + def commonancestorsheads(self, *args: int) -> List[int]: ... + def clearcaches(self) -> None: ... + def get(self, value: bytes) -> Optional[int]: ... + def get_rev(self, value: bytes) -> Optional[int]: ... + def has_node(self, value: Union[int, bytes]) -> bool: ... + def rev(self, node: bytes) -> int: ... + def computephasesmapsets(self, root: Dict[int, Set[bytes]]) -> Tuple[int, Dict[int, Set[bytes]]]: ... + def reachableroots2(self, minroot: int, heads: List[int], roots: List[int], includepath: bool) -> List[int]: ... + def headrevs(self, filteredrevs: Optional[List[int]]) -> List[int]: ... + def headrevsfiltered(self, filteredrevs: Optional[List[int]]) -> List[int]: ... + def issnapshot(self, value: int) -> bool: ... + def findsnapshots(self, cache: Dict[int, List[int]], start_rev: int) -> None: ... + def deltachain(self, rev: int, stop: int, generaldelta: bool) -> Tuple[List[int], bool]: ... + def slicechunktodensity(self, revs: List[int], targetdensity: float, mingapsize: int) -> List[List[int]]: ... + def append(self, value: Tuple[int, int, int, int, int, int, int, bytes]) -> None: ... + def partialmatch(self, node: bytes) -> bytes: ... + def shortest(self, value: bytes) -> int: ... + def stats(self) -> Dict[bytes, int]: ... + +class nodetree: + __doc__: str + + def insert(self, rev: int) -> None: ... + def shortest(self, node: bytes) -> int: ...