Skip to content

Commit 8401da8

Browse files
authored
add str support for set ex parameter (#2529)
1 parent e67d15c commit 8401da8

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

redis/commands/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2265,6 +2265,8 @@ def set(
22652265
pieces.append(int(ex.total_seconds()))
22662266
elif isinstance(ex, int):
22672267
pieces.append(ex)
2268+
elif isinstance(ex, str) and ex.isdigit():
2269+
pieces.append(int(ex))
22682270
else:
22692271
raise DataError("ex must be datetime.timedelta or int")
22702272
if px is not None:

tests/test_commands.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,6 +1600,13 @@ def test_set_ex(self, r):
16001600
with pytest.raises(exceptions.DataError):
16011601
assert r.set("a", "1", ex=10.0)
16021602

1603+
@skip_if_server_version_lt("2.6.0")
1604+
def test_set_ex_str(self, r):
1605+
assert r.set("a", "1", ex="10")
1606+
assert 0 < r.ttl("a") <= 10
1607+
with pytest.raises(exceptions.DataError):
1608+
assert r.set("a", "1", ex="10.5")
1609+
16031610
@skip_if_server_version_lt("2.6.0")
16041611
def test_set_ex_timedelta(self, r):
16051612
expire_at = datetime.timedelta(seconds=60)

0 commit comments

Comments
 (0)