# Copyright Kevin Deldycke <kevin@deldycke.com> and contributors.
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""The bundled catalog of terminal spinner presets.
Ported from [cli-spinners](https://github.com/sindresorhus/cli-spinners),
with frame intervals converted from milliseconds to seconds.
"""
from __future__ import annotations
from typing import NamedTuple
TYPE_CHECKING = False
if TYPE_CHECKING:
from typing import Final
ASCII_SPINNER_FRAMES: Final = ("-", "\\", "|", "/")
"""Plain ASCII animation frames, for terminals or fonts lacking Unicode glyphs."""
SPINNER_FRAMES: Final = ("â ", "â ", "â š", "â ¸", "â ź", "â ´", "â Ś", "â §", "â ", "â ")
"""Default animation frames: the ubiquitous Braille-dots spinner.
Ten frames give a smooth rotation in any UTF-8 terminal. Fall back to
{data}`ASCII_SPINNER_FRAMES` where Braille glyphs are unavailable.
"""
[docs]
class SpinnerPreset(NamedTuple):
"""A named spinner animation: its frames and the interval they look best at.
The {data}`~click_extra.spinner_presets.SPINNERS` catalog is ported from
[cli-spinners](https://github.com/sindresorhus/cli-spinners), with intervals
converted from milliseconds to seconds. Pass one to
{class}`~click_extra.spinner.Spinner` via its `spinner` argument.
"""
frames: tuple[str, ...]
"""The animation frames, cycled in order."""
interval: float
"""Seconds between two frames, tuned per spinner upstream."""
# Single-code-point animations are packed as `tuple("frames")` to stay
# one-liners; animations with multi-character frames keep an explicit tuple.
SPINNERS: Final = {
"dots": SpinnerPreset(SPINNER_FRAMES, 0.08),
"dots2": SpinnerPreset(tuple("⣞⣽⣝⢿⥿âŁâŁŻâŁˇ"), 0.08),
"dots3": SpinnerPreset(tuple("â â â â â ⠌⠴⠲⠳â "), 0.08),
"dots4": SpinnerPreset(tuple("â â â â â ⠸⠰â â °â ¸â â â â "), 0.08),
"dots5": SpinnerPreset(tuple("â â â â â â â ⠲⠴⠌â â â â â â â "), 0.08),
"dots6": SpinnerPreset(tuple("â â â â â â â â ⠲⠴⠤â â ⠤⠴⠲â â â â â â â â "), 0.08),
"dots7": SpinnerPreset(tuple("â â â â â â â â â â Śâ ¤â â ⠤⠌â â â â â â â â â "), 0.08),
"dots8": SpinnerPreset(tuple("â â â â â â â â â ⠲⠴⠤â â â ¤â â ⠤⠌â â â â â â â â â â "), 0.08),
"dots9": SpinnerPreset(tuple("⢚⢺⢟⣸âŁâĄ§âĄâĄ"), 0.08),
"dots10": SpinnerPreset(tuple("â˘â˘â˘âĄâĄâĄâĄ "), 0.08),
"dots11": SpinnerPreset(tuple("â â â âĄâ˘â â â "), 0.1),
"dots12": SpinnerPreset(
(
"â˘â ",
"âĄâ ",
"â â ",
"â˘â ",
"âĄâ ",
"â
â ",
"â˘â ",
"âĄâ ",
"â â ",
"â˘â ",
"âĄâ ",
"â â ",
"â˘â ",
"âĄâ ",
"â â ",
"â â ",
"â â ",
"â â ",
"â â ",
"â â Š",
"â â˘",
"â âĄ",
"â˘â Š",
"âĄâ˘",
"â âĄ",
"â˘â Š",
"âĄâ˘",
"â
âĄ",
"â˘â ¨",
"âĄâ˘",
"â âĄ",
"â˘â ",
"âĄâ˘",
"â âĄ",
"â˘â ",
"âĄâ ",
"â â ",
"â â ",
"â â ",
"â â ",
"â â ",
"â â Š",
"â â˘",
"â âĄ",
"â â Š",
"â â˘",
"â âĄ",
"â â Š",
"â â˘",
"â âĄ",
"â â ¨",
"â â˘",
"â âĄ",
"â â ",
"â â˘",
"â âĄ",
),
0.08,
),
"dots13": SpinnerPreset(tuple("⣟⣚⢝⠿âĄâŁâŁ§âŁś"), 0.08),
"dots14": SpinnerPreset(
("â â ", "â â ", "â â š", "â ⢸", "â ⣰", "â˘âŁ ", "âŁâŁ", "âŁâĄ", "âŁâ ", "âĄâ ", "â â ", "â â "), 0.08
),
"dots8Bit": SpinnerPreset(
tuple(
"â â â â â â
â â âĄâĄâĄâĄâĄâĄ
âĄâĄâ â â â â â â â âĄâĄâĄâĄâĄâĄâĄâĄâ â â â â â â â âĄâĄâĄâĄâĄâĄâĄâĄâ â â â â â â â âĄâĄâĄâĄâĄâĄâĄâĄâ ⠥⠢⠣⠤⠼⠌⠧⥠⥥⥢⥣⥤⥼⥌⥧⠨⠊⠪⠍⠏â ⠎⠯⥨⥊⥪⥍⥏âĄâĄŽâĄŻâ °â ąâ ˛â łâ ´â ľâ śâ ˇâĄ°âĄąâĄ˛âĄłâĄ´âĄľâĄśâĄˇâ ¸â šâ şâ ťâ źâ ˝â žâ żâĄ¸âĄšâĄşâĄťâĄźâĄ˝âĄžâĄżâ˘â˘â˘â˘â˘â˘
â˘â˘âŁâŁâŁâŁâŁâŁ
âŁâŁâ˘â˘â˘â˘â˘â˘â˘â˘âŁâŁâŁâŁâŁâŁâŁâŁâ˘â˘â˘â˘â˘â˘â˘â˘âŁâŁâŁâŁâŁâŁâŁâŁâ˘â˘â˘â˘â˘â˘â˘â˘âŁâŁâŁâŁâŁâŁâŁâŁâ˘ ⢥⢢⢣⢤⢼⢌⢧⣠⣥⣢⣣⣤⣼⣌⣧⢨⢊⢪⢍⢏â˘â˘Žâ˘ŻâŁ¨âŁŠâŁŞâŁŤâŁŹâŁâŁŽâŁŻâ˘°â˘ąâ˘˛â˘łâ˘´â˘ľâ˘śâ˘ˇâŁ°âŁąâŁ˛âŁłâŁ´âŁľâŁśâŁˇâ˘¸â˘šâ˘şâ˘ťâ˘źâ˘˝â˘žâ˘żâŁ¸âŁšâŁşâŁťâŁźâŁ˝âŁžâŁż"
),
0.08,
),
"dotsCircle": SpinnerPreset(("⢠", "â â ", "â â ", "â â ą", " ⥹", "â˘âĄ°", "â˘âĄ ", "â˘âĄ"), 0.08),
"sand": SpinnerPreset(tuple("â â â âĄâĄâĄâĄ âŁâŁâŁâŁâŁâŁâŁ¤âŁĽâŁŚâŁŽâŁśâŁˇâŁżâĄżâ żâ˘â âĄâ â Ťâ˘â â âĄâ â â Ąâ˘"), 0.08),
"line": SpinnerPreset(ASCII_SPINNER_FRAMES, 0.13),
"line2": SpinnerPreset(tuple("â -âââ-"), 0.1),
"rollingLine": SpinnerPreset(
("/ ", " - ", " \\ ", " |", " |", " \\ ", " - ", "/ "), 0.08
),
"pipe": SpinnerPreset(tuple("â¤ââ´ââââŹâ"), 0.1),
"simpleDots": SpinnerPreset((". ", ".. ", "...", " "), 0.4),
"simpleDotsScrolling": SpinnerPreset(
(". ", ".. ", "...", " ..", " .", " "), 0.2
),
"star": SpinnerPreset(tuple("âśâ¸âšâşâšâˇ"), 0.07),
"star2": SpinnerPreset(tuple("+x*"), 0.08),
"flip": SpinnerPreset(tuple("___-``'´-___"), 0.07),
"hamburger": SpinnerPreset(tuple("âąâ˛â´"), 0.1),
"growVertical": SpinnerPreset(tuple("ââââ
ââââ
ââ"), 0.12),
"growHorizontal": SpinnerPreset(tuple("ââââââââââââ"), 0.12),
"balloon": SpinnerPreset(tuple(" .oO@* "), 0.14),
"balloon2": SpinnerPreset(tuple(".oO°Oo."), 0.12),
"noise": SpinnerPreset(tuple("âââ"), 0.1),
"bounce": SpinnerPreset(tuple("â â â â "), 0.12),
"boxBounce": SpinnerPreset(tuple("ââââ"), 0.12),
"boxBounce2": SpinnerPreset(tuple("ââââ"), 0.1),
"triangle": SpinnerPreset(tuple("â˘âŁâ¤âĽ"), 0.05),
"binary": SpinnerPreset(
(
"010010",
"001100",
"100101",
"111010",
"111101",
"010111",
"101011",
"111000",
"110011",
"110101",
),
0.08,
),
"arc": SpinnerPreset(tuple("ââ âââĄâ"), 0.1),
"circle": SpinnerPreset(tuple("âĄââ "), 0.12),
"squareCorners": SpinnerPreset(tuple("â°âłâ˛âą"), 0.18),
"circleQuarters": SpinnerPreset(tuple("â´âˇâśâľ"), 0.12),
"circleHalves": SpinnerPreset(tuple("ââââ"), 0.05),
"squish": SpinnerPreset(tuple("âŤâŞ"), 0.1),
"toggle": SpinnerPreset(tuple("âśâˇ"), 0.25),
"toggle2": SpinnerPreset(tuple("âŤâŞ"), 0.08),
"toggle3": SpinnerPreset(tuple("âĄâ "), 0.12),
"toggle4": SpinnerPreset(tuple("â âĄâŞâŤ"), 0.1),
"toggle5": SpinnerPreset(tuple("âŽâŻ"), 0.1),
"toggle6": SpinnerPreset(tuple("áá"), 0.3),
"toggle7": SpinnerPreset(tuple("⌞⌿"), 0.08),
"toggle8": SpinnerPreset(tuple("ââ"), 0.1),
"toggle9": SpinnerPreset(tuple("ââ"), 0.1),
"toggle10": SpinnerPreset(tuple("ăăă"), 0.1),
"toggle11": SpinnerPreset(tuple("â§â§"), 0.05),
"toggle12": SpinnerPreset(tuple("ââ"), 0.12),
"toggle13": SpinnerPreset(tuple("=*-"), 0.08),
"arrow": SpinnerPreset(tuple("ââââââââ"), 0.1),
"arrow2": SpinnerPreset(("âŹď¸ ", "âď¸ ", "âĄď¸ ", "âď¸ ", "âŹď¸ ", "âď¸ ", "âŹ
ď¸ ", "âď¸ "), 0.08),
"arrow3": SpinnerPreset(
("âšâšâšâšâš", "â¸âšâšâšâš", "âšâ¸âšâšâš", "âšâšâ¸âšâš", "âšâšâšâ¸âš", "âšâšâšâšâ¸"), 0.12
),
"bouncingBar": SpinnerPreset(
(
"[ ]",
"[= ]",
"[== ]",
"[=== ]",
"[====]",
"[ ===]",
"[ ==]",
"[ =]",
"[ ]",
"[ =]",
"[ ==]",
"[ ===]",
"[====]",
"[=== ]",
"[== ]",
"[= ]",
),
0.08,
),
"bouncingBall": SpinnerPreset(
(
"( â )",
"( â )",
"( â )",
"( â )",
"( â)",
"( â )",
"( â )",
"( â )",
"( â )",
"(â )",
),
0.08,
),
"smiley": SpinnerPreset(("đ ", "đ "), 0.2),
"monkey": SpinnerPreset(("đ ", "đ ", "đ ", "đ "), 0.3),
"hearts": SpinnerPreset(("đ ", "đ ", "đ ", "đ ", "đ "), 0.1),
"clock": SpinnerPreset(
(
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
),
0.1,
),
"earth": SpinnerPreset(("đ ", "đ ", "đ "), 0.18),
"material": SpinnerPreset(
(
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
"ââââââââââââââââââââ",
),
0.017,
),
"moon": SpinnerPreset(
("đ ", "đ ", "đ ", "đ ", "đ ", "đ ", "đ ", "đ "), 0.08
),
"runner": SpinnerPreset(("đś ", "đ "), 0.14),
"pong": SpinnerPreset(
(
"ââ â",
"ââ â",
"â â â",
"â â â",
"â ⥠â",
"â â â",
"â â â",
"â â â",
"â â â",
"â â â",
"â ⥠â",
"â â â",
"â â â",
"â â â",
"â â â",
"â â â",
"â âĄâ",
"â â â",
"â â â",
"â â â",
"â â â",
"â â â",
"â ⥠â",
"â â â",
"â â â",
"â â â",
"â â â",
"â â â",
"â ⥠â",
"ââ â",
),
0.08,
),
"shark": SpinnerPreset(
(
"â|\\____________â",
"â_|\\___________â",
"â__|\\__________â",
"â___|\\_________â",
"â____|\\________â",
"â_____|\\_______â",
"â______|\\______â",
"â_______|\\_____â",
"â________|\\____â",
"â_________|\\___â",
"â__________|\\__â",
"â___________|\\_â",
"â____________|\\â",
"â____________/|â",
"â___________/|_â",
"â__________/|__â",
"â_________/|___â",
"â________/|____â",
"â_______/|_____â",
"â______/|______â",
"â_____/|_______â",
"â____/|________â",
"â___/|_________â",
"â__/|__________â",
"â_/|___________â",
"â/|____________â",
),
0.12,
),
"dqpb": SpinnerPreset(tuple("dqpb"), 0.1),
"weather": SpinnerPreset(
(
"âď¸ ",
"âď¸ ",
"âď¸ ",
"đ¤ ",
"â
ď¸ ",
"đĽ ",
"âď¸ ",
"đ§ ",
"đ¨ ",
"đ§ ",
"đ¨ ",
"đ§ ",
"đ¨ ",
"â ",
"đ¨ ",
"đ§ ",
"đ¨ ",
"âď¸ ",
"đĽ ",
"â
ď¸ ",
"đ¤ ",
"âď¸ ",
"âď¸ ",
),
0.1,
),
"christmas": SpinnerPreset(tuple("đ˛đ"), 0.4),
"grenade": SpinnerPreset(
(
"Ř ",
"Ⲡ",
" ´ ",
" âž ",
" â¸",
" â¸",
" |",
" â",
" â",
" ࡴ ",
" â",
" ",
" ",
" ",
),
0.08,
),
"point": SpinnerPreset(("âââ", "âââ", "âââ", "âââ", "âââ"), 0.125),
"layer": SpinnerPreset(tuple("-=âĄ"), 0.15),
"betaWave": SpinnerPreset(
("Ďββββββ", "βĎβββββ", "ββĎββββ", "βββĎβββ", "ββββĎββ", "βββββĎβ", "ββββββĎ"),
0.08,
),
"fingerDance": SpinnerPreset(("đ¤ ", "đ¤ ", "đ ", "â ", "đ¤ ", "đ "), 0.16),
"fistBump": SpinnerPreset(
(
"đ¤\u3000\u3000\u3000\u3000đ¤ ",
"đ¤\u3000\u3000\u3000\u3000đ¤ ",
"đ¤\u3000\u3000\u3000\u3000đ¤ ",
"\u3000đ¤\u3000\u3000đ¤\u3000 ",
"\u3000\u3000đ¤đ¤\u3000\u3000 ",
"\u3000đ¤â¨đ¤\u3000\u3000 ",
"đ¤\u3000â¨\u3000đ¤\u3000 ",
),
0.08,
),
"soccerHeader": SpinnerPreset(
(
" đ§â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
"đ§ â˝ď¸ đ§ ",
),
0.08,
),
"mindblown": SpinnerPreset(
(
"đ ",
"đ ",
"đŽ ",
"đŽ ",
"đŚ ",
"đŚ ",
"đ§ ",
"đ§ ",
"𤯠",
"đĽ ",
"⨠",
"\u3000 ",
"\u3000 ",
"\u3000 ",
),
0.16,
),
"speaker": SpinnerPreset(("đ ", "đ ", "đ ", "đ "), 0.16),
"orangePulse": SpinnerPreset(("đ¸ ", "đś ", "đ ", "đ ", "đś "), 0.1),
"bluePulse": SpinnerPreset(("đš ", "đˇ ", "đľ ", "đľ ", "đˇ "), 0.1),
"orangeBluePulse": SpinnerPreset(
("đ¸ ", "đś ", "đ ", "đ ", "đś ", "đš ", "đˇ ", "đľ ", "đľ ", "đˇ "), 0.1
),
"timeTravel": SpinnerPreset(
(
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
"đ ",
),
0.1,
),
"aesthetic": SpinnerPreset(
(
"â°âąâąâąâąâąâą",
"â°â°âąâąâąâąâą",
"â°â°â°âąâąâąâą",
"â°â°â°â°âąâąâą",
"â°â°â°â°â°âąâą",
"â°â°â°â°â°â°âą",
"â°â°â°â°â°â°â°",
"â°âąâąâąâąâąâą",
),
0.08,
),
"dwarfFortress": SpinnerPreset(
(
" ââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âşââââââÂŁÂŁÂŁ ",
"âş âââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âşâââââÂŁÂŁÂŁ ",
" âş ââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âşââââÂŁÂŁÂŁ ",
" âş âââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âşâââÂŁÂŁÂŁ ",
" âş ââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âşââÂŁÂŁÂŁ ",
" âş âÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âşâÂŁÂŁÂŁ ",
" âş ÂŁÂŁÂŁ ",
" âşÂŁÂŁÂŁ ",
" âşÂŁÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âşâÂŁÂŁ ",
" âş ÂŁÂŁ ",
" âşÂŁÂŁ ",
" âşÂŁÂŁ ",
" âşâÂŁ ",
" âşâÂŁ ",
" âşâÂŁ ",
" âşâÂŁ ",
" âşâÂŁ ",
" âşâÂŁ ",
" âş ÂŁ ",
" âşÂŁ ",
" âşÂŁ ",
" âşâ ",
" âşâ ",
" âşâ ",
" âşâ ",
" âşâ ",
" âşâ ",
" âş ",
" âş &",
" âş âź&",
" âş âź &",
" âşâź &",
" âşâź & ",
" âź & ",
" âş & ",
" âź & ",
" âş & ",
" âź & ",
" âş & ",
"âź & ",
" & ",
" & ",
" & â ",
" & â ",
" & â ",
" & ÂŁ ",
" & âÂŁ ",
" & âÂŁ ",
" & âÂŁ ",
" & ÂŁÂŁ ",
" & âÂŁÂŁ ",
" & âÂŁÂŁ ",
"& âÂŁÂŁ ",
"& ÂŁÂŁÂŁ ",
" âÂŁÂŁÂŁ ",
" âÂŁÂŁÂŁ ",
" âÂŁÂŁÂŁ ",
" âÂŁÂŁÂŁ ",
" ââÂŁÂŁÂŁ ",
" ââÂŁÂŁÂŁ ",
" ââÂŁÂŁÂŁ ",
" ââÂŁÂŁÂŁ ",
" âââÂŁÂŁÂŁ ",
" âââÂŁÂŁÂŁ ",
" âââÂŁÂŁÂŁ ",
" âââÂŁÂŁÂŁ ",
" ââââÂŁÂŁÂŁ ",
" ââââÂŁÂŁÂŁ ",
" ââââÂŁÂŁÂŁ ",
" ââââÂŁÂŁÂŁ ",
" âââââÂŁÂŁÂŁ ",
" âââââÂŁÂŁÂŁ ",
" âââââÂŁÂŁÂŁ ",
" âââââÂŁÂŁÂŁ ",
" ââââââÂŁÂŁÂŁ ",
" ââââââÂŁÂŁÂŁ ",
" ââââââÂŁÂŁÂŁ ",
" ââââââÂŁÂŁÂŁ ",
" ââââââÂŁÂŁÂŁ ",
),
0.08,
),
"fish": SpinnerPreset(
(
"~~~~~~~~~~~~~~~~~~~~",
"> ~~~~~~~~~~~~~~~~~~",
"Âş> ~~~~~~~~~~~~~~~~~",
"(Âş> ~~~~~~~~~~~~~~~~",
"((Âş> ~~~~~~~~~~~~~~~",
"<((Âş> ~~~~~~~~~~~~~~",
"><((Âş> ~~~~~~~~~~~~~",
" ><((Âş> ~~~~~~~~~~~~",
"~ ><((Âş> ~~~~~~~~~~~",
"~~ <>((Âş> ~~~~~~~~~~",
"~~~ ><((Âş> ~~~~~~~~~",
"~~~~ <>((Âş> ~~~~~~~~",
"~~~~~ ><((Âş> ~~~~~~~",
"~~~~~~ <>((Âş> ~~~~~~",
"~~~~~~~ ><((Âş> ~~~~~",
"~~~~~~~~ <>((Âş> ~~~~",
"~~~~~~~~~ ><((Âş> ~~~",
"~~~~~~~~~~ <>((Âş> ~~",
"~~~~~~~~~~~ ><((Âş> ~",
"~~~~~~~~~~~~ <>((Âş> ",
"~~~~~~~~~~~~~ ><((Âş>",
"~~~~~~~~~~~~~~ <>((Âş",
"~~~~~~~~~~~~~~~ ><((",
"~~~~~~~~~~~~~~~~ <>(",
"~~~~~~~~~~~~~~~~~ ><",
"~~~~~~~~~~~~~~~~~~ <",
"~~~~~~~~~~~~~~~~~~~~",
),
0.08,
),
}
"""Named spinner animations ported from cli-spinners, keyed by name.
Each value is a {class}`SpinnerPreset` bundling frames and a tuned interval.
Select one with {class}`~click_extra.spinner.Spinner`'s `spinner` argument::
from click_extra import Spinner, SPINNERS
with Spinner("Brewing tea", spinner=SPINNERS["moon"]):
...
Unlike the upstream `\\b`-based renderers, {class}`~click_extra.spinner.Spinner` redraws the whole
line, so the multi-character animations (`bouncingBar`, `pong`, `shark`, âŚ)
render correctly here.
"""