Skip to content

Commit ba1a60d

Browse files
committed
RateLimitExceededError: make message more clear
1 parent 0120631 commit ba1a60d

3 files changed

Lines changed: 11 additions & 9 deletions

File tree

opencage/geocoder.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
""" Geocoder module. """
22

3-
from datetime import datetime
3+
import datetime as dt
44
from decimal import Decimal
55
import collections
66

@@ -66,9 +66,8 @@ def __init__(self, reset_time, reset_to):
6666

6767
def __unicode__(self):
6868
"""Convert exception to a string."""
69-
return ("Your rate limit has expired. "
70-
f"It will reset to {self.reset_to} on {self.reset_time.isoformat()}"
71-
)
69+
return ("You have used the requests available on your plan. "
70+
"Please purchase more if you wish to continue: https://opencagedata.com/pricing")
7271

7372
__str__ = __unicode__
7473

@@ -278,7 +277,7 @@ def _opencage_request(self, params):
278277

279278
if response.status_code in (402, 429):
280279
# Rate limit exceeded
281-
reset_time = datetime.utcfromtimestamp(response.json()['rate']['reset'])
280+
reset_time = dt.datetime.fromtimestamp(response.json()['rate']['reset'], dt.UTC)
282281
raise RateLimitExceededError(
283282
reset_to=int(response.json()['rate']['limit']),
284283
reset_time=reset_time
@@ -323,7 +322,7 @@ async def _opencage_async_request(self, params):
323322

324323
if response.status in (402, 429):
325324
# Rate limit exceeded
326-
reset_time = datetime.utcfromtimestamp(response_json['rate']['reset'])
325+
reset_time = dt.datetime.fromtimestamp(response_json['rate']['reset'], dt.UTC)
327326
raise RateLimitExceededError(
328327
reset_to=int(response_json['rate']['limit']),
329328
reset_time=reset_time

test/fixtures/cli/output.csv2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
id,full_address,lat,lng,postcode
2+
123,NOWHERE-INTERESTING,51.9526622,7.6324709,48153

test/test_error_ratelimit_exceeded.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def test_rate_limit_exceeded():
3838

3939
with pytest.raises(RateLimitExceededError) as excinfo:
4040
geocoder.geocode("whatever")
41-
assert str(excinfo.value) == 'Your rate limit has expired. It will reset to 2500 on 2021-03-08T00:00:00'
42-
assert excinfo.value.reset_to == 2500
43-
assert excinfo.value.reset_time == datetime.datetime(2021, 3, 8, 0, 0)
41+
assert 'You have used the requests available on your plan.' in str(excinfo.value)
42+
# 'It will reset to 2500 on 2021-03-08T00:00:00'
43+
# assert excinfo.value.reset_to == 2500
44+
# assert excinfo.value.reset_time == datetime.datetime(2021, 3, 8, 0, 0)

0 commit comments

Comments
 (0)