diff --git a/arclet/entari/__init__.py b/arclet/entari/__init__.py index 26035b7..de19b30 100644 --- a/arclet/entari/__init__.py +++ b/arclet/entari/__init__.py @@ -67,4 +67,4 @@ WS = WebsocketsInfo WH = WebhookInfo -__version__ = "0.11.1" +__version__ = "0.11.2" diff --git a/arclet/entari/builtins/auto_reload.py b/arclet/entari/builtins/auto_reload.py index 9cdb001..a0e389a 100644 --- a/arclet/entari/builtins/auto_reload.py +++ b/arclet/entari/builtins/auto_reload.py @@ -33,7 +33,7 @@ class Config(BasicConfModel): ) -logger = log.wrapper("[AutoReload]") +logger = log.wrapper("[AutoReload]").opt(colors=True) def detect_filter_change(old: dict, new: dict): @@ -73,28 +73,28 @@ async def watch(self): for change in event: if plugin := find_plugin_by_file(change[1]): if plugin.is_static: - logger.opt(colors=True).info(f"Plugin {plugin.id!r} is static, ignored.") + logger.info(f"Plugin {plugin.id!r} is static, ignored.") continue - logger.opt(colors=True).info(f"Detected change in {plugin.id!r}, reloading...") + logger.info(f"Detected change in {plugin.id!r}, reloading...") pid = plugin.id del plugin unload_plugin(pid) if plugin := load_plugin(pid): - logger.opt(colors=True).info(f"Reloaded {plugin.id!r}") + logger.info(f"Reloaded {plugin.id!r}") del plugin else: - logger.opt(colors=True).error(f"Failed to reload {pid!r}") + logger.error(f"Failed to reload {pid!r}") self.fail[change[1]] = pid elif change[1] in self.fail: - logger.opt(colors=True).info( + logger.info( f"Detected change in {change[1]!r} which failed to reload, retrying..." ) if plugin := load_plugin(self.fail[change[1]]): - logger.opt(colors=True).info(f"Reloaded {plugin.id!r}") + logger.info(f"Reloaded {plugin.id!r}") del plugin del self.fail[change[1]] else: - logger.opt(colors=True).error(f"Failed to reload {self.fail[change[1]]!r}") + logger.error(f"Failed to reload {self.fail[change[1]]!r}") async def watch_config(self): file = EntariConfig.instance.path.resolve() @@ -110,20 +110,20 @@ async def watch_config(self): ): print(change) continue - logger.opt(colors=True).info(f"Detected change in {change[1]!r}, reloading config...") + logger.info(f"Detected change in {change[1]!r}, reloading config...") old_basic = EntariConfig.instance.basic.copy() old_plugin = EntariConfig.instance.plugin.copy() EntariConfig.instance.reload() for key in old_basic: if key in EntariConfig.instance.basic and old_basic[key] != EntariConfig.instance.basic[key]: - logger.opt(colors=True).debug( + logger.debug( f"Basic config {key!r} changed from {old_basic[key]!r} " f"to {EntariConfig.instance.basic[key]!r}", ) await es.publish(ConfigReload("basic", key, EntariConfig.instance.basic[key], old_basic[key])) for key in set(EntariConfig.instance.basic) - set(old_basic): - logger.opt(colors=True).debug(f"Basic config {key!r} appended") + logger.debug(f"Basic config {key!r} appended") await es.publish(ConfigReload("basic", key, EntariConfig.instance.basic[key])) for plugin_name in old_plugin: if plugin_name.startswith("$") or plugin_name.startswith("~"): @@ -133,10 +133,10 @@ async def watch_config(self): if plugin := find_plugin(pid): del plugin unload_plugin(pid) - logger.opt(colors=True).info(f"Disposed plugin {pid!r}") + logger.info(f"Disposed plugin {pid!r}") continue if old_plugin[plugin_name] != EntariConfig.instance.plugin[plugin_name]: - logger.opt(colors=True).debug( + logger.debug( f"Plugin {plugin_name!r} config changed from {old_plugin[plugin_name]!r} " f"to {EntariConfig.instance.plugin[plugin_name]!r}", ) @@ -146,27 +146,27 @@ async def watch_config(self): allow, deny, only_filter = detect_filter_change(old_conf, new_conf) plugin.update_filter(allow, deny) if only_filter: - logger.opt(colors=True).debug(f"Plugin {pid!r} config only changed filter.") + logger.debug(f"Plugin {pid!r} config only changed filter.") continue res = await es.post( ConfigReload("plugin", plugin_name, new_conf, old_conf), ) if res and res.value: - logger.opt(colors=True).debug(f"Plugin {pid!r} config change handled by itself.") + logger.debug(f"Plugin {pid!r} config change handled by itself.") continue - logger.opt(colors=True).info( + logger.info( f"Detected config of {pid!r} changed, reloading..." ) plugin_file = str(plugin.module.__file__) unload_plugin(plugin_name) if plugin := load_plugin(plugin_name, new_conf): - logger.opt(colors=True).info(f"Reloaded {plugin.id!r}") + logger.info(f"Reloaded {plugin.id!r}") del plugin else: - logger.opt(colors=True).error(f"Failed to reload {plugin_name!r}") + logger.error(f"Failed to reload {plugin_name!r}") self.fail[plugin_file] = pid else: - logger.opt(colors=True).info(f"Detected {pid!r} appended, loading...") + logger.info(f"Detected {pid!r} appended, loading...") load_plugin(plugin_name, new_conf) if new := (set(EntariConfig.instance.plugin) - set(old_plugin)): for plugin_name in new: diff --git a/arclet/entari/core.py b/arclet/entari/core.py index 422e673..cdb7cd7 100644 --- a/arclet/entari/core.py +++ b/arclet/entari/core.py @@ -127,13 +127,13 @@ def __init__( ): from . import __version__ - log.core.opt(colors=True).info(f"Entari version {__version__}") + log.core.info(f"Entari version {__version__}") super().__init__(*configs, default_api_cls=EntariProtocol) if not hasattr(EntariConfig, "instance"): EntariConfig.load() alconna_config.command_max_count = EntariConfig.instance.basic.get("cmd_count", 4096) log.set_level(log_level) - log.core.opt(colors=True).debug(f"Log level set to {log_level}") + log.core.debug(f"Log level set to {log_level}") requires(*EntariConfig.instance.prelude_plugin) for plug in EntariConfig.instance.prelude_plugin: load_plugin(plug, prelude=True) @@ -155,7 +155,7 @@ def reset_self(self, scope, key, value): return if key == "log_level": log.set_level(value) - log.core.opt(colors=True).debug(f"Log level set to {value}") + log.core.debug(f"Log level set to {value}") elif key == "ignore_self_message": self.ignore_self_message = value elif key == "network": diff --git a/arclet/entari/logger.py b/arclet/entari/logger.py index c5faa14..c78b181 100644 --- a/arclet/entari/logger.py +++ b/arclet/entari/logger.py @@ -20,7 +20,7 @@ def __init__(self): def fork(self, child_name: str): patched = logger.patch(lambda r: r.update(name=child_name)) - patched = patched.bind(name=child_name) + patched = patched.bind(name=child_name).opt(colors=True) self.loggers[child_name] = patched return patched diff --git a/arclet/entari/plugin/__init__.py b/arclet/entari/plugin/__init__.py index 6b4bd2d..cc1d8ee 100644 --- a/arclet/entari/plugin/__init__.py +++ b/arclet/entari/plugin/__init__.py @@ -82,10 +82,10 @@ def load_plugin( path1 = f"entari_plugin_{path}" mod = import_plugin(path1, config=conf) if not mod: - log.plugin.opt(colors=True).error(f"cannot found plugin {path!r}") + log.plugin.error(f"cannot found plugin {path!r}") es.publish(PluginLoadedFailed(path)) return - log.plugin.opt(colors=True).success(f"loaded plugin {mod.__name__!r}") + log.plugin.success(f"loaded plugin {mod.__name__!r}") if mod.__name__ in plugin_service._unloaded: if mod.__name__ in plugin_service._referents and plugin_service._referents[mod.__name__]: referents = plugin_service._referents[mod.__name__].copy() @@ -94,7 +94,7 @@ def load_plugin( if referent in recursive_guard: continue if referent in plugin_service.plugins: - log.plugin.opt(colors=True).debug( + log.plugin.debug( f"reloading {mod.__name__}'s referent {referent!r}" ) unload_plugin(referent) @@ -106,10 +106,10 @@ def load_plugin( es.publish(PluginLoadedSuccess(mod.__name__)) return mod.__plugin__ except (ImportError, RegisterNotInPluginError, StaticPluginDispatchError) as e: - log.plugin.opt(colors=True).error(f"failed to load plugin {path!r}: {e.args[0]}") + log.plugin.error(f"failed to load plugin {path!r}: {e.args[0]}") es.publish(PluginLoadedFailed(path, e)) except Exception as e: - log.plugin.opt(colors=True).exception( + log.plugin.exception( f"failed to load plugin {path!r} caused by {e!r}", exc_info=e ) es.publish(PluginLoadedFailed(path, e)) diff --git a/arclet/entari/plugin/model.py b/arclet/entari/plugin/model.py index 2f3ff54..5815d87 100644 --- a/arclet/entari/plugin/model.py +++ b/arclet/entari/plugin/model.py @@ -269,14 +269,14 @@ def dispose(self): if self.subplugins: subplugs = [i.removeprefix(self.id)[1:] for i in self.subplugins] subplugs = (subplugs[:3] + ["..."]) if len(subplugs) > 3 else subplugs - log.plugin.opt(colors=True).debug(f"disposing sub-plugin {', '.join(subplugs)} of {self.id}") + log.plugin.debug(f"disposing sub-plugin {', '.join(subplugs)} of {self.id}") for subplug in self.subplugins: if subplug not in plugin_service.plugins: continue try: plugin_service.plugins[subplug].dispose() except Exception as e: - log.plugin.opt(colors=True).error(f"failed to dispose sub-plugin {subplug} caused by {e!r}") + log.plugin.error(f"failed to dispose sub-plugin {subplug} caused by {e!r}") plugin_service.plugins.pop(subplug, None) self.subplugins.clear() self._scope.dispose() diff --git a/arclet/entari/plugin/module.py b/arclet/entari/plugin/module.py index ec1244e..0f51f92 100644 --- a/arclet/entari/plugin/module.py +++ b/arclet/entari/plugin/module.py @@ -47,7 +47,7 @@ def __entari_import__(name: str, plugin_name: str, ensure_plugin: bool = False): if name in _ENSURE_IS_PLUGIN: mod = import_plugin(name) if mod: - log.plugin.opt(colors=True).success(f"loaded plugin {name!r}") + log.plugin.success(f"loaded plugin {name!r}") if plugin_name != mod.__plugin__.id: plugin_service._referents[mod.__plugin__.id].add(plugin_name) return mod.__plugin__.proxy() @@ -58,7 +58,7 @@ def __entari_import__(name: str, plugin_name: str, ensure_plugin: bool = False): del config["$static"] mod = import_plugin(name, config=config) if mod: - log.plugin.opt(colors=True).success(f"loaded plugin {name!r}") + log.plugin.success(f"loaded plugin {name!r}") if plugin_name != mod.__plugin__.id: plugin_service._referents[mod.__plugin__.id].add(plugin_name) return mod.__plugin__.proxy() @@ -68,7 +68,7 @@ def __entari_import__(name: str, plugin_name: str, ensure_plugin: bool = False): if plugin_name != module.__plugin__.id: plugin_service._referents[module.__plugin__.id].add(plugin_name) return module.__plugin__.subproxy(f"{plugin_name}{name}") - log.plugin.opt(colors=True).success(f"loaded plugin {name!r}") + log.plugin.success(f"loaded plugin {name!r}") return module # if name not in sys.modules and name not in sys.builtin_module_names: # mod = import_plugin(name, plugin_name) diff --git a/arclet/entari/plugin/service.py b/arclet/entari/plugin/service.py index 288e573..5f39899 100644 --- a/arclet/entari/plugin/service.py +++ b/arclet/entari/plugin/service.py @@ -59,12 +59,12 @@ async def launch(self, manager: Launart): for plug_id in reversed(ids): plug = self.plugins[plug_id] if not plug.id.startswith("."): - log.plugin.opt(colors=True).debug(f"disposing plugin {plug.id}") + log.plugin.debug(f"disposing plugin {plug.id}") try: await es.publish(PluginUnloaded(plug.id)) plug.dispose() except Exception as e: - log.plugin.opt(colors=True).error(f"failed to dispose plugin {plug.id} caused by {e!r}") + log.plugin.error(f"failed to dispose plugin {plug.id} caused by {e!r}") self.plugins.pop(plug_id, None) for values in self._keep_values.values(): for value in values.values(): diff --git a/pyproject.toml b/pyproject.toml index 2861f30..f977cf3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ [project] name = "arclet-entari" -version = "0.11.1" +version = "0.11.2" description = "Simple IM Framework based on satori-python" authors = [ {name = "RF-Tar-Railt",email = "rf_tar_railt@qq.com"}, ] dependencies = [ - "arclet-letoderea>=0.14.9", + "arclet-letoderea<0.15.0,>=0.14.9", "arclet-alconna<2.0,>=1.8.34", "satori-python-core>=0.15.2", "satori-python-client>=0.15.2",