Source code for aioscraper._helpers.func
import inspect
from functools import wraps
from typing import Any, Callable
def get_func_kwargs(func: Callable[..., Any], **kwargs: Any) -> dict[str, Any]:
return {param: kwargs[param] for param in inspect.signature(func).parameters if param in kwargs}
[docs]
def compiled(func: Callable[..., Any]) -> Callable[..., Any]:
"""
Decorator that optimizes dependency injection by caching function parameters.
Replaces runtime inspection with compile-time parameter extraction.
"""
params = set(inspect.signature(func).parameters)
@wraps(func)
async def wrapper(*args: Any, **kwargs: Any) -> Any:
filtered = {k: v for k, v in kwargs.items() if k in params}
return await func(*args, **filtered)
wrapper.__compiled__ = True # type: ignore[reportAttributeAccessIssue]
return wrapper