view mercurial/typelib.py @ 52116:82e2c99c84f3

cachestat: avoid creating cachestat for http path The statichttprepo repo attemp to create cachestat for content we access through http. We modify the couple of place create cachestat object to detect this situation and avoids it. This is not marvelous, but there is few of them and the freeze is looming. This helps on Windows where calling cachestat on http path might create issues.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 26 Oct 2024 01:38:20 +0200
parents 1c5810ce737e
children
line wrap: on
line source

# 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.

from __future__ import annotations

import typing

from typing import (
    Callable,
)

# 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,
        Union,
    )

    from . import (
        node,
        posix,
        util,
        windows,
    )

    BinaryIO_Proxy = BinaryIO
    CacheStat = Union[
        posix.cachestat,
        windows.cachestat,
        util.uncacheable_cachestat,
    ]
    NodeConstants = node.sha1nodeconstants
else:
    from typing import Any

    BinaryIO_Proxy = object
    CacheStat = Any
    NodeConstants = Any

# scmutil.getuipathfn() related callback.
UiPathFn = Callable[[bytes], bytes]