From cc33579f7bbd502a24650be596da9acb61559b39 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Mon, 10 Jun 2024 16:50:43 +0200 Subject: [PATCH] chore: drop pq enums aliases on connection and cursor Unused in the codebase, and not documented. Only used in the test suite. --- psycopg/psycopg/_connection_base.py | 4 -- psycopg/psycopg/_cursor_base.py | 2 - tests/_test_copy.py | 4 +- tests/_test_transaction.py | 5 +- tests/crdb/test_copy.py | 31 +++++----- tests/crdb/test_copy_async.py | 29 +++++---- tests/crdb/test_cursor.py | 2 +- tests/crdb/test_cursor_async.py | 2 +- tests/test_connection.py | 48 +++++++-------- tests/test_connection_async.py | 48 +++++++-------- tests/test_copy.py | 91 +++++++++++++++-------------- tests/test_copy_async.py | 89 ++++++++++++++-------------- tests/test_cursor_common.py | 14 ++--- tests/test_cursor_common_async.py | 14 ++--- tests/test_cursor_server.py | 11 ++-- tests/test_cursor_server_async.py | 11 ++-- tests/test_transaction.py | 4 +- tests/test_transaction_async.py | 4 +- 18 files changed, 205 insertions(+), 208 deletions(-) diff --git a/psycopg/psycopg/_connection_base.py b/psycopg/psycopg/_connection_base.py index 091dc6826..2d910aaa1 100644 --- a/psycopg/psycopg/_connection_base.py +++ b/psycopg/psycopg/_connection_base.py @@ -94,10 +94,6 @@ class BaseConnection(Generic[Row]): ProgrammingError = e.ProgrammingError NotSupportedError = e.NotSupportedError - # Enums useful for the connection - ConnStatus = pq.ConnStatus - TransactionStatus = pq.TransactionStatus - def __init__(self, pgconn: PGconn): self.pgconn = pgconn self._autocommit = False diff --git a/psycopg/psycopg/_cursor_base.py b/psycopg/psycopg/_cursor_base.py index 833666bba..e09f17ab0 100644 --- a/psycopg/psycopg/_cursor_base.py +++ b/psycopg/psycopg/_cursor_base.py @@ -51,8 +51,6 @@ class BaseCursor(Generic[ConnectionType, Row]): __weakref__ """.split() - ExecStatus = pq.ExecStatus - _tx: Transformer _make_row: RowMaker[Row] _pgconn: PGconn diff --git a/tests/_test_copy.py b/tests/_test_copy.py index 4ee9ee5f9..54bf08ff8 100644 --- a/tests/_test_copy.py +++ b/tests/_test_copy.py @@ -1,6 +1,6 @@ import struct -from psycopg.pq import Format +from psycopg import pq from psycopg.copy import AsyncWriter from psycopg.copy import FileWriter as FileWriter # noqa: F401 @@ -43,7 +43,7 @@ async def ensure_table_async(cur, tabledef, name="copy_in"): def py_to_raw(item, fmt): """Convert from Python type to the expected result from the db""" - if fmt == Format.TEXT: + if fmt == pq.Format.TEXT: if isinstance(item, int): return str(item) else: diff --git a/tests/_test_transaction.py b/tests/_test_transaction.py index 29e7ad70d..27618e5fe 100644 --- a/tests/_test_transaction.py +++ b/tests/_test_transaction.py @@ -1,6 +1,7 @@ import sys import pytest import psycopg +from psycopg import pq # TODOCRDB: is this the expected behaviour? @@ -50,9 +51,9 @@ def inserted(conn): def in_transaction(conn): - if conn.pgconn.transaction_status == conn.TransactionStatus.IDLE: + if conn.pgconn.transaction_status == pq.TransactionStatus.IDLE: return False - elif conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS: + elif conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS: return True else: assert False, conn.pgconn.transaction_status diff --git a/tests/crdb/test_copy.py b/tests/crdb/test_copy.py index 8c09fea84..8670227d9 100644 --- a/tests/crdb/test_copy.py +++ b/tests/crdb/test_copy.py @@ -6,8 +6,7 @@ import string from random import randrange, choice from typing import Any # noqa: ignore -from psycopg import sql, errors as e -from psycopg.pq import Format +from psycopg import pq, sql, errors as e from psycopg.adapt import PyFormat from psycopg.types.numeric import Int4 @@ -23,7 +22,8 @@ pytestmark = [pytest.mark.crdb] @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) def test_copy_in_buffers(conn, format, buffer): cur = conn.cursor() @@ -43,7 +43,7 @@ def test_copy_in_buffers_pg_error(conn): with cur.copy("copy copy_in from stdin") as copy: copy.write(sample_text) copy.write(sample_text) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_in_str(conn): @@ -65,17 +65,17 @@ def test_copy_in_error(conn): with cur.copy("copy copy_in from stdin with binary") as copy: copy.write(sample_text.decode()) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_empty(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) with cur.copy(f"copy copy_in from stdin {copyopt(format)}"): pass - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS assert cur.rowcount == 0 @@ -112,10 +112,10 @@ def test_copy_in_buffers_with_pg_error(conn): copy.write(sample_text) copy.write(sample_text) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) @@ -123,7 +123,7 @@ def test_copy_in_records(conn, format): with cur.copy(f"copy copy_in from stdin {copyopt(format)}") as copy: row: "tuple[Any, ...]" for row in sample_records: - if format == Format.BINARY: + if format == pq.Format.BINARY: row = tuple((Int4(i) if isinstance(i, int) else i for i in row)) copy.write_row(row) @@ -132,7 +132,7 @@ def test_copy_in_records(conn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records_set_types(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) @@ -147,7 +147,7 @@ def test_copy_in_records_set_types(conn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records_binary(conn, format): cur = conn.cursor() ensure_table(cur, "col1 serial primary key, col2 int4, data text") @@ -171,7 +171,7 @@ def test_copy_in_buffers_with_py_error(conn): raise Exception("nuttengoggenio") assert "nuttengoggenio" in str(exc.value) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_in_allchars(conn): @@ -195,7 +195,8 @@ from copy_in group by 1, 2, 3 @pytest.mark.slow @pytest.mark.parametrize( - "fmt, set_types", [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)] + "fmt, set_types", + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) @pytest.mark.crdb_skip("copy array") def test_copy_from_leaks(conn_cls, dsn, faker, fmt, set_types, gc): @@ -237,4 +238,4 @@ def test_copy_from_leaks(conn_cls, dsn, faker, fmt, set_types, gc): def copyopt(format): - return "with binary" if format == Format.BINARY else "" + return "with binary" if format == pq.Format.BINARY else "" diff --git a/tests/crdb/test_copy_async.py b/tests/crdb/test_copy_async.py index 1199e3a7b..9880f6fe4 100644 --- a/tests/crdb/test_copy_async.py +++ b/tests/crdb/test_copy_async.py @@ -3,8 +3,7 @@ import string from random import randrange, choice from typing import Any # noqa: ignore -from psycopg import sql, errors as e -from psycopg.pq import Format +from psycopg import pq, sql, errors as e from psycopg.adapt import PyFormat from psycopg.types.numeric import Int4 @@ -23,7 +22,7 @@ if True: # ASYNC @pytest.mark.parametrize( "format, buffer", - [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")], + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) async def test_copy_in_buffers(aconn, format, buffer): cur = aconn.cursor() @@ -43,7 +42,7 @@ async def test_copy_in_buffers_pg_error(aconn): async with cur.copy("copy copy_in from stdin") as copy: await copy.write(sample_text) await copy.write(sample_text) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_in_str(aconn): @@ -65,17 +64,17 @@ async def test_copy_in_error(aconn): async with cur.copy("copy copy_in from stdin with binary") as copy: await copy.write(sample_text.decode()) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_empty(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) async with cur.copy(f"copy copy_in from stdin {copyopt(format)}"): pass - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS assert cur.rowcount == 0 @@ -112,10 +111,10 @@ async def test_copy_in_buffers_with_pg_error(aconn): await copy.write(sample_text) await copy.write(sample_text) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) @@ -123,7 +122,7 @@ async def test_copy_in_records(aconn, format): async with cur.copy(f"copy copy_in from stdin {copyopt(format)}") as copy: row: "tuple[Any, ...]" for row in sample_records: - if format == Format.BINARY: + if format == pq.Format.BINARY: row = tuple(Int4(i) if isinstance(i, int) else i for i in row) await copy.write_row(row) @@ -132,7 +131,7 @@ async def test_copy_in_records(aconn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records_set_types(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) @@ -147,7 +146,7 @@ async def test_copy_in_records_set_types(aconn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records_binary(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, "col1 serial primary key, col2 int4, data text") @@ -173,7 +172,7 @@ async def test_copy_in_buffers_with_py_error(aconn): raise Exception("nuttengoggenio") assert "nuttengoggenio" in str(exc.value) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_in_allchars(aconn): @@ -198,7 +197,7 @@ from copy_in group by 1, 2, 3 @pytest.mark.slow @pytest.mark.parametrize( "fmt, set_types", - [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)], + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) @pytest.mark.crdb_skip("copy array") async def test_copy_from_leaks(aconn_cls, dsn, faker, fmt, set_types, gc): @@ -240,4 +239,4 @@ async def test_copy_from_leaks(aconn_cls, dsn, faker, fmt, set_types, gc): def copyopt(format): - return "with binary" if format == Format.BINARY else "" + return "with binary" if format == pq.Format.BINARY else "" diff --git a/tests/crdb/test_cursor.py b/tests/crdb/test_cursor.py index 3ba0a9f7c..443addc9d 100644 --- a/tests/crdb/test_cursor.py +++ b/tests/crdb/test_cursor.py @@ -37,7 +37,7 @@ def test_changefeed(conn_cls, dsn, conn, testfeed, fmt_out): for row in cur.stream(f"experimental changefeed for {testfeed}"): q.put_nowait(row) except e.QueryCanceled: - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == pq.TransactionStatus.IDLE q.put_nowait(None) except Exception as ex: q.put_nowait(ex) diff --git a/tests/crdb/test_cursor_async.py b/tests/crdb/test_cursor_async.py index c78481601..0607c7708 100644 --- a/tests/crdb/test_cursor_async.py +++ b/tests/crdb/test_cursor_async.py @@ -38,7 +38,7 @@ async def test_changefeed(aconn_cls, dsn, aconn, testfeed, fmt_out): ): q.put_nowait(row) except e.QueryCanceled: - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == pq.TransactionStatus.IDLE q.put_nowait(None) except Exception as ex: q.put_nowait(ex) diff --git a/tests/test_connection.py b/tests/test_connection.py index cb4fe7e1f..c8b6a0c4e 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -26,7 +26,7 @@ from .test_adapt import make_bin_dumper, make_dumper def test_connect(conn_cls, dsn): conn = conn_cls.connect(dsn) assert not conn.closed - assert conn.pgconn.status == conn.ConnStatus.OK + assert conn.pgconn.status == pq.ConnStatus.OK conn.close() @@ -42,7 +42,7 @@ def test_connect_str_subclass(conn_cls, dsn): conn = conn_cls.connect(MyString(dsn)) assert not conn.closed - assert conn.pgconn.status == conn.ConnStatus.OK + assert conn.pgconn.status == pq.ConnStatus.OK conn.close() @@ -100,11 +100,11 @@ def test_close(conn): conn.close() assert conn.closed assert not conn.broken - assert conn.pgconn.status == conn.ConnStatus.BAD + assert conn.pgconn.status == pq.ConnStatus.BAD conn.close() assert conn.closed - assert conn.pgconn.status == conn.ConnStatus.BAD + assert conn.pgconn.status == pq.ConnStatus.BAD with pytest.raises(psycopg.OperationalError): cur.execute("select 1") @@ -240,7 +240,7 @@ def test_context_active_rollback_no_clobber(conn_cls, dsn, caplog): conn.pgconn.exec_(b"copy (select generate_series(1, 10)) to stdout") assert not conn.pgconn.error_message status = conn.info.transaction_status - assert status == conn.TransactionStatus.ACTIVE + assert status == pq.TransactionStatus.ACTIVE 1 / 0 assert len(caplog.records) == 1 @@ -263,10 +263,10 @@ def test_commit(conn): conn.pgconn.exec_(b"drop table if exists foo") conn.pgconn.exec_(b"create table foo (id int primary key)") conn.pgconn.exec_(b"begin") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS conn.pgconn.exec_(b"insert into foo values (1)") conn.commit() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE res = conn.pgconn.exec_(b"select id from foo where id = 1") assert res.get_value(0, 0) == b"1" @@ -290,7 +290,7 @@ def test_commit_error(conn): conn.execute("insert into selfref (y) values (-1)") with pytest.raises(e.ForeignKeyViolation): conn.commit() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur = conn.execute("select 1") assert cur.fetchone() == (1,) @@ -299,10 +299,10 @@ def test_rollback(conn): conn.pgconn.exec_(b"drop table if exists foo") conn.pgconn.exec_(b"create table foo (id int primary key)") conn.pgconn.exec_(b"begin") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS conn.pgconn.exec_(b"insert into foo values (1)") conn.rollback() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE res = conn.pgconn.exec_(b"select id from foo where id = 1") assert res.ntuples == 0 @@ -316,16 +316,16 @@ def test_auto_transaction(conn): conn.pgconn.exec_(b"create table foo (id int primary key)") cur = conn.cursor() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur.execute("insert into foo values (1)") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS conn.commit() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur.execute("select * from foo") assert cur.fetchone() == (1,) - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS def test_auto_transaction_fail(conn): @@ -333,23 +333,23 @@ def test_auto_transaction_fail(conn): conn.pgconn.exec_(b"create table foo (id int primary key)") cur = conn.cursor() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur.execute("insert into foo values (1)") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS with pytest.raises(psycopg.DatabaseError): cur.execute("meh") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INERROR + assert conn.pgconn.transaction_status == pq.TransactionStatus.INERROR with pytest.raises(psycopg.errors.InFailedSqlTransaction): cur.execute("select 1") conn.commit() - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur.execute("select * from foo") assert cur.fetchone() is None - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS @skip_sync @@ -366,7 +366,7 @@ def test_autocommit(conn): cur = conn.cursor() cur.execute("select 1") assert cur.fetchone() == (1,) - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE conn.set_autocommit("") assert isinstance(conn.autocommit, bool) @@ -386,7 +386,7 @@ def test_autocommit_property(conn): cur = conn.cursor() cur.execute("select 1") assert cur.fetchone() == (1,) - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE conn.autocommit = "" assert isinstance(conn.autocommit, bool) @@ -407,7 +407,7 @@ def test_autocommit_intrans(conn): cur = conn.cursor() cur.execute("select 1") assert cur.fetchone() == (1,) - assert conn.pgconn.transaction_status == conn.TransactionStatus.INTRANS + assert conn.pgconn.transaction_status == pq.TransactionStatus.INTRANS with pytest.raises(psycopg.ProgrammingError): conn.set_autocommit(True) assert not conn.autocommit @@ -417,7 +417,7 @@ def test_autocommit_inerror(conn): cur = conn.cursor() with pytest.raises(psycopg.DatabaseError): cur.execute("meh") - assert conn.pgconn.transaction_status == conn.TransactionStatus.INERROR + assert conn.pgconn.transaction_status == pq.TransactionStatus.INERROR with pytest.raises(psycopg.ProgrammingError): conn.set_autocommit(True) assert not conn.autocommit @@ -425,7 +425,7 @@ def test_autocommit_inerror(conn): def test_autocommit_unknown(conn): conn.close() - assert conn.pgconn.transaction_status == conn.TransactionStatus.UNKNOWN + assert conn.pgconn.transaction_status == pq.TransactionStatus.UNKNOWN with pytest.raises(psycopg.OperationalError): conn.set_autocommit(True) assert not conn.autocommit diff --git a/tests/test_connection_async.py b/tests/test_connection_async.py index 8a4984af3..b0836fdf8 100644 --- a/tests/test_connection_async.py +++ b/tests/test_connection_async.py @@ -23,7 +23,7 @@ from .test_adapt import make_bin_dumper, make_dumper async def test_connect(aconn_cls, dsn): conn = await aconn_cls.connect(dsn) assert not conn.closed - assert conn.pgconn.status == conn.ConnStatus.OK + assert conn.pgconn.status == pq.ConnStatus.OK await conn.close() @@ -38,7 +38,7 @@ async def test_connect_str_subclass(aconn_cls, dsn): conn = await aconn_cls.connect(MyString(dsn)) assert not conn.closed - assert conn.pgconn.status == conn.ConnStatus.OK + assert conn.pgconn.status == pq.ConnStatus.OK await conn.close() @@ -96,11 +96,11 @@ async def test_close(aconn): await aconn.close() assert aconn.closed assert not aconn.broken - assert aconn.pgconn.status == aconn.ConnStatus.BAD + assert aconn.pgconn.status == pq.ConnStatus.BAD await aconn.close() assert aconn.closed - assert aconn.pgconn.status == aconn.ConnStatus.BAD + assert aconn.pgconn.status == pq.ConnStatus.BAD with pytest.raises(psycopg.OperationalError): await cur.execute("select 1") @@ -237,7 +237,7 @@ async def test_context_active_rollback_no_clobber(aconn_cls, dsn, caplog): conn.pgconn.exec_(b"copy (select generate_series(1, 10)) to stdout") assert not conn.pgconn.error_message status = conn.info.transaction_status - assert status == conn.TransactionStatus.ACTIVE + assert status == pq.TransactionStatus.ACTIVE 1 / 0 assert len(caplog.records) == 1 @@ -260,10 +260,10 @@ async def test_commit(aconn): aconn.pgconn.exec_(b"drop table if exists foo") aconn.pgconn.exec_(b"create table foo (id int primary key)") aconn.pgconn.exec_(b"begin") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS aconn.pgconn.exec_(b"insert into foo values (1)") await aconn.commit() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE res = aconn.pgconn.exec_(b"select id from foo where id = 1") assert res.get_value(0, 0) == b"1" @@ -287,7 +287,7 @@ async def test_commit_error(aconn): await aconn.execute("insert into selfref (y) values (-1)") with pytest.raises(e.ForeignKeyViolation): await aconn.commit() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE cur = await aconn.execute("select 1") assert await cur.fetchone() == (1,) @@ -296,10 +296,10 @@ async def test_rollback(aconn): aconn.pgconn.exec_(b"drop table if exists foo") aconn.pgconn.exec_(b"create table foo (id int primary key)") aconn.pgconn.exec_(b"begin") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS aconn.pgconn.exec_(b"insert into foo values (1)") await aconn.rollback() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE res = aconn.pgconn.exec_(b"select id from foo where id = 1") assert res.ntuples == 0 @@ -313,16 +313,16 @@ async def test_auto_transaction(aconn): aconn.pgconn.exec_(b"create table foo (id int primary key)") cur = aconn.cursor() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE await cur.execute("insert into foo values (1)") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS await aconn.commit() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE await cur.execute("select * from foo") assert await cur.fetchone() == (1,) - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS async def test_auto_transaction_fail(aconn): @@ -330,23 +330,23 @@ async def test_auto_transaction_fail(aconn): aconn.pgconn.exec_(b"create table foo (id int primary key)") cur = aconn.cursor() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE await cur.execute("insert into foo values (1)") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS with pytest.raises(psycopg.DatabaseError): await cur.execute("meh") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INERROR with pytest.raises(psycopg.errors.InFailedSqlTransaction): await cur.execute("select 1") await aconn.commit() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE await cur.execute("select * from foo") assert await cur.fetchone() is None - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS @skip_sync @@ -363,7 +363,7 @@ async def test_autocommit(aconn): cur = aconn.cursor() await cur.execute("select 1") assert await cur.fetchone() == (1,) - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.pgconn.transaction_status == pq.TransactionStatus.IDLE await aconn.set_autocommit("") assert isinstance(aconn.autocommit, bool) @@ -383,7 +383,7 @@ def test_autocommit_property(conn): cur = conn.cursor() cur.execute("select 1") assert cur.fetchone() == (1,) - assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE + assert conn.pgconn.transaction_status == pq.TransactionStatus.IDLE conn.autocommit = "" assert isinstance(conn.autocommit, bool) @@ -404,7 +404,7 @@ async def test_autocommit_intrans(aconn): cur = aconn.cursor() await cur.execute("select 1") assert await cur.fetchone() == (1,) - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INTRANS with pytest.raises(psycopg.ProgrammingError): await aconn.set_autocommit(True) assert not aconn.autocommit @@ -414,7 +414,7 @@ async def test_autocommit_inerror(aconn): cur = aconn.cursor() with pytest.raises(psycopg.DatabaseError): await cur.execute("meh") - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.pgconn.transaction_status == pq.TransactionStatus.INERROR with pytest.raises(psycopg.ProgrammingError): await aconn.set_autocommit(True) assert not aconn.autocommit @@ -422,7 +422,7 @@ async def test_autocommit_inerror(aconn): async def test_autocommit_unknown(aconn): await aconn.close() - assert aconn.pgconn.transaction_status == aconn.TransactionStatus.UNKNOWN + assert aconn.pgconn.transaction_status == pq.TransactionStatus.UNKNOWN with pytest.raises(psycopg.OperationalError): await aconn.set_autocommit(True) assert not aconn.autocommit diff --git a/tests/test_copy.py b/tests/test_copy.py index 3abe9bfa1..642917e8c 100644 --- a/tests/test_copy.py +++ b/tests/test_copy.py @@ -10,10 +10,7 @@ from itertools import cycle import pytest import psycopg -from psycopg import pq -from psycopg import sql -from psycopg import errors as e -from psycopg.pq import Format +from psycopg import pq, sql, errors as e from psycopg.copy import Copy, LibpqWriter, QueuedLibpqWriter from psycopg.adapt import PyFormat from psycopg.types import TypeInfo @@ -29,7 +26,7 @@ from .test_adapt import StrNoneDumper, StrNoneBinaryDumper pytestmark = pytest.mark.crdb_skip("copy") -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_out_read(conn, format): if format == pq.Format.TEXT: want = [row + b"\n" for row in sample_text.splitlines()] @@ -41,16 +38,16 @@ def test_copy_out_read(conn, format): for row in want: got = copy.read() assert got == row - assert conn.info.transaction_status == conn.TransactionStatus.ACTIVE + assert conn.info.transaction_status == pq.TransactionStatus.ACTIVE assert copy.read() == b"" assert copy.read() == b"" assert copy.read() == b"" - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("row_factory", ["tuple_row", "dict_row", "namedtuple_row"]) def test_copy_out_iter(conn, format, row_factory): if format == pq.Format.TEXT: @@ -63,10 +60,10 @@ def test_copy_out_iter(conn, format, row_factory): with cur.copy(f"copy ({sample_values}) to stdout (format {format.name})") as copy: assert list(copy) == want - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("row_factory", ["tuple_row", "dict_row", "namedtuple_row"]) def test_copy_out_no_result(conn, format, row_factory): rf = getattr(psycopg.rows, row_factory) @@ -85,10 +82,10 @@ def test_copy_out_param(conn, ph, params): copy.set_types(["int4"]) assert list(copy.rows()) == [(i + 1,) for i in range(10)] - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("typetype", ["names", "oids"]) def test_read_rows(conn, format, typetype): cur = conn.cursor() @@ -103,10 +100,10 @@ def test_read_rows(conn, format, typetype): assert copy.read_row() is None assert row == (10, "hello", [0.0, 1.0]) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_rows(conn, format): cur = conn.cursor() with cur.copy(f"copy ({sample_values}) to stdout (format {format.name})") as copy: @@ -114,7 +111,7 @@ def test_rows(conn, format): rows = list(copy.rows()) assert rows == sample_records - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS def test_set_custom_type(conn, hstore): @@ -134,7 +131,7 @@ def test_set_custom_type(conn, hstore): assert rows == [({"a": "1", "b": "2"},)] -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_out_allchars(conn, format): cur = conn.cursor() chars = list(map(chr, range(1, 256))) + [eur] @@ -155,7 +152,7 @@ def test_copy_out_allchars(conn, format): assert rows == chars -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_read_row_notypes(conn, format): cur = conn.cursor() with cur.copy(f"copy ({sample_values}) to stdout (format {format.name})") as copy: @@ -170,7 +167,7 @@ def test_read_row_notypes(conn, format): assert rows == ref -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_rows_notypes(conn, format): cur = conn.cursor() with cur.copy(f"copy ({sample_values}) to stdout (format {format.name})") as copy: @@ -180,7 +177,7 @@ def test_rows_notypes(conn, format): @pytest.mark.parametrize("err", [-1, 1]) -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_out_badntypes(conn, format, err): cur = conn.cursor() with cur.copy(f"copy ({sample_values}) to stdout (format {format.name})") as copy: @@ -190,7 +187,8 @@ def test_copy_out_badntypes(conn, format, err): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) def test_copy_in_buffers(conn, format, buffer): cur = conn.cursor() @@ -210,7 +208,7 @@ def test_copy_in_buffers_pg_error(conn): with cur.copy("copy copy_in from stdin (format text)") as copy: copy.write(sample_text) copy.write(sample_text) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_bad_result(conn): @@ -257,17 +255,17 @@ def test_copy_in_error(conn): with cur.copy("copy copy_in from stdin (format binary)") as copy: copy.write(sample_text.decode()) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_empty(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) with cur.copy(f"copy copy_in from stdin (format {format.name})"): pass - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS assert cur.rowcount == 0 @@ -297,9 +295,9 @@ def test_copy_big_size_block(conn, pytype): assert cur.fetchone() == (data,) -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_subclass_adapter(conn, format): - if format == Format.TEXT: + if format == pq.Format.TEXT: from psycopg.types.string import StrDumper as BaseDumper else: from psycopg.types.string import StrBinaryDumper @@ -326,9 +324,9 @@ def test_subclass_adapter(conn, format): assert rec[0] == "hellohello" -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_subclass_nulling_dumper(conn, format): - Base: type = StrNoneDumper if format == Format.TEXT else StrNoneBinaryDumper + Base: type = StrNoneDumper if format == pq.Format.TEXT else StrNoneBinaryDumper class MyStrDumper(Base): # type: ignore @@ -349,7 +347,7 @@ def test_subclass_nulling_dumper(conn, format): assert recs == [("hello",), (None,)] -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_error_empty(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) @@ -357,7 +355,7 @@ def test_copy_in_error_empty(conn, format): with cur.copy(f"copy copy_in from stdin (format {format.name})"): raise ZeroDivisionError("mannaggiamiseria") - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_in_buffers_with_pg_error(conn): @@ -368,7 +366,7 @@ def test_copy_in_buffers_with_pg_error(conn): copy.write(sample_text) copy.write(sample_text) - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_in_buffers_with_py_error(conn): @@ -379,7 +377,7 @@ def test_copy_in_buffers_with_py_error(conn): copy.write(sample_text) raise ZeroDivisionError("nuttengoggenio") - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_out_error_with_copy_finished(conn): @@ -389,7 +387,7 @@ def test_copy_out_error_with_copy_finished(conn): copy.read_row() 1 / 0 - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS def test_copy_out_error_with_copy_not_finished(conn): @@ -399,7 +397,7 @@ def test_copy_out_error_with_copy_not_finished(conn): copy.read_row() 1 / 0 - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_copy_out_server_error(conn): @@ -411,17 +409,17 @@ def test_copy_out_server_error(conn): for block in copy: pass - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) with cur.copy(f"copy copy_in from stdin (format {format.name})") as copy: for row in sample_records: - if format == Format.BINARY: + if format == pq.Format.BINARY: row2 = tuple((Int4(i) if isinstance(i, int) else i for i in row)) row = row2 # type: ignore[assignment] copy.write_row(row) @@ -431,7 +429,7 @@ def test_copy_in_records(conn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records_set_types(conn, format): cur = conn.cursor() ensure_table(cur, sample_tabledef) @@ -446,7 +444,7 @@ def test_copy_in_records_set_types(conn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) def test_copy_in_records_binary(conn, format): cur = conn.cursor() ensure_table(cur, "col1 serial primary key, col2 int, data text") @@ -506,7 +504,8 @@ def test_copy_in_format(conn): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) def test_file_writer(conn, format, buffer): file = BytesIO() @@ -649,7 +648,8 @@ def test_description(conn): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) def test_worker_life(conn, format, buffer): cur = conn.cursor() @@ -682,7 +682,8 @@ def test_worker_error_propagated(conn, monkeypatch): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) def test_connection_writer(conn, format, buffer): cur = conn.cursor() @@ -702,7 +703,8 @@ def test_connection_writer(conn, format, buffer): @pytest.mark.slow @pytest.mark.parametrize( - "fmt, set_types", [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)] + "fmt, set_types", + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) @pytest.mark.parametrize("method", ["read", "iter", "row", "rows"]) def test_copy_to_leaks(conn_cls, dsn, faker, fmt, set_types, method, gc): @@ -757,7 +759,8 @@ def test_copy_to_leaks(conn_cls, dsn, faker, fmt, set_types, method, gc): @pytest.mark.slow @pytest.mark.parametrize( - "fmt, set_types", [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)] + "fmt, set_types", + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) def test_copy_from_leaks(conn_cls, dsn, faker, fmt, set_types, gc): faker.format = PyFormat.from_pq(fmt) diff --git a/tests/test_copy_async.py b/tests/test_copy_async.py index b0f48458e..a4c15dba8 100644 --- a/tests/test_copy_async.py +++ b/tests/test_copy_async.py @@ -7,10 +7,7 @@ from itertools import cycle import pytest import psycopg -from psycopg import pq -from psycopg import sql -from psycopg import errors as e -from psycopg.pq import Format +from psycopg import pq, sql, errors as e from psycopg.copy import AsyncCopy, AsyncLibpqWriter, AsyncQueuedLibpqWriter from psycopg.adapt import PyFormat from psycopg.types import TypeInfo @@ -27,7 +24,7 @@ from .test_adapt import StrNoneDumper, StrNoneBinaryDumper pytestmark = pytest.mark.crdb_skip("copy") -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_out_read(aconn, format): if format == pq.Format.TEXT: want = [row + b"\n" for row in sample_text.splitlines()] @@ -41,16 +38,16 @@ async def test_copy_out_read(aconn, format): for row in want: got = await copy.read() assert got == row - assert aconn.info.transaction_status == aconn.TransactionStatus.ACTIVE + assert aconn.info.transaction_status == pq.TransactionStatus.ACTIVE assert await copy.read() == b"" assert await copy.read() == b"" assert await copy.read() == b"" - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("row_factory", ["tuple_row", "dict_row", "namedtuple_row"]) async def test_copy_out_iter(aconn, format, row_factory): if format == pq.Format.TEXT: @@ -65,10 +62,10 @@ async def test_copy_out_iter(aconn, format, row_factory): ) as copy: assert await alist(copy) == want - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("row_factory", ["tuple_row", "dict_row", "namedtuple_row"]) async def test_copy_out_no_result(aconn, format, row_factory): rf = getattr(psycopg.rows, row_factory) @@ -87,10 +84,10 @@ async def test_copy_out_param(aconn, ph, params): copy.set_types(["int4"]) assert await alist(copy.rows()) == [(i + 1,) for i in range(10)] - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) @pytest.mark.parametrize("typetype", ["names", "oids"]) async def test_read_rows(aconn, format, typetype): cur = aconn.cursor() @@ -105,10 +102,10 @@ async def test_read_rows(aconn, format, typetype): assert (await copy.read_row()) is None assert row == (10, "hello", [0.0, 1.0]) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_rows(aconn, format): cur = aconn.cursor() async with cur.copy( @@ -118,7 +115,7 @@ async def test_rows(aconn, format): rows = await alist(copy.rows()) assert rows == sample_records - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS async def test_set_custom_type(aconn, hstore): @@ -138,7 +135,7 @@ async def test_set_custom_type(aconn, hstore): assert rows == [({"a": "1", "b": "2"},)] -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_out_allchars(aconn, format): cur = aconn.cursor() chars = list(map(chr, range(1, 256))) + [eur] @@ -159,7 +156,7 @@ async def test_copy_out_allchars(aconn, format): assert rows == chars -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_read_row_notypes(aconn, format): cur = aconn.cursor() async with cur.copy( @@ -176,7 +173,7 @@ async def test_read_row_notypes(aconn, format): assert rows == ref -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_rows_notypes(aconn, format): cur = aconn.cursor() async with cur.copy( @@ -188,7 +185,7 @@ async def test_rows_notypes(aconn, format): @pytest.mark.parametrize("err", [-1, 1]) -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_out_badntypes(aconn, format, err): cur = aconn.cursor() async with cur.copy( @@ -200,7 +197,8 @@ async def test_copy_out_badntypes(aconn, format, err): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) async def test_copy_in_buffers(aconn, format, buffer): cur = aconn.cursor() @@ -220,7 +218,7 @@ async def test_copy_in_buffers_pg_error(aconn): async with cur.copy("copy copy_in from stdin (format text)") as copy: await copy.write(sample_text) await copy.write(sample_text) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_bad_result(aconn): @@ -267,17 +265,17 @@ async def test_copy_in_error(aconn): async with cur.copy("copy copy_in from stdin (format binary)") as copy: await copy.write(sample_text.decode()) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_empty(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) async with cur.copy(f"copy copy_in from stdin (format {format.name})"): pass - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS assert cur.rowcount == 0 @@ -307,9 +305,9 @@ async def test_copy_big_size_block(aconn, pytype): assert await cur.fetchone() == (data,) -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_subclass_adapter(aconn, format): - if format == Format.TEXT: + if format == pq.Format.TEXT: from psycopg.types.string import StrDumper as BaseDumper else: from psycopg.types.string import StrBinaryDumper @@ -337,9 +335,9 @@ async def test_subclass_adapter(aconn, format): assert rec[0] == "hellohello" -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_subclass_nulling_dumper(aconn, format): - Base: type = StrNoneDumper if format == Format.TEXT else StrNoneBinaryDumper + Base: type = StrNoneDumper if format == pq.Format.TEXT else StrNoneBinaryDumper class MyStrDumper(Base): # type: ignore def dump(self, obj): @@ -361,7 +359,7 @@ async def test_subclass_nulling_dumper(aconn, format): assert recs == [("hello",), (None,)] -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_error_empty(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) @@ -369,7 +367,7 @@ async def test_copy_in_error_empty(aconn, format): async with cur.copy(f"copy copy_in from stdin (format {format.name})"): raise ZeroDivisionError("mannaggiamiseria") - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_in_buffers_with_pg_error(aconn): @@ -380,7 +378,7 @@ async def test_copy_in_buffers_with_pg_error(aconn): await copy.write(sample_text) await copy.write(sample_text) - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_in_buffers_with_py_error(aconn): @@ -391,7 +389,7 @@ async def test_copy_in_buffers_with_py_error(aconn): await copy.write(sample_text) raise ZeroDivisionError("nuttengoggenio") - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_out_error_with_copy_finished(aconn): @@ -401,7 +399,7 @@ async def test_copy_out_error_with_copy_finished(aconn): await copy.read_row() 1 / 0 - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS async def test_copy_out_error_with_copy_not_finished(aconn): @@ -413,7 +411,7 @@ async def test_copy_out_error_with_copy_not_finished(aconn): await copy.read_row() 1 / 0 - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_copy_out_server_error(aconn): @@ -425,17 +423,17 @@ async def test_copy_out_server_error(aconn): async for block in copy: pass - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) async with cur.copy(f"copy copy_in from stdin (format {format.name})") as copy: for row in sample_records: - if format == Format.BINARY: + if format == pq.Format.BINARY: row2 = tuple(Int4(i) if isinstance(i, int) else i for i in row) row = row2 # type: ignore[assignment] await copy.write_row(row) @@ -445,7 +443,7 @@ async def test_copy_in_records(aconn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records_set_types(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, sample_tabledef) @@ -460,7 +458,7 @@ async def test_copy_in_records_set_types(aconn, format): assert data == sample_records -@pytest.mark.parametrize("format", Format) +@pytest.mark.parametrize("format", pq.Format) async def test_copy_in_records_binary(aconn, format): cur = aconn.cursor() await ensure_table_async(cur, "col1 serial primary key, col2 int, data text") @@ -520,7 +518,8 @@ async def test_copy_in_format(aconn): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) async def test_file_writer(aconn, format, buffer): file = BytesIO() @@ -663,7 +662,8 @@ async def test_description(aconn): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) async def test_worker_life(aconn, format, buffer): cur = aconn.cursor() @@ -698,7 +698,8 @@ async def test_worker_error_propagated(aconn, monkeypatch): @pytest.mark.parametrize( - "format, buffer", [(Format.TEXT, "sample_text"), (Format.BINARY, "sample_binary")] + "format, buffer", + [(pq.Format.TEXT, "sample_text"), (pq.Format.BINARY, "sample_binary")], ) async def test_connection_writer(aconn, format, buffer): cur = aconn.cursor() @@ -719,7 +720,7 @@ async def test_connection_writer(aconn, format, buffer): @pytest.mark.slow @pytest.mark.parametrize( "fmt, set_types", - [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)], + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) @pytest.mark.parametrize("method", ["read", "iter", "row", "rows"]) async def test_copy_to_leaks(aconn_cls, dsn, faker, fmt, set_types, method, gc): @@ -775,7 +776,7 @@ async def test_copy_to_leaks(aconn_cls, dsn, faker, fmt, set_types, method, gc): @pytest.mark.slow @pytest.mark.parametrize( "fmt, set_types", - [(Format.TEXT, True), (Format.TEXT, False), (Format.BINARY, True)], + [(pq.Format.TEXT, True), (pq.Format.TEXT, False), (pq.Format.BINARY, True)], ) async def test_copy_from_leaks(aconn_cls, dsn, faker, fmt, set_types, gc): faker.format = PyFormat.from_pq(fmt) diff --git a/tests/test_cursor_common.py b/tests/test_cursor_common.py index 7b3d9d523..dbfdb3a6f 100644 --- a/tests/test_cursor_common.py +++ b/tests/test_cursor_common.py @@ -13,7 +13,7 @@ from packaging.version import parse as ver import pytest import psycopg -from psycopg import sql, rows +from psycopg import pq, sql, rows from psycopg.adapt import PyFormat from psycopg.types import TypeInfo @@ -229,7 +229,7 @@ def test_execute_sequence(conn): def test_execute_empty_query(conn, query): cur = conn.cursor() cur.execute(query) - assert cur.pgresult.status == cur.ExecStatus.EMPTY_QUERY + assert cur.pgresult.status == pq.ExecStatus.EMPTY_QUERY with pytest.raises(psycopg.ProgrammingError): cur.fetchone() @@ -744,7 +744,7 @@ def test_stream_error_tx(conn): with pytest.raises(psycopg.ProgrammingError): for rec in cur.stream("wat"): pass - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR def test_stream_error_notx(conn): @@ -753,7 +753,7 @@ def test_stream_error_notx(conn): with pytest.raises(psycopg.ProgrammingError): for rec in cur.stream("wat"): pass - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == pq.TransactionStatus.IDLE def test_stream_error_python_to_consume(conn): @@ -763,8 +763,8 @@ def test_stream_error_python_to_consume(conn): for rec in gen: 1 / 0 assert conn.info.transaction_status in ( - conn.TransactionStatus.INTRANS, - conn.TransactionStatus.INERROR, + pq.TransactionStatus.INTRANS, + pq.TransactionStatus.INERROR, ) @@ -776,7 +776,7 @@ def test_stream_error_python_consumed(conn): 1 / 0 gen.close() - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == pq.TransactionStatus.INTRANS @pytest.mark.parametrize("autocommit", [False, True]) diff --git a/tests/test_cursor_common_async.py b/tests/test_cursor_common_async.py index 6421357e7..772a6db85 100644 --- a/tests/test_cursor_common_async.py +++ b/tests/test_cursor_common_async.py @@ -10,7 +10,7 @@ from packaging.version import parse as ver import pytest import psycopg -from psycopg import sql, rows +from psycopg import pq, sql, rows from psycopg.adapt import PyFormat from psycopg.types import TypeInfo @@ -229,7 +229,7 @@ async def test_execute_sequence(aconn): async def test_execute_empty_query(aconn, query): cur = aconn.cursor() await cur.execute(query) - assert cur.pgresult.status == cur.ExecStatus.EMPTY_QUERY + assert cur.pgresult.status == pq.ExecStatus.EMPTY_QUERY with pytest.raises(psycopg.ProgrammingError): await cur.fetchone() @@ -751,7 +751,7 @@ async def test_stream_error_tx(aconn): with pytest.raises(psycopg.ProgrammingError): async for rec in cur.stream("wat"): pass - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR async def test_stream_error_notx(aconn): @@ -760,7 +760,7 @@ async def test_stream_error_notx(aconn): with pytest.raises(psycopg.ProgrammingError): async for rec in cur.stream("wat"): pass - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == pq.TransactionStatus.IDLE async def test_stream_error_python_to_consume(aconn): @@ -770,8 +770,8 @@ async def test_stream_error_python_to_consume(aconn): async for rec in gen: 1 / 0 assert aconn.info.transaction_status in ( - aconn.TransactionStatus.INTRANS, - aconn.TransactionStatus.INERROR, + pq.TransactionStatus.INTRANS, + pq.TransactionStatus.INERROR, ) @@ -783,7 +783,7 @@ async def test_stream_error_python_consumed(aconn): 1 / 0 await gen.aclose() - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == pq.TransactionStatus.INTRANS @pytest.mark.parametrize("autocommit", [False, True]) diff --git a/tests/test_cursor_server.py b/tests/test_cursor_server.py index b4259abb2..e237d261e 100644 --- a/tests/test_cursor_server.py +++ b/tests/test_cursor_server.py @@ -4,8 +4,7 @@ import pytest import psycopg -from psycopg import rows, errors as e -from psycopg.pq import Format +from psycopg import pq, rows, errors as e pytestmark = pytest.mark.crdb_skip("server-side cursor") @@ -73,11 +72,11 @@ def test_description(conn): def test_format(conn): cur = conn.cursor("foo") - assert cur.format == Format.TEXT + assert cur.format == pq.Format.TEXT cur.close() cur = conn.cursor("foo", binary=True) - assert cur.format == Format.BINARY + assert cur.format == pq.Format.BINARY cur.close() @@ -138,7 +137,7 @@ def test_binary_cursor_text_override(conn): def test_close(conn, recwarn): - if conn.info.transaction_status == conn.TransactionStatus.INTRANS: + if conn.info.transaction_status == pq.TransactionStatus.INTRANS: # connection dirty from previous failure conn.execute("close foo") recwarn.clear() @@ -225,7 +224,7 @@ def test_close_on_error(conn): cur.execute("select 1") with pytest.raises(e.ProgrammingError): conn.execute("wat") - assert conn.info.transaction_status == conn.TransactionStatus.INERROR + assert conn.info.transaction_status == pq.TransactionStatus.INERROR cur.close() diff --git a/tests/test_cursor_server_async.py b/tests/test_cursor_server_async.py index 0f0efa2a9..16cb3f2da 100644 --- a/tests/test_cursor_server_async.py +++ b/tests/test_cursor_server_async.py @@ -1,8 +1,7 @@ import pytest import psycopg -from psycopg import rows, errors as e -from psycopg.pq import Format +from psycopg import pq, rows, errors as e from .acompat import alist @@ -76,11 +75,11 @@ async def test_description(aconn): async def test_format(aconn): cur = aconn.cursor("foo") - assert cur.format == Format.TEXT + assert cur.format == pq.Format.TEXT await cur.close() cur = aconn.cursor("foo", binary=True) - assert cur.format == Format.BINARY + assert cur.format == pq.Format.BINARY await cur.close() @@ -141,7 +140,7 @@ async def test_binary_cursor_text_override(aconn): async def test_close(aconn, recwarn): - if aconn.info.transaction_status == aconn.TransactionStatus.INTRANS: + if aconn.info.transaction_status == pq.TransactionStatus.INTRANS: # connection dirty from previous failure await aconn.execute("close foo") recwarn.clear() @@ -230,7 +229,7 @@ async def test_close_on_error(aconn): await cur.execute("select 1") with pytest.raises(e.ProgrammingError): await aconn.execute("wat") - assert aconn.info.transaction_status == aconn.TransactionStatus.INERROR + assert aconn.info.transaction_status == pq.TransactionStatus.INERROR await cur.close() diff --git a/tests/test_transaction.py b/tests/test_transaction.py index a82a8f9c7..1f18f40dc 100644 --- a/tests/test_transaction.py +++ b/tests/test_transaction.py @@ -6,7 +6,7 @@ import logging import pytest from psycopg import Rollback -from psycopg import errors as e +from psycopg import pq, errors as e from ._test_transaction import in_transaction, insert_row, inserted, get_exc_info from ._test_transaction import ExpectedException, crdb_skip_external_observer @@ -117,7 +117,7 @@ def test_context_active_rollback_no_clobber(conn_cls, dsn, caplog): with conn.transaction(): conn.pgconn.exec_(b"copy (select generate_series(1, 10)) to stdout") status = conn.info.transaction_status - assert status == conn.TransactionStatus.ACTIVE + assert status == pq.TransactionStatus.ACTIVE 1 / 0 assert len(caplog.records) == 1 diff --git a/tests/test_transaction_async.py b/tests/test_transaction_async.py index 126820125..c78dcb1f6 100644 --- a/tests/test_transaction_async.py +++ b/tests/test_transaction_async.py @@ -3,7 +3,7 @@ import logging import pytest from psycopg import Rollback -from psycopg import errors as e +from psycopg import pq, errors as e from ._test_transaction import in_transaction, insert_row, inserted, get_exc_info from ._test_transaction import ExpectedException, crdb_skip_external_observer @@ -117,7 +117,7 @@ async def test_context_active_rollback_no_clobber(aconn_cls, dsn, caplog): async with conn.transaction(): conn.pgconn.exec_(b"copy (select generate_series(1, 10)) to stdout") status = conn.info.transaction_status - assert status == conn.TransactionStatus.ACTIVE + assert status == pq.TransactionStatus.ACTIVE 1 / 0 assert len(caplog.records) == 1 -- 2.47.2