From da30e7fa050881333cbfe9e527d4e5559ced0842 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Wed, 13 Dec 2023 14:20:49 +0100 Subject: [PATCH] refactor: add compiled_default option to _get_params Make it less awkward to come out with a 5432 when we really want a port number (in name resolution) but still allow to leave it unspecified to avoid mangling the conninfo. --- psycopg/psycopg/conninfo.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/psycopg/psycopg/conninfo.py b/psycopg/psycopg/conninfo.py index 3cc8bbb3e..ef07e5eca 100644 --- a/psycopg/psycopg/conninfo.py +++ b/psycopg/psycopg/conninfo.py @@ -422,12 +422,7 @@ async def _resolve_hostnames(params: ConnDict) -> list[ConnDict]: loop = asyncio.get_running_loop() - port = _get_param(params, "port") - if not port: - portdef = _get_param_def("port") - if portdef: - port = portdef.compiled - + port = _get_param(params, "port", compiled_default=True) assert port and "," not in port # assume a libpq default and no multi ans = await loop.getaddrinfo( host, int(port), proto=socket.IPPROTO_TCP, type=socket.SOCK_STREAM @@ -466,7 +461,9 @@ def timeout_from_conninfo(params: ConnDict) -> int: return timeout -def _get_param(params: ConnDict, name: str) -> str | None: +def _get_param( + params: ConnDict, name: str, compiled_default: bool = False +) -> str | None: """ Return a value from a connection string. @@ -485,7 +482,7 @@ def _get_param(params: ConnDict, name: str) -> str | None: if env is not None: return env - return None + return paramdef.compiled if compiled_default else None @dataclass -- 2.47.2