dcicutils 8.8.3.1b19__py3-none-any.whl → 8.8.3.1b21__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/datetime_utils.py +10 -7
- dcicutils/progress_bar.py +9 -7
- {dcicutils-8.8.3.1b19.dist-info → dcicutils-8.8.3.1b21.dist-info}/METADATA +1 -1
- {dcicutils-8.8.3.1b19.dist-info → dcicutils-8.8.3.1b21.dist-info}/RECORD +7 -7
- {dcicutils-8.8.3.1b19.dist-info → dcicutils-8.8.3.1b21.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.8.3.1b19.dist-info → dcicutils-8.8.3.1b21.dist-info}/WHEEL +0 -0
- {dcicutils-8.8.3.1b19.dist-info → dcicutils-8.8.3.1b21.dist-info}/entry_points.txt +0 -0
dcicutils/datetime_utils.py
CHANGED
@@ -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)
|
dcicutils/progress_bar.py
CHANGED
@@ -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
|
@@ -12,7 +12,7 @@ dcicutils/contribution_utils.py,sha256=vYLS1JUB3sKd24BUxZ29qUBqYeQBLK9cwo8x3k64u
|
|
12
12
|
dcicutils/creds_utils.py,sha256=xrLekD49Ex0GOpL9n7LlJA4gvNcY7txTVFOSYD7LvEU,11113
|
13
13
|
dcicutils/data_readers.py,sha256=6EMrY7TjDE8H7bA_TCWtpLQP7slJ0YTL77_dNh6e7sg,7626
|
14
14
|
dcicutils/data_utils.py,sha256=k2OxOlsx7AJ6jF-YNlMyGus_JqSUBe4_n1s65Mv1gQQ,3098
|
15
|
-
dcicutils/datetime_utils.py,sha256=
|
15
|
+
dcicutils/datetime_utils.py,sha256=sM653aw_1zy1qBmfAH-WetCi2Fw9cnFK7FZN_Tg4onI,13499
|
16
16
|
dcicutils/deployment_utils.py,sha256=sKv8Jb-_Zw2aH3OAywRlsre-Cqm3a7fEGG3_1PT-r-s,69908
|
17
17
|
dcicutils/diff_utils.py,sha256=sQx-yz56DHAcQWOChYbAG3clXu7TbiZKlw-GggeveO0,8118
|
18
18
|
dcicutils/docker_utils.py,sha256=30gUiqz7X9rJwSPXTPn4ewjQibUgoSJqhP9o9vn5X-A,1747
|
@@ -48,7 +48,7 @@ dcicutils/obfuscation_utils.py,sha256=fo2jOmDRC6xWpYX49u80bVNisqRRoPskFNX3ymFAmj
|
|
48
48
|
dcicutils/opensearch_utils.py,sha256=V2exmFYW8Xl2_pGFixF4I2Cc549Opwe4PhFi5twC0M8,1017
|
49
49
|
dcicutils/portal_object_utils.py,sha256=gDXRgPsRvqCFwbC8WatsuflAxNiigOnqr0Hi93k3AgE,15422
|
50
50
|
dcicutils/portal_utils.py,sha256=DYyE5o15GekDgzpJWas9iS7klAYbjJZUPW0G42McArk,30779
|
51
|
-
dcicutils/progress_bar.py,sha256=
|
51
|
+
dcicutils/progress_bar.py,sha256=09Rtj0fw-nYltni-A5cHzGT8FBOVdCx91xJ0H7k4Bf8,17960
|
52
52
|
dcicutils/project_utils.py,sha256=qPdCaFmWUVBJw4rw342iUytwdQC0P-XKpK4mhyIulMM,31250
|
53
53
|
dcicutils/qa_checkers.py,sha256=cdXjeL0jCDFDLT8VR8Px78aS10hwNISOO5G_Zv2TZ6M,20534
|
54
54
|
dcicutils/qa_utils.py,sha256=TT0SiJWiuxYvbsIyhK9VO4uV_suxhB6CpuC4qPacCzQ,160208
|
@@ -72,8 +72,8 @@ dcicutils/trace_utils.py,sha256=g8kwV4ebEy5kXW6oOrEAUsurBcCROvwtZqz9fczsGRE,1769
|
|
72
72
|
dcicutils/validation_utils.py,sha256=cMZIU2cY98FYtzK52z5WUYck7urH6JcqOuz9jkXpqzg,14797
|
73
73
|
dcicutils/variant_utils.py,sha256=2H9azNx3xAj-MySg-uZ2SFqbWs4kZvf61JnK6b-h4Qw,4343
|
74
74
|
dcicutils/zip_utils.py,sha256=rnjNv_k6L9jT2SjDSgVXp4BEJYLtz9XN6Cl2Fy-tqnM,2027
|
75
|
-
dcicutils-8.8.3.
|
76
|
-
dcicutils-8.8.3.
|
77
|
-
dcicutils-8.8.3.
|
78
|
-
dcicutils-8.8.3.
|
79
|
-
dcicutils-8.8.3.
|
75
|
+
dcicutils-8.8.3.1b21.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
76
|
+
dcicutils-8.8.3.1b21.dist-info/METADATA,sha256=45fvMCbWEUmOQ4MzW6bIkun9Gx7GtWWouYHKqHM_9qM,3357
|
77
|
+
dcicutils-8.8.3.1b21.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
78
|
+
dcicutils-8.8.3.1b21.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
|
79
|
+
dcicutils-8.8.3.1b21.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|