Add Rich Progressbar Wrapper
This commit is contained in:
		
							
								
								
									
										27
									
								
								freqtrade/util/rich_progress.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								freqtrade/util/rich_progress.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| import logging | ||||
| import sys | ||||
| from contextlib import contextmanager | ||||
|  | ||||
| from rich.progress import Progress | ||||
|  | ||||
|  | ||||
| @contextmanager | ||||
| def FtProgress(*args, **kwargs): | ||||
|     """ | ||||
|     Wrapper around rich.progress.Progress to fix issues with logging. | ||||
|     """ | ||||
|     try: | ||||
|         __logger = kwargs.pop('logger', None) | ||||
|         streamhandlers = [x for x in __logger.root.handlers if type(x) == logging.StreamHandler] | ||||
|         __prior_stderr = [] | ||||
|  | ||||
|         with Progress(*args, **kwargs) as progress: | ||||
|             for handler in streamhandlers: | ||||
|                 __prior_stderr.append(handler.stream) | ||||
|                 handler.setStream(sys.stderr) | ||||
|  | ||||
|             yield progress | ||||
|  | ||||
|     finally: | ||||
|         for idx, handler in  enumerate(streamhandlers): | ||||
|             handler.setStream(__prior_stderr[idx]) | ||||
		Reference in New Issue
	
	Block a user