summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2009-02-01 05:43:31 (GMT)
committerBrett Cannon <bcannon@gmail.com>2009-02-01 05:43:31 (GMT)
commitba96f0f89a4ea4346840a6d65c7098e1dc3d440d (patch)
tree77a0a185b854c987cd098457643a2a55af901c97 /Lib/importlib
parent51c502689cb174016364f0b8f2a75efa0de090f3 (diff)
downloadcpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.zip
cpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.tar.gz
cpython-ba96f0f89a4ea4346840a6d65c7098e1dc3d440d.tar.bz2
Ditch read_source() and read_bytecode() and replace with *_path() and
get_data().
Diffstat (limited to 'Lib/importlib')
-rw-r--r--Lib/importlib/NOTES1
-rw-r--r--Lib/importlib/_bootstrap.py47
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):