77
88from  rich .console  import  Console 
99from  rich .logging  import  RichHandler 
10- from  rich .progress  import  Progress , SpinnerColumn , TimeElapsedColumn 
10+ from  rich .progress  import  (
11+     BarColumn ,
12+     MofNCompleteColumn ,
13+     Progress ,
14+     SpinnerColumn ,
15+     TaskProgressColumn ,
16+     TextColumn ,
17+     TimeElapsedColumn ,
18+     TimeRemainingColumn ,
19+ )
1120
1221from  codeflash .cli_cmds .console_constants  import  SPINNER_TYPES 
1322from  codeflash .cli_cmds .logging_config  import  BARE_LOGGING_FORMAT 
2231console  =  Console ()
2332logging .basicConfig (
2433    level = logging .INFO ,
25-     handlers = [RichHandler (rich_tracebacks = True , markup = False , console = console , show_path = False , show_time = False )],
34+     handlers = [
35+         RichHandler (
36+             rich_tracebacks = True ,
37+             markup = False ,
38+             console = console ,
39+             show_path = False ,
40+             show_time = False ,
41+         )
42+     ],
2643    format = BARE_LOGGING_FORMAT ,
2744)
2845
2946logger  =  logging .getLogger ("rich" )
30- logging .getLogger ('parso' ).setLevel (logging .WARNING )
47+ logging .getLogger ("parso" ).setLevel (logging .WARNING )
48+ 
3149
3250def  paneled_text (
33-     text : str , panel_args : dict [str , str  |  bool ] |  None  =  None , text_args : dict [str , str ] |  None  =  None 
51+     text : str ,
52+     panel_args : dict [str , str  |  bool ] |  None  =  None ,
53+     text_args : dict [str , str ] |  None  =  None ,
3454) ->  None :
3555    """Print text in a panel.""" 
3656    from  rich .panel  import  Panel 
@@ -57,7 +77,9 @@ def code_print(code_str: str) -> None:
5777
5878
5979@contextmanager  
60- def  progress_bar (message : str , * , transient : bool  =  False ) ->  Generator [TaskID , None , None ]:
80+ def  progress_bar (
81+     message : str , * , transient : bool  =  False 
82+ ) ->  Generator [TaskID , None , None ]:
6183    """Display a progress bar with a spinner and elapsed time.""" 
6284    progress  =  Progress (
6385        SpinnerColumn (next (spinners )),
@@ -69,3 +91,25 @@ def progress_bar(message: str, *, transient: bool = False) -> Generator[TaskID,
6991    task  =  progress .add_task (message , total = None )
7092    with  progress :
7193        yield  task 
94+ 
95+ 
96+ @contextmanager  
97+ def  test_files_progress_bar (
98+     total : int , description : str 
99+ ) ->  Generator [tuple [Progress , TaskID ], None , None ]:
100+     """Progress bar for test files.""" 
101+     with  Progress (
102+         SpinnerColumn (next (spinners )),
103+         TextColumn ("[progress.description]{task.description}" ),
104+         BarColumn (
105+             complete_style = "cyan" ,
106+             finished_style = "green" ,
107+             pulse_style = "yellow" ,
108+         ),
109+         MofNCompleteColumn (),
110+         TimeElapsedColumn (),
111+         TimeRemainingColumn (),
112+         transient = True ,
113+     ) as  progress :
114+         task_id  =  progress .add_task (description , total = total )
115+         yield  progress , task_id 
0 commit comments