dcicutils 8.8.4.1b11__py3-none-any.whl → 8.8.4.1b13__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 +13 -4
- dcicutils/tmpfile_utils.py +25 -13
- {dcicutils-8.8.4.1b11.dist-info → dcicutils-8.8.4.1b13.dist-info}/METADATA +1 -1
- {dcicutils-8.8.4.1b11.dist-info → dcicutils-8.8.4.1b13.dist-info}/RECORD +7 -7
- {dcicutils-8.8.4.1b11.dist-info → dcicutils-8.8.4.1b13.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.8.4.1b11.dist-info → dcicutils-8.8.4.1b13.dist-info}/WHEEL +0 -0
- {dcicutils-8.8.4.1b11.dist-info → dcicutils-8.8.4.1b13.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,
|
@@ -101,9 +103,15 @@ def are_files_equal(filea: str, fileb: str) -> bool:
|
|
101
103
|
return False
|
102
104
|
|
103
105
|
|
104
|
-
def create_random_file(file: Optional[str] = None,
|
105
|
-
prefix: Optional[str] = None, suffix: Optional[str] = None,
|
106
|
+
def create_random_file(file: Optional[str] = None, prefix: Optional[str] = None, suffix: Optional[str] = None,
|
106
107
|
nbytes: int = 1024, binary: bool = False, line_length: Optional[int] = None) -> str:
|
108
|
+
"""
|
109
|
+
Write to the given file (name/path) some random content. If the given file is None then writes
|
110
|
+
to a temporary file. In either case, returns the file written to. The of bytes written is 1024
|
111
|
+
by default be can be specified with the nbytes argument; default to writing ASCII text but if
|
112
|
+
the binary argument is True then writes binary data as well; if not binary the content is in
|
113
|
+
lines of 80 characters each; use the line_length argumetn in this case to change the line length.
|
114
|
+
"""
|
107
115
|
if not isinstance(nbytes, int) or nbytes < 0:
|
108
116
|
nbytes = 0
|
109
117
|
if not isinstance(file, str) or not file:
|
@@ -111,7 +119,8 @@ def create_random_file(file: Optional[str] = None,
|
|
111
119
|
prefix = ""
|
112
120
|
if not isinstance(suffix, str):
|
113
121
|
suffix = ""
|
114
|
-
file =
|
122
|
+
file = f"{datetime.utcnow().strftime('%Y%m%d%H%M%S')}{str(uuid()).replace('-', '')}"
|
123
|
+
file = os.path.join(get_temporary_directory(), file)
|
115
124
|
with open(file, "wb" if binary is True else "w") as f:
|
116
125
|
if binary is True:
|
117
126
|
f.write(os.urandom(nbytes))
|
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
|
@@ -15,14 +18,32 @@ def temporary_directory() -> str:
|
|
15
18
|
|
16
19
|
|
17
20
|
@contextmanager
|
18
|
-
def temporary_file(name: Optional[str] = None, suffix: Optional[str] = None,
|
21
|
+
def temporary_file(name: Optional[str] = None, prefix: Optional[str] = None, suffix: Optional[str] = None,
|
19
22
|
content: Optional[Union[str, bytes, List[str]]] = None) -> str:
|
20
23
|
with temporary_directory() as tmp_directory_name:
|
21
|
-
tmp_file_name =
|
22
|
-
|
24
|
+
tmp_file_name = f"{prefix or ''}{name or tempfile.mktemp(dir='')}{suffix or ''}"
|
25
|
+
tmp_file_path = os.path.join(tmp_directory_name, tmp_file_name)
|
26
|
+
with open(tmp_file_path, "wb" if isinstance(content, bytes) else "w") as tmp_file:
|
23
27
|
if content is not None:
|
24
28
|
tmp_file.write("\n".join(content) if isinstance(content, list) else content)
|
25
|
-
yield
|
29
|
+
yield tmp_file_path
|
30
|
+
|
31
|
+
|
32
|
+
def create_temporary_file_name(prefix: Optional[str] = None, suffix: Optional[str] = None) -> str:
|
33
|
+
"""
|
34
|
+
Generates and returns the full path to file within the system temporary directory.
|
35
|
+
"""
|
36
|
+
random_string = f"{datetime.utcnow().strftime('%Y%m%d%H%M%S')}{str(uuid()).replace('-', '')}"
|
37
|
+
tmp_file_name = f"{prefix or ''}{random_string}{suffix or ''}"
|
38
|
+
return os.path.join(tempfile.gettempdir(), tmp_file_name)
|
39
|
+
|
40
|
+
|
41
|
+
@contextmanager
|
42
|
+
def temporary_random_file(prefix: Optional[str] = None, suffix: Optional[str] = None,
|
43
|
+
nbytes: int = 1024, binary: bool = False, line_length: Optional[int] = None) -> str:
|
44
|
+
with temporary_file(prefix=prefix, suffix=suffix) as tmp_file_path:
|
45
|
+
create_random_file(tmp_file_path, nbytes=nbytes, binary=binary, line_length=line_length)
|
46
|
+
yield tmp_file_path
|
26
47
|
|
27
48
|
|
28
49
|
def remove_temporary_directory(tmp_directory_name: str) -> None:
|
@@ -39,15 +60,6 @@ def remove_temporary_directory(tmp_directory_name: str) -> None:
|
|
39
60
|
shutil.rmtree(tmp_directory_name)
|
40
61
|
|
41
62
|
|
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
63
|
def remove_temporary_file(tmp_file_name: str) -> bool:
|
52
64
|
"""
|
53
65
|
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=vPPFiGK5scq7opVQ_Ne8eeTAjy5OtSxyAgeJUievygQ,6283
|
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=KB7481xY3RTaMvAV9dK0Oz_ZHFG1e56ieYBHX5SYZzI,3019
|
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.1b13.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
77
|
+
dcicutils-8.8.4.1b13.dist-info/METADATA,sha256=gPRDYcqVxkYQNNEWUBaES-znrDZQhf-BT2Ie5ooqFwU,3397
|
78
|
+
dcicutils-8.8.4.1b13.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
79
|
+
dcicutils-8.8.4.1b13.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
|
80
|
+
dcicutils-8.8.4.1b13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|