dcicutils 8.8.3.1b19__py3-none-any.whl → 8.8.3.1b21__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,,