X7ROOT File Manager
Current Path:
/opt/hc_python/lib/python3.12/site-packages/pip/_vendor/rich
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
pip
/
_vendor
/
rich
/
??
..
??
LICENSE
(1.03 KB)
??
__init__.py
(5.95 KB)
??
__main__.py
(7.71 KB)
??
__pycache__
??
_cell_widths.py
(9.97 KB)
??
_emoji_codes.py
(136.95 KB)
??
_emoji_replace.py
(1.04 KB)
??
_export_format.py
(2.08 KB)
??
_extension.py
(265 B)
??
_fileno.py
(799 B)
??
_inspect.py
(9.43 KB)
??
_log_render.py
(3.15 KB)
??
_loop.py
(1.21 KB)
??
_null_file.py
(1.36 KB)
??
_palettes.py
(6.9 KB)
??
_pick.py
(423 B)
??
_ratio.py
(5.2 KB)
??
_spinners.py
(19.45 KB)
??
_stack.py
(351 B)
??
_timer.py
(417 B)
??
_win32_console.py
(22.22 KB)
??
_windows.py
(1.88 KB)
??
_windows_renderer.py
(2.72 KB)
??
_wrap.py
(3.32 KB)
??
abc.py
(890 B)
??
align.py
(10.08 KB)
??
ansi.py
(6.76 KB)
??
bar.py
(3.19 KB)
??
box.py
(10.44 KB)
??
cells.py
(5.01 KB)
??
color.py
(17.78 KB)
??
color_triplet.py
(1.03 KB)
??
columns.py
(6.96 KB)
??
console.py
(98.49 KB)
??
constrain.py
(1.26 KB)
??
containers.py
(5.37 KB)
??
control.py
(6.33 KB)
??
default_styles.py
(8.06 KB)
??
diagnose.py
(1 KB)
??
emoji.py
(2.31 KB)
??
errors.py
(642 B)
??
file_proxy.py
(1.64 KB)
??
filesize.py
(2.43 KB)
??
highlighter.py
(9.36 KB)
??
json.py
(4.91 KB)
??
jupyter.py
(3.18 KB)
??
layout.py
(13.68 KB)
??
live.py
(14.82 KB)
??
live_render.py
(3.44 KB)
??
logging.py
(12.18 KB)
??
markup.py
(8.25 KB)
??
measure.py
(5.18 KB)
??
padding.py
(4.79 KB)
??
pager.py
(828 B)
??
palette.py
(3.32 KB)
??
panel.py
(10.9 KB)
??
pretty.py
(35.54 KB)
??
progress.py
(58.99 KB)
??
progress_bar.py
(7.97 KB)
??
prompt.py
(12.16 KB)
??
protocol.py
(1.36 KB)
??
py.typed
(0 B)
??
region.py
(166 B)
??
repr.py
(4.33 KB)
??
rule.py
(4.49 KB)
??
scope.py
(2.78 KB)
??
screen.py
(1.55 KB)
??
segment.py
(24.16 KB)
??
spinner.py
(4.12 KB)
??
status.py
(4.32 KB)
??
style.py
(26.36 KB)
??
styled.py
(1.23 KB)
??
syntax.py
(35.52 KB)
??
table.py
(39.11 KB)
??
terminal_theme.py
(3.29 KB)
??
text.py
(46.44 KB)
??
theme.py
(3.68 KB)
??
themes.py
(102 B)
??
traceback.py
(35.02 KB)
??
tree.py
(9.23 KB)
Editing: spinner.py
from typing import TYPE_CHECKING, List, Optional, Union, cast from ._spinners import SPINNERS from .measure import Measurement from .table import Table from .text import Text if TYPE_CHECKING: from .console import Console, ConsoleOptions, RenderableType, RenderResult from .style import StyleType class Spinner: """A spinner animation. Args: name (str): Name of spinner (run python -m rich.spinner). text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "". style (StyleType, optional): Style for spinner animation. Defaults to None. speed (float, optional): Speed factor for animation. Defaults to 1.0. Raises: KeyError: If name isn't one of the supported spinner animations. """ def __init__( self, name: str, text: "RenderableType" = "", *, style: Optional["StyleType"] = None, speed: float = 1.0, ) -> None: try: spinner = SPINNERS[name] except KeyError: raise KeyError(f"no spinner called {name!r}") self.text: "Union[RenderableType, Text]" = ( Text.from_markup(text) if isinstance(text, str) else text ) self.name = name self.frames = cast(List[str], spinner["frames"])[:] self.interval = cast(float, spinner["interval"]) self.start_time: Optional[float] = None self.style = style self.speed = speed self.frame_no_offset: float = 0.0 self._update_speed = 0.0 def __rich_console__( self, console: "Console", options: "ConsoleOptions" ) -> "RenderResult": yield self.render(console.get_time()) def __rich_measure__( self, console: "Console", options: "ConsoleOptions" ) -> Measurement: text = self.render(0) return Measurement.get(console, options, text) def render(self, time: float) -> "RenderableType": """Render the spinner for a given time. Args: time (float): Time in seconds. Returns: RenderableType: A renderable containing animation frame. """ if self.start_time is None: self.start_time = time frame_no = ((time - self.start_time) * self.speed) / ( self.interval / 1000.0 ) + self.frame_no_offset frame = Text( self.frames[int(frame_no) % len(self.frames)], style=self.style or "" ) if self._update_speed: self.frame_no_offset = frame_no self.start_time = time self.speed = self._update_speed self._update_speed = 0.0 if not self.text: return frame elif isinstance(self.text, (str, Text)): return Text.assemble(frame, " ", self.text) else: table = Table.grid(padding=1) table.add_row(frame, self.text) return table def update( self, *, text: "RenderableType" = "", style: Optional["StyleType"] = None, speed: Optional[float] = None, ) -> None: """Updates attributes of a spinner after it has been started. Args: text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "". style (StyleType, optional): Style for spinner animation. Defaults to None. speed (float, optional): Speed factor for animation. Defaults to None. """ if text: self.text = Text.from_markup(text) if isinstance(text, str) else text if style: self.style = style if speed: self._update_speed = speed if __name__ == "__main__": # pragma: no cover from time import sleep from .console import Group from .live import Live all_spinners = Group( *[ Spinner(spinner_name, text=Text(repr(spinner_name), style="green")) for spinner_name in sorted(SPINNERS.keys()) ] ) with Live(all_spinners, refresh_per_second=20) as live: while True: sleep(0.1)
Upload File
Create Folder