From 05f14f115c17790bd19df84a137696cfd4abff91 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Mon, 25 Jun 2018 11:45:20 -0400 Subject: [PATCH 1/3] Remove type cycle in click --- third_party/2and3/click/core.pyi | 6 +++++- third_party/2and3/click/decorators.pyi | 3 +-- third_party/2and3/click/termui.pyi | 2 +- third_party/2and3/click/types.pyi | 6 ++---- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/third_party/2and3/click/core.pyi b/third_party/2and3/click/core.pyi index b8bb86530469..8d447bb4b027 100644 --- a/third_party/2and3/click/core.pyi +++ b/third_party/2and3/click/core.pyi @@ -17,7 +17,7 @@ from typing import ( from click.formatting import HelpFormatter from click.parser import OptionParser -from click.types import ParamType, _ConvertibleType +from click.types import ParamType def invoke_param_callback( @@ -313,6 +313,10 @@ class CommandCollection(MultiCommand): ... +# 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 diff --git a/third_party/2and3/click/decorators.pyi b/third_party/2and3/click/decorators.pyi index 4c388dd91c20..74c53187ccaa 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 e35449a610e7..167ce04d7338 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 59325f45d827..0b2f003625b9 100644 --- a/third_party/2and3/click/types.pyi +++ b/third_party/2and3/click/types.pyi @@ -1,7 +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 +from click.core import Context, Parameter, _ConvertibleType class ParamType: @@ -270,9 +270,7 @@ 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: +def convert_type(ty: Any, default: Optional[Any] = ...) -> ParamType: ... # parameter type shortcuts From f0f35e67ecf1f6825e3469902520eae008cb850d Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Tue, 26 Jun 2018 07:12:35 -0400 Subject: [PATCH 2/3] A better solution to the cycle problem --- third_party/2and3/click/core.pyi | 40 +++++++++++++++++++++++++++---- third_party/2and3/click/types.pyi | 39 ++---------------------------- third_party/2and3/click/utils.pyi | 2 +- 3 files changed, 39 insertions(+), 42 deletions(-) diff --git a/third_party/2and3/click/core.pyi b/third_party/2and3/click/core.pyi index 8d447bb4b027..255a8bd06943 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 - def invoke_param_callback( callback: Callable[['Context', 'Parameter', Optional[str]], Any], @@ -313,8 +311,42 @@ 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]] +_ConvertibleType = Union[type, _ParamType, Tuple[type, ...], Callable[[str], Any], Callable[[Optional[str]], Any]] class Parameter: @@ -322,7 +354,7 @@ class Parameter: 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/types.pyi b/third_party/2and3/click/types.pyi index 0b2f003625b9..83fe905a42e2 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, _ConvertibleType - - -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,7 +235,7 @@ class UUIDParameterType(ParamType): ... -def convert_type(ty: Any, default: Optional[Any] = ...) -> ParamType: +def convert_type(ty: Optional[_ConvertibleType], default: Optional[Any] = ...) -> ParamType: ... # parameter type shortcuts diff --git a/third_party/2and3/click/utils.pyi b/third_party/2and3/click/utils.pyi index 1a6b962da7fe..a056ede7dca5 100644 --- a/third_party/2and3/click/utils.pyi +++ b/third_party/2and3/click/utils.pyi @@ -1,9 +1,9 @@ from typing import Any, Callable, Iterator, IO, List, Optional, TypeVar, Union, Text + _T = TypeVar('_T') _Decorator = Callable[[_T], _T] - def _posixify(name: str) -> str: ... From ddccfd8fb2ffb2a8802f270e68c59cd5d1f8d3b9 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Tue, 26 Jun 2018 07:16:36 -0400 Subject: [PATCH 3/3] Minor whitespace fix --- third_party/2and3/click/utils.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/2and3/click/utils.pyi b/third_party/2and3/click/utils.pyi index a056ede7dca5..1a6b962da7fe 100644 --- a/third_party/2and3/click/utils.pyi +++ b/third_party/2and3/click/utils.pyi @@ -1,9 +1,9 @@ from typing import Any, Callable, Iterator, IO, List, Optional, TypeVar, Union, Text - _T = TypeVar('_T') _Decorator = Callable[[_T], _T] + def _posixify(name: str) -> str: ...