def for_download_and_hashcheck( cls, title: str, tc_log: logger.CustomLogger = None, ) -> "Progress": _progress = Progress( title=title, columns={ "file_key": r_progress.TextColumn( "[progress.description]{task.description}"), "progress": r_progress.BarColumn(), "percentage": r_progress.TextColumn( "[progress.percentage]{task.percentage:>3.0f}%"), # todo: combine hash checking here ... # especially better if we are building hash as we progress download # "hash_progress": progress.BarColumn(), # "hash_percentage": progress.TextColumn( # "[progress.percentage]{task.percentage:>3.0f}%"), "download": r_progress.DownloadColumn(), "time_elapsed": r_progress.TimeElapsedColumn(), "status": SpinnerColumn( start_state_key="start", finished_state_key="finished", states={ "start": SpinnerType.dots, "finished": EMOJI["white_heavy_check_mark"], "already_finished": EMOJI["heavy_check_mark"], "failed": EMOJI["cross_mark"], } ), }, tc_log=tc_log, ) return _progress
def simple_progress( title: t.Optional[str] = None, refresh_per_second: int = 10, console: r_console.Console = r_console.Console(record=True), tc_log: logger.CustomLogger = None, ) -> "Progress": return Progress( title=title, # setting this to str will add panel columns={ "text": r_progress.TextColumn( "[progress.description]{task.description}"), "progress": r_progress.BarColumn(), "percentage": r_progress.TextColumn( "[progress.percentage]{task.percentage:>3.0f}%"), "time_elapsed": r_progress.TimeElapsedColumn(), "time_remaining": r_progress.TimeRemainingColumn(), "status": SpinnerColumn( start_state_key="start", finished_state_key="finished", states={ "start": SpinnerType.dots, "finished": EMOJI["white_heavy_check_mark"], } ), }, console=console, refresh_per_second=refresh_per_second, tc_log=tc_log, )
def __post_init__(self): # make spinner self._spinner = self.spinner.get_spinner( text=self.status, speed=self.spinner_speed ) # make overall progress if self.overall_progress_iterable is not None: self._overall_progress = Progress( columns={ "text": r_progress.TextColumn( "[progress.description]{task.description}"), "progress": r_progress.BarColumn(), "percentage": r_progress.TextColumn( "[progress.percentage]{task.percentage:>3.0f}%"), "time_elapsed": r_progress.TimeElapsedColumn(), "time_remaining": r_progress.TimeRemainingColumn(), "status": SpinnerColumn( start_state_key="start", finished_state_key="finished", states={ "start": SpinnerType.dots, "finished": EMOJI["white_heavy_check_mark"], } ), }, console=self.console, refresh_per_second=self.refresh_per_second, ) # call super super().__post_init__()
def setup_bar(self, total: int): """Initialize the progress bar.""" print() self.progress_mgr = progress.Progress( progress.TextColumn("[progress.description]{task.description}"), progress.BarColumn(), progress.TextColumn( "[progress.percentage]{task.percentage:>3.0f}%"), progress.TimeRemainingColumn(), progress.TextColumn("{task.fields[text]}"), console=console) self.exit = type(self.progress_mgr).__exit__ self.progress = type(self.progress_mgr).__enter__(self.progress_mgr) self.bar = self.progress.add_task(self.icon, total=total, text="") # Logging needs to be set up after the bar, to make use if its print hook self.setup_loggers()
def __init__(self, console: Console, total_bytes: int): self.progress = rp.Progress( rp.TextColumn("[bold blue]{task.description}", justify="right"), rp.BarColumn(bar_width=None), "[progress.percentage]{task.percentage:>3.1f}%", rp.DownloadColumn(), rp.TimeRemainingColumn(), console=console, ) self.task: int = self.progress.add_task( description="transfer image...", total=total_bytes)
add_constants, initialize_babel, startup_message, ) # Logging and terminal set up log = logging.getLogger("werkzeug") dashlog = logging.getLogger("reddash") queuelog = logging.getLogger("waitress.queue") console = console.Console() oldexcepthook = rtb.install() progress_bar = progress.Progress( "{task.description}", progress.TextColumn("{task.fields[status]}\n") ) logging.basicConfig(format="%(message)s", handlers=[richlogging.RichHandler(console=progress_bar)]) queuelog.setLevel(logging.ERROR) # Base variable setup app = Flask("reddash", static_folder="app/base/static") lock = Lock() babel = Babel() def create_app(host, port, rpcport, interval, debug, dev): url = f"{WS_URL}{rpcport}" # Session encoding
"types": {"FLOAT": {"count": 4}, "INTEGER": {"count": 6}} } } } } } } } """ import bson from pymongo.collection import Collection from rich import print, progress progress = progress.Progress( progress.TextColumn("{task.description} ", justify="left"), progress.BarColumn(bar_width=None), "[progress.percentage]{task.percentage:>3.1f}% ({task.completed}/{task.total})", "•", progress.TimeRemainingColumn(), ) def extract_schema_from_collection(collection: Collection, partial: bool): """ Extracts a schema definition from a collection. If the extraction is partial, only the first document in the collection is used to create the schema. """ schema = {"count": 0, "document": {}}