From: Daniele Varrazzo Date: Fri, 14 May 2021 21:30:54 +0000 (+0200) Subject: Make encodings module private X-Git-Tag: 3.0~54^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0728664529d93353f6b6e807ed9481344672bd7c;p=thirdparty%2Fpsycopg.git Make encodings module private --- diff --git a/psycopg/psycopg/encodings.py b/psycopg/psycopg/_encodings.py similarity index 96% rename from psycopg/psycopg/encodings.py rename to psycopg/psycopg/_encodings.py index 80a725f19..5d92ed4d4 100644 --- a/psycopg/psycopg/encodings.py +++ b/psycopg/psycopg/_encodings.py @@ -63,7 +63,7 @@ py_codecs.update((k.encode(), v) for k, v in _py_codecs.items()) 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. @@ -71,7 +71,7 @@ def py2pg(name: str) -> bytes: 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 diff --git a/psycopg/psycopg/connection.py b/psycopg/psycopg/connection.py index 8b4900a01..8e89250fc 100644 --- a/psycopg/psycopg/connection.py +++ b/psycopg/psycopg/connection.py @@ -19,7 +19,6 @@ from . import pq 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 @@ -31,6 +30,7 @@ from .cursor import Cursor 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 @@ -263,7 +263,7 @@ class BaseConnection(Generic[Row]): 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: diff --git a/psycopg/psycopg/conninfo.py b/psycopg/psycopg/conninfo.py index 0a61a508b..af924c7ef 100644 --- a/psycopg/psycopg/conninfo.py +++ b/psycopg/psycopg/conninfo.py @@ -11,8 +11,8 @@ from datetime import tzinfo 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: @@ -266,4 +266,4 @@ class ConnectionInfo: @property def _pyenc(self) -> str: pgenc = self.pgconn.parameter_status(b"client_encoding") or b"UTF8" - return encodings.pg2py(pgenc) + return pg2pyenc(pgenc) diff --git a/psycopg/psycopg/generators.py b/psycopg/psycopg/generators.py index 4675f0211..95eb00053 100644 --- a/psycopg/psycopg/generators.py +++ b/psycopg/psycopg/generators.py @@ -22,9 +22,9 @@ from . import pq 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__) diff --git a/psycopg/psycopg/pq/misc.py b/psycopg/psycopg/pq/misc.py index 965fb665e..952d9779e 100644 --- a/psycopg/psycopg/pq/misc.py +++ b/psycopg/psycopg/pq/misc.py @@ -8,6 +8,7 @@ from typing import cast, NamedTuple, Optional, Union from .abc import PGconn, PGresult from ._enums import ConnStatus, TransactionStatus +from .._encodings import py_codecs class PGnotify(NamedTuple): @@ -58,8 +59,6 @@ def error_message(obj: Union[PGconn, PGresult], encoding: str = "utf8") -> str: 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: diff --git a/psycopg_c/psycopg_c/types/string.pyx b/psycopg_c/psycopg_c/types/string.pyx index c4558504d..3fbae8fc7 100644 --- a/psycopg_c/psycopg_c/types/string.pyx +++ b/psycopg_c/psycopg_c/types/string.pyx @@ -19,7 +19,7 @@ from cpython.unicode cimport ( 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 @@ -43,7 +43,7 @@ cdef class _BaseStrDumper(CDumper): 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) @@ -124,7 +124,7 @@ cdef class _TextLoader(CLoader): 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 diff --git a/tests/test_connection.py b/tests/test_connection.py index 07044cb05..f6324d8e2 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -7,7 +7,7 @@ import weakref 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 @@ -301,7 +301,7 @@ def test_autocommit_unknown(conn): 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( diff --git a/tests/test_connection_async.py b/tests/test_connection_async.py index 06c08de39..4ae40fe63 100644 --- a/tests/test_connection_async.py +++ b/tests/test_connection_async.py @@ -6,11 +6,11 @@ import logging 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 @@ -314,7 +314,7 @@ async def test_get_encoding(aconn): 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( diff --git a/tests/test_encodings.py b/tests/test_encodings.py index a4811ac40..4bbaf68bd 100644 --- a/tests/test_encodings.py +++ b/tests/test_encodings.py @@ -2,7 +2,7 @@ import codecs import pytest import psycopg -from psycopg import encodings +from psycopg import _encodings as encodings def test_names_normalised(): @@ -22,7 +22,7 @@ def test_names_normalised(): ], ) def test_py2pg(pyenc, pgenc): - assert encodings.py2pg(pyenc) == pgenc.encode() + assert encodings.py2pgenc(pyenc) == pgenc.encode() @pytest.mark.parametrize( @@ -34,10 +34,10 @@ def test_py2pg(pyenc, pgenc): ], ) 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())