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.
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"]:
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)