diff --git a/pyproject.toml b/pyproject.toml index 394d4b8..061f735 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "breakshaft" -version = "0.1.1" +version = "0.1.1.post1" description = "Library for in-time codegen for type conversion" authors = [ { name = "nikto_b", email = "niktob560@yandex.ru" } diff --git a/src/breakshaft/models.py b/src/breakshaft/models.py index 8ce80d9..a95b76a 100644 --- a/src/breakshaft/models.py +++ b/src/breakshaft/models.py @@ -10,7 +10,7 @@ from typing import Callable, Optional, get_type_hints, get_origin, Generator, ge from .util import extract_func_argtypes, extract_func_argtypes_seq, is_sync_context_manager_factory, \ is_async_context_manager_factory, \ - all_combinations, is_context_manager_factory, extract_func_arg_defaults, extract_func_args + all_combinations, is_context_manager_factory, extract_func_arg_defaults, extract_func_args, extract_func_argnames @dataclass(frozen=True) @@ -35,7 +35,8 @@ class ConversionPoint: @property def fn_args(self) -> list[tuple[str, type]]: - return extract_func_args(self.fn) + funcnames = extract_func_argnames(self.fn) + return list(zip(funcnames, self.requires + self.opt_args)) @property def is_ctx_manager(self) -> bool: diff --git a/src/breakshaft/util.py b/src/breakshaft/util.py index b343f76..242a33b 100644 --- a/src/breakshaft/util.py +++ b/src/breakshaft/util.py @@ -3,6 +3,15 @@ from itertools import product from typing import Callable, get_type_hints, TypeVar, Any, Optional +def extract_func_argnames(func: Callable) -> list[str]: + sig = inspect.signature(func) + params = sig.parameters + + args_info = [] + for name, _ in params.items(): + args_info.append(name) + return args_info + def extract_return_type(func: Callable) -> Optional[type]: hints = get_type_hints(func) return hints.get('return')