Skip to content

Commit 50dd6b9

Browse files
Add limit_reached property to Usage, deprecate limit_exceeded property
1 parent 5ebeb10 commit 50dd6b9

3 files changed

Lines changed: 46 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
* New languages available: Indonesian (`'id'`) and Turkish (`'tr'`). Add language code constants and tests.
1111

1212
Note: older library versions also support the new languages, this update only adds new code constants.
13+
* Add `limit_reached` and `any_limit_reached` properties to `Usage` object
14+
returned by `get_usage()`.
1315
### Changed
1416
### Deprecated
17+
* Deprecate `limit_exceeded` and `any_limit_exceeded` properties of `Usage`
18+
object returned by `get_usage()`, use `limit_reached` and `any_limit_reached`
19+
instead.
1520
### Removed
1621
### Fixed
1722
### Security

deepl/translator.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,8 @@ class Usage:
218218
The character, document and team_document properties provide details about
219219
each corresponding usage type. These properties allow each usage type to be
220220
checked individually.
221-
The any_limit_exceeded property checks if any usage type is exceeded.
221+
The any_limit_reached property checks if for any usage type the amount used
222+
has reached the allowed amount.
222223
"""
223224

224225
class Detail:
@@ -243,10 +244,21 @@ def valid(self) -> bool:
243244
return self._count is not None and self._limit is not None
244245

245246
@property
246-
def limit_exceeded(self) -> bool:
247-
"""True iff this limit is valid and exceeded."""
247+
def limit_reached(self) -> bool:
248+
"""True if this limit is valid and the amount used is greater than
249+
or equal to the amount allowed, otherwise False."""
248250
return self.valid and self.count >= self.limit
249251

252+
@property
253+
def limit_exceeded(self) -> bool:
254+
"""Deprecated, use limit_reached instead."""
255+
import warnings
256+
257+
warnings.warn(
258+
"limit_reached is deprecated", DeprecationWarning, stacklevel=2
259+
)
260+
return self.limit_reached
261+
250262
def __str__(self) -> str:
251263
return f"{self.count} of {self.limit}" if self.valid else "Unknown"
252264

@@ -256,13 +268,24 @@ def __init__(self, json: dict):
256268
self._team_document = self.Detail(json, "team_document")
257269

258270
@property
259-
def any_limit_exceeded(self) -> bool:
260-
"""True if any API function limit is exceeded."""
271+
def any_limit_reached(self) -> bool:
272+
"""True if for any API usage type, the amount used is greater than or
273+
equal to the amount allowed, otherwise False."""
261274
return (
262-
self.character.limit_exceeded
263-
or self.document.limit_exceeded
264-
or self.team_document.limit_exceeded
275+
self.character.limit_reached
276+
or self.document.limit_reached
277+
or self.team_document.limit_reached
278+
)
279+
280+
@property
281+
def any_limit_exceeded(self) -> bool:
282+
"""Deprecated, use any_limit_reached instead."""
283+
import warnings
284+
285+
warnings.warn(
286+
"any_limit_reached is deprecated", DeprecationWarning, stacklevel=2
265287
)
288+
return self.any_limit_reached
266289

267290
@property
268291
def character(self) -> Detail:

tests/test_general.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ def test_usage_overrun(translator_with_random_auth_key, server, tmpdir):
146146
)
147147

148148
usage = translator.get_usage()
149+
assert usage.any_limit_reached
150+
assert usage.document.limit_reached
151+
assert usage.character.limit_reached
152+
assert not usage.team_document.limit_reached
153+
# Test deprecated properties as well
149154
assert usage.any_limit_exceeded
150155
assert usage.document.limit_exceeded
151156
assert usage.character.limit_exceeded
@@ -171,7 +176,7 @@ def test_usage_team_document_limit(
171176

172177
translator = translator_with_random_auth_key
173178
usage = translator.get_usage()
174-
assert not usage.any_limit_exceeded
179+
assert not usage.any_limit_reached
175180
assert "Characters" not in str(usage)
176181
assert "Documents" not in str(usage)
177182
assert "Team documents: 0 of 1" in str(usage)
@@ -185,7 +190,7 @@ def test_usage_team_document_limit(
185190
)
186191

187192
usage = translator.get_usage()
188-
assert usage.any_limit_exceeded
189-
assert not usage.document.limit_exceeded
190-
assert not usage.character.limit_exceeded
191-
assert usage.team_document.limit_exceeded
193+
assert usage.any_limit_reached
194+
assert not usage.document.limit_reached
195+
assert not usage.character.limit_reached
196+
assert usage.team_document.limit_reached

0 commit comments

Comments
 (0)