]> granicus.if.org Git - python/commitdiff
Expose source_path and bytecode_path on _PyFileLoader.
authorBrett Cannon <bcannon@gmail.com>
Sun, 1 Feb 2009 05:33:17 +0000 (05:33 +0000)
committerBrett Cannon <bcannon@gmail.com>
Sun, 1 Feb 2009 05:33:17 +0000 (05:33 +0000)
Lib/importlib/NOTES
Lib/importlib/_bootstrap.py

index 57e267404a2267a284412b694d08aa48c602e2e8..089fef76361c8637888a8a00829293a9d8b92578 100644 (file)
@@ -3,8 +3,7 @@ to do
 
 * API simplification?
 
-    + read_source -> get_data/source_path
-    + read_bytecode -> get_data/bytecode_path
+    + Use *_path() along with get_data
     + write_bytecode -> complete set of bytes for bytecode instead of
       individual arguments.
 
index d2d5d3403a4e71837b1302dec748181a2b094ffd..da24291f59f16ff87449d46fb0628b9a1ce5c4dd 100644 (file)
@@ -341,13 +341,15 @@ class _PyFileLoader(object):
         else:
             return None
 
-    def _source_path(self):
+    @check_name
+    def source_path(self, fullname):
         """Return the path to an existing source file for the module, or None
         if one cannot be found."""
         # Not a property so that it is easy to override.
         return self._find_path(imp.PY_SOURCE)
 
-    def _bytecode_path(self):
+    @check_name
+    def bytecode_path(self, fullname):
         """Return the path to a bytecode file, or None if one does not
         exist."""
         # Not a property for easy overriding.
@@ -357,8 +359,9 @@ class _PyFileLoader(object):
     @get_module
     def load_module(self, module):
         """Load a Python source or bytecode module."""
-        source_path = self._source_path()
-        bytecode_path = self._bytecode_path()
+        name = module.__name__
+        source_path = self.source_path(name)
+        bytecode_path = self.bytecode_path(name)
         code_object = self.get_code(module.__name__)
         module.__file__ = source_path if source_path else bytecode_path
         module.__loader__ = self
@@ -376,7 +379,7 @@ class _PyFileLoader(object):
     def source_mtime(self, name):
         """Return the modification time of the source for the specified
         module."""
-        source_path = self._source_path()
+        source_path = self.source_path(name)
         if not source_path:
             return None
         return int(_os.stat(source_path).st_mtime)
@@ -389,7 +392,7 @@ class _PyFileLoader(object):
         laoder cannot handle the specified module.
 
         """
-        source_path = self._source_path()
+        source_path = self._source_path(name)
         if source_path is None:
             return None
         import tokenize
@@ -407,7 +410,7 @@ class _PyFileLoader(object):
         The returned path is used by 'compile' for error messages.
 
         """
-        source_path = self._source_path()
+        source_path = self.source_path(fullname)
         if source_path is None:
             return None
         with closing(_fileio._FileIO(source_path, 'r')) as bytes_file:
@@ -422,7 +425,7 @@ class _PyFileLoader(object):
         the module. Returns None if there is no bytecode.
 
         """
-        path = self._bytecode_path()
+        path = self.bytecode_path(name)
         if path is None:
             return None
         file = _fileio._FileIO(path, 'r')
@@ -443,7 +446,7 @@ class _PyFileLoader(object):
         cannot be handled by the loader.
 
         """
-        bytecode_path = self._bytecode_path()
+        bytecode_path = self.bytecode_path(name)
         if not bytecode_path:
             bytecode_path = self._base_path + suffix_list(imp.PY_COMPILED)[0]
         file = _fileio._FileIO(bytecode_path, 'w')