From: Daniele Varrazzo Date: Mon, 31 Jul 2023 23:49:04 +0000 (+0100) Subject: fix: fix "can't adapt" error message on Python 3.11 X-Git-Tag: pool-3.2.0~79 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e8a2e926fff127d845f317b92e0e006d06ba5186;p=thirdparty%2Fpsycopg.git fix: fix "can't adapt" error message on Python 3.11 It appeared like "using placeholder '%PyFormat.TEXT'" because of the change in the Enum display already fixed elsewhere. Spotted in the conversation in #611. Also fix unneeded nested exception in the Python version of the code. --- diff --git a/psycopg/psycopg/_adapters_map.py b/psycopg/psycopg/_adapters_map.py index 70bf4cc02..a3c6684cb 100644 --- a/psycopg/psycopg/_adapters_map.py +++ b/psycopg/psycopg/_adapters_map.py @@ -219,9 +219,10 @@ class AdaptersMap: d = dmap[scls] = dmap.pop(fqn) return d + format = PyFormat(format) raise e.ProgrammingError( - f"cannot adapt type {cls.__name__!r} using placeholder '%{format}'" - f" (format: {PyFormat(format).name})" + f"cannot adapt type {cls.__name__!r} using placeholder '%{format.value}'" + f" (format: {format.name})" ) def get_dumper_by_oid(self, oid: int, format: pq.Format) -> Type["Dumper"]: diff --git a/psycopg/psycopg/_py_transformer.py b/psycopg/psycopg/_py_transformer.py index 045a6543f..0438725c3 100644 --- a/psycopg/psycopg/_py_transformer.py +++ b/psycopg/psycopg/_py_transformer.py @@ -245,8 +245,12 @@ class Transformer(AdaptContext): except KeyError: # If it's the first time we see this type, look for a dumper # configured for it. - dcls = self.adapters.get_dumper(key, format) - cache[key] = dumper = dcls(key, self) + try: + dcls = self.adapters.get_dumper(key, format) + except e.ProgrammingError as ex: + raise ex from None + else: + cache[key] = dumper = dcls(key, self) # Check if the dumper requires an upgrade to handle this specific value key1 = dumper.get_key(obj, format)