💥 remove deprecated export (#1125)

This commit is contained in:
Ju4tCode 2022-08-08 21:07:36 +08:00 committed by GitHub
parent 6583bc8c61
commit 1766d4da69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 3 additions and 79 deletions

View File

@ -29,7 +29,6 @@
- `get_plugin_by_module_name` => {ref}``get_plugin_by_module_name` <nonebot.plugin.get_plugin_by_module_name>` - `get_plugin_by_module_name` => {ref}``get_plugin_by_module_name` <nonebot.plugin.get_plugin_by_module_name>`
- `get_loaded_plugins` => {ref}``get_loaded_plugins` <nonebot.plugin.get_loaded_plugins>` - `get_loaded_plugins` => {ref}``get_loaded_plugins` <nonebot.plugin.get_loaded_plugins>`
- `get_available_plugin_names` => {ref}``get_available_plugin_names` <nonebot.plugin.get_available_plugin_names>` - `get_available_plugin_names` => {ref}``get_available_plugin_names` <nonebot.plugin.get_available_plugin_names>`
- `export` => {ref}``export` <nonebot.plugin.export.export>`
- `require` => {ref}``require` <nonebot.plugin.load.require>` - `require` => {ref}``require` <nonebot.plugin.load.require>`
FrontMatter: FrontMatter:
@ -262,7 +261,6 @@ def run(*args: Any, **kwargs: Any) -> None:
from nonebot.plugin import on as on from nonebot.plugin import on as on
from nonebot.plugin import export as export
from nonebot.plugin import require as require from nonebot.plugin import require as require
from nonebot.plugin import on_regex as on_regex from nonebot.plugin import on_regex as on_regex
from nonebot.plugin import on_notice as on_notice from nonebot.plugin import on_notice as on_notice

View File

@ -25,7 +25,6 @@
- `load_from_toml` => {ref}``load_from_toml` <nonebot.plugin.load.load_from_toml>` - `load_from_toml` => {ref}``load_from_toml` <nonebot.plugin.load.load_from_toml>`
- `load_builtin_plugin` => {ref}``load_builtin_plugin` <nonebot.plugin.load.load_builtin_plugin>` - `load_builtin_plugin` => {ref}``load_builtin_plugin` <nonebot.plugin.load.load_builtin_plugin>`
- `load_builtin_plugins` => {ref}``load_builtin_plugins` <nonebot.plugin.load.load_builtin_plugins>` - `load_builtin_plugins` => {ref}``load_builtin_plugins` <nonebot.plugin.load.load_builtin_plugins>`
- `export` => {ref}``export` <nonebot.plugin.export.export>`
- `require` => {ref}``require` <nonebot.plugin.load.require>` - `require` => {ref}``require` <nonebot.plugin.load.require>`
FrontMatter: FrontMatter:
@ -106,8 +105,6 @@ def get_available_plugin_names() -> Set[str]:
from .on import on as on from .on import on as on
from .manager import PluginManager from .manager import PluginManager
from .export import Export as Export
from .export import export as export
from .load import require as require from .load import require as require
from .on import on_regex as on_regex from .on import on_regex as on_regex
from .plugin import Plugin as Plugin from .plugin import Plugin as Plugin

View File

@ -1,64 +0,0 @@
"""本模块定义了插件导出的内容对象。
在新版插件系统中推荐优先使用直接 import 所需要的插件内容
FrontMatter:
sidebar_position: 4
description: nonebot.plugin.export 模块
"""
import warnings
from . import _current_plugin_chain
class Export(dict):
"""插件导出内容以使得其他插件可以获得。
用法:
```python
nonebot.export().default = "bar"
@nonebot.export()
def some_function():
pass
# this doesn't work before python 3.9
# use
# export = nonebot.export(); @export.sub
# instead
# See also PEP-614: https://www.python.org/dev/peps/pep-0614/
@nonebot.export().sub
def something_else():
pass
```
"""
def __call__(self, func, **kwargs):
self[func.__name__] = func
self.update(kwargs)
return func
def __setitem__(self, key, value):
super().__setitem__(key, Export(value) if isinstance(value, dict) else value)
def __setattr__(self, name, value):
self[name] = Export(value) if isinstance(value, dict) else value
def __getattr__(self, name):
if name not in self:
self[name] = Export()
return self[name]
def export() -> Export:
"""获取当前插件的导出内容对象"""
warnings.warn(
"nonebot.export() is deprecated. "
"See https://github.com/nonebot/nonebot2/issues/935.",
DeprecationWarning,
)
plugins = _current_plugin_chain.get()
if not plugins:
raise RuntimeError("Export outside of the plugin!")
return plugins[-1].export

View File

@ -6,11 +6,11 @@ FrontMatter:
""" """
import json import json
import warnings import warnings
from types import ModuleType
from typing import Set, Iterable, Optional from typing import Set, Iterable, Optional
import tomlkit import tomlkit
from .export import Export
from .plugin import Plugin from .plugin import Plugin
from .manager import PluginManager from .manager import PluginManager
from . import _managers, get_plugin, _module_name_to_plugin_name from . import _managers, get_plugin, _module_name_to_plugin_name
@ -143,7 +143,7 @@ def _find_manager_by_name(name: str) -> Optional[PluginManager]:
return manager return manager
def require(name: str) -> Export: def require(name: str) -> ModuleType:
"""获取一个插件的导出内容。 """获取一个插件的导出内容。
如果为 `load_plugins` 文件夹导入的插件则为文件() 如果为 `load_plugins` 文件夹导入的插件则为文件()
@ -163,4 +163,4 @@ def require(name: str) -> Export:
plugin = load_plugin(name) plugin = load_plugin(name)
if not plugin: if not plugin:
raise RuntimeError(f'Cannot load plugin "{name}"!') raise RuntimeError(f'Cannot load plugin "{name}"!')
return plugin.export return plugin.module

View File

@ -12,7 +12,6 @@ from pydantic import BaseModel
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from .export import Export
from . import _plugins as plugins # FIXME: backport for nonebug from . import _plugins as plugins # FIXME: backport for nonebug
if TYPE_CHECKING: if TYPE_CHECKING:
@ -46,8 +45,6 @@ class Plugin:
"""点分割模块路径""" """点分割模块路径"""
manager: "PluginManager" manager: "PluginManager"
"""导入该插件的插件管理器""" """导入该插件的插件管理器"""
export: Export = field(default_factory=Export)
"""**Deprecated:** 插件内定义的导出内容"""
matcher: Set[Type[Matcher]] = field(default_factory=set) matcher: Set[Type[Matcher]] = field(default_factory=set)
"""插件内定义的 `Matcher`""" """插件内定义的 `Matcher`"""
parent_plugin: Optional["Plugin"] = None parent_plugin: Optional["Plugin"] = None

View File

@ -1,6 +1,2 @@
from nonebot import export
@export()
def test(): def test():
return "export" return "export"