Skip to content

Commit

Permalink
Merge pull request #3322 from yyyyuki/fix-rename
Browse files Browse the repository at this point in the history
Replace os.rename with os.replace
  • Loading branch information
dlstadther authored Nov 22, 2024
2 parents 172128c + 61996db commit b1d3ca3
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 8 deletions.
2 changes: 1 addition & 1 deletion luigi/contrib/ftp.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ def get(self, path, local_path):

self._close()

os.rename(tmp_local_path, local_path)
os.replace(tmp_local_path, local_path)

def _sftp_get(self, path, tmp_local_path):
self.conn.get(path, tmp_local_path)
Expand Down
2 changes: 1 addition & 1 deletion luigi/contrib/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ def get(self, path, local_path):

tmp_local_path = local_path + '-luigi-tmp-%09d' % random.randrange(0, 10_000_000_000)
self._scp("%s:%s" % (self.remote_context._host_ref(), path), tmp_local_path)
os.rename(tmp_local_path, local_path)
os.replace(tmp_local_path, local_path)


class AtomicRemoteFileWriter(luigi.format.OutputPipeProcessWrapper):
Expand Down
6 changes: 3 additions & 3 deletions luigi/local_target.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class atomic_file(AtomicLocalFile):
"""

def move_to_final_destination(self):
os.rename(self.tmp_path, self.path)
os.replace(self.tmp_path, self.path)

def generate_tmp_path(self, path):
return path + '-luigi-tmp-%09d' % random.randrange(0, 10_000_000_000)
Expand Down Expand Up @@ -109,12 +109,12 @@ def move(self, old_path, new_path, raise_if_exists=False):
if d and not os.path.exists(d):
self.mkdir(d)
try:
os.rename(old_path, new_path)
os.replace(old_path, new_path)
except OSError as err:
if err.errno == errno.EXDEV:
new_path_tmp = '%s-%09d' % (new_path, random.randint(0, 999999999))
shutil.copy(old_path, new_path_tmp)
os.rename(new_path_tmp, new_path)
os.replace(new_path_tmp, new_path)
os.remove(old_path)
else:
raise err
Expand Down
6 changes: 3 additions & 3 deletions test/local_target_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,16 +152,16 @@ def rename_across_filesystems(src, dst):
err.errno = EXDEV
raise err

real_rename = os.rename
real_rename = os.replace

def mockrename(src, dst):
def mockreplace(src, dst):
if '-across-fs' in src:
real_rename(src, dst)
else:
rename_across_filesystems(src, dst)

copy = '%s-across-fs' % self.copy
with mock.patch('os.rename', mockrename):
with mock.patch('os.replace', mockreplace):
t.move(copy)

self.assertFalse(os.path.exists(self.path))
Expand Down

0 comments on commit b1d3ca3

Please sign in to comment.