better progress bar
This commit is contained in:
parent
4e997a8aa7
commit
e6987dea19
|
@ -4,6 +4,15 @@ from dataclasses import dataclass
|
|||
from pathlib import Path
|
||||
from pprint import pprint
|
||||
|
||||
from rich.progress import (
|
||||
BarColumn,
|
||||
DownloadColumn,
|
||||
Progress,
|
||||
TextColumn,
|
||||
TimeRemainingColumn,
|
||||
TransferSpeedColumn,
|
||||
)
|
||||
|
||||
import pyperclip
|
||||
import requests
|
||||
import typer
|
||||
|
@ -44,14 +53,27 @@ def output(copy: bool, resp: dict):
|
|||
@dataclass
|
||||
class ProgressMonitor:
|
||||
size: int
|
||||
filename: str
|
||||
|
||||
def __post_init__(self):
|
||||
self.progress = Progress(transient=True)
|
||||
self.task = self.progress.add_task("[green]Uploading")
|
||||
self.progress = Progress(
|
||||
TextColumn("[bold blue]{task.fields[filename]}", justify="right"),
|
||||
BarColumn(bar_width=None),
|
||||
"[progress.percentage]{task.percentage:>3.1f}%",
|
||||
"•",
|
||||
DownloadColumn(),
|
||||
"•",
|
||||
TransferSpeedColumn(),
|
||||
"•",
|
||||
TimeRemainingColumn(),
|
||||
)
|
||||
self.task = self.progress.add_task("[green]Uploading",
|
||||
filename=self.filename,
|
||||
total=self.size)
|
||||
self.progress.start()
|
||||
|
||||
def __call__(self, monitor: MultipartEncoderMonitor):
|
||||
progress = (100 * monitor.bytes_read) // self.size
|
||||
progress = monitor.bytes_read
|
||||
self.progress.update(self.task, completed=progress)
|
||||
|
||||
|
||||
|
@ -88,7 +110,7 @@ def upload(file: Path,
|
|||
files = MultipartEncoder(
|
||||
fields={'file': (filename, f)}
|
||||
)
|
||||
progress_monitor = ProgressMonitor(files.len)
|
||||
progress_monitor = ProgressMonitor(files.len, filename)
|
||||
|
||||
monitored = MultipartEncoderMonitor(files, progress_monitor)
|
||||
headers = {'Content-Type': monitored.content_type}
|
||||
|
|
Loading…
Reference in a new issue