[+] release .whl, fix ruff

This commit is contained in:
Siarhei Siniak 2025-06-21 14:05:31 +03:00
parent 91dbbde50d
commit 1e73d19122
2 changed files with 60 additions and 59 deletions

@ -3,80 +3,78 @@ import inspect
import collections import collections
from typing import ( from typing import (
TypeVar, Callable, Any, Optional, TypeVar,
Mapping, cast, Callable,
Any,
Optional,
Mapping,
cast,
) )
P = TypeVar('P') P = TypeVar('P')
R = TypeVar('R') R = TypeVar('R')
def validate_params(
view: Callable[..., R]
) -> Callable[..., R]:
import inspect
class Parameter: def validate_params(view: Callable[..., R]) -> Callable[..., R]:
kind: Any class Parameter:
annotation: Any kind: Any
annotation: Any
parameters = cast( parameters = cast(Mapping[str, Parameter], inspect.signature(view).parameters)
Mapping[str, Parameter],
inspect.signature(view).parameters
)
positional_parameters: collections.OrderedDict[str, type[Any]] = \ positional_parameters: collections.OrderedDict[str, type[Any]] = collections.OrderedDict(
collections.OrderedDict(( (
(k, v.annotation) (k, v.annotation)
for k, v in parameters.items() for k, v in parameters.items()
if v.kind in ( if v.kind
inspect.Parameter.POSITIONAL_ONLY, in (
inspect.Parameter.POSITIONAL_OR_KEYWORD, inspect.Parameter.POSITIONAL_ONLY,
) inspect.Parameter.POSITIONAL_OR_KEYWORD,
)) )
positional_names = list(positional_parameters) )
)
positional_names = list(positional_parameters)
model = pydantic.create_model( model = pydantic.create_model(
getattr(view, '__name__'), getattr(view, '__name__'),
**{ **{
k : v.annotation k: v.annotation
for k, v in parameters.items() for k, v in parameters.items()
if v.kind in ( if v.kind
inspect.Parameter.POSITIONAL_OR_KEYWORD, in (
inspect.Parameter.POSITIONAL_ONLY, inspect.Parameter.POSITIONAL_OR_KEYWORD,
inspect.Parameter.KEYWORD_ONLY, inspect.Parameter.POSITIONAL_ONLY,
) inspect.Parameter.KEYWORD_ONLY,
}, )
__config__=pydantic.ConfigDict( },
arbitrary_types_allowed=True, __config__=pydantic.ConfigDict(
) arbitrary_types_allowed=True,
) ),
)
def wrapper(*args: Any, **kwargs: Any) -> R: def wrapper(*args: Any, **kwargs: Any) -> R:
#data = model.model_validate( # data = model.model_validate(
kwargs_to_check : dict[str, Any] = { kwargs_to_check: dict[str, Any] = {k: v for k, v in kwargs.items()}
k : v
for k, v in kwargs.items()
}
for i, o in enumerate(args): for i, o in enumerate(args):
k = positional_names[i] k = positional_names[i]
parameter = positional_parameters[k] parameter = positional_parameters[k]
assert not k in kwargs_to_check assert not k in kwargs_to_check
kwargs_to_check[k] = o kwargs_to_check[k] = o
model.model_validate( model.model_validate(
kwargs_to_check, kwargs_to_check,
) )
#).dict() # ).dict()
return view( return view(
#**data, # **data,
*args, *args,
**kwargs, **kwargs,
) )
return wrapper return wrapper

Binary file not shown.