[+] 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,44 +3,45 @@ 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
def validate_params(view: Callable[..., R]) -> Callable[..., R]:
class Parameter: class Parameter:
kind: Any kind: Any
annotation: 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
in (
inspect.Parameter.POSITIONAL_ONLY, inspect.Parameter.POSITIONAL_ONLY,
inspect.Parameter.POSITIONAL_OR_KEYWORD, 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
in (
inspect.Parameter.POSITIONAL_OR_KEYWORD, inspect.Parameter.POSITIONAL_OR_KEYWORD,
inspect.Parameter.POSITIONAL_ONLY, inspect.Parameter.POSITIONAL_ONLY,
inspect.Parameter.KEYWORD_ONLY, inspect.Parameter.KEYWORD_ONLY,
@ -48,16 +49,13 @@ def validate_params(
}, },
__config__=pydantic.ConfigDict( __config__=pydantic.ConfigDict(
arbitrary_types_allowed=True, 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]
@ -71,10 +69,10 @@ def validate_params(
model.model_validate( model.model_validate(
kwargs_to_check, kwargs_to_check,
) )
#).dict() # ).dict()
return view( return view(
#**data, # **data,
*args, *args,
**kwargs, **kwargs,
) )

Binary file not shown.