dcicutils 8.8.4.1b12__py3-none-any.whl → 8.8.4.1b15__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 +8 -2
- dcicutils/misc_utils.py +7 -0
- dcicutils/tmpfile_utils.py +9 -8
- {dcicutils-8.8.4.1b12.dist-info → dcicutils-8.8.4.1b15.dist-info}/METADATA +4 -3
- {dcicutils-8.8.4.1b12.dist-info → dcicutils-8.8.4.1b15.dist-info}/RECORD +8 -8
- {dcicutils-8.8.4.1b12.dist-info → dcicutils-8.8.4.1b15.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.8.4.1b12.dist-info → dcicutils-8.8.4.1b15.dist-info}/WHEEL +0 -0
- {dcicutils-8.8.4.1b12.dist-info → dcicutils-8.8.4.1b15.dist-info}/entry_points.txt +0 -0
dcicutils/file_utils.py
CHANGED
@@ -103,9 +103,15 @@ def are_files_equal(filea: str, fileb: str) -> bool:
|
|
103
103
|
return False
|
104
104
|
|
105
105
|
|
106
|
-
def create_random_file(file: Optional[str] = None,
|
107
|
-
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,
|
108
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
|
+
"""
|
109
115
|
if not isinstance(nbytes, int) or nbytes < 0:
|
110
116
|
nbytes = 0
|
111
117
|
if not isinstance(file, str) or not file:
|
dcicutils/misc_utils.py
CHANGED
@@ -19,6 +19,7 @@ import pytz
|
|
19
19
|
import re
|
20
20
|
import rfc3986.validators
|
21
21
|
import rfc3986.exceptions
|
22
|
+
import shortuuid
|
22
23
|
import time
|
23
24
|
import uuid
|
24
25
|
import warnings
|
@@ -2698,3 +2699,9 @@ def get_cpu_architecture_name() -> str:
|
|
2698
2699
|
if os_architecture_name == "x86_64": return "amd64" # noqa
|
2699
2700
|
return os_architecture_name
|
2700
2701
|
return ""
|
2702
|
+
|
2703
|
+
|
2704
|
+
def short_uuid(length: Optional[int] = None):
|
2705
|
+
if (length is None) or (not isinstance(length, int)) or (length < 1):
|
2706
|
+
length = 16
|
2707
|
+
return shortuuid.ShortUUID().random(length=length)
|
dcicutils/tmpfile_utils.py
CHANGED
@@ -18,30 +18,31 @@ def temporary_directory() -> str:
|
|
18
18
|
|
19
19
|
|
20
20
|
@contextmanager
|
21
|
-
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,
|
22
22
|
content: Optional[Union[str, bytes, List[str]]] = None) -> str:
|
23
23
|
with temporary_directory() as tmp_directory_name:
|
24
|
-
tmp_file_name =
|
25
|
-
|
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:
|
26
27
|
if content is not None:
|
27
28
|
tmp_file.write("\n".join(content) if isinstance(content, list) else content)
|
28
|
-
yield
|
29
|
+
yield tmp_file_path
|
29
30
|
|
30
31
|
|
31
32
|
def create_temporary_file_name(prefix: Optional[str] = None, suffix: Optional[str] = None) -> str:
|
32
33
|
"""
|
33
34
|
Generates and returns the full path to file within the system temporary directory.
|
34
35
|
"""
|
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 ''}"
|
36
38
|
return os.path.join(tempfile.gettempdir(), tmp_file_name)
|
37
39
|
|
38
40
|
|
39
41
|
@contextmanager
|
40
42
|
def temporary_random_file(prefix: Optional[str] = None, suffix: Optional[str] = None,
|
41
43
|
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,
|
44
|
-
nbytes=nbytes, binary=binary, line_length=line_length)
|
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)
|
45
46
|
yield tmp_file_path
|
46
47
|
|
47
48
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dcicutils
|
3
|
-
Version: 8.8.4.
|
3
|
+
Version: 8.8.4.1b15
|
4
4
|
Summary: Utility package for interacting with the 4DN Data Portal and other 4DN resources
|
5
5
|
Home-page: https://github.com/4dn-dcic/utils
|
6
6
|
License: MIT
|
@@ -26,8 +26,8 @@ Requires-Dist: PyJWT (>=2.6.0,<3.0.0)
|
|
26
26
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
27
27
|
Requires-Dist: appdirs (>=1.4.4,<2.0.0)
|
28
28
|
Requires-Dist: aws-requests-auth (>=0.4.2,<1)
|
29
|
-
Requires-Dist: boto3 (>=1.34.
|
30
|
-
Requires-Dist: botocore (>=1.34.
|
29
|
+
Requires-Dist: boto3 (>=1.34.93,<2.0.0)
|
30
|
+
Requires-Dist: botocore (>=1.34.93,<2.0.0)
|
31
31
|
Requires-Dist: chardet (>=5.2.0,<6.0.0)
|
32
32
|
Requires-Dist: docker (>=4.4.4,<5.0.0)
|
33
33
|
Requires-Dist: elasticsearch (==7.13.4)
|
@@ -43,6 +43,7 @@ Requires-Dist: pytz (>=2020.4)
|
|
43
43
|
Requires-Dist: redis (>=4.5.1,<5.0.0)
|
44
44
|
Requires-Dist: requests (>=2.21.0,<3.0.0)
|
45
45
|
Requires-Dist: rfc3986 (>=1.4.0,<2.0.0)
|
46
|
+
Requires-Dist: shortuuid (>=1.0.13,<2.0.0)
|
46
47
|
Requires-Dist: structlog (>=19.2.0,<20.0.0)
|
47
48
|
Requires-Dist: toml (>=0.10.1,<1)
|
48
49
|
Requires-Dist: tqdm (>=4.66.2,<5.0.0)
|
@@ -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
|
@@ -44,7 +44,7 @@ dcicutils/license_policies/park-lab-gpl-pipeline.jsonc,sha256=vLZkwm3Js-kjV44nug
|
|
44
44
|
dcicutils/license_policies/park-lab-pipeline.jsonc,sha256=9qlY0ASy3iUMQlr3gorVcXrSfRHnVGbLhkS427UaRy4,283
|
45
45
|
dcicutils/license_utils.py,sha256=d1cq6iwv5Ju-VjdoINi6q7CPNNL7Oz6rcJdLMY38RX0,46978
|
46
46
|
dcicutils/log_utils.py,sha256=7pWMc6vyrorUZQf-V-M3YC6zrPgNhuV_fzm9xqTPph0,10883
|
47
|
-
dcicutils/misc_utils.py,sha256=
|
47
|
+
dcicutils/misc_utils.py,sha256=eVZ3lEkDebweKCeza2GIo7x3qEqqkj61Ilr17eMFlR0,105744
|
48
48
|
dcicutils/obfuscation_utils.py,sha256=fo2jOmDRC6xWpYX49u80bVNisqRRoPskFNX3ymFAmjw,5963
|
49
49
|
dcicutils/opensearch_utils.py,sha256=V2exmFYW8Xl2_pGFixF4I2Cc549Opwe4PhFi5twC0M8,1017
|
50
50
|
dcicutils/portal_object_utils.py,sha256=gDXRgPsRvqCFwbC8WatsuflAxNiigOnqr0Hi93k3AgE,15422
|
@@ -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.1b15.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
77
|
+
dcicutils-8.8.4.1b15.dist-info/METADATA,sha256=-eKROBZs2uM-7YOnS8nHPkO9U1nHnRz5UJhZYU9svgQ,3440
|
78
|
+
dcicutils-8.8.4.1b15.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
79
|
+
dcicutils-8.8.4.1b15.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
|
80
|
+
dcicutils-8.8.4.1b15.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|