From 4dca3ded27bf8f97e30eaab5899902e539109ba1 Mon Sep 17 00:00:00 2001 From: Alexander Regueiro Date: Thu, 12 May 2022 03:40:15 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20type=20signature=20of=20`t?= =?UTF-8?q?yper.main.get=5Fgroup`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves issue tiangolo/typer#96. --- typer/main.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/typer/main.py b/typer/main.py index 0c4c2b030..34d4ea4f4 100644 --- a/typer/main.py +++ b/typer/main.py @@ -3,7 +3,18 @@ from enum import Enum from functools import update_wrapper from pathlib import Path -from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type, Union +from typing import ( + Any, + Callable, + Dict, + List, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from uuid import UUID import click @@ -216,7 +227,7 @@ def __call__(self, *args: Any, **kwargs: Any) -> Any: return get_command(self)(*args, **kwargs) -def get_group(typer_instance: Typer) -> click.Command: +def get_group(typer_instance: Typer) -> click.Group: group = get_group_from_info(TyperInfo(typer_instance)) return group @@ -231,7 +242,7 @@ def get_command(typer_instance: Typer) -> click.Command: or len(typer_instance.registered_commands) > 1 ): # Create a Group - click_command = get_group(typer_instance) + click_command = cast(click.Command, get_group(typer_instance)) if typer_instance._add_completion: click_command.params.append(click_install_param) click_command.params.append(click_show_param) @@ -347,7 +358,7 @@ def solve_typer_info_defaults(typer_info: TyperInfo) -> TyperInfo: return TyperInfo(**values) -def get_group_from_info(group_info: TyperInfo) -> click.Command: +def get_group_from_info(group_info: TyperInfo) -> click.Group: assert ( group_info.typer_instance ), "A Typer instance is needed to generate a Click Group" @@ -366,8 +377,8 @@ def get_group_from_info(group_info: TyperInfo) -> click.Command: convertors, context_param_name, ) = get_params_convertors_ctx_param_name_from_function(solved_info.callback) - cls = solved_info.cls or TyperGroup - group = cls( # type: ignore + cls = cast(Optional[Type[click.Group]], solved_info.cls) or TyperGroup + group = cls( name=solved_info.name or "", commands=commands, invoke_without_command=solved_info.invoke_without_command, @@ -382,7 +393,7 @@ def get_group_from_info(group_info: TyperInfo) -> click.Command: convertors=convertors, context_param_name=context_param_name, ), - params=params, # type: ignore + params=params, help=solved_info.help, epilog=solved_info.epilog, short_help=solved_info.short_help,