⚗️ change permission to use handler

This commit is contained in:
yanyongyu
2021-11-21 12:36:44 +08:00
parent a5948fb5e3
commit b4d12d905d
9 changed files with 207 additions and 122 deletions

View File

@ -20,6 +20,7 @@ from .utils import get_typed_signature
from .models import Dependent as Dependent
from nonebot.exception import SkippedException
from .models import DependsWrapper as DependsWrapper
from nonebot.typing import T_Handler, T_DependencyCache
from nonebot.utils import (run_sync, is_gen_callable, run_sync_ctx_manager,
is_async_gen_callable, is_coroutine_callable)
@ -58,7 +59,7 @@ def get_parameterless_sub_dependant(
def get_sub_dependant(
*,
depends: DependsWrapper,
dependency: Callable[..., Any],
dependency: T_Handler,
name: Optional[str] = None,
allow_types: Optional[List[Type[Param]]] = None) -> Dependent:
sub_dependant = get_dependent(func=dependency,
@ -69,7 +70,7 @@ def get_sub_dependant(
def get_dependent(*,
func: Callable[..., Any],
func: T_Handler,
name: Optional[str] = None,
use_cache: bool = True,
allow_types: Optional[List[Type[Param]]] = None) -> Dependent:
@ -118,8 +119,8 @@ async def solve_dependencies(
_stack: Optional[AsyncExitStack] = None,
_sub_dependents: Optional[List[Dependent]] = None,
_dependency_overrides_provider: Optional[Any] = None,
_dependency_cache: Optional[Dict[Callable[..., Any], Any]] = None,
**params: Any) -> Tuple[Dict[str, Any], Dict[Callable[..., Any], Any]]:
_dependency_cache: Optional[T_DependencyCache] = None,
**params: Any) -> Tuple[Dict[str, Any], T_DependencyCache]:
values: Dict[str, Any] = {}
dependency_cache = _dependency_cache or {}
@ -201,7 +202,7 @@ async def solve_dependencies(
return values, dependency_cache
def Depends(dependency: Optional[Callable[..., Any]] = None,
def Depends(dependency: Optional[T_Handler] = None,
*,
use_cache: bool = True) -> Any:
"""

View File

@ -5,9 +5,10 @@ from typing import Any, List, Type, Callable, Optional
from pydantic.fields import FieldInfo, ModelField
from nonebot.utils import get_name
from nonebot.typing import T_Handler
class Param(FieldInfo, abc.ABC):
class Param(abc.ABC, FieldInfo):
def __repr__(self) -> str:
return f"{self.__class__.__name__}"
@ -28,7 +29,7 @@ class Param(FieldInfo, abc.ABC):
class DependsWrapper:
def __init__(self,
dependency: Optional[Callable[..., Any]] = None,
dependency: Optional[T_Handler] = None,
*,
use_cache: bool = True) -> None:
self.dependency = dependency
@ -44,7 +45,7 @@ class Dependent:
def __init__(self,
*,
func: Optional[Callable[..., Any]] = None,
func: Optional[T_Handler] = None,
name: Optional[str] = None,
params: Optional[List[ModelField]] = None,
allow_types: Optional[List[Type[Param]]] = None,

View File

@ -1,13 +1,15 @@
import inspect
from typing import Any, Dict, Callable
from typing import Any, Dict
from loguru import logger
from pydantic.typing import ForwardRef, evaluate_forwardref
from nonebot.typing import T_Handler
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
signature = inspect.signature(call)
globalns = getattr(call, "__globals__", {})
def get_typed_signature(func: T_Handler) -> inspect.Signature:
signature = inspect.signature(func)
globalns = getattr(func, "__globals__", {})
typed_params = [
inspect.Parameter(
name=param.name,