from . import abc
from .misc import ConninfoOption, PGnotify, PGresAttDesc
-from .misc import error_message
+from .misc import error_message, version_pretty
from ._enums import ConnStatus, DiagnosticField, ExecStatus, Format, Trace
from ._enums import Ping, PipelineStatus, PollingStatus, TransactionStatus
"error_message",
"ConninfoOption",
"version",
+ "version_pretty",
)
if sparts:
sparts = f" ({sparts})"
return f"[{status}]{sparts}"
+
+
+def version_pretty(version: int) -> str:
+ """
+ Return a pretty representation of a PostgreSQL version
+
+ For instance: 140002 -> 14.2, 90610 -> 9.6.10
+ """
+ version, patch = divmod(version, 100)
+ major, minor = divmod(version, 100)
+ if major >= 10 and minor == 0:
+ return f"{major}.{patch}"
+ else:
+ return f"{major}.{minor}.{patch}"
with pytest.raises(psycopg.OperationalError):
res.set_attributes(attrs)
+
+
+@pytest.mark.parametrize(
+ "intv, strv",
+ [(91020, "9.10.20"), (100004, "10.4"), (101112, "10.11.12")],
+)
+def test_version_pretty(intv, strv):
+ assert pq.version_pretty(intv) == strv