##// END OF EJS Templates
typing: hide the interface version of `dirstate` during type checking...
typing: hide the interface version of `dirstate` during type checking As noted in the previous commit, the `dirstate` type is still inferred as `Any` by pytype, including where it is used as a base class for the largefiles dirstate. That effectively disables most type checking. The problems fixed two commits ago were flagged by this change. I'm not at all clear what the benefit of the original type is, but that was what was used at runtime, so I don't want to change the largefiles base class to the raw class. Having both a lowercase and camelcase name for the same thing isn't great, but given that this trivially finds problems without worrying about which symbol clients may be using, and the non-raw type is useless to pytype anyway, I'm not going to worry about it.

File last commit:

r52625:43460c31 default
r52702:45270e28 default
Show More
typelib.py
48 lines | 1.3 KiB | text/x-python | PythonLexer
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 # typelib.py - type hint aliases and support
#
# Copyright 2022 Matt Harbison <matt_harbison@yahoo.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
import typing
Matt Harbison
typing: add trivial type hints to `mercurial.scmutil`...
r52625 from typing import (
Callable,
)
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 # Note: this is slightly different from pycompat.TYPE_CHECKING, as using
# pycompat causes the BinaryIO_Proxy type to be resolved to ``object`` when
# used as the base class during a pytype run.
TYPE_CHECKING = typing.TYPE_CHECKING
# The BinaryIO class provides empty methods, which at runtime means that
# ``__getattr__`` on the proxy classes won't get called for the methods that
# should delegate to the internal object. So to avoid runtime changes because
# of the required typing inheritance, just use BinaryIO when typechecking, and
# ``object`` otherwise.
if TYPE_CHECKING:
from typing import (
BinaryIO,
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 Union,
)
from . import (
node,
posix,
windows,
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 )
BinaryIO_Proxy = BinaryIO
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 CacheStat = Union[posix.cachestat, windows.cachestat]
NodeConstants = node.sha1nodeconstants
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 else:
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 from typing import Any
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 BinaryIO_Proxy = object
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 CacheStat = Any
NodeConstants = Any
Matt Harbison
typing: add trivial type hints to `mercurial.scmutil`...
r52625
# scmutil.getuipathfn() related callback.
UiPathFn = Callable[[bytes], bytes]