From 9fbd09331cf7ce79e898d608eb944e78ba8142a2 Mon Sep 17 00:00:00 2001 From: yanyongyu Date: Sat, 11 Apr 2020 23:04:31 +0800 Subject: [PATCH] fix docstring missing for nlp and event handler --- nonebot/natural_language.py | 5 ++++- nonebot/notice_request.py | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/nonebot/natural_language.py b/nonebot/natural_language.py index 268217ff..7692f82e 100644 --- a/nonebot/natural_language.py +++ b/nonebot/natural_language.py @@ -1,5 +1,6 @@ import asyncio import warnings +from functools import update_wrapper from typing import Set, Iterable, Optional, Callable, Union, NamedTuple from aiocqhttp import Event as CQEvent @@ -14,7 +15,8 @@ from .typing import CommandName_T, CommandArgs_T class NLProcessor: __slots__ = ('func', 'keywords', 'permission', 'only_to_me', - 'only_short_message', 'allow_empty_message') + 'only_short_message', 'allow_empty_message', '__name__', '__qualname__', '__doc__', + '__annotations__', '__dict__') def __init__(self, *, func: Callable, keywords: Optional[Iterable], permission: int, only_to_me: bool, only_short_message: bool, @@ -125,6 +127,7 @@ def on_natural_language( only_short_message=only_short_message, allow_empty_message=allow_empty_message) NLPManager.add_nl_processor(nl_processor) + update_wrapper(wrapper=nl_processor, wrapped=func) # type: ignore return nl_processor if isinstance(keywords, Callable): diff --git a/nonebot/notice_request.py b/nonebot/notice_request.py index bc333ae4..f1b99868 100644 --- a/nonebot/notice_request.py +++ b/nonebot/notice_request.py @@ -1,3 +1,4 @@ +from functools import update_wrapper from typing import List, Optional, Callable, Union from aiocqhttp import Event as CQEvent @@ -11,7 +12,8 @@ from .session import BaseSession _bus = EventBus() class EventHandler: - __slots__ = ('events', 'func') + __slots__ = ('events', 'func', '__name__', '__qualname__', '__doc__', + '__annotations__', '__dict__') def __init__(self, events: List[str], func: Callable): self.events = events @@ -26,10 +28,12 @@ def _make_event_deco(post_type: str) -> Callable: events_tmp = list(map(lambda x: f"{post_type}.{x}", [arg] + list(events))) for e in events_tmp: _bus.subscribe(e, func) - return EventHandler(events_tmp, func) + handler = EventHandler(events_tmp, func) + return update_wrapper(handler, func) # type: ignore else: _bus.subscribe(post_type, func) - return EventHandler([post_type], func) + handler = EventHandler([post_type], func) + return update_wrapper(handler, func) # type: ignore if isinstance(arg, Callable): return deco(arg) # type: ignore