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.
@@ -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 = value.strftime("%z")
239
- tz = tz[:3] + ":" + tz[3:]
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
- return value.strftime(f"%H:%M:%S{f'.%f' if ms is True else ''}")
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, iso=iso, tz=tz, verbose=verbose, noday=noday, notime=True)
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, tz=tz, notz=notz,
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 / 20% ◀|█████████▌ | 1/5 | 536.00/s | 00:01 | ETA: 00:02
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
- return list("⣾⣽⣻⢿⡿⣟⣯⣷") # borrowed from rich python package
341
- # return list("⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏") # borrowed from rich python package
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
  Metadata-Version: 2.1
2
2
  Name: dcicutils
3
- Version: 8.8.3.1b19
3
+ Version: 8.8.3.1b21
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
@@ -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=STFFakdCIwtuRLA1PCbieeXniTPY8Rchg5Psv1CUJ84,13342
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=Ov5plifqRxiAbphrxSx4moZG2mlrZAKRsY_Lo77N9vU,17847
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.1b19.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
76
- dcicutils-8.8.3.1b19.dist-info/METADATA,sha256=u8oEGzFmhYCnC-Hb_rnGodcYIrKuahxAmKOSwmF8nNM,3357
77
- dcicutils-8.8.3.1b19.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
78
- dcicutils-8.8.3.1b19.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
79
- dcicutils-8.8.3.1b19.dist-info/RECORD,,
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,,