pg_codecs = {v: k.encode() for k, v in _py_codecs.items()}
-def py2pg(name: str) -> bytes:
+def py2pgenc(name: str) -> bytes:
"""Convert a Python encoding name to PostgreSQL encoding name.
Raise LookupError if the Python encoding is unknown.
return pg_codecs[codecs.lookup(name).name]
-def pg2py(name: Union[bytes, str]) -> str:
+def pg2pyenc(name: Union[bytes, str]) -> str:
"""Convert a Python encoding name to PostgreSQL encoding name.
Raise NotSupportedError if the PostgreSQL encoding is not supported by
from . import errors as e
from . import waiting
from . import postgres
-from . import encodings
from .pq import ConnStatus, ExecStatus, TransactionStatus, Format
from .abc import AdaptContext, ConnectionType, Params, Query, RV
from .abc import PQGen, PQGenConn
from ._cmodule import _psycopg
from .conninfo import make_conninfo, conninfo_to_dict, ConnectionInfo
from .generators import notifies
+from ._encodings import pg2pyenc
from ._preparing import PrepareManager
from .transaction import Transaction
from .server_cursor import ServerCursor
def client_encoding(self) -> str:
"""The Python codec name of the connection's client encoding."""
pgenc = self.pgconn.parameter_status(b"client_encoding") or b"UTF8"
- return encodings.pg2py(pgenc)
+ return pg2pyenc(pgenc)
@property
def info(self) -> ConnectionInfo:
from . import pq
from . import errors as e
-from . import encodings
from ._tz import get_tzinfo
+from ._encodings import pg2pyenc
def make_conninfo(conninfo: str = "", **kwargs: Any) -> str:
@property
def _pyenc(self) -> str:
pgenc = self.pgconn.parameter_status(b"client_encoding") or b"UTF8"
- return encodings.pg2py(pgenc)
+ return pg2pyenc(pgenc)
from . import errors as e
from .pq import ConnStatus, PollingStatus, ExecStatus
from .abc import PQGen, PQGenConn
-from .waiting import Wait, Ready
-from .encodings import py_codecs
from .pq.abc import PGconn, PGresult
+from .waiting import Wait, Ready
+from ._encodings import py_codecs
logger = logging.getLogger(__name__)
from .abc import PGconn, PGresult
from ._enums import ConnStatus, TransactionStatus
+from .._encodings import py_codecs
class PGnotify(NamedTuple):
bmsg = bmsg.split(b":", 1)[-1].strip()
elif hasattr(obj, "error_message"):
- from ..encodings import py_codecs
-
# obj is a PGconn
obj = cast(PGconn, obj)
if obj.status == ConnStatus.OK:
from psycopg_c.pq cimport libpq, Escaping, _buffer_as_string_and_size
from psycopg import errors as e
-from psycopg.encodings import pg2py
+from psycopg._encodings import pg2pyenc
cdef extern from "Python.h":
const char *PyUnicode_AsUTF8AndSize(unicode obj, Py_ssize_t *size) except NULL
self._bytes_encoding = b"utf-8"
self.is_utf8 = 1
else:
- self._bytes_encoding = pg2py(pgenc).encode()
+ self._bytes_encoding = pg2pyenc(pgenc).encode()
if self._bytes_encoding == b"ascii":
self.is_utf8 = 1
self.encoding = PyBytes_AsString(self._bytes_encoding)
self._bytes_encoding = b"utf-8"
self.is_utf8 = 1
else:
- self._bytes_encoding = pg2py(pgenc).encode()
+ self._bytes_encoding = pg2pyenc(pgenc).encode()
if pgenc == b"SQL_ASCII":
self.encoding = NULL
from threading import Thread
import psycopg
-from psycopg import encodings
+from psycopg._encodings import pg2pyenc
from psycopg import Connection, Notify
from psycopg.rows import tuple_row
from psycopg.errors import UndefinedTable
def test_get_encoding(conn):
(enc,) = conn.cursor().execute("show client_encoding").fetchone()
- assert conn.client_encoding == encodings.pg2py(enc)
+ assert conn.client_encoding == pg2pyenc(enc)
@pytest.mark.parametrize(
import weakref
import psycopg
-from psycopg import encodings
from psycopg import AsyncConnection, Notify
from psycopg.rows import tuple_row
from psycopg.errors import UndefinedTable
from psycopg.conninfo import conninfo_to_dict, make_conninfo
+from psycopg._encodings import pg2pyenc
from .utils import gc_collect
from .test_cursor import my_row_factory
cur = aconn.cursor()
await cur.execute("show client_encoding")
(enc,) = await cur.fetchone()
- assert aconn.client_encoding == encodings.pg2py(enc)
+ assert aconn.client_encoding == pg2pyenc(enc)
@pytest.mark.parametrize(
import pytest
import psycopg
-from psycopg import encodings
+from psycopg import _encodings as encodings
def test_names_normalised():
],
)
def test_py2pg(pyenc, pgenc):
- assert encodings.py2pg(pyenc) == pgenc.encode()
+ assert encodings.py2pgenc(pyenc) == pgenc.encode()
@pytest.mark.parametrize(
],
)
def test_pg2py(pyenc, pgenc):
- assert encodings.pg2py(pgenc.encode()) == pyenc
+ assert encodings.pg2pyenc(pgenc.encode()) == pyenc
@pytest.mark.parametrize("pgenc", ["MULE_INTERNAL", "EUC_TW"])
def test_pg2py_missing(pgenc):
with pytest.raises(psycopg.NotSupportedError):
- encodings.pg2py(pgenc.encode())
+ encodings.pg2pyenc(pgenc.encode())