Skip to content

Commit 334bd7a

Browse files
authored
Backport rich.progress.MofNCompleteColumn (#207)
- **fix** - **fix**
1 parent 6b47a76 commit 334bd7a

3 files changed

Lines changed: 28 additions & 3 deletions

File tree

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ repos:
4646
rev: v1.20.2
4747
hooks:
4848
- id: mypy
49-
additional_dependencies: [aiopathlib, asyncio-for-ynab, rich>=14]
49+
additional_dependencies: [aiopathlib, asyncio-for-ynab, rich>=12]
5050
language_version: python3.12

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ install_requires =
2424
aiosqlite
2525
asyncio-for-ynab
2626
fasteners
27-
rich>=14
27+
rich>=12
2828
tenacity
2929
python_requires = >=3.12
3030

sqlite_export_for_ynab/_main.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
from asyncio_for_ynab import TransactionDetail
3636
from asyncio_for_ynab import TransactionsApi
3737
from rich.progress import BarColumn
38-
from rich.progress import MofNCompleteColumn
3938
from rich.progress import Progress
4039
from rich.progress import TaskID
4140
from rich.progress import TextColumn
@@ -50,6 +49,32 @@
5049
from collections.abc import Iterator
5150
from collections.abc import Sequence
5251

52+
try:
53+
from rich.progress import MofNCompleteColumn
54+
# https://github.com/benleb/surepy/issues/240
55+
except ImportError: # pragma: no cover
56+
from rich.progress import ProgressColumn
57+
from rich.progress import Task
58+
from rich.text import Text
59+
60+
if TYPE_CHECKING:
61+
from rich.table import Column
62+
63+
class MofNCompleteColumn(ProgressColumn): # type:ignore[no-redef]
64+
def __init__(self, separator: str = "/", table_column: Column | None = None):
65+
self.separator = separator
66+
super().__init__(table_column=table_column)
67+
68+
def render(self, task: Task) -> Text:
69+
"""Show completed/total."""
70+
completed = int(task.completed)
71+
total = int(task.total) if task.total is not None else "?"
72+
total_width = len(str(total))
73+
return Text(
74+
f"{completed:{total_width}d}{self.separator}{total}",
75+
style="progress.download",
76+
)
77+
5378

5479
_EntryTable = (
5580
Literal["accounts"]

0 commit comments

Comments
 (0)