from .rows import Row, RowMaker
from ._compat import TypeAlias
from .postgres import INVALID_OID
+from ._encodings import pgconn_encoding
if TYPE_CHECKING:
from .abc import Dumper, Loader
# the length of the result columns
self._row_loaders: List[LoadFunc] = []
+ self._encoding = ""
+
@classmethod
def from_context(cls, context: Optional[AdaptContext]) -> "Transformer":
"""
def connection(self) -> Optional["BaseConnection[Any]"]:
return self._conn
+ @property
+ def encoding(self) -> str:
+ if not self._encoding:
+ conn = self.connection
+ self._encoding = pgconn_encoding(conn.pgconn) if conn else "utf-8"
+ return self._encoding
+
@property
def adapters(self) -> "AdaptersMap":
return self._adapters
def connection(self) -> Optional["BaseConnection[Any]"]:
...
+ @property
+ def encoding(self) -> str:
+ ...
+
@property
def adapters(self) -> "AdaptersMap":
...
@property
def connection(self) -> Optional[BaseConnection[Any]]: ...
@property
+ def encoding(self) -> str: ...
+ @property
def adapters(self) -> AdaptersMap: ...
@property
def pgresult(self) -> Optional[PGresult]: ...
from psycopg import errors as e
from psycopg.pq import Format as PqFormat
from psycopg.rows import Row, RowMaker
+from psycopg._encodings import pgconn_encoding
NoneType = type(None)
cdef readonly object adapters
cdef readonly object types
cdef readonly object formats
+ cdef str _encoding
# mapping class -> Dumper instance (auto, text, binary)
cdef dict _auto_dumpers
else:
return cls(context)
+ @property
+ def encoding(self) -> str:
+ if not self._encoding:
+ conn = self.connection
+ self._encoding = pgconn_encoding(conn.pgconn) if conn else "utf-8"
+ return self._encoding
+
@property
def pgresult(self) -> Optional[PGresult]:
return self._pgresult