From 5f0874b0754c8b2748f6998988146120bb6e69a9 Mon Sep 17 00:00:00 2001 From: James Lu Date: Sat, 12 Aug 2023 15:36:18 -0700 Subject: [PATCH 1/3] log: pass in all kwargs to logging.Logger._log This include kwargs like stacklevel and stack_info that were more recently added. --- src/log.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/log.py b/src/log.py index d56cd1062..0555f5b64 100644 --- a/src/log.py +++ b/src/log.py @@ -86,10 +86,9 @@ class Logger(logging.Logger): # The traceback should be sufficient if we want it. # self.error('Exception string: %s', eStrId) - def _log(self, level, msg, args, exc_info=None, extra=None): + def _log(self, level, msg, args, **kwargs): msg = format(msg, *args) - logging.Logger._log(self, level, msg, (), exc_info=exc_info, - extra=extra) + logging.Logger._log(self, level, msg, (), **kwargs) class StdoutStreamHandler(logging.StreamHandler): From e5432ecf966bc7064e7fa1bf8e62076426a4fa19 Mon Sep 17 00:00:00 2001 From: James Lu Date: Sat, 12 Aug 2023 15:36:37 -0700 Subject: [PATCH 2/3] Deprecate using supybot.dynamicScope without an import (#1535) --- src/dynamicScope.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dynamicScope.py b/src/dynamicScope.py index 40682a6e2..b7dddf429 100644 --- a/src/dynamicScope.py +++ b/src/dynamicScope.py @@ -28,6 +28,7 @@ # POSSIBILITY OF SUCH DAMAGE. ### +import logging import sys class DynamicScope(object): @@ -48,6 +49,18 @@ class DynamicScope(object): def __setattr__(self, name, value): self._getLocals(name)[name] = value -(__builtins__ if isinstance(__builtins__, dict) else __builtins__.__dict__)['dynamic'] = DynamicScope() +class _DynamicScopeBuiltinsWrapper(DynamicScope): + def __getattr__(self, name): + _logger = logging.getLogger('supybot') + _logger.warning('Using DynamicScope without an explicit import is ' + 'deprecated and will be removed in a future Limnoria ' + 'version. Use instead: ' + 'from supybot.dynamicScope import dynamic', + stacklevel=2, stack_info=True) + return super().__getattr__(name) + +dynamic = DynamicScope() +(__builtins__ if isinstance(__builtins__, dict) else __builtins__.__dict__)['dynamic'] = \ + _DynamicScopeBuiltinsWrapper() # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: From 5ad1d168b89fa041262eaecb7cddf43630d772aa Mon Sep 17 00:00:00 2001 From: James Lu Date: Sun, 20 Apr 2025 11:01:32 -0700 Subject: [PATCH 3/3] core,plugins: add dynamicScope imports --- plugins/Aka/plugin.py | 1 + plugins/Factoids/plugin.py | 1 + plugins/Google/plugin.py | 1 + plugins/Relay/plugin.py | 1 + plugins/Success/plugin.py | 1 + src/callbacks.py | 1 + src/commands.py | 1 + src/conf.py | 1 + test/test_dynamicScope.py | 1 + 9 files changed, 9 insertions(+) diff --git a/plugins/Aka/plugin.py b/plugins/Aka/plugin.py index 2c8ee9caa..a81ed11a5 100644 --- a/plugins/Aka/plugin.py +++ b/plugins/Aka/plugin.py @@ -43,6 +43,7 @@ import supybot.ircutils as ircutils import supybot.callbacks as callbacks import supybot.httpserver as httpserver from supybot.i18n import PluginInternationalization +from supybot.dynamicScope import dynamic _ = PluginInternationalization('Aka') try: diff --git a/plugins/Factoids/plugin.py b/plugins/Factoids/plugin.py index 0f9ea018e..549dc1224 100644 --- a/plugins/Factoids/plugin.py +++ b/plugins/Factoids/plugin.py @@ -44,6 +44,7 @@ import supybot.ircutils as ircutils import supybot.callbacks as callbacks import supybot.httpserver as httpserver from supybot.i18n import PluginInternationalization, internationalizeDocstring +from supybot.dynamicScope import dynamic _ = PluginInternationalization('Factoids') import sqlite3 diff --git a/plugins/Google/plugin.py b/plugins/Google/plugin.py index b7c6006f4..19db4a796 100644 --- a/plugins/Google/plugin.py +++ b/plugins/Google/plugin.py @@ -42,6 +42,7 @@ import supybot.ircmsgs as ircmsgs import supybot.ircutils as ircutils import supybot.callbacks as callbacks from supybot.i18n import PluginInternationalization, internationalizeDocstring +from supybot.dynamicScope import dynamic _ = PluginInternationalization('Google') from .parser import GoogleHTMLParser diff --git a/plugins/Relay/plugin.py b/plugins/Relay/plugin.py index a520bb725..357d3fe5c 100644 --- a/plugins/Relay/plugin.py +++ b/plugins/Relay/plugin.py @@ -42,6 +42,7 @@ import supybot.ircutils as ircutils import supybot.callbacks as callbacks from supybot.utils.structures import MultiSet, TimeoutQueue from supybot.i18n import PluginInternationalization, internationalizeDocstring +from supybot.dynamicScope import dynamic _ = PluginInternationalization('Relay') class Relay(callbacks.Plugin): diff --git a/plugins/Success/plugin.py b/plugins/Success/plugin.py index 89e30a0c0..9427f4fdd 100644 --- a/plugins/Success/plugin.py +++ b/plugins/Success/plugin.py @@ -33,6 +33,7 @@ from supybot.commands import * import supybot.plugins as plugins import supybot.ircutils as ircutils from supybot.i18n import PluginInternationalization, internationalizeDocstring +from supybot.dynamicScope import dynamic _ = PluginInternationalization('Success') class Success(plugins.ChannelIdDatabasePlugin): diff --git a/src/callbacks.py b/src/callbacks.py index 69eea38c0..2e959f619 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -45,6 +45,7 @@ import warnings from . import (conf, ircdb, irclib, ircmsgs, ircutils, log, registry, utils, world) +from .dynamicScope import dynamic from .utils import minisix from .utils.iter import any, all from .i18n import PluginInternationalization diff --git a/src/commands.py b/src/commands.py index c57e75fe2..c1e80b406 100644 --- a/src/commands.py +++ b/src/commands.py @@ -46,6 +46,7 @@ except ImportError: # Windows! from . import callbacks, conf, ircdb, ircmsgs, ircutils, log, \ utils, world +from .dynamicScope import dynamic from .utils import minisix from .i18n import PluginInternationalization, internationalizeDocstring _ = PluginInternationalization() diff --git a/src/conf.py b/src/conf.py index 4770f1592..adbe414a9 100644 --- a/src/conf.py +++ b/src/conf.py @@ -36,6 +36,7 @@ import socket import random from . import ircutils, registry, utils +from .dynamicScope import dynamic from .utils import minisix from .utils.net import isSocketAddress from .version import version diff --git a/test/test_dynamicScope.py b/test/test_dynamicScope.py index fe9980e09..d9c48d1e3 100644 --- a/test/test_dynamicScope.py +++ b/test/test_dynamicScope.py @@ -28,6 +28,7 @@ # POSSIBILITY OF SUCH DAMAGE. ### +from supybot.dynamicScope import dynamic from supybot.test import * class TestDynamic(SupyTestCase):