From 34f9cbaa7da4faa6e41daea33c28678e6f8f22f4 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Thu, 18 Apr 2024 03:38:17 +0200 Subject: [PATCH] fix: fix handling of floating point values for connect_timeout --- docs/news.rst | 2 ++ psycopg/psycopg/conninfo.py | 4 ++-- tests/test_conninfo.py | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/news.rst b/docs/news.rst index 3b0c06ffe..494ebaa19 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -50,6 +50,8 @@ Psycopg 3.1.19 ^^^^^^^^^^^^^^ - Fix excessive stripping of error message prefixes (:ticket:`#752`). +- Allow to specify the ``connect_timeout`` connection parameter as float + (:ticket:`#796`). Current release diff --git a/psycopg/psycopg/conninfo.py b/psycopg/psycopg/conninfo.py index 1401426b2..f40b58a6b 100644 --- a/psycopg/psycopg/conninfo.py +++ b/psycopg/psycopg/conninfo.py @@ -138,9 +138,9 @@ def timeout_from_conninfo(params: ConnDict) -> int: if value is None: value = _DEFAULT_CONNECT_TIMEOUT try: - timeout = int(value) + timeout = int(float(value)) except ValueError: - raise e.ProgrammingError(f"bad value for connect_timeout: {value!r}") + raise e.ProgrammingError(f"bad value for connect_timeout: {value!r}") from None if timeout <= 0: # The sync connect function will stop on the default socket timeout diff --git a/tests/test_conninfo.py b/tests/test_conninfo.py index badd5d92c..8e64fe3a5 100644 --- a/tests/test_conninfo.py +++ b/tests/test_conninfo.py @@ -96,6 +96,7 @@ def test_no_munging(): ("connect_timeout=0", _DEFAULT_CONNECT_TIMEOUT, None), ("connect_timeout=1", 2, None), ("connect_timeout=10", 10, None), + ("connect_timeout=5.0", 5, None), ("", 15, {"PGCONNECT_TIMEOUT": "15"}), ], ) -- 2.39.5