aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--pyproject.toml2
-rw-r--r--src/infini/doc.py7
-rw-r--r--src/infini/loader.py15
-rw-r--r--src/infini/register.py4
4 files changed, 18 insertions, 10 deletions
diff --git a/pyproject.toml b/pyproject.toml
index 1e0bf2cd..61e43381 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "infini"
-version = "2.1.6"
+version = "2.1.7"
description = "Infini 内容输入输出流框架"
authors = [
{ name = "苏向夜", email = "fu050409@163.com" },
diff --git a/src/infini/doc.py b/src/infini/doc.py
index 9913309b..0b67e54c 100644
--- a/src/infini/doc.py
+++ b/src/infini/doc.py
@@ -25,6 +25,13 @@ class Doc:
self.global_variables = {}
self.interceptors = {}
+ def update(self, __object: "Doc") -> None:
+ self.pre_interceptors.update(__object.pre_interceptors)
+ self.handlers.update(__object.handlers)
+ self.events.update(__object.events)
+ self.global_variables.update(__object.global_variables)
+ self.interceptors.update(__object.interceptors)
+
def dumps(self) -> str:
return json.dumps(
{
diff --git a/src/infini/loader.py b/src/infini/loader.py
index 4c1d38fe..20d392c9 100644
--- a/src/infini/loader.py
+++ b/src/infini/loader.py
@@ -1,5 +1,6 @@
from importlib.util import spec_from_file_location
from infini.core import Core
+from infini.doc import Doc
from infini.generator import BaseGenerator, Generator, TextGenerator
from infini.handler import Handler
from infini.injector import Injector
@@ -98,6 +99,7 @@ class Loader:
global_variables: Dict[str, Union[str, Callable]]
interceptors: List[RouterType]
generators: Dict[str, BaseGenerator]
+ doc: Doc
_core: Core
@@ -108,6 +110,7 @@ class Loader:
self.global_variables = {}
self.interceptors = []
self.generators = {}
+ self.doc = Doc()
self.prepare()
def __enter__(self) -> "Loader":
@@ -119,7 +122,7 @@ class Loader:
if exc_type is not None:
raise exc_type(exc_value)
- def _find_register_variables(self, module: ModuleType) -> List[Register]:
+ def find_register_variables(self, module: ModuleType) -> List[Register]:
module_variables = inspect.getmembers(module)
register_variables = [
var for _, var in module_variables if isinstance(var, Register)
@@ -134,17 +137,18 @@ class Loader:
self.prepare()
module = importlib.import_module(name)
- vars(module)["__infini__"] = {"core": self._core, "loader": self}
+ self.load_from_module(module)
+ return module
- registers = self._find_register_variables(module)
+ def load_from_module(self, module: ModuleType) -> None:
+ vars(module)["__infini__"] = {"core": self._core, "loader": self}
+ registers = self.find_register_variables(module)
self.load_from_registers(registers)
if not registers:
logger.warning(
f"Infini 装载器未能在规则包 [bold green]{module.__name__}[/bold green] 中找到注册器."
)
- return module
-
def load_from_registers(self, registers: Sequence[Register]):
for register in registers:
self.load_from_register(register)
@@ -157,6 +161,7 @@ class Loader:
self.events.update(register.events)
self.global_variables.update(register.global_variables)
self.interceptors = self._update_list(self.interceptors, register.interceptors)
+ self.doc.update(register.doc)
def _update_list(self, old_list: List[RouterType], new_list: List[RouterType]):
list = old_list.copy()
diff --git a/src/infini/register.py b/src/infini/register.py
index f2e2e6a2..9134983c 100644
--- a/src/infini/register.py
+++ b/src/infini/register.py
@@ -109,9 +109,7 @@ class Register:
"""注册一个文本事件"""
self.events[name] = text
self.doc.events[name] = {
- "usage": None,
"description": description,
- "epilog": None,
"var_doc": var_doc or {},
}
@@ -128,7 +126,6 @@ class Register:
self.doc.global_variables[name] = {
"usage": usage,
"description": description,
- "epilog": None,
}
def dynamic_variable(
@@ -149,7 +146,6 @@ class Register:
self.doc.global_variables[name or func.__name__] = {
"usage": usage,
"description": description,
- "epilog": None,
}
return wrapper