Skip to content

Commit 18c0daf

Browse files
authored
feat: Dist utils is obsolete. Replace with shutil (#118)
* feat: add AUDIT log level for upload * chore: update outdated tests * fix: allow empty str as RESULT_PATH_PREFIX & replace w/ default val * fix: allowing optional original stac item * feat: switch distutils with shutil
1 parent 9a4b308 commit 18c0daf

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

mdps_ds_lib/lib/utils/file_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import zlib
2121
from functools import partial
2222
from pathlib import Path
23+
from shutil import copytree
2324
from subprocess import Popen, PIPE
24-
from distutils.dir_util import copy_tree
2525

2626

2727
class FileUtils:
@@ -45,8 +45,8 @@ def mk_dir_p(dir_path):
4545
return
4646

4747
@staticmethod
48-
def copy_dir(source_dir, dest_dir):
49-
copy_tree(source_dir, dest_dir)
48+
def copy_dir(source_dir, dest_dir, overwrite=False):
49+
copytree(source_dir, dest_dir, dirs_exist_ok=overwrite)
5050
return
5151

5252
@staticmethod

tests/mdps_ds_lib/lib/utils/test_file_utils.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import os
2+
import tempfile
3+
from glob import glob
14
from unittest import TestCase
25

36
from mdps_ds_lib.lib.utils.file_utils import FileUtils
@@ -14,3 +17,35 @@ def test_is_relative_path(self):
1417
self.assertTrue(FileUtils.is_relative_path('./test'))
1518
self.assertTrue(FileUtils.is_relative_path('../test'))
1619
return
20+
21+
def test_copy_dir(self):
22+
with tempfile.TemporaryDirectory() as tmp_dir_name:
23+
src_dir = os.path.join(tmp_dir_name, 'src_dir')
24+
dest_dir1 = os.path.join(tmp_dir_name, 'dest_dir1')
25+
dest_dir2 = os.path.join(tmp_dir_name, 'dest_dir2')
26+
27+
src_dir1 = os.path.join(tmp_dir_name, 'src_dir', 'child1')
28+
src_dir2 = os.path.join(tmp_dir_name, 'src_dir', 'child2', 'g-child1')
29+
dest_dir22 = os.path.join(tmp_dir_name, 'dest_dir2', 'child2', 'g-child1')
30+
FileUtils.mk_dir_p(src_dir1)
31+
FileUtils.mk_dir_p(src_dir2)
32+
FileUtils.mk_dir_p(dest_dir22)
33+
34+
FileUtils.write_json(os.path.join(src_dir1, 'test1.json'), {'test': 1}, True, False, True)
35+
FileUtils.write_json(os.path.join(src_dir2, 'test2.json'), {'test': 1}, True, False, True)
36+
FileUtils.write_json(os.path.join(src_dir2, 'test3.json'), {'test': 1}, True, False, True)
37+
FileUtils.write_json(os.path.join(dest_dir22, 'test3.json'), {'test': 100}, True, False, True)
38+
FileUtils.write_json(os.path.join(dest_dir22, 'test4.json'), {'test': 88}, True, False, True)
39+
40+
FileUtils.copy_dir(src_dir, dest_dir1)
41+
FileUtils.copy_dir(src_dir, dest_dir2, True)
42+
43+
result = [k for k in glob(os.path.join(dest_dir1, '**/*'), recursive=True)]
44+
print(len(result), 6, f'wrong length: {result}')
45+
result = [k for k in glob(os.path.join(dest_dir2, '**/*'), recursive=True)]
46+
print(len(result), 7, f'wrong length: {result}')
47+
48+
with self.assertRaises(FileExistsError) as cm:
49+
FileUtils.copy_dir(src_dir, dest_dir2)
50+
51+
return

0 commit comments

Comments
 (0)