##// END OF EJS Templates
rhg: consistently use the command name given in clap::command!(<...>) macro...
rhg: consistently use the command name given in clap::command!(<...>) macro Before this patch there are 2 things the user controls: 1. the module/command name, specified in subcommand! macro 2. the command name, specified in clap::command! macro If these are out of sync, we get no compile error or a clear runtime error, but instead a confusing behavior where command line parser parses one thing, but running it doesn't work. This commit makes the clap::command! macro the sole authority determining the command name, so we don't have to worry about this weird behavior any more. It also makes it easy to validate agreement between (1) and (2) if we want it, but I didn't add the check because I'm not sure people necessarily want it.

File last commit:

r52995:82e2c99c default
r53420:021c1b16 default
Show More
typelib.py
55 lines | 1.4 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.
Matt Harbison
typing: add `from __future__ import annotations` to remaining source files...
r52757 from __future__ import annotations
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 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,
cachestat: avoid creating cachestat for http path...
r52995 util,
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 windows,
Matt Harbison
pytype: stop excluding mercurial/ui.py...
r50688 )
BinaryIO_Proxy = BinaryIO
cachestat: avoid creating cachestat for http path...
r52995 CacheStat = Union[
posix.cachestat,
windows.cachestat,
util.uncacheable_cachestat,
]
Matt Harbison
typing: add type hints to `mercurial.dirstatemap`...
r52609 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]