mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-07 12:36:47 +00:00
⚗️ change permission to use handler
This commit is contained in:
@ -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:
|
||||
"""
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user