🐛 fix import recursion when same plugin and file name (fix #401)

This commit is contained in:
yanyongyu 2021-06-15 01:13:05 +08:00
parent ddd96271b0
commit 8e6f8fada8
3 changed files with 6 additions and 19 deletions

View File

@ -251,8 +251,8 @@ class MessageSegment(Mapping, abc.ABC, Generic[T_Message]):
- 说明: 消息段数据 - 说明: 消息段数据
""" """
@abc.abstractmethod
@classmethod @classmethod
@abc.abstractmethod
def get_message_class(cls) -> Type[T_Message]: def get_message_class(cls) -> Type[T_Message]:
raise NotImplementedError raise NotImplementedError
@ -330,8 +330,8 @@ class Message(List[T_MessageSegment], abc.ABC):
else: else:
self.extend(self._construct(message)) self.extend(self._construct(message))
@abc.abstractmethod
@classmethod @classmethod
@abc.abstractmethod
def get_segment_class(cls) -> Type[T_MessageSegment]: def get_segment_class(cls) -> Type[T_MessageSegment]:
raise NotImplementedError raise NotImplementedError

View File

@ -93,7 +93,7 @@ class PluginManager:
if not prefix.startswith(_internal_space.__name__): if not prefix.startswith(_internal_space.__name__):
prefix = _internal_space.__name__ prefix = _internal_space.__name__
module = _InternalModule(prefix, self) module = _InternalModule(prefix, self)
sys.modules[module.__name__] = module sys.modules[module.__name__] = module # type: ignore
setattr(_internal_space, internal_id, module) setattr(_internal_space, internal_id, module)
return module return module
@ -177,11 +177,11 @@ class PluginFinder(MetaPathFinder):
newname = manager._rewrite_module_name(fullname) newname = manager._rewrite_module_name(fullname)
if newname: if newname:
spec = PathFinder.find_spec( spec = PathFinder.find_spec(
newname, [*manager.search_path, *(path or sys.path)], newname, path or [*manager.search_path, *sys.path],
target) target)
if spec: if spec:
spec.loader = PluginLoader(manager, newname, spec.loader = PluginLoader( # type: ignore
spec.origin) manager, newname, spec.origin)
return spec return spec
index -= 1 index -= 1
return None return None

View File

@ -289,19 +289,6 @@ class MessageChain(BaseMessage[MessageSegment]):
f'Type {type(message).__name__} is not supported in mirai adapter.' f'Type {type(message).__name__} is not supported in mirai adapter.'
) )
@overrides(BaseMessage)
def reduce(self):
"""
:说明:
忽略为空的消息段, 合并相邻的纯文本消息段
"""
for index, segment in enumerate(self):
segment: MessageSegment
if segment.is_text() and not str(segment).strip():
self.pop(index)
super().reduce()
@overrides(BaseMessage) @overrides(BaseMessage)
def _construct( def _construct(
self, message: Union[List[Dict[str, Any]], Iterable[MessageSegment]] self, message: Union[List[Dict[str, Any]], Iterable[MessageSegment]]