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: 3.1.10~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51b8fc06a52b18753fc73be06ff0e246e194e880;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/_transform.py b/psycopg/psycopg/_transform.py index 19bd6aec7..d5645ec0d 100644 --- a/psycopg/psycopg/_transform.py +++ b/psycopg/psycopg/_transform.py @@ -239,8 +239,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)