dcicutils 8.8.3.1b19__tar.gz → 8.8.3.1b21__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/PKG-INFO +1 -1
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/datetime_utils.py +10 -7
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/progress_bar.py +9 -7
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/pyproject.toml +1 -1
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/LICENSE.txt +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/README.rst +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/__init__.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/base.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/beanstalk_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/bundle_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/captured_output.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/cloudformation_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/codebuild_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/command_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/common.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/contribution_scripts.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/contribution_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/creds_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/data_readers.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/data_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/deployment_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/diff_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/docker_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ecr_scripts.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ecr_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ecs_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/env_base.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/env_manager.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/env_scripts.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/env_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/env_utils_legacy.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/es_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/exceptions.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ff_mocks.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ff_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/file_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/function_cache_decorator.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/glacier_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/jh_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/kibana/dashboards.json +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/kibana/readme.md +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/lang_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/c4-infrastructure.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/c4-python-infrastructure.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-common-server.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-common.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-pipeline.jsonc +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/log_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/misc_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/obfuscation_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/opensearch_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/portal_object_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/portal_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/project_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/qa_checkers.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/qa_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/redis_tools.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/redis_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/s3_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/schema_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/scripts/publish_to_pypi.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/scripts/run_license_checker.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/scripts/view_portal_object.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/secrets_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/sheet_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/snapshot_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/ssl_certificate_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/structured_data.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/submitr/progress_constants.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/submitr/ref_lookup_strategy.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/task_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/tmpfile_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/trace_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/validation_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/variant_utils.py +0 -0
- {dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/zip_utils.py +0 -0
@@ -235,8 +235,8 @@ def format_datetime(value: datetime,
|
|
235
235
|
return value.strftime(f"%Y-%m-%d")
|
236
236
|
else:
|
237
237
|
return value.strftime(f"%Y-%m-%dT%H:%M")
|
238
|
-
tz
|
239
|
-
|
238
|
+
if len(tz := value.strftime("%z")) > 3:
|
239
|
+
tz = tz[:3] + ":" + tz[3:]
|
240
240
|
if nodate is True:
|
241
241
|
return value.strftime(f"%H:%M") + tz
|
242
242
|
elif notime is True:
|
@@ -244,7 +244,11 @@ def format_datetime(value: datetime,
|
|
244
244
|
else:
|
245
245
|
return value.strftime(f"%Y-%m-%dT%H:%M") + tz
|
246
246
|
if nodate is True:
|
247
|
-
|
247
|
+
if (not (notz is True)) and len(tz := value.strftime("%z")) > 3:
|
248
|
+
tz = tz[:3] + ":" + tz[3:]
|
249
|
+
else:
|
250
|
+
tz = ""
|
251
|
+
return value.strftime(f"%H:%M:%S{f'.%f' if ms is True else ''}") + tz
|
248
252
|
elif notime is True:
|
249
253
|
return value.strftime(f"%Y-%m-%d")
|
250
254
|
else:
|
@@ -278,21 +282,20 @@ def format_datetime(value: datetime,
|
|
278
282
|
|
279
283
|
def format_date(value: datetime,
|
280
284
|
utc: bool = False,
|
281
|
-
iso: bool = False,
|
282
285
|
tz: Optional[Union[timezone, bool]] = None,
|
283
286
|
verbose: bool = False,
|
284
287
|
noday: bool = False) -> str:
|
285
|
-
return format_datetime(value, utc=utc,
|
288
|
+
return format_datetime(value, utc=utc, tz=tz, verbose=verbose, noday=noday, notime=True)
|
286
289
|
|
287
290
|
|
288
291
|
def format_time(value: datetime,
|
289
292
|
utc: bool = False,
|
290
293
|
iso: bool = False,
|
291
|
-
ms: bool = False,
|
292
294
|
tz: Optional[Union[timezone, bool]] = None,
|
295
|
+
ms: bool = False,
|
293
296
|
notz: bool = False,
|
294
297
|
noseconds: bool = False,
|
295
298
|
verbose: bool = False,
|
296
299
|
noday: bool = False) -> str:
|
297
|
-
return format_datetime(value, utc=utc, iso=iso, ms=ms,
|
300
|
+
return format_datetime(value, utc=utc, tz=tz, iso=iso, ms=ms, notz=notz,
|
298
301
|
noseconds=noseconds, verbose=verbose, nodate=True)
|
@@ -161,6 +161,9 @@ class ProgressBar:
|
|
161
161
|
self.set_total(total, _norefresh=True)
|
162
162
|
self.set_progress(progress, _norefresh=True)
|
163
163
|
self.set_description(description)
|
164
|
+
self.enable()
|
165
|
+
self._done = False
|
166
|
+
self._bar.reset()
|
164
167
|
self._started = time.time()
|
165
168
|
|
166
169
|
def done(self, description: Optional[str] = None) -> None:
|
@@ -311,12 +314,15 @@ class ProgressBar:
|
|
311
314
|
if self._captured_output_for_testing is not None:
|
312
315
|
# For testing only we replace vacilliting values in the out like rate,
|
313
316
|
# time elapsed, and ETA with static values; so that something like this:
|
314
|
-
# > Working
|
317
|
+
# > Working ⣾ 20% ◀|█████████▌ | 1/5 | 536.00/s | 00:01 | ETA: 00:02 ⣾
|
315
318
|
# becomes something more static like this after calling this function:
|
316
319
|
# > Working | 20% ◀|### | 1/5 | 0.0/s | 00:00 | ETA: 00:00
|
317
320
|
# This function obviously has intimate knowledge of the output; better here than in tests.
|
318
321
|
def replace_time_dependent_values_with_static(text: str) -> str:
|
319
322
|
blocks = "\u2587|\u2588|\u2589|\u258a|\u258b|\u258c|\u258d|\u258e|\u258f"
|
323
|
+
if text.endswith("| "):
|
324
|
+
# In case "|" is in the trailing spinner it messes up regex below.
|
325
|
+
text = set_nth(text, len(text) - 2, "-")
|
320
326
|
if (n := find_nth_from_end(text, "|", 5)) >= 8:
|
321
327
|
pattern = re.compile(
|
322
328
|
rf"(\s*)(\d*%? ◀\|)(?:\s*{blocks}|#)*\s*(\|\s*\d+/\d+)?(\s*\|\s*)"
|
@@ -337,12 +343,8 @@ class ProgressBar:
|
|
337
343
|
sys.stdout.write = sys_stdout_write
|
338
344
|
def ascii_spinners() -> list: # noqa
|
339
345
|
# Fun with ASCII spinners.
|
340
|
-
|
341
|
-
|
342
|
-
# return list("⠿⠻⠽⠾⠷⠯⠟")
|
343
|
-
# return list("⠏⠛⠹⠼⠶⠧")
|
344
|
-
# return list("⠻⠽⠾⠷⠯⠟")
|
345
|
-
# return list("|/—◦\\")
|
346
|
+
spinner_chars = "⣾⣽⣻⢿⡿⣟⣯⣷" # borrowed from rich python package (other: ⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏)
|
347
|
+
return (list(spinner_chars[::-1]) * 7) + (list("|/-\\") * 2)
|
346
348
|
sys.stdout.write = tidy_stdout_write
|
347
349
|
spina = ascii_spinners() ; spini = 0 ; spinn = len(spina) # noqa
|
348
350
|
sentinel = "[progress]" ; sentinel_internal = f"{sentinel}:" # noqa
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "dcicutils"
|
3
|
-
version = "8.8.3.
|
3
|
+
version = "8.8.3.1b21" # TODO: To become 8.8.4
|
4
4
|
description = "Utility package for interacting with the 4DN Data Portal and other 4DN resources"
|
5
5
|
authors = ["4DN-DCIC Team <support@4dnucleome.org>"]
|
6
6
|
license = "MIT"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/c4-infrastructure.jsonc
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-common.jsonc
RENAMED
File without changes
|
{dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-gpl-pipeline.jsonc
RENAMED
File without changes
|
{dcicutils-8.8.3.1b19 → dcicutils-8.8.3.1b21}/dcicutils/license_policies/park-lab-pipeline.jsonc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|