Mercurial > hg
view mercurial/cext/parsers.pyi @ 50303:0d3690f8ce2a stable
cext: fix for PyLong refactoring in CPython 3.12
Compiling Mercurial with Python 3.12 a5 would fail with:
mercurial/cext/dirs.c: In function '_addpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:97:25: note: in expansion of macro 'PYLONG_VALUE'
97 | PYLONG_VALUE(val) += 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:108:17: note: in expansion of macro 'PYLONG_VALUE'
108 | PYLONG_VALUE(val) = 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c: In function '_delpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:145:23: note: in expansion of macro 'PYLONG_VALUE'
145 | if (--PYLONG_VALUE(val) <= 0) {
| ^~~~~~~~~~~~
This was caused by
https://github.com/python/cpython/commit/c1b1f51cd1632f0b77dacd43092fb44ed5e053a9 .
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 07 Mar 2023 16:25:51 +0100 |
parents | df5d3b0d6472 |
children | f8bf1a8e9181 |
line wrap: on
line source
from typing import ( Callable, Dict, Iterator, List, Optional, Set, Tuple, Union, ) version: int versionerrortext: str class DirstateItem: __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, nodelen: int, 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: ... # The IndexObject type here is defined in C, and there's no type for a buffer # return, as of py3.11. https://github.com/python/typing/issues/593 def parse_index2(data: object, inline: object, format: int = ...) -> Tuple[object, Optional[Tuple[int, object]]]: ...