From de1755b263ed0b80aba35f043550c91a508c3d08 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Tue, 26 Jun 2018 10:24:55 -0400 Subject: [PATCH] Remove type cycle in click (#2277) --- third_party/2and3/click/core.pyi | 42 ++++++++++++++++++++++++-- third_party/2and3/click/decorators.pyi | 3 +- third_party/2and3/click/termui.pyi | 2 +- third_party/2and3/click/types.pyi | 39 +----------------------- 4 files changed, 42 insertions(+), 44 deletions(-) diff --git a/third_party/2and3/click/core.pyi b/third_party/2and3/click/core.pyi index b8bb86530..255a8bd06 100644 --- a/third_party/2and3/click/core.pyi +++ b/third_party/2and3/click/core.pyi @@ -17,8 +17,6 @@ from typing import ( from click.formatting import HelpFormatter from click.parser import OptionParser -from click.types import ParamType, _ConvertibleType - def invoke_param_callback( callback: Callable[['Context', 'Parameter', Optional[str]], Any], @@ -313,12 +311,50 @@ class CommandCollection(MultiCommand): ... +class _ParamType: + name: str + is_composite: bool + envvar_list_splitter: Optional[str] + + def __call__( + self, + value: Optional[str], + param: Optional[Parameter] = ..., + ctx: Optional[Context] = ..., + ) -> Any: + ... + + def get_metavar(self, param: Parameter) -> str: + ... + + def get_missing_message(self, param: Parameter) -> str: + ... + + def convert( + self, + value: str, + param: Optional[Parameter], + ctx: Optional[Context], + ) -> Any: + ... + + def split_envvar_value(self, rv: str) -> List[str]: + ... + + def fail(self, message: str, param: Optional[Parameter] = ..., ctx: Optional[Context] = ...) -> None: + ... + + +# This type is here to resolve https://github.com/python/mypy/issues/5275 +_ConvertibleType = Union[type, _ParamType, Tuple[type, ...], Callable[[str], Any], Callable[[Optional[str]], Any]] + + class Parameter: param_type_name: str name: str opts: List[str] secondary_opts: List[str] - type: ParamType + type: _ParamType required: bool callback: Optional[Callable[[Context, 'Parameter', str], Any]] nargs: int diff --git a/third_party/2and3/click/decorators.pyi b/third_party/2and3/click/decorators.pyi index 4c388dd91..74c53187c 100644 --- a/third_party/2and3/click/decorators.pyi +++ b/third_party/2and3/click/decorators.pyi @@ -1,8 +1,7 @@ from distutils.version import Version from typing import Any, Callable, Dict, List, Optional, Type, TypeVar, Union, Text -from click.core import Command, Group, Argument, Option, Parameter, Context -from click.types import _ConvertibleType +from click.core import Command, Group, Argument, Option, Parameter, Context, _ConvertibleType _T = TypeVar('_T') _Decorator = Callable[[_T], _T] diff --git a/third_party/2and3/click/termui.pyi b/third_party/2and3/click/termui.pyi index e35449a61..167ce04d7 100644 --- a/third_party/2and3/click/termui.pyi +++ b/third_party/2and3/click/termui.pyi @@ -12,7 +12,7 @@ from typing import ( TypeVar, ) -from click.types import _ConvertibleType +from click.core import _ConvertibleType from click._termui_impl import ProgressBar as _ProgressBar diff --git a/third_party/2and3/click/types.pyi b/third_party/2and3/click/types.pyi index 59325f45d..83fe905a4 100644 --- a/third_party/2and3/click/types.pyi +++ b/third_party/2and3/click/types.pyi @@ -1,42 +1,7 @@ from typing import Any, Callable, IO, Iterable, List, Optional, TypeVar, Union, Tuple as _PyTuple, Type import uuid -from click.core import Context, Parameter - - -class ParamType: - name: str - is_composite: bool - envvar_list_splitter: Optional[str] - - def __call__( - self, - value: Optional[str], - param: Optional[Parameter] = ..., - ctx: Optional[Context] = ..., - ) -> Any: - ... - - def get_metavar(self, param: Parameter) -> str: - ... - - def get_missing_message(self, param: Parameter) -> str: - ... - - def convert( - self, - value: str, - param: Optional[Parameter], - ctx: Optional[Context], - ) -> Any: - ... - - def split_envvar_value(self, rv: str) -> List[str]: - ... - - def fail(self, message: str, param: Optional[Parameter] = ..., ctx: Optional[Context] = ...) -> None: - ... - +from click.core import Context, Parameter, _ParamType as ParamType, _ConvertibleType class BoolParamType(ParamType): def __call__( @@ -270,8 +235,6 @@ class UUIDParameterType(ParamType): ... -_ConvertibleType = Union[type, ParamType, _PyTuple[type, ...], Callable[[str], Any], Callable[[Optional[str]], Any]] - def convert_type(ty: Optional[_ConvertibleType], default: Optional[Any] = ...) -> ParamType: ...