@@ -17,10 +17,10 @@ def example(fn):
1717 '''Wrap the examples so they generate readable output'''
1818
1919 @functools .wraps (fn )
20- def wrapped ():
20+ def wrapped (* args , ** kwargs ):
2121 try :
2222 sys .stdout .write ('Running: %s\n ' % fn .__name__ )
23- fn ()
23+ fn (* args , ** kwargs )
2424 sys .stdout .write ('\n ' )
2525 except KeyboardInterrupt :
2626 sys .stdout .write ('\n Skipping example.\n \n ' )
@@ -31,6 +31,14 @@ def wrapped():
3131 return wrapped
3232
3333
34+ @example
35+ def fast_example ():
36+ ''' Updates bar really quickly to cause flickering '''
37+ with progressbar .ProgressBar (widgets = [progressbar .Bar ()]) as bar :
38+ for i in range (100 ):
39+ bar .update (int (i / 10 ), force = True )
40+
41+
3442@example
3543def shortcut_example ():
3644 for i in progressbar .progressbar (range (10 )):
@@ -73,7 +81,8 @@ def basic_widget_example():
7381
7482@example
7583def color_bar_example ():
76- widgets = ['\x1b [33mColorful example\x1b [39m' , progressbar .Percentage (), progressbar .Bar (marker = '\x1b [32m#\x1b [39m' )]
84+ widgets = ['\x1b [33mColorful example\x1b [39m' , progressbar .Percentage (),
85+ progressbar .Bar (marker = '\x1b [32m#\x1b [39m' )]
7786 bar = progressbar .ProgressBar (widgets = widgets , max_value = 10 ).start ()
7887 for i in range (10 ):
7988 # do something
@@ -82,6 +91,66 @@ def color_bar_example():
8291 bar .finish ()
8392
8493
94+ @example
95+ def multi_range_bar_example ():
96+ markers = [
97+ '\x1b [32m█\x1b [39m' , # Done
98+ '\x1b [33m#\x1b [39m' , # Processing
99+ '\x1b [31m.\x1b [39m' , # Scheduling
100+ ' ' # Not started
101+ ]
102+ widgets = [progressbar .MultiRangeBar ("amounts" , markers = markers )]
103+ amounts = [0 ] * (len (markers ) - 1 ) + [25 ]
104+
105+ with progressbar .ProgressBar (widgets = widgets , max_value = 10 ).start () as bar :
106+ while True :
107+ incomplete_items = [
108+ idx
109+ for idx , amount in enumerate (amounts )
110+ for i in range (amount )
111+ if idx != 0
112+ ]
113+ if not incomplete_items :
114+ break
115+ which = random .choice (incomplete_items )
116+ amounts [which ] -= 1
117+ amounts [which - 1 ] += 1
118+
119+ bar .update (amounts = amounts , force = True )
120+ time .sleep (0.02 )
121+
122+
123+ @example
124+ def multi_progress_bar_example (left = True ):
125+ jobs = [
126+ # Each job takes between 1 and 10 steps to complete
127+ [0 , random .randint (1 , 10 )]
128+ for i in range (25 ) # 25 jobs total
129+ ]
130+
131+ widgets = [
132+ progressbar .Percentage (),
133+ ' ' , progressbar .MultiProgressBar ('jobs' , fill_left = left ),
134+ ]
135+
136+ max_value = sum ([total for progress , total in jobs ])
137+ with progressbar .ProgressBar (widgets = widgets , max_value = max_value ) as bar :
138+ while True :
139+ incomplete_jobs = [
140+ idx
141+ for idx , (progress , total ) in enumerate (jobs )
142+ if progress < total
143+ ]
144+ if not incomplete_jobs :
145+ break
146+ which = random .choice (incomplete_jobs )
147+ jobs [which ][0 ] += 1
148+ progress = sum ([progress for progress , total in jobs ])
149+
150+ bar .update (progress , jobs = jobs , force = True )
151+ time .sleep (0.02 )
152+
153+
85154@example
86155def file_transfer_example ():
87156 widgets = [
@@ -386,9 +455,9 @@ def increment_bar_with_output_redirection():
386455 ' ' , progressbar .ETA (),
387456 ' ' , progressbar .FileTransferSpeed (),
388457 ]
389- bar = progressbar .ProgressBar (widgets = widgets , max_value = 1000 ,
458+ bar = progressbar .ProgressBar (widgets = widgets , max_value = 100 ,
390459 redirect_stdout = True ).start ()
391- for i in range (100 ):
460+ for i in range (10 ):
392461 # do something
393462 time .sleep (0.01 )
394463 bar += 10
@@ -507,11 +576,12 @@ def user_variables():
507576 with progressbar .ProgressBar (
508577 prefix = '{variables.task} >> {variables.subtask}' ,
509578 variables = {'task' : '--' , 'subtask' : '--' },
510- max_value = 10 * num_subtasks ) as bar :
579+ max_value = 10 * num_subtasks ) as bar :
511580 for tasks_name , subtasks in tasks .items ():
512581 for subtask_name in subtasks :
513582 for i in range (10 ):
514- bar .update (bar .value + 1 , task = tasks_name , subtask = subtask_name )
583+ bar .update (bar .value + 1 , task = tasks_name ,
584+ subtask = subtask_name )
515585 time .sleep (0.1 )
516586
517587
0 commit comments