diff options
author | Brett Cannon <bcannon@gmail.com> | 2009-02-01 05:43:31 (GMT) |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2009-02-01 05:43:31 (GMT) |
commit | ba96f0f89a4ea4346840a6d65c7098e1dc3d440d (patch) | |
tree | 77a0a185b854c987cd098457643a2a55af901c97 | |
parent | 51c502689cb174016364f0b8f2a75efa0de090f3 (diff) | |
download | cpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.zip cpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.tar.gz cpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.tar.bz2 |
Ditch read_source() and read_bytecode() and replace with *_path() and
get_data().
-rw-r--r-- | Lib/importlib/NOTES | 1 | ||||
-rw-r--r-- | Lib/importlib/_bootstrap.py | 47 |
2 files changed, 8 insertions, 40 deletions
diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES index 089fef7..7e785ff 100644 --- a/Lib/importlib/NOTES +++ b/Lib/importlib/NOTES @@ -3,7 +3,6 @@ to do * API simplification? - + Use *_path() along with get_data + write_bytecode -> complete set of bytes for bytecode instead of individual arguments. diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index da24291..f39f733 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -403,40 +403,6 @@ class _PyFileLoader(object): return open(source_path, encoding=encoding).read() @check_name - def read_source(self, fullname): - """Return the source for the specified module as bytes along with the - path where the source came from. - - The returned path is used by 'compile' for error messages. - - """ - source_path = self.source_path(fullname) - if source_path is None: - return None - with closing(_fileio._FileIO(source_path, 'r')) as bytes_file: - return bytes_file.read(), source_path - - @check_name - def read_bytecode(self, name): - """Return the magic number, timestamp, and the module bytecode for the - module. - - Raises ImportError (just like get_source) if the laoder cannot handle - the module. Returns None if there is no bytecode. - - """ - path = self.bytecode_path(name) - if path is None: - return None - file = _fileio._FileIO(path, 'r') - try: - with closing(file) as bytecode_file: - data = bytecode_file.read() - return data[:4], marshal._r_long(data[4:8]), data[8:] - except AttributeError: - return None - - @check_name def write_bytecode(self, name, magic, timestamp, data): """Write out 'data' for the specified module using the specific timestamp, returning a boolean @@ -462,7 +428,6 @@ class _PyFileLoader(object): else: raise - # XXX Take an optional argument to flag whether to write bytecode? @check_name def get_code(self, name): """Return the code object for the module. @@ -492,9 +457,12 @@ class _PyFileLoader(object): # number is bad? source_timestamp = self.source_mtime(name) # Try to use bytecode if it is available. - bytecode_tuple = self.read_bytecode(name) - if bytecode_tuple: - magic, pyc_timestamp, bytecode = bytecode_tuple + bytecode_path = self.bytecode_path(name) + if bytecode_path: + data = self.get_data(bytecode_path) + magic = data[:4] + pyc_timestamp = marshal._r_long(data[4:8]) + bytecode = data[8:] try: # Verify that the magic number is valid. if imp.get_magic() != magic: @@ -519,7 +487,8 @@ class _PyFileLoader(object): raise ImportError("no source or bytecode available to create code " "object for {0!r}".format(name)) # Use the source. - source, source_path = self.read_source(name) + source_path = self.source_path(name) + source = self.get_data(source_path) # Convert to universal newlines. line_endings = b'\n' for index, c in enumerate(source): |