From: Daniele Varrazzo Date: Tue, 29 Apr 2025 22:00:09 +0000 (+0200) Subject: refactor: move PostgresRawQuery to _queries module X-Git-Tag: 3.3.0.dev1~1^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5b06096be86731c594c3a2c79364ebc17c597807;p=thirdparty%2Fpsycopg.git refactor: move PostgresRawQuery to _queries module --- diff --git a/psycopg/psycopg/_queries.py b/psycopg/psycopg/_queries.py index 14950738b..750d0585b 100644 --- a/psycopg/psycopg/_queries.py +++ b/psycopg/psycopg/_queries.py @@ -421,3 +421,31 @@ _ph_to_fmt = { b"t": PyFormat.TEXT, b"b": PyFormat.BINARY, } + + +class PostgresRawQuery(PostgresQuery): + def convert(self, query: Query, vars: Params | None) -> None: + if isinstance(query, str): + bquery = query.encode(self._encoding) + elif isinstance(query, Composable): + bquery = query.as_bytes(self._tx) + else: + bquery = query + + self.query = bquery + self._want_formats = self._order = None + self.dump(vars) + + def dump(self, vars: Params | None) -> None: + if vars is not None: + if not PostgresQuery.is_params_sequence(vars): + raise TypeError("raw queries require a sequence of parameters") + self._want_formats = [PyFormat.AUTO] * len(vars) + + self.params = self._tx.dump_sequence(vars, self._want_formats) + self.types = self._tx.types or () + self.formats = self._tx.formats + else: + self.params = None + self.types = () + self.formats = None diff --git a/psycopg/psycopg/raw_cursor.py b/psycopg/psycopg/raw_cursor.py index eb9cb4d75..2879a9e2e 100644 --- a/psycopg/psycopg/raw_cursor.py +++ b/psycopg/psycopg/raw_cursor.py @@ -8,12 +8,10 @@ from __future__ import annotations from typing import TYPE_CHECKING -from .abc import ConnectionType, Params, Query -from .sql import Composable +from .abc import ConnectionType from .rows import Row -from ._enums import PyFormat from .cursor import Cursor -from ._queries import PostgresQuery +from ._queries import PostgresRawQuery from ._cursor_base import BaseCursor from .cursor_async import AsyncCursor from ._server_cursor import ServerCursor @@ -26,34 +24,6 @@ if TYPE_CHECKING: from .connection_async import AsyncConnection # noqa: F401 -class PostgresRawQuery(PostgresQuery): - def convert(self, query: Query, vars: Params | None) -> None: - if isinstance(query, str): - bquery = query.encode(self._encoding) - elif isinstance(query, Composable): - bquery = query.as_bytes(self._tx) - else: - bquery = query - - self.query = bquery - self._want_formats = self._order = None - self.dump(vars) - - def dump(self, vars: Params | None) -> None: - if vars is not None: - if not PostgresQuery.is_params_sequence(vars): - raise TypeError("raw queries require a sequence of parameters") - self._want_formats = [PyFormat.AUTO] * len(vars) - - self.params = self._tx.dump_sequence(vars, self._want_formats) - self.types = self._tx.types or () - self.formats = self._tx.formats - else: - self.params = None - self.types = () - self.formats = None - - class RawCursorMixin(BaseCursor[ConnectionType, Row]): _query_cls = PostgresRawQuery