dcicutils 8.8.4.1b10__py3-none-any.whl → 8.8.4.1b12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dcicutils/file_utils.py +12 -7
- dcicutils/tmpfile_utils.py +20 -9
- {dcicutils-8.8.4.1b10.dist-info → dcicutils-8.8.4.1b12.dist-info}/METADATA +1 -1
- {dcicutils-8.8.4.1b10.dist-info → dcicutils-8.8.4.1b12.dist-info}/RECORD +7 -7
- {dcicutils-8.8.4.1b10.dist-info → dcicutils-8.8.4.1b12.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.8.4.1b10.dist-info → dcicutils-8.8.4.1b12.dist-info}/WHEEL +0 -0
- {dcicutils-8.8.4.1b10.dist-info → dcicutils-8.8.4.1b12.dist-info}/entry_points.txt +0 -0
dcicutils/file_utils.py
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
import glob
|
2
2
|
import os
|
3
3
|
import pathlib
|
4
|
+
from datetime import datetime
|
4
5
|
import random
|
5
6
|
import string
|
7
|
+
from tempfile import gettempdir as get_temporary_directory
|
6
8
|
from typing import List, Optional, Union
|
7
|
-
from
|
9
|
+
from uuid import uuid4 as uuid
|
8
10
|
|
9
11
|
|
10
12
|
def search_for_file(file: str,
|
@@ -103,7 +105,7 @@ def are_files_equal(filea: str, fileb: str) -> bool:
|
|
103
105
|
|
104
106
|
def create_random_file(file: Optional[str] = None,
|
105
107
|
prefix: Optional[str] = None, suffix: Optional[str] = None,
|
106
|
-
nbytes: int = 1024, binary: bool = False) -> str:
|
108
|
+
nbytes: int = 1024, binary: bool = False, line_length: Optional[int] = None) -> str:
|
107
109
|
if not isinstance(nbytes, int) or nbytes < 0:
|
108
110
|
nbytes = 0
|
109
111
|
if not isinstance(file, str) or not file:
|
@@ -111,16 +113,19 @@ def create_random_file(file: Optional[str] = None,
|
|
111
113
|
prefix = ""
|
112
114
|
if not isinstance(suffix, str):
|
113
115
|
suffix = ""
|
114
|
-
file =
|
116
|
+
file = f"{datetime.utcnow().strftime('%Y%m%d%H%M%S')}{str(uuid()).replace('-', '')}"
|
117
|
+
file = os.path.join(get_temporary_directory(), file)
|
115
118
|
with open(file, "wb" if binary is True else "w") as f:
|
116
119
|
if binary is True:
|
117
120
|
f.write(os.urandom(nbytes))
|
118
121
|
else:
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
+
if (not isinstance(line_length, int)) or (line_length < 1):
|
123
|
+
line_length = 80
|
124
|
+
line_length += 1
|
125
|
+
nlines = nbytes // line_length
|
126
|
+
nremainder = nbytes % line_length
|
122
127
|
for n in range(nlines):
|
123
|
-
f.write("".join(random.choices(string.ascii_letters + string.digits, k=
|
128
|
+
f.write("".join(random.choices(string.ascii_letters + string.digits, k=line_length - 1)))
|
124
129
|
f.write("\n")
|
125
130
|
if nremainder > 1:
|
126
131
|
f.write("".join(random.choices(string.ascii_letters + string.digits, k=nremainder - 1)))
|
dcicutils/tmpfile_utils.py
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
from contextlib import contextmanager
|
2
|
+
from datetime import datetime
|
2
3
|
import os
|
3
4
|
import shutil
|
4
5
|
import tempfile
|
6
|
+
from uuid import uuid4 as uuid
|
5
7
|
from typing import List, Optional, Union
|
8
|
+
from dcicutils.file_utils import create_random_file
|
6
9
|
|
7
10
|
|
8
11
|
@contextmanager
|
@@ -25,6 +28,23 @@ def temporary_file(name: Optional[str] = None, suffix: Optional[str] = None,
|
|
25
28
|
yield tmp_file_name
|
26
29
|
|
27
30
|
|
31
|
+
def create_temporary_file_name(prefix: Optional[str] = None, suffix: Optional[str] = None) -> str:
|
32
|
+
"""
|
33
|
+
Generates and returns the full path to file within the system temporary directory.
|
34
|
+
"""
|
35
|
+
tmp_file_name = f"{datetime.utcnow().strftime('%Y%m%d%H%M%S')}{str(uuid()).replace('-', '')}"
|
36
|
+
return os.path.join(tempfile.gettempdir(), tmp_file_name)
|
37
|
+
|
38
|
+
|
39
|
+
@contextmanager
|
40
|
+
def temporary_random_file(prefix: Optional[str] = None, suffix: Optional[str] = None,
|
41
|
+
nbytes: int = 1024, binary: bool = False, line_length: Optional[int] = None) -> str:
|
42
|
+
with temporary_file() as tmp_file_path:
|
43
|
+
create_random_file(tmp_file_path, prefix=prefix, suffix=suffix,
|
44
|
+
nbytes=nbytes, binary=binary, line_length=line_length)
|
45
|
+
yield tmp_file_path
|
46
|
+
|
47
|
+
|
28
48
|
def remove_temporary_directory(tmp_directory_name: str) -> None:
|
29
49
|
"""
|
30
50
|
Removes the given directory, recursively; but ONLY if it is (somewhere) within the system temporary directory.
|
@@ -39,15 +59,6 @@ def remove_temporary_directory(tmp_directory_name: str) -> None:
|
|
39
59
|
shutil.rmtree(tmp_directory_name)
|
40
60
|
|
41
61
|
|
42
|
-
def create_temporary_file_name(prefix: Optional[str] = None, suffix: Optional[str] = None) -> str:
|
43
|
-
"""
|
44
|
-
Generates and returns the full path to file within the system temporary directory.
|
45
|
-
"""
|
46
|
-
with tempfile.NamedTemporaryFile(prefix=prefix, suffix=suffix, delete=False) as tmp_file:
|
47
|
-
tmp_file_name = tmp_file.name
|
48
|
-
return tmp_file_name
|
49
|
-
|
50
|
-
|
51
62
|
def remove_temporary_file(tmp_file_name: str) -> bool:
|
52
63
|
"""
|
53
64
|
Removes the given file; but ONLY if it is (somewhere) within the system temporary directory.
|
@@ -28,7 +28,7 @@ dcicutils/es_utils.py,sha256=ZksLh5ei7kRUfiFltk8sd2ZSfh15twbstrMzBr8HNw4,7541
|
|
28
28
|
dcicutils/exceptions.py,sha256=4giQGtpak-omQv7BP6Ckeu91XK5fnDosC8gfdmN_ccA,9931
|
29
29
|
dcicutils/ff_mocks.py,sha256=6RKS4eUiu_Wl8yP_8V0CaV75w4ZdWxdCuL1CVlnMrek,36918
|
30
30
|
dcicutils/ff_utils.py,sha256=oIhuZPnGtfwj6bWyCc1u23JbMB_6InPp01ZqUOljd8M,73123
|
31
|
-
dcicutils/file_utils.py,sha256=
|
31
|
+
dcicutils/file_utils.py,sha256=JPM5bo871RpO7-hSTmckomTUpb5Zd21CzqktJadi_Cw,5795
|
32
32
|
dcicutils/function_cache_decorator.py,sha256=XMyiEGODVr2WoAQ68vcoX_9_Xb9p8pZXdXl7keU8i2g,10026
|
33
33
|
dcicutils/glacier_utils.py,sha256=Q4CVXsZCbP-SoZIsZ5NMcawDfelOLzbQnIlQn-GdlTo,34149
|
34
34
|
dcicutils/http_utils.py,sha256=RB0x9hRMZM9Xd1x00c5J0iUzUdYzIQR0XKFiQ94HWO0,807
|
@@ -68,13 +68,13 @@ dcicutils/structured_data.py,sha256=BQuIMv6OPySsn6YxtXE2Er-zLE2QJuCYhEQ3V0u_UXY,
|
|
68
68
|
dcicutils/submitr/progress_constants.py,sha256=5bxyX77ql8qEJearfHEvsvXl7D0GuUODW0T65mbRmnE,2895
|
69
69
|
dcicutils/submitr/ref_lookup_strategy.py,sha256=Js2cVznTmgjciLWBPLCvMiwLIHXjDn3jww-gJPjYuFw,3467
|
70
70
|
dcicutils/task_utils.py,sha256=MF8ujmTD6-O2AC2gRGPHyGdUrVKgtr8epT5XU8WtNjk,8082
|
71
|
-
dcicutils/tmpfile_utils.py,sha256=
|
71
|
+
dcicutils/tmpfile_utils.py,sha256=AU1B2_iE_WmTAqXUokGc44NmPG7Zj_gf2FDTFByes2Q,2897
|
72
72
|
dcicutils/trace_utils.py,sha256=g8kwV4ebEy5kXW6oOrEAUsurBcCROvwtZqz9fczsGRE,1769
|
73
73
|
dcicutils/validation_utils.py,sha256=cMZIU2cY98FYtzK52z5WUYck7urH6JcqOuz9jkXpqzg,14797
|
74
74
|
dcicutils/variant_utils.py,sha256=2H9azNx3xAj-MySg-uZ2SFqbWs4kZvf61JnK6b-h4Qw,4343
|
75
75
|
dcicutils/zip_utils.py,sha256=_Y9EmL3D2dUZhxucxHvrtmmlbZmK4FpSsHEb7rGSJLU,3265
|
76
|
-
dcicutils-8.8.4.
|
77
|
-
dcicutils-8.8.4.
|
78
|
-
dcicutils-8.8.4.
|
79
|
-
dcicutils-8.8.4.
|
80
|
-
dcicutils-8.8.4.
|
76
|
+
dcicutils-8.8.4.1b12.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
77
|
+
dcicutils-8.8.4.1b12.dist-info/METADATA,sha256=gzkj0v2tEtiiYCs4-1M5eUBEO-h7ObOIE0IcnbumBFQ,3397
|
78
|
+
dcicutils-8.8.4.1b12.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
79
|
+
dcicutils-8.8.4.1b12.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
|
80
|
+
dcicutils-8.8.4.1b12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|