Skip to content

Commit 7e407fd

Browse files
Merge branch 'tqdm_removal' into v2.x
2 parents 272ec2e + edd1ac8 commit 7e407fd

File tree

5 files changed

+43
-5
lines changed

5 files changed

+43
-5
lines changed

b2sdk/_internal/progress.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,13 @@ def __exit__(self, exc_type, exc_val, exc_tb):
104104
class TqdmProgressListener(AbstractProgressListener):
105105
"""
106106
Progress listener based on tqdm library.
107+
108+
This listener displays a nice progress bar, but requires `tqdm` package to be installed.
107109
"""
108110

109111
def __init__(self, *args, **kwargs):
112+
if tqdm is None:
113+
raise ModuleNotFoundError("No module named 'tqdm' found")
110114
self.tqdm = None # set in set_total_bytes()
111115
self.prev_value = 0
112116
super().__init__(*args, **kwargs)
@@ -212,7 +216,7 @@ def get_calls(self) -> list[str]:
212216

213217
def make_progress_listener(description: str, quiet: bool) -> AbstractProgressListener:
214218
"""
215-
Return a progress listener object depending on some conditions.
219+
Produce the best progress listener available for the given parameters.
216220
217221
:param description: listener description
218222
:param quiet: if ``True``, do not output anything

changelog.d/+tqdm_removal.removed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove `tqdm` dependency. Now `tqdm` has to be explicitly installed to use `TqdmProgressListener` class.

pdm.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ dependencies = [
99
"importlib-metadata>=3.3.0; python_version < '3.8'",
1010
"logfury<2.0.0,>=1.0.1",
1111
"requests<3.0.0,>=2.9.1",
12-
"tqdm<5.0.0,>=4.5.0",
1312
"typing-extensions>=4.7.1; python_version < '3.12'",
1413
]
1514
requires-python = ">=3.7"
@@ -166,6 +165,7 @@ test = [
166165
"pytest-lazy-fixture==0.6.3",
167166
"pytest-xdist==2.5.0",
168167
"pytest-timeout==2.1.0",
168+
"tqdm<5.0.0,>=4.5.0",
169169
]
170170
release = [
171171
"towncrier==23.11.0; python_version>='3.8'",

test/unit/test_progress.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
######################################################################
2+
#
3+
# File: test/unit/test_progress.py
4+
#
5+
# Copyright 2024 Backblaze Inc. All Rights Reserved.
6+
#
7+
# License https://www.backblaze.com/using_b2_code.html
8+
#
9+
######################################################################
10+
import pytest
11+
from apiver_deps import TqdmProgressListener, make_progress_listener
12+
13+
14+
@pytest.mark.parametrize(
15+
"tqdm_available, quiet, expected_listener",
16+
[
17+
(True, False, "TqdmProgressListener"),
18+
(False, False, "SimpleProgressListener"),
19+
(False, True, "DoNothingProgressListener"),
20+
],
21+
)
22+
def test_make_progress_listener(tqdm_available, quiet, expected_listener, monkeypatch):
23+
if not tqdm_available:
24+
monkeypatch.setattr("b2sdk._internal.progress.tqdm", None)
25+
26+
assert make_progress_listener("description", quiet).__class__.__name__ == expected_listener
27+
28+
29+
def test_tqdm_progress_listener__without_tqdm_module(monkeypatch):
30+
monkeypatch.setattr("b2sdk._internal.progress.tqdm", None)
31+
32+
with pytest.raises(ModuleNotFoundError):
33+
TqdmProgressListener("description")

0 commit comments

Comments
 (0)