From a86b4694d7a8832cd5dd8b83a9b83c062da322ae Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Mon, 9 Mar 2009 15:13:16 -0500 Subject: [PATCH] Added utils.python.universalImport to make the previous idiom cleaner. --- plugins/Math/plugin.py | 1 + src/utils/python.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/plugins/Math/plugin.py b/plugins/Math/plugin.py index 44469ba8c..21e91bb23 100644 --- a/plugins/Math/plugin.py +++ b/plugins/Math/plugin.py @@ -40,6 +40,7 @@ import supybot.utils as utils from supybot.commands import * import supybot.callbacks as callbacks +convertcore = utils.python.universalImport('convertcore', 'our_convertcore') try: import convertcore except ImportError: diff --git a/src/utils/python.py b/src/utils/python.py index c03339b22..6a0125fe9 100644 --- a/src/utils/python.py +++ b/src/utils/python.py @@ -27,9 +27,21 @@ # POSSIBILITY OF SUCH DAMAGE. ### +import sys import types import threading +def universalImport(*names): + f = sys._getframe(1) + for name in names: + try: + ret = __import__(name, globals=f.f_globals) + except ImportError: + continue + else: + return ret + raise ImportError, ','.join(names) + def changeFunctionName(f, name, doc=None): if doc is None: doc = f.__doc__