dcicutils 8.8.3.1b22__py3-none-any.whl → 8.8.3.1b24__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/progress_bar.py CHANGED
@@ -279,10 +279,10 @@ class ProgressBar:
279
279
  # string in the display string where the progress bar should actually go,
280
280
  # which we do in _format_description. Other minor things too; see below.
281
281
  sys_stdout_write = sys.stdout.write
282
- last_text = None ; last_captured_output_text = None # noqa
282
+ last_text = None ; last_captured_output_text = None ; last_spin_change_time = None # noqa
283
283
  def tidy_stdout_write(text: str) -> None: # noqa
284
284
  nonlocal self, sys_stdout_write, sentinel_internal, spina, spini, spinn
285
- nonlocal last_text, last_captured_output_text
285
+ nonlocal last_text, last_captured_output_text, last_spin_change_time
286
286
  def replace_first(value: str, match: str, replacement: str) -> str: # noqa
287
287
  return value[:i] + replacement + value[i + len(match):] if (i := value.find(match)) >= 0 else value
288
288
  def remove_extra_trailing_spaces(text: str) -> str: # noqa
@@ -292,13 +292,17 @@ class ProgressBar:
292
292
  if (not text) or (last_text == text):
293
293
  return
294
294
  last_text = text
295
+ now = time.time()
295
296
  if (self._disabled or self._done) and sentinel_internal in text:
296
297
  # Another hack to really disable output on interrupt; in this case we set
297
298
  # tqdm.disable to True, but output can still dribble out, so if the output
298
299
  # looks like it is from tqdm and we are disabled/done then do no output.
299
300
  return
300
301
  if sentinel_internal in text:
301
- spinc = spina[spini % spinn] if not ("100%|" in text) else "✓" ; spini += 1 # noqa
302
+ spinc = spina[spini % spinn] if not ("100%|" in text) else "✓"
303
+ if last_spin_change_time is None or ((now - last_spin_change_time) >= 0.05):
304
+ spini += 1
305
+ last_spin_change_time = now
302
306
  text = replace_first(text, sentinel_internal, f" {spinc}")
303
307
  text = replace_first(text, "%|", "% ◀|")
304
308
  text = remove_extra_trailing_spaces(text) + f"{spinc} "
@@ -307,7 +311,7 @@ class ProgressBar:
307
311
  # the unit we gave, which is empty; idunno; just replace it here.
308
312
  text = replace_first(text, "s/ ", "/s ")
309
313
  if self._use_byte_size_for_rate and self._bar:
310
- rate = self._bar.n / (time.time() - self._started)
314
+ rate = self._bar.n / (now - self._started)
311
315
  text = text.replace("[rate]", f"{format_size(rate)}/s")
312
316
  sys_stdout_write(text)
313
317
  sys.stdout.flush()
@@ -346,9 +350,13 @@ class ProgressBar:
346
350
  # Dots borrowed from "rich" python package (others: ⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏).
347
351
  # Others: "◴◷◶◵" "◰◳◲◱" "◡⊙◠" "⠁⠂⠄⡀⢀⠠⠐⠈" "▁▃▄▅▆▇█▇▆▅▄▃" "◢◣◤◥" "◐◓◑◒" "✶✸✹✺✹✷" "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
348
352
  spinner_chars_a = "⣾⣽⣻⢿⡿⣟⣯⣷"
349
- spinner_chars_b = "|/-\\"
353
+ spinner_chars_b = "|/—\\"
350
354
  spinner_chars_c = "◰◳◲◱"
351
- return (list(spinner_chars_a[::-1]) * 9) + (list(spinner_chars_b) * 3) + (list(spinner_chars_c) * 3)
355
+ spinner_chars_d = "◐◓◑◒"
356
+ spinner_chars_e = "◴◷◶◵"
357
+ return ((list(spinner_chars_a[::-1]) * 18) +
358
+ (list(spinner_chars_b) * 3) + (list(spinner_chars_c) * 3) +
359
+ (list(spinner_chars_d) * 3) + (list(spinner_chars_e) * 3))
352
360
  sys.stdout.write = tidy_stdout_write
353
361
  spina = ascii_spinners() ; spini = 0 ; spinn = len(spina) # noqa
354
362
  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.1b22
3
+ Version: 8.8.3.1b24
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
@@ -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=UE_HxZCExEKg2u4x4oa3qBix5LTtN8CXuRxM_qW4oWA,18329
51
+ dcicutils/progress_bar.py,sha256=7cqnBB7ZzY0cHIgWvNwreYUYAosXwf3zxvvYRD9N-4Q,18751
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.1b22.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
76
- dcicutils-8.8.3.1b22.dist-info/METADATA,sha256=hI8Hx1Cl09T5LN8o-bExmvdgkdXVOgCArBKO_1xFvU0,3357
77
- dcicutils-8.8.3.1b22.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
78
- dcicutils-8.8.3.1b22.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
79
- dcicutils-8.8.3.1b22.dist-info/RECORD,,
75
+ dcicutils-8.8.3.1b24.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
76
+ dcicutils-8.8.3.1b24.dist-info/METADATA,sha256=6NnLtyDOFz9tsB4OVMHkHyNObT4uZIYB2zKq-QXjerg,3357
77
+ dcicutils-8.8.3.1b24.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
78
+ dcicutils-8.8.3.1b24.dist-info/entry_points.txt,sha256=51Q4F_2V10L0282W7HFjP4jdzW4K8lnWDARJQVFy_hw,270
79
+ dcicutils-8.8.3.1b24.dist-info/RECORD,,