From 94196532c1afc8d2fe6f64c181f7201f7faff8bc Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Tue, 3 Feb 2009 04:58:29 +0000 Subject: Make importlib a package. This allows using svn:externals in the sandbox to package up the code for separate distribution. --- Lib/importlib.py | 38 -------------------------------------- Lib/importlib/__init__.py | 38 ++++++++++++++++++++++++++++++++++++++ Makefile.pre.in | 2 +- 3 files changed, 39 insertions(+), 39 deletions(-) delete mode 100644 Lib/importlib.py create mode 100644 Lib/importlib/__init__.py diff --git a/Lib/importlib.py b/Lib/importlib.py deleted file mode 100644 index 89398de..0000000 --- a/Lib/importlib.py +++ /dev/null @@ -1,38 +0,0 @@ -"""Backport of importlib.import_module from 3.x.""" -import sys - -def _resolve_name(name, package, level): - """Return the absolute name of the module to be imported.""" - level -= 1 - try: - if package.count('.') < level: - raise ValueError("attempted relative import beyond top-level " - "package") - except AttributeError: - raise ValueError("__package__ not set to a string") - base = package.rsplit('.', level)[0] - if name: - return "{0}.{1}".format(base, name) - else: - return base - - -def import_module(name, package=None): - """Import a module. - - The 'package' argument is required when performing a relative import. It - specifies the package to use as the anchor point from which to resolve the - relative import to an absolute import. - - """ - if name.startswith('.'): - if not package: - raise TypeError("relative imports require the 'package' argument") - level = 0 - for character in name: - if character != '.': - break - level += 1 - name = _resolve_name(name[level:], package, level) - __import__(name) - return sys.modules[name] diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py new file mode 100644 index 0000000..89398de --- /dev/null +++ b/Lib/importlib/__init__.py @@ -0,0 +1,38 @@ +"""Backport of importlib.import_module from 3.x.""" +import sys + +def _resolve_name(name, package, level): + """Return the absolute name of the module to be imported.""" + level -= 1 + try: + if package.count('.') < level: + raise ValueError("attempted relative import beyond top-level " + "package") + except AttributeError: + raise ValueError("__package__ not set to a string") + base = package.rsplit('.', level)[0] + if name: + return "{0}.{1}".format(base, name) + else: + return base + + +def import_module(name, package=None): + """Import a module. + + The 'package' argument is required when performing a relative import. It + specifies the package to use as the anchor point from which to resolve the + relative import to an absolute import. + + """ + if name.startswith('.'): + if not package: + raise TypeError("relative imports require the 'package' argument") + level = 0 + for character in name: + if character != '.': + break + level += 1 + name = _resolve_name(name[level:], package, level) + __import__(name) + return sys.modules[name] diff --git a/Makefile.pre.in b/Makefile.pre.in index e69157b..16c3df4 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -822,7 +822,7 @@ LIBSUBDIRS= lib-tk site-packages test test/output test/data \ email email/mime email/test email/test/data \ json json/tests \ sqlite3 sqlite3/test \ - logging bsddb bsddb/test csv wsgiref \ + logging bsddb bsddb/test csv importlib wsgiref \ lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \ ctypes ctypes/test ctypes/macholib idlelib idlelib/Icons \ distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ -- cgit v0.12