7
7
class Spinner (object ):
8
8
spinner_cycle = itertools .cycle (['-' , '/' , '|' , '\\ ' ])
9
9
10
- def __init__ (self , force = False ):
11
- self ._force = force
10
+ def __init__ (self , beep = False , force = False ):
11
+ self .beep = beep
12
+ self .force = force
12
13
self .stop_running = None
13
14
self .spin_thread = None
14
15
15
16
def start (self ):
16
- if sys .stdout .isatty () or self ._force :
17
+ if sys .stdout .isatty () or self .force :
17
18
self .stop_running = threading .Event ()
18
19
self .spin_thread = threading .Thread (target = self .init_spin )
19
20
self .spin_thread .start ()
@@ -36,28 +37,35 @@ def __enter__(self):
36
37
37
38
def __exit__ (self , exc_type , exc_val , exc_tb ):
38
39
self .stop ()
40
+ if self .beep :
41
+ sys .stdout .write ('\7 ' )
42
+ sys .stdout .flush ()
39
43
return False
40
44
41
45
42
- def spinner (force = False ):
46
+ def spinner (beep = False , force = False ):
43
47
"""This function creates a context manager that is used to display a
44
48
spinner on stdout as long as the context has not exited.
45
49
46
50
The spinner is created only if stdout is not redirected, or if the spinner
47
51
is forced using the `force` parameter.
48
52
49
- Parameters:
50
-
51
- force (bool): Force creation of spinner even when stdout is redirected.
53
+ Parameters
54
+ ----------
55
+ beep : bool
56
+ Beep when spinner finishes.
57
+ force : bool
58
+ Force creation of spinner even when stdout is redirected.
52
59
53
- Example usage::
60
+ Example
61
+ -------
54
62
55
63
with spinner():
56
64
do_something()
57
65
do_something_else()
58
66
59
67
"""
60
- return Spinner (force )
68
+ return Spinner (beep , force )
61
69
62
70
63
71
from ._version import get_versions
0 commit comments