[Python-checkins] r70373 - in python/branches/py3k/Lib/importlib: __init__.py _bootstrap.py abc.py test/import_/util.py

brett.cannon python-checkins at python.org
Sun Mar 15 01:53:05 CET 2009


Author: brett.cannon
Date: Sun Mar 15 01:53:05 2009
New Revision: 70373

Log:
A few more docstring/API cleanups for importlib.

Modified:
   python/branches/py3k/Lib/importlib/__init__.py
   python/branches/py3k/Lib/importlib/_bootstrap.py
   python/branches/py3k/Lib/importlib/abc.py
   python/branches/py3k/Lib/importlib/test/import_/util.py

Modified: python/branches/py3k/Lib/importlib/__init__.py
==============================================================================
--- python/branches/py3k/Lib/importlib/__init__.py	(original)
+++ python/branches/py3k/Lib/importlib/__init__.py	Sun Mar 15 01:53:05 2009
@@ -26,20 +26,6 @@
 import re
 import tokenize
 
-# XXX Temporary functions that should eventually be removed.
-def _set__import__():
-    """Set __import__ to an instance of Import."""
-    global original__import__
-    original__import__ = __import__
-    __builtins__['__import__'] = _bootstrap._import
-
-
-def _reset__import__():
-    """Set __import__ back to the original implementation (assumes
-    _set__import__ was called previously)."""
-    __builtins__['__import__'] = original__import__
-
-
 # Bootstrap help #####################################################
 
 def _case_ok(directory, check):
@@ -116,7 +102,7 @@
 
 # Public API #########################################################
 
-__import__ = _bootstrap._import
+from ._bootstrap import __import__
 
 
 def import_module(name, package=None):

Modified: python/branches/py3k/Lib/importlib/_bootstrap.py
==============================================================================
--- python/branches/py3k/Lib/importlib/_bootstrap.py	(original)
+++ python/branches/py3k/Lib/importlib/_bootstrap.py	Sun Mar 15 01:53:05 2009
@@ -183,16 +183,16 @@
 
 class BuiltinImporter:
 
-    """Meta path loader for built-in modules.
+    """Meta path import for built-in modules.
 
-    All methods are either class or static methods, allowing direct use of the
-    class.
+    All methods are either class or static methods to avoid the need to
+    instantiate the class.
 
     """
 
     @classmethod
     def find_module(cls, fullname, path=None):
-        """Try to find the built-in module.
+        """Find the built-in module.
 
         If 'path' is ever specified then the search is considered a failure.
 
@@ -219,10 +219,10 @@
 
 class FrozenImporter:
 
-    """Meta path class for importing frozen modules.
+    """Meta path import for frozen modules.
 
-    All methods are either class or static method to allow direct use of the
-    class.
+    All methods are either class or static methods to avoid the need to
+    instantiate the class.
 
     """
 
@@ -249,10 +249,13 @@
 
 class PyLoader:
 
-    """Loader base class for Python source.
+    """Loader base class for Python source code.
 
-    Requires implementing the optional PEP 302 protocols as well as
-    source_path.
+    Subclasses need to implement the methods:
+
+    - source_path
+    - get_data
+    - is_package
 
     """
 
@@ -595,7 +598,8 @@
 
     @classmethod
     def find_module(cls, fullname, path=None):
-        """Find the module on sys.path or 'path'."""
+        """Find the module on sys.path or 'path' based on sys.path_hooks and
+        sys.path_importer_cache."""
         if not path:
             path = sys.path
         for entry in path:
@@ -857,7 +861,7 @@
         return module
 
 
-def _import(name, globals={}, locals={}, fromlist=[], level=0):
+def __import__(name, globals={}, locals={}, fromlist=[], level=0):
     """Import a module.
 
     The 'globals' argument is used to infer where the import is occuring from

Modified: python/branches/py3k/Lib/importlib/abc.py
==============================================================================
--- python/branches/py3k/Lib/importlib/abc.py	(original)
+++ python/branches/py3k/Lib/importlib/abc.py	Sun Mar 15 01:53:05 2009
@@ -7,13 +7,11 @@
 
 class Loader(metaclass=abc.ABCMeta):
 
-    """Abstract base class for import loaders.
-
-    See PEP 302 for details.
-
-    """
+    """Abstract base class for import loaders."""
 
+    @abc.abstractmethod
     def load_module(self, fullname:str) -> types.ModuleType:
+        """Abstract method which when implemented should load a module."""
         raise NotImplementedError
 
 Loader.register(machinery.BuiltinImporter)
@@ -22,14 +20,11 @@
 
 class Finder(metaclass=abc.ABCMeta):
 
-    """Abstract base class for import finders.
-
-    See PEP 302 for details.
-
-    """
+    """Abstract base class for import finders."""
 
     @abc.abstractmethod
     def find_module(self, fullname:str, path:[str]=None) -> Loader:
+        """Abstract method which when implemented should find a module."""
         raise NotImplementedError
 
 Finder.register(machinery.BuiltinImporter)
@@ -37,16 +32,10 @@
 Finder.register(machinery.PathFinder)
 
 
-class Importer(Finder, Loader):
-
-    """Abstract base class for importers."""
-
-
-
 class ResourceLoader(Loader):
 
-    """Abstract base class for loaders which can return data from the back-end
-    storage.
+    """Abstract base class for loaders which can return data from their
+    back-end storage.
 
     This ABC represents one of the optional protocols specified by PEP 302.
 
@@ -54,12 +43,15 @@
 
     @abc.abstractmethod
     def get_data(self, path:str) -> bytes:
+        """Abstract method which when implemented should return the bytes for
+        the specified path."""
         raise NotImplementedError
 
 
 class InspectLoader(Loader):
 
-    """Abstract base class for loaders which supports introspection.
+    """Abstract base class for loaders which support inspection about the
+    modules they can load.
 
     This ABC represents one of the optional protocols specified by PEP 302.
 
@@ -67,44 +59,64 @@
 
     @abc.abstractmethod
     def is_package(self, fullname:str) -> bool:
+        """Abstract method which when implemented should return whether the
+        module is a package."""
         return NotImplementedError
 
     @abc.abstractmethod
     def get_code(self, fullname:str) -> types.CodeType:
+        """Abstract method which when implemented should return the code object
+        for the module"""
         return NotImplementedError
 
     @abc.abstractmethod
     def get_source(self, fullname:str) -> str:
+        """Abstract method which should return the source code for the
+        module."""
         return NotImplementedError
 
 
 class PyLoader(_bootstrap.PyLoader, InspectLoader):
 
-    """Abstract base class that implements the core parts needed to load Python
-    source code."""
+    """Abstract base class to assist in loading source code by requiring only
+    back-end storage methods to be implemented.
 
-    # load_module and get_code are implemented.
+    The methods get_code, get_source, and load_module are implemented for the
+    user.
+
+    """
 
     @abc.abstractmethod
     def source_path(self, fullname:str) -> object:
+        """Abstract method which when implemented should return the path to the
+        sourced code for the module."""
         raise NotImplementedError
 
 
 class PyPycLoader(_bootstrap.PyPycLoader, PyLoader):
 
-    """Abstract base class that implements the core parts needed to load Python
-    source and bytecode."""
+    """Abstract base class to assist in loading source and bytecode by
+    requiring only back-end storage methods to be implemented.
+
+    The methods get_code, get_source, and load_module are implemented for the
+    user.
 
-    # Implements load_module and get_code.
+    """
 
     @abc.abstractmethod
     def source_mtime(self, fullname:str) -> int:
+        """Abstract method which when implemented should return the
+        modification time for the source of the module."""
         raise NotImplementedError
 
     @abc.abstractmethod
     def bytecode_path(self, fullname:str) -> object:
+        """Abstract method which when implemented should return the path to the
+        bytecode for the module."""
         raise NotImplementedError
 
     @abc.abstractmethod
     def write_bytecode(self, fullname:str, bytecode:bytes):
+        """Abstract method which when implemented should attempt to write the
+        bytecode for the module."""
         raise NotImplementedError

Modified: python/branches/py3k/Lib/importlib/test/import_/util.py
==============================================================================
--- python/branches/py3k/Lib/importlib/test/import_/util.py	(original)
+++ python/branches/py3k/Lib/importlib/test/import_/util.py	Sun Mar 15 01:53:05 2009
@@ -10,7 +10,7 @@
     if using___import__:
         return __import__(*args, **kwargs)
     else:
-        return importlib._bootstrap._import(*args, **kwargs)
+        return importlib._bootstrap.__import__(*args, **kwargs)
 
 
 def importlib_only(fxn):


More information about the Python-checkins mailing list