]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
More helpful error looking up for missing types in the registry
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 24 Aug 2021 15:18:30 +0000 (17:18 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 24 Aug 2021 15:18:30 +0000 (17:18 +0200)
psycopg/psycopg/_typeinfo.py

index 5fb73e07ab53bb37c72162cf47392575313b6b6d..8fff12c16801acbab21ee576b91ebb88e9641b8b 100644 (file)
@@ -288,15 +288,20 @@ class TypesRegistry:
 
         Raise KeyError if not found.
         """
-        if isinstance(key, str):
-            if key.endswith("[]"):
-                key = key[:-2]
-            return self._by_name[key]
-        elif isinstance(key, int):
-            return self._by_oid[key]
-        else:
-            raise TypeError(
-                f"the key must be an oid or a name, got {type(key)}"
+        try:
+            if isinstance(key, str):
+                if key.endswith("[]"):
+                    key = key[:-2]
+                return self._by_name[key]
+            elif isinstance(key, int):
+                return self._by_oid[key]
+            else:
+                raise TypeError(
+                    f"the key must be an oid or a name, got {type(key)}"
+                )
+        except KeyError:
+            raise KeyError(
+                f"couldn't find the type {key!r} in the types registry"
             )
 
     def get(self, key: Union[str, int]) -> Optional[TypeInfo]: