Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
InteractiveSpinner Class Reference
Inheritance diagram for InteractiveSpinner:
Collaboration diagram for InteractiveSpinner:

Public Member Functions

 __init__ (self, str message, Optional[IO[str]] file=None, str spin_chars="-\\|/", float min_update_interval_seconds=0.125)
 
None spin (self)
 
None finish (self, str final_status)
 

Protected Member Functions

None _write (self, str status)
 

Protected Attributes

 _message
 
 _file
 
 _rate_limiter
 
 _finished
 
 _spin_cycle
 
 _width
 

Detailed Description

Definition at line 22 of file spinners.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ (   self,
str  message,
Optional[IO[str]]   file = None,
str   spin_chars = "-\\|/",
float   min_update_interval_seconds = 0.125 
)

Definition at line 23 of file spinners.py.

30 ):
31 self._message = message
32 if file is None:
33 file = sys.stdout
34 self._file = file
35 self._rate_limiter = RateLimiter(min_update_interval_seconds)
36 self._finished = False
37
38 self._spin_cycle = itertools.cycle(spin_chars)
39
40 self._file.write(" " * get_indentation() + self._message + " ... ")
41 self._width = 0
42
for i

Referenced by Protocol.__init_subclass__().

Here is the caller graph for this function:

Member Function Documentation

◆ _write()

None _write (   self,
str  status 
)
protected

Definition at line 43 of file spinners.py.

43 def _write(self, status: str) -> None:
44 assert not self._finished
45 # Erase what we wrote before by backspacing to the beginning, writing
46 # spaces to overwrite the old text, and then backspacing again
47 backup = "\b" * self._width
48 self._file.write(backup + " " * self._width + backup)
49 # Now we have a blank slate to add our status
50 self._file.write(status)
51 self._width = len(status)
52 self._file.flush()
53 self._rate_limiter.reset()
54

References InteractiveSpinner._file, LazyZipOverHTTP._file, ScriptFile._file, LegacyWindowsTerm._file, Console._file, InteractiveSpinner._finished, NonInteractiveSpinner._finished, InteractiveSpinner._rate_limiter, NonInteractiveSpinner._rate_limiter, InteractiveSpinner._width, Console._width, and i.

Referenced by InteractiveSpinner.finish(), _FileCacheMixin.set(), SeparateBodyFileCache.set_body(), and InteractiveSpinner.spin().

Here is the caller graph for this function:

◆ finish()

None finish (   self,
str  final_status 
)

Reimplemented from SpinnerInterface.

Definition at line 62 of file spinners.py.

62 def finish(self, final_status: str) -> None:
63 if self._finished:
64 return
65 self._write(final_status)
66 self._file.write("\n")
67 self._file.flush()
68 self._finished = True
69
70
71# Used for dumb terminals, non-interactive installs (no tty), etc.
72# We still print updates occasionally (once every 60 seconds by default) to
73# act as a keep-alive for systems like Travis-CI that take lack-of-output as
74# an indication that a task has frozen.

References InteractiveSpinner._file, LazyZipOverHTTP._file, ScriptFile._file, LegacyWindowsTerm._file, Console._file, InteractiveSpinner._finished, NonInteractiveSpinner._finished, _FileCacheMixin._write(), and InteractiveSpinner._write().

Here is the call graph for this function:

◆ spin()

None spin (   self)

Reimplemented from SpinnerInterface.

Definition at line 55 of file spinners.py.

55 def spin(self) -> None:
56 if self._finished:
57 return
58 if not self._rate_limiter.ready():
59 return
60 self._write(next(self._spin_cycle))
61

References InteractiveSpinner._finished, NonInteractiveSpinner._finished, InteractiveSpinner._rate_limiter, NonInteractiveSpinner._rate_limiter, InteractiveSpinner._spin_cycle, _FileCacheMixin._write(), and InteractiveSpinner._write().

Here is the call graph for this function:

Field Documentation

◆ _file

◆ _finished

◆ _message

_message
protected

Definition at line 31 of file spinners.py.

Referenced by NonInteractiveSpinner._update().

◆ _rate_limiter

◆ _spin_cycle

_spin_cycle
protected

Definition at line 38 of file spinners.py.

Referenced by InteractiveSpinner.spin().

◆ _width

_width
protected

Definition at line 41 of file spinners.py.

Referenced by InteractiveSpinner._write(), Console.size(), Console.size(), and Console.width().


The documentation for this class was generated from the following file: