[Python-checkins] cpython (merge 3.6 -> default): Issue #28764: Merge 3.6.
xavier.degaye
python-checkins at python.org
Mon Dec 12 03:57:29 EST 2016
https://hg.python.org/cpython/rev/3a451c67008d
changeset: 105596:3a451c67008d
parent: 105594:402a227564f5
parent: 105595:51573ef25903
user: Xavier de Gaye <xdegaye at users.sourceforge.net>
date: Mon Dec 12 09:56:55 2016 +0100
summary:
Issue #28764: Merge 3.6.
files:
Lib/mailbox.py | 21 ++++++++++++---------
Lib/test/test_mailbox.py | 4 ++--
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -313,11 +313,12 @@
# final position in order to prevent race conditions with changes
# from other programs
try:
- if hasattr(os, 'link'):
+ try:
os.link(tmp_file.name, dest)
+ except (AttributeError, PermissionError):
+ os.rename(tmp_file.name, dest)
+ else:
os.remove(tmp_file.name)
- else:
- os.rename(tmp_file.name, dest)
except OSError as e:
os.remove(tmp_file.name)
if e.errno == errno.EEXIST:
@@ -1200,13 +1201,14 @@
for key in self.iterkeys():
if key - 1 != prev:
changes.append((key, prev + 1))
- if hasattr(os, 'link'):
+ try:
os.link(os.path.join(self._path, str(key)),
os.path.join(self._path, str(prev + 1)))
- os.unlink(os.path.join(self._path, str(key)))
- else:
+ except (AttributeError, PermissionError):
os.rename(os.path.join(self._path, str(key)),
os.path.join(self._path, str(prev + 1)))
+ else:
+ os.unlink(os.path.join(self._path, str(key)))
prev += 1
self._next_key = prev + 1
if len(changes) == 0:
@@ -2076,13 +2078,14 @@
else:
raise
try:
- if hasattr(os, 'link'):
+ try:
os.link(pre_lock.name, f.name + '.lock')
dotlock_done = True
- os.unlink(pre_lock.name)
- else:
+ except (AttributeError, PermissionError):
os.rename(pre_lock.name, f.name + '.lock')
dotlock_done = True
+ else:
+ os.unlink(pre_lock.name)
except FileExistsError:
os.remove(pre_lock.name)
raise ExternalClashError('dot lock unavailable: %s' %
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -2137,9 +2137,9 @@
if mbox:
fp.write(FROM_)
fp.write(DUMMY_MESSAGE)
- if hasattr(os, "link"):
+ try:
os.link(tmpname, newname)
- else:
+ except (AttributeError, PermissionError):
with open(newname, "w") as fp:
fp.write(DUMMY_MESSAGE)
self._msgfiles.append(newname)
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list