Skip to content

Commit fb0f599

Browse files
author
David Baumgold
authored
Merge pull request #147 from nylas/datetime-timedelta-ensure-int
Cast to int when converting timedelta to minutes
2 parents 731dc09 + 7deed75 commit fb0f599

3 files changed

Lines changed: 12 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ nylas-python Changelog
33

44
Unreleased (dev)
55
----------------
6-
nothing yet
6+
* Bugfix: Previously, if you passed a timedelta to the calendar availability
7+
API endpoint, it was converted to a float. Now, it is coerced to an int.
78

89
v4.12.0
910
-------

nylas/client/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ def availability(
249249
if isinstance(emails, six.string_types):
250250
emails = [emails]
251251
if isinstance(duration, timedelta):
252-
duration_minutes = duration.total_seconds() // 60
252+
duration_minutes = int(duration.total_seconds() // 60)
253253
else:
254254
duration_minutes = int(duration)
255255
if isinstance(interval, timedelta):
256-
interval_minutes = interval.total_seconds() // 60
256+
interval_minutes = int(interval.total_seconds() // 60)
257257
else:
258258
interval_minutes = int(interval)
259259
if isinstance(start_at, datetime):

tests/test_events.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,9 @@ def test_availability_datetime(mocked_responses, api_client):
169169
data = json.loads(request.body)
170170
assert data["emails"] == emails
171171
assert data["duration_minutes"] == 30
172+
assert isinstance(data["duration_minutes"], int)
172173
assert data["interval_minutes"] == 90
174+
assert isinstance(data["interval_minutes"], int)
173175
assert data["start_time"] == 1577836800
174176
assert data["end_time"] == 1577923200
175177
assert data["free_busy"] == []
@@ -194,7 +196,9 @@ def test_availability_timestamp(mocked_responses, api_client):
194196
data = json.loads(request.body)
195197
assert data["emails"] == emails
196198
assert data["duration_minutes"] == 30
199+
assert isinstance(data["duration_minutes"], int)
197200
assert data["interval_minutes"] == 60
201+
assert isinstance(data["interval_minutes"], int)
198202
assert data["start_time"] == 1580511600
199203
assert data["end_time"] == 1580598000
200204
assert data["free_busy"] == []
@@ -217,7 +221,9 @@ def test_availability_single_email(mocked_responses, api_client):
217221
data = json.loads(request.body)
218222
assert data["emails"] == [email]
219223
assert data["duration_minutes"] == 60
224+
assert isinstance(data["duration_minutes"], int)
220225
assert data["interval_minutes"] == 5
226+
assert isinstance(data["interval_minutes"], int)
221227
assert data["start_time"] == 946684800
222228
assert data["end_time"] == 951868800
223229
assert data["free_busy"] == []
@@ -260,7 +266,9 @@ def test_availability_with_free_busy(mocked_responses, api_client):
260266
data = json.loads(request.body)
261267
assert data["emails"] == emails
262268
assert data["duration_minutes"] == 48
269+
assert isinstance(data["duration_minutes"], int)
263270
assert data["interval_minutes"] == 18
271+
assert isinstance(data["interval_minutes"], int)
264272
assert data["start_time"] == 1577836800
265273
assert data["end_time"] == 1577923200
266274
assert data["free_busy"] == free_busy

0 commit comments

Comments
 (0)