From: Aarni Koskela Date: Fri, 27 Feb 2026 16:38:59 +0000 (+0200) Subject: perf: speed up Python UUID converters X-Git-Tag: pool-3.3.1~15 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=a458337f84c8ad66a09d38aa35884754eb429103;p=thirdparty%2Fpsycopg.git perf: speed up Python UUID converters --- diff --git a/psycopg/psycopg/types/uuid.py b/psycopg/psycopg/types/uuid.py index b094937ad..0e59de098 100644 --- a/psycopg/psycopg/types/uuid.py +++ b/psycopg/psycopg/types/uuid.py @@ -25,14 +25,14 @@ class UUIDDumper(Dumper): oid = _oids.UUID_OID def dump(self, obj: uuid.UUID) -> Buffer | None: - return obj.hex.encode() + return b"%032x" % obj.int class UUIDBinaryDumper(UUIDDumper): format = Format.BINARY def dump(self, obj: uuid.UUID) -> Buffer | None: - return obj.bytes + return obj.int.to_bytes(16, "big") class UUIDLoader(Loader): @@ -43,18 +43,14 @@ class UUIDLoader(Loader): from uuid import UUID def load(self, data: Buffer) -> uuid.UUID: - if isinstance(data, memoryview): - data = bytes(data) - return UUID(data.decode()) + return UUID((bytes(data) if isinstance(data, memoryview) else data).decode()) class UUIDBinaryLoader(UUIDLoader): format = Format.BINARY def load(self, data: Buffer) -> uuid.UUID: - if isinstance(data, memoryview): - data = bytes(data) - return UUID(bytes=data) + return UUID(bytes=(bytes(data) if isinstance(data, memoryview) else data)) def register_default_adapters(context: AdaptContext) -> None: