Skip to content

Commit cab9c74

Browse files
committed
Use os.replace in Python 3.
1 parent 4728a8f commit cab9c74

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/pip/_internal/utils/filesystem.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
# NOTE: retrying is not annotated in typeshed as on 2017-07-17, which is
99
# why we ignore the type on this import.
1010
from pip._vendor.retrying import retry # type: ignore
11+
from pip._vendor.six import PY2
1112

1213
from pip._internal.utils.compat import get_path_uid
1314
from pip._internal.utils.misc import cast
@@ -98,11 +99,17 @@ def adjacent_tmp_file(path):
9899
os.fsync(result.file.fileno())
99100

100101

101-
@retry(stop_max_delay=1000, wait_fixed=250)
102-
def replace(src, dest):
103-
# type: (str, str) -> None
104-
try:
105-
os.rename(src, dest)
106-
except OSError:
107-
os.remove(dest)
108-
os.rename(src, dest)
102+
_replace_retry = retry(stop_max_delay=1000, wait_fixed=250)
103+
104+
if PY2:
105+
@_replace_retry
106+
def replace(src, dest):
107+
# type: (str, str) -> None
108+
try:
109+
os.rename(src, dest)
110+
except OSError:
111+
os.remove(dest)
112+
os.rename(src, dest)
113+
114+
else:
115+
replace = _replace_retry(os.replace)

0 commit comments

Comments
 (0)