AQIT
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
spinners.py
Go to the documentation of this file.
1
# Copyright (c) 2025-present Aquin Labs Private Limited. All Rights Reserved.
2
"""Spinner / bullet glyphs from py-spinners (cli-spinners)."""
3
4
from
__future__
import
annotations
5
6
from
typing
import
Any
7
8
# Status list animation: braille dots + ASCII flip.
9
_STATUS_SPINNERS = (
"dots9"
,
"flip"
)
10
11
12
def
_spinner
(name: str) -> dict[str, Any]:
13
from
spinners
import
Spinners
14
15
return
getattr(Spinners, name).value
16
17
18
def
bullet_mark
(*, plain: bool =
False
) -> str:
19
"""Settled glyph after the spin — plain slash, not circle/square."""
20
_ = plain
21
return
"/"
22
23
24
def
status_spin_sequence
() -> list[tuple[str, float]]:
25
"""(frame, delay_seconds) for ``aquin status`` — plays dots9 then flip."""
26
seq: list[tuple[str, float]] = []
27
for
name
in
_STATUS_SPINNERS:
28
sp =
_spinner
(name)
29
delay = sp[
"interval"
] / 1000.0
30
for
frame
in
sp[
"frames"
]:
31
# Keep bullet column width predictable on blank-ish frames.
32
mark = frame
if
frame.strip()
else
"-"
33
seq.append((mark, delay))
34
return
seq
35
36
37
def
spinner_frames
(name: str =
"dots"
) -> list[str]:
38
"""Frame list for an animating spinner."""
39
return
list(
_spinner
(name)[
"frames"
])
40
41
42
def
spinner_interval_ms
(name: str =
"dots"
) -> int:
43
return
int(
_spinner
(name)[
"interval"
])
aquin.tui.spinners.spinner_interval_ms
int spinner_interval_ms(str name="dots")
Definition
spinners.py:46
aquin.tui.spinners.bullet_mark
str bullet_mark(*, bool plain=False)
Definition
spinners.py:22
aquin.tui.spinners.status_spin_sequence
list[tuple[str, float]] status_spin_sequence()
Definition
spinners.py:28
aquin.tui.spinners._spinner
dict[str, Any] _spinner(str name)
Definition
spinners.py:16
aquin.tui.spinners.spinner_frames
list[str] spinner_frames(str name="dots")
Definition
spinners.py:41
aquin
tui
spinners.py
AQIT · Aquin Labs Private Limited · Apache 2.0 · Generated by
1.18.0