]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix: fix "can't adapt" error message on Python 3.11
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 31 Jul 2023 23:49:04 +0000 (00:49 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 1 Aug 2023 02:44:08 +0000 (03:44 +0100)
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.

psycopg/psycopg/_adapters_map.py
psycopg/psycopg/_transform.py

index 70bf4cc02a52f83128beb29fc91af79843f2cebf..a3c6684cb44eb97b1fa4201b7acf96e6aaa2a020 100644 (file)
@@ -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"]:
index 19bd6aec79d4021c991751f89f38b19dfd0a70a9..d5645ec0dbb9e15f5b06858ef5aae9e078aa2b61 100644 (file)
@@ -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)