Skip to content

Commit cf5c586

Browse files
Enable floating parameters in SET (ex and px) (#1635)
1 parent 638164b commit cf5c586

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

redis/commands.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,12 +1174,18 @@ def set(self, name, value,
11741174
pieces.append('EX')
11751175
if isinstance(ex, datetime.timedelta):
11761176
ex = int(ex.total_seconds())
1177-
pieces.append(ex)
1177+
if isinstance(ex, int):
1178+
pieces.append(ex)
1179+
else:
1180+
raise DataError("ex must be datetime.timedelta or int")
11781181
if px is not None:
11791182
pieces.append('PX')
11801183
if isinstance(px, datetime.timedelta):
11811184
px = int(px.total_seconds() * 1000)
1182-
pieces.append(px)
1185+
if isinstance(px, int):
1186+
pieces.append(px)
1187+
else:
1188+
raise DataError("px must be datetime.timedelta or int")
11831189
if exat is not None:
11841190
pieces.append('EXAT')
11851191
if isinstance(exat, datetime.datetime):

tests/test_commands.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,6 +1104,8 @@ def test_set_px(self, r):
11041104
assert r['a'] == b'1'
11051105
assert 0 < r.pttl('a') <= 10000
11061106
assert 0 < r.ttl('a') <= 10
1107+
with pytest.raises(exceptions.DataError):
1108+
assert r.set('a', '1', px=10.0)
11071109

11081110
@skip_if_server_version_lt('2.6.0')
11091111
def test_set_px_timedelta(self, r):
@@ -1116,6 +1118,8 @@ def test_set_px_timedelta(self, r):
11161118
def test_set_ex(self, r):
11171119
assert r.set('a', '1', ex=10)
11181120
assert 0 < r.ttl('a') <= 10
1121+
with pytest.raises(exceptions.DataError):
1122+
assert r.set('a', '1', ex=10.0)
11191123

11201124
@skip_if_server_version_lt('2.6.0')
11211125
def test_set_ex_timedelta(self, r):

0 commit comments

Comments
 (0)