From: Daniele Varrazzo Date: Sun, 10 May 2020 16:23:55 +0000 (+1200) Subject: Dropped unknown loader, using text/bytea ones X-Git-Tag: 3.0.dev0~534 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25c03d83beb5baac4bbc1edf29b15e10dfe7765b;p=thirdparty%2Fpsycopg.git Dropped unknown loader, using text/bytea ones --- diff --git a/psycopg3/adapt.py b/psycopg3/adapt.py index 2af9a6263..836a7d79c 100644 --- a/psycopg3/adapt.py +++ b/psycopg3/adapt.py @@ -13,7 +13,6 @@ from . import pq from .cursor import BaseCursor from .types.oids import builtins, INVALID_OID from .connection import BaseConnection -from .utils.typing import DecodeFunc TEXT_OID = builtins["text"].oid @@ -371,29 +370,6 @@ class Transformer: return Loader.globals[INVALID_OID, format] -@Loader.text(INVALID_OID) -class UnknownLoader(Loader): - """ - Fallback object to convert unknown types to Python - """ - - def __init__(self, oid: int, context: AdaptContext): - super().__init__(oid, context) - self.decode: DecodeFunc - if self.connection is not None: - self.decode = self.connection.codec.decode - else: - self.decode = codecs.lookup("utf8").decode - - def load(self, data: bytes) -> str: - return self.decode(data)[0] - - -@Loader.binary(INVALID_OID) -def load_unknown_binary(data: bytes) -> bytes: - return data - - def _connection_from_context( context: AdaptContext, ) -> Optional[BaseConnection]: diff --git a/psycopg3/adapt.pyx b/psycopg3/adapt.pyx index c71255347..4a28a5d8b 100644 --- a/psycopg3/adapt.pyx +++ b/psycopg3/adapt.pyx @@ -36,7 +36,6 @@ cdef void register_c_loader( cdef void fill_row_loader(RowLoader *loader, object pyloader): loader.pyloader = pyloader - print(pyloader) cdef CLoader cloader cloader = cloaders.get(pyloader) if cloader is not None: @@ -74,8 +73,6 @@ cdef void register_text_c_loaders(): from psycopg3 import adapt from psycopg3.types import text register_c_loader(text.StringLoader.load, load_text, get_context_text) - register_c_loader(text.NameLoader.load, load_text, get_context_text) + register_c_loader(text.UnknownLoader.load, load_text, get_context_text) register_c_loader(text.load_bytea_text, load_bytea_text) register_c_loader(text.load_bytea_binary, load_bytea_binary) - register_c_loader(adapt.UnknownLoader.load, load_unknown_text) - register_c_loader(adapt.load_unknown_binary, load_unknown_binary) diff --git a/psycopg3/types/text.pxd b/psycopg3/types/text.pxd index 81b0425ee..b2693bc64 100644 --- a/psycopg3/types/text.pxd +++ b/psycopg3/types/text.pxd @@ -1,4 +1,2 @@ cdef object load_text(const char *data, size_t length, void *context) cdef void *get_context_text(object loader) -cdef object load_unknown_text(const char *data, size_t length, void *context) -cdef object load_unknown_binary(const char *data, size_t length, void *context) diff --git a/psycopg3/types/text.py b/psycopg3/types/text.py index f36ae9e75..8600536c4 100644 --- a/psycopg3/types/text.py +++ b/psycopg3/types/text.py @@ -10,7 +10,7 @@ from typing import Optional, Tuple, Union from ..adapt import Dumper, Loader, AdaptContext from ..utils.typing import EncodeFunc, DecodeFunc from ..pq import Escaping -from .oids import builtins +from .oids import builtins, INVALID_OID TEXT_OID = builtins["text"].oid BYTEA_OID = builtins["bytea"].oid @@ -39,6 +39,7 @@ class StringDumper(Dumper): @Loader.binary(builtins["text"].oid) @Loader.text(builtins["varchar"].oid) @Loader.binary(builtins["varchar"].oid) +@Loader.text(INVALID_OID) class StringLoader(Loader): decode: Optional[DecodeFunc] @@ -66,7 +67,7 @@ class StringLoader(Loader): @Loader.binary(builtins["name"].oid) @Loader.text(builtins["bpchar"].oid) @Loader.binary(builtins["bpchar"].oid) -class NameLoader(Loader): +class UnknownLoader(Loader): def __init__(self, oid: int, context: AdaptContext): super().__init__(oid, context) @@ -103,5 +104,6 @@ def load_bytea_text(data: bytes) -> bytes: @Loader.binary(builtins["bytea"].oid) +@Loader.binary(INVALID_OID) def load_bytea_binary(data: bytes) -> bytes: return data diff --git a/psycopg3/types/text.pyx b/psycopg3/types/text.pyx index dc9b77c98..1b73324e5 100644 --- a/psycopg3/types/text.pyx +++ b/psycopg3/types/text.pyx @@ -37,12 +37,3 @@ cdef object load_bytea_text(const char *data, size_t length, void *context): cdef object load_bytea_binary(const char *data, size_t length, void *context): return data[:length] - - -cdef object load_unknown_text(const char *data, size_t length, void *context): - # TODO: codec - return PyUnicode_DecodeUTF8(data, length, NULL) - - -cdef object load_unknown_binary(const char *data, size_t length, void *context): - return PyBytes_FromStringAndSize(data, length)