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 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)
@@ -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 = os.path.join(tmp_directory_name, name or tempfile.mktemp(dir="")) + (suffix or "")
25
- with open(tmp_file_name, "wb" if isinstance(content, bytes) else "w") as tmp_file:
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 tmp_file_name
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
- tmp_file_name = f"{datetime.utcnow().strftime('%Y%m%d%H%M%S')}{str(uuid()).replace('-', '')}"
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, prefix=prefix, suffix=suffix,
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.1b12
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.90,<2.0.0)
30
- Requires-Dist: botocore (>=1.34.90,<2.0.0)
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=JPM5bo871RpO7-hSTmckomTUpb5Zd21CzqktJadi_Cw,5795
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=Nw47AZs-cSOzGp5TZWrQZftePcahz1yfw6iNwOzUt-s,105530
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=AU1B2_iE_WmTAqXUokGc44NmPG7Zj_gf2FDTFByes2Q,2897
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.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,,
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,,