diff options
author | Brett Cannon <brett@python.org> | 2012-08-24 17:48:39 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-08-24 17:48:39 (GMT) |
commit | ba0a3edd26bce7abf435ac4103b707e8ea1c3e7e (patch) | |
tree | 4a57a224b57baa5da25ddbf263615f39e15c7163 /Lib/importlib | |
parent | 07c6e7168919c275e47fa35c741413270d3d80fd (diff) | |
download | cpython-ba0a3edd26bce7abf435ac4103b707e8ea1c3e7e.zip cpython-ba0a3edd26bce7abf435ac4103b707e8ea1c3e7e.tar.gz cpython-ba0a3edd26bce7abf435ac4103b707e8ea1c3e7e.tar.bz2 |
Issue #2051: Tweak last commit for this issue to pass in mode instead
of source path to set_data() and make the new argument private until
possible API changes can be discussed more thoroughly in Python 3.4.
Diffstat (limited to 'Lib/importlib')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 6bd6c09..861900c 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1042,9 +1042,13 @@ class SourceFileLoader(FileLoader, SourceLoader): def _cache_bytecode(self, source_path, bytecode_path, data): # Adapt between the two APIs - return self.set_data(bytecode_path, data, source_path=source_path) + try: + mode = _os.stat(source_path).st_mode + except OSError: + mode = 0o666 + return self.set_data(bytecode_path, data, _mode=mode) - def set_data(self, path, data, *, source_path=None): + def set_data(self, path, data, *, _mode=0o666): """Write bytes data to a file.""" parent, filename = _path_split(path) path_parts = [] @@ -1064,14 +1068,8 @@ class SourceFileLoader(FileLoader, SourceLoader): # If can't get proper access, then just forget about writing # the data. return - mode = 0o666 - if source_path is not None: - try: - mode = _os.stat(source_path).st_mode - except OSError: - pass try: - _write_atomic(path, data, mode) + _write_atomic(path, data, _mode) _verbose_message('created {!r}', path) except (PermissionError, FileExistsError): # Don't worry if you can't write bytecode or someone is writing |