--- /dev/null
+from typing import Any, Callable, IO, Iterable, List, Optional, TypeVar, Union, Tuple as _PyTuple, Type\r
+import uuid\r
+\r
+from click.core import Context, Parameter, _ParamType as ParamType, _ConvertibleType\r
+\r
+class BoolParamType(ParamType):\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> bool:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> bool:\r
+ ...\r
+\r
+\r
+class CompositeParamType(ParamType):\r
+ arity: int\r
+\r
+\r
+class Choice(ParamType):\r
+ choices: Iterable[str]\r
+ def __init__(self, choices: Iterable[str]) -> None:\r
+ ...\r
+\r
+\r
+class FloatParamType(ParamType):\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> float:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> float:\r
+ ...\r
+\r
+\r
+class FloatRange(FloatParamType):\r
+ ...\r
+\r
+\r
+class File(ParamType):\r
+ def __init__(\r
+ self,\r
+ mode: str = ...,\r
+ encoding: Optional[str] = ...,\r
+ errors: Optional[str] = ...,\r
+ lazy: Optional[bool] = ...,\r
+ atomic: Optional[bool] = ...,\r
+ ) -> None:\r
+ ...\r
+\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> IO:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> IO:\r
+ ...\r
+\r
+ def resolve_lazy_flag(self, value: str) -> bool:\r
+ ...\r
+\r
+\r
+_F = TypeVar('_F') # result of the function\r
+_Func = Callable[[Optional[str]], _F]\r
+\r
+\r
+class FuncParamType(ParamType):\r
+ func: _Func\r
+\r
+ def __init__(self, func: _Func) -> None:\r
+ ...\r
+\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> _F:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> _F:\r
+ ...\r
+\r
+\r
+class IntParamType(ParamType):\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> int:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> int:\r
+ ...\r
+\r
+\r
+class IntRange(IntParamType):\r
+ def __init__(\r
+ self, min: Optional[int] = ..., max: Optional[int] = ..., clamp: bool = ...\r
+ ) -> None:\r
+ ...\r
+\r
+\r
+_PathType = TypeVar('_PathType', str, bytes)\r
+\r
+\r
+class Path(ParamType):\r
+ def __init__(\r
+ self,\r
+ exists: bool = ...,\r
+ file_okay: bool = ...,\r
+ dir_okay: bool = ...,\r
+ writable: bool = ...,\r
+ readable: bool = ...,\r
+ resolve_path: bool = ...,\r
+ allow_dash: bool = ...,\r
+ path_type: Optional[Type[_PathType]] = ...,\r
+ ) -> None:\r
+ ...\r
+\r
+ def coerce_path_result(self, rv: Union[str, bytes]) -> _PathType:\r
+ ...\r
+\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> _PathType:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> _PathType:\r
+ ...\r
+\r
+class StringParamType(ParamType):\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> str:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> str:\r
+ ...\r
+\r
+\r
+class Tuple(CompositeParamType):\r
+ types: List[ParamType]\r
+\r
+ def __init__(self, types: Iterable[Any]) -> None:\r
+ ...\r
+\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> Tuple:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> Tuple:\r
+ ...\r
+\r
+\r
+class UnprocessedParamType(ParamType):\r
+ ...\r
+\r
+\r
+class UUIDParameterType(ParamType):\r
+ def __call__(\r
+ self,\r
+ value: Optional[str],\r
+ param: Optional[Parameter] = ...,\r
+ ctx: Optional[Context] = ...,\r
+ ) -> uuid.UUID:\r
+ ...\r
+\r
+ def convert(\r
+ self,\r
+ value: str,\r
+ param: Optional[Parameter],\r
+ ctx: Optional[Context],\r
+ ) -> uuid.UUID:\r
+ ...\r
+\r
+\r
+def convert_type(ty: Optional[_ConvertibleType], default: Optional[Any] = ...) -> ParamType:\r
+ ...\r
+\r
+# parameter type shortcuts\r
+\r
+BOOL = BoolParamType()\r
+FLOAT = FloatParamType()\r
+INT = IntParamType()\r
+STRING = StringParamType()\r
+UNPROCESSED = UnprocessedParamType()\r
+UUID = UUIDParameterType()\r