from ..adapt import RecursiveDumper, RecursiveLoader, PyFormat
from .._compat import cache, prod
from .._struct import pack_len, unpack_len
+from .._cmodule import _psycopg
from ..postgres import TEXT_OID, INVALID_OID
from .._typeinfo import TypeInfo
t.register(context)
-def load_text(
+def _load_text(
data: Buffer,
load: LoadFunc,
delimiter: bytes = b",",
)
-def load_binary(data: Buffer, load: LoadFunc) -> List[Any]:
+def _load_binary(data: Buffer, load: LoadFunc) -> List[Any]:
ndims, hasnull, oid = _unpack_head(data)
if not ndims:
out = [out[i : i + dim] for i in range(0, len(out), dim)]
return out
+
+
+# Override functions with fast versions if available
+if _psycopg:
+ load_text = _psycopg.array_load_text
+ load_binary = _psycopg.array_load_binary
+
+else:
+ load_text = _load_text
+ load_binary = _load_binary
def parse_row_text(data: abc.Buffer, tx: abc.Transformer) -> Tuple[Any, ...]: ...
def parse_row_binary(data: abc.Buffer, tx: abc.Transformer) -> Tuple[Any, ...]: ...
+# Arrays optimization
+def array_load_text(
+ data: abc.Buffer, load: abc.LoadFunc, delimiter: bytes = b","
+) -> List[Any]: ...
+def array_load_binary(data: abc.Buffer, load: abc.LoadFunc) -> List[Any]: ...
+
# vim: set syntax=python:
include "_psycopg/generators.pyx"
include "_psycopg/transform.pyx"
+include "types/array.pyx"
include "types/datetime.pyx"
include "types/numeric.pyx"
include "types/bool.pyx"
--- /dev/null
+"""
+C optimized functions to manipulate arrays
+"""
+
+# Copyright (C) 2022 The Psycopg Team
+
+def array_load_text(
+ data: Buffer, load: LoadFunc, delimiter: bytes = b","
+) -> List[Any]:
+ raise NotImplementedError
+
+
+def array_load_binary(data: Buffer, load: LoadFunc) -> List[Any]:
+ raise NotImplementedError