@@ -250,22 +250,15 @@ def extensions_progress_bar():
250250 return progress_bar
251251
252252
253- def get_progress_bar (bar_type , size = None ):
253+ def get_progress_bar (bar_type , ignore_cache = False , size = None ):
254254 """
255255 Get progress bar of given type.
256256 """
257- progress_bar_types = {
258- PROGRESS_BAR_DOWNLOAD_ALL : download_all_progress_bar ,
259- PROGRESS_BAR_DOWNLOAD_ONE : download_one_progress_bar ,
260- PROGRESS_BAR_EXTENSIONS : extensions_progress_bar ,
261- PROGRESS_BAR_EASYCONFIG : easyconfig_progress_bar ,
262- STATUS_BAR : status_bar ,
263- }
264257
265258 if bar_type == PROGRESS_BAR_DOWNLOAD_ONE and not size :
266- pbar = download_one_progress_bar_unknown_size ()
267- elif bar_type in progress_bar_types :
268- pbar = progress_bar_types [bar_type ]()
259+ pbar = download_one_progress_bar_unknown_size (ignore_cache = ignore_cache )
260+ elif bar_type in PROGRESS_BAR_TYPES :
261+ pbar = PROGRESS_BAR_TYPES [bar_type ](ignore_cache = ignore_cache )
269262 else :
270263 raise EasyBuildError ("Unknown progress bar type: %s" , bar_type )
271264
@@ -295,27 +288,31 @@ def start_progress_bar(bar_type, size, label=None):
295288
296289def update_progress_bar (bar_type , label = None , progress_size = 1 ):
297290 """
298- Update progress bar of given type, add progress of given size.
291+ Update progress bar of given type (if it was started) , add progress of given size.
299292
300293 :param bar_type: type of progress bar
301294 :param label: label for progress bar
302295 :param progress_size: amount of progress made
303296 """
304- (pbar , task_id ) = _progress_bar_cache [bar_type ]
305- if label :
306- pbar .update (task_id , description = label )
307- if progress_size :
308- pbar .update (task_id , advance = progress_size )
297+ if bar_type in _progress_bar_cache :
298+ (pbar , task_id ) = _progress_bar_cache [bar_type ]
299+ if label :
300+ pbar .update (task_id , description = label )
301+ if progress_size :
302+ pbar .update (task_id , advance = progress_size )
309303
310304
311305def stop_progress_bar (bar_type , visible = False ):
312306 """
313307 Stop progress bar of given type.
314308 """
315- (pbar , task_id ) = _progress_bar_cache [bar_type ]
316- pbar .stop_task (task_id )
317- if not visible :
318- pbar .update (task_id , visible = False )
309+ if bar_type in _progress_bar_cache :
310+ (pbar , task_id ) = _progress_bar_cache [bar_type ]
311+ pbar .stop_task (task_id )
312+ if not visible :
313+ pbar .update (task_id , visible = False )
314+ else :
315+ raise EasyBuildError ("Failed to stop %s progress bar, since it was never started?!" , bar_type )
319316
320317
321318def print_checks (checks_data ):
@@ -384,3 +381,13 @@ def print_checks(checks_data):
384381 console_print (table )
385382 else :
386383 print ('\n ' .join (lines ))
384+
385+
386+ # this constant must be defined at the end, since functions used as values need to be defined
387+ PROGRESS_BAR_TYPES = {
388+ PROGRESS_BAR_DOWNLOAD_ALL : download_all_progress_bar ,
389+ PROGRESS_BAR_DOWNLOAD_ONE : download_one_progress_bar ,
390+ PROGRESS_BAR_EXTENSIONS : extensions_progress_bar ,
391+ PROGRESS_BAR_EASYCONFIG : easyconfig_progress_bar ,
392+ STATUS_BAR : status_bar ,
393+ }
0 commit comments