mercurial/typelib.py
author Raphaël Gomès <rgomes@octobus.net>
Mon, 04 Nov 2024 12:10:22 +0100
changeset 52308 7756494c5ecd
parent 52102 82e2c99c84f3
permissions -rw-r--r--
rust-inner-revlog: cache the compressor The `compress` function is unlikely to be used in highly contended situations, and creating a compressor has some overhead, on top of losing out on some potential advantages of longer-running optimizations from the compressor.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     1
# typelib.py - type hint aliases and support
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     2
#
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     3
# Copyright 2022 Matt Harbison <matt_harbison@yahoo.com>
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     4
#
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     7
51864
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51732
diff changeset
     8
from __future__ import annotations
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51732
diff changeset
     9
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    10
import typing
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    11
51732
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    12
from typing import (
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    13
    Callable,
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    14
)
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    15
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    16
# Note: this is slightly different from pycompat.TYPE_CHECKING, as using
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    17
# pycompat causes the BinaryIO_Proxy type to be resolved to ``object`` when
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    18
# used as the base class during a pytype run.
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    19
TYPE_CHECKING = typing.TYPE_CHECKING
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    20
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    21
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    22
# The BinaryIO class provides empty methods, which at runtime means that
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    23
# ``__getattr__`` on the proxy classes won't get called for the methods that
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    24
# should delegate to the internal object.  So to avoid runtime changes because
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    25
# of the required typing inheritance, just use BinaryIO when typechecking, and
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    26
# ``object`` otherwise.
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    27
if TYPE_CHECKING:
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    28
    from typing import (
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    29
        BinaryIO,
51716
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    30
        Union,
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    31
    )
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    32
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    33
    from . import (
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    34
        node,
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    35
        posix,
52102
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    36
        util,
51716
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    37
        windows,
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    38
    )
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    39
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    40
    BinaryIO_Proxy = BinaryIO
52102
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    41
    CacheStat = Union[
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    42
        posix.cachestat,
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    43
        windows.cachestat,
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    44
        util.uncacheable_cachestat,
82e2c99c84f3 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51864
diff changeset
    45
    ]
51716
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    46
    NodeConstants = node.sha1nodeconstants
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    47
else:
51716
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    48
    from typing import Any
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    49
49793
8147abc05794 pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    50
    BinaryIO_Proxy = object
51716
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    51
    CacheStat = Any
f3b34386d3e0 typing: add type hints to `mercurial.dirstatemap`
Matt Harbison <matt_harbison@yahoo.com>
parents: 49793
diff changeset
    52
    NodeConstants = Any
51732
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    53
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    54
# scmutil.getuipathfn() related callback.
43460c311c0c typing: add trivial type hints to `mercurial.scmutil`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51716
diff changeset
    55
UiPathFn = Callable[[bytes], bytes]