Skip to content

Commit 9e83751

Browse files
committed
allow inf raising
1 parent ee8dfb8 commit 9e83751

3 files changed

Lines changed: 14 additions & 3 deletions

File tree

‎deprecate/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22

3-
__version__ = "0.1.0"
3+
__version__ = "0.1.1"
44
__docs__ = "Deprecation tooling"
55
__author__ = "Jiri Borovec"
66
__author_email__ = "jiri.borovec@fel.cvut.cz"

‎deprecate/deprecation.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def deprecated(
127127
remove_in: Define version when the wrapped function will be removed.
128128
stream: Set stream for printing warning messages, by default is deprecation warning.
129129
Setting ``None``, no warning is shown to user.
130-
num_warns: Custom define number or warning raised.
130+
num_warns: Custom define number or warning raised. Negative value (-1) means no limit.
131131
template_mgs: python formatted string message which has build-ins arguments:
132132
``source_name``, ``source_path``, ``target_name``, ``target_path``, ``deprecated_in``, ``remove_in``
133133
Example of a custom message is
@@ -153,7 +153,7 @@ def wrapped_fn(*args: Any, **kwargs: Any) -> Any:
153153
nb_warned = getattr(wrapped_fn, '_warned', 0)
154154
nb_called = getattr(wrapped_fn, '_called', 0)
155155
# warn user only once in lifetime
156-
if stream and nb_warned < num_warns:
156+
if stream and (num_warns < 0 or nb_warned < num_warns):
157157
_raise_warn(
158158
stream,
159159
source=source,

‎tests/test_functions.py‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ def depr_sum_calls_2(a: int, b: int = 5) -> int:
3232
pass
3333

3434

35+
@deprecated(target=base_sum_kwargs, deprecated_in="0.1", remove_in="0.7", num_warns=-1)
36+
def depr_sum_calls_inf(a: int, b: int = 5) -> int:
37+
pass
38+
39+
3540
@deprecated(
3641
target=base_sum_kwargs,
3742
deprecated_in="0.1",
@@ -96,6 +101,12 @@ def test_deprecated_func_stream_calls() -> None:
96101
assert depr_sum_calls_2(3) == 8
97102
assert len(record) == 2
98103

104+
# check that the warning is raised only once per function
105+
with pytest.warns(DeprecationWarning) as record:
106+
for _ in range(5):
107+
assert depr_sum_calls_inf(3) == 8
108+
assert len(record) == 5
109+
99110
with pytest.deprecated_call(match='v0.1: `depr_sum_msg` was deprecated, use `test_functions.base_sum_kwargs`'):
100111
assert depr_sum_msg(3) == 8
101112

0 commit comments

Comments
 (0)