]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Transformer._lookup_dumper/loader dropped altogether
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 7 Aug 2020 03:14:33 +0000 (04:14 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sun, 23 Aug 2020 18:24:02 +0000 (19:24 +0100)
psycopg3/psycopg3/transform.py
psycopg3_c/psycopg3_c/transform.pyx

index f0b5cf76c7391683465a96f6e7e096226ccfec12..83593e866f54fcdded79b2401fceb4ff8047fce6 100644 (file)
@@ -10,8 +10,8 @@ from typing import TYPE_CHECKING
 
 from . import errors as e
 from . import pq
-from .proto import AdaptContext, DumpersMap, DumperType
-from .proto import LoadFunc, LoadersMap, LoaderType
+from .proto import AdaptContext, DumpersMap
+from .proto import LoadFunc, LoadersMap
 from .cursor import BaseCursor
 from .connection import BaseConnection
 from .types.oids import builtins, INVALID_OID
@@ -150,19 +150,18 @@ class Transformer:
         except KeyError:
             pass
 
-        dumper_cls = self._lookup_dumper(*key)
-        self._dumpers_cache[key] = dumper = dumper_cls(key[0], self)
-        return dumper
-
-    def _lookup_dumper(self, src: type, format: Format) -> DumperType:
-        key = (src, format)
         for amap in self._dumpers_maps:
             if key in amap:
-                return amap[key]
+                dumper_cls = amap[key]
+                break
+        else:
+            raise e.ProgrammingError(
+                f"cannot adapt type {type(obj).__name__}"
+                f" to format {Format(format).name}"
+            )
 
-        raise e.ProgrammingError(
-            f"cannot adapt type {src.__name__} to format {Format(format).name}"
-        )
+        self._dumpers_cache[key] = dumper = dumper_cls(key[0], self)
+        return dumper
 
     def load_row(self, row: int) -> Optional[Tuple[Any, ...]]:
         res = self.pgresult
@@ -197,17 +196,14 @@ class Transformer:
         except KeyError:
             pass
 
-        loader_cls = self._lookup_loader(*key)
-        self._loaders_cache[key] = loader = loader_cls(key[0], self)
-        return loader
-
-    def _lookup_loader(self, oid: int, format: Format) -> LoaderType:
-        key = (oid, format)
-
         for tcmap in self._loaders_maps:
             if key in tcmap:
-                return tcmap[key]
+                loader_cls = tcmap[key]
+                break
+        else:
+            from .adapt import Loader  # noqa
 
-        from .adapt import Loader
+            loader_cls = Loader.globals[INVALID_OID, format]
 
-        return Loader.globals[INVALID_OID, format]
+        self._loaders_cache[key] = loader = loader_cls(key[0], self)
+        return loader
index bc656c12bb87ac253d4b6d03681093b9aef10e21..ca5a711da6554bedd82af8e7270c3cfc24ffcadb 100644 (file)
@@ -184,19 +184,18 @@ cdef class Transformer:
         except KeyError:
             pass
 
-        dumper_cls = self._lookup_dumper(*key)
-        self._dumpers_cache[key] = dumper = dumper_cls(key[0], self)
-        return dumper
-
-    def _lookup_dumper(self, src: type, format: Format) -> "DumperType":
-        key = (src, format)
         for amap in self._dumpers_maps:
             if key in amap:
-                return amap[key]
+                dumper_cls = amap[key]
+                break
+        else:
+            raise e.ProgrammingError(
+                f"cannot adapt type {type(obj).__name__}"
+                f" to format {Format(format).name}"
+            )
 
-        raise e.ProgrammingError(
-            f"cannot adapt type {src.__name__} to format {Format(format).name}"
-        )
+        self._dumpers_cache[key] = dumper = dumper_cls(key[0], self)
+        return dumper
 
     def load_row(self, row: int) -> Optional[Tuple[Any, ...]]:
         if self._pgresult is None:
@@ -257,17 +256,13 @@ cdef class Transformer:
         except KeyError:
             pass
 
-        loader_cls = self._lookup_loader(*key)
-        self._loaders_cache[key] = loader = loader_cls(key[0], self)
-        return loader
-
-    def _lookup_loader(self, oid: int, format: Format) -> "LoaderType":
-        key = (oid, format)
-
         for tcmap in self._loaders_maps:
             if key in tcmap:
-                return tcmap[key]
-
-        from psycopg3.adapt import Loader
+                loader_cls = tcmap[key]
+                break
+        else:
+            from psycopg3.adapt import Loader
+            loader_cls = Loader.globals[0, format]    # INVALID_OID
 
-        return Loader.globals[0, format]    # INVALID_OID
+        self._loaders_cache[key] = loader = loader_cls(key[0], self)
+        return loader