Also more consistent use of the two functions throughout the codebase.
Default to utf8 if the connection has no encoding info.
"""
- if not conn or conn.closed:
+ if conn:
+ return pgconn_encoding(conn.pgconn)
+ else:
return "utf-8"
- pgenc = conn.pgconn.parameter_status(b"client_encoding") or b"UTF8"
- return pg2pyenc(pgenc)
-
def pgconn_encoding(pgconn: "PGconn") -> str:
"""
Default to utf8 if the connection has no encoding info.
"""
- if pgconn.status != OK:
+ if pgconn.status == OK:
+ pgenc = pgconn.parameter_status(b"client_encoding") or b"UTF8"
+ return pg2pyenc(pgenc)
+ else:
return "utf-8"
- pgenc = pgconn.parameter_status(b"client_encoding") or b"UTF8"
- return pg2pyenc(pgenc)
-
def conninfo_encoding(conninfo: str) -> str:
"""
from .abc import Buffer, LoadFunc, AdaptContext, PyFormat, DumperKey, NoneType
from .rows import Row, RowMaker
from ._oids import INVALID_OID, TEXT_OID
-from ._encodings import pgconn_encoding
+from ._encodings import conn_encoding
if TYPE_CHECKING:
from .adapt import AdaptersMap
@property
def encoding(self) -> str:
if not self._encoding:
- conn = self.connection
- self._encoding = pgconn_encoding(conn.pgconn) if conn else "utf-8"
+ self._encoding = conn_encoding(self.connection)
return self._encoding
@property
return self._obj
def as_bytes(self, context: Optional[AdaptContext]) -> bytes:
- enc = "utf-8"
- if context:
- enc = conn_encoding(context.connection)
+ conn = context.connection if context else None
+ enc = conn_encoding(conn)
return self._obj.encode(enc)
def format(self, *args: Any, **kwargs: Any) -> Composed:
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
+from psycopg._encodings import conn_encoding
NoneType = type(None)
@property
def encoding(self) -> str:
if not self._encoding:
- conn = self.connection
- self._encoding = pgconn_encoding(conn.pgconn) if conn else "utf-8"
+ self._encoding = conn_encoding(self.connection)
return self._encoding
@property