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.
This commit is contained in:
Brett Cannon 2012-08-24 13:48:39 -04:00
parent 07c6e71689
commit ba0a3edd26
2 changed files with 1894 additions and 1899 deletions

View File

@ -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

File diff suppressed because it is too large Load Diff