`OperationalError` in case of connection failure. `Error.pgconn` is now a
shallow copy of the real libpq connection, and the latter is closed before
the exception propagates (:ticket:`#565`).
+- Fix possible (ignored) exception on objects deletion (:ticket:`#591`).
- Don't clobber a Python exception raised during COPY FROM with the resulting
`!QueryCanceled` raised as a consequence (:ticket:`#593`).
from . import errors as e
from .abc import PipelineCommand, PQGen
from ._compat import Deque
+from .pq.misc import connection_summary
from ._encodings import pgconn_encoding
from ._preparing import Key, Prepare
from .generators import pipeline_communicate, fetch_many, send
def __repr__(self) -> str:
cls = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
- info = pq.misc.connection_summary(self._conn.pgconn)
+ info = connection_summary(self._conn.pgconn)
return f"<{cls} {info} at 0x{id(self):x}>"
@property
from ._enums import IsolationLevel
from .cursor import Cursor
from ._compat import LiteralString
+from .pq.misc import connection_summary
from .conninfo import make_conninfo, conninfo_to_dict, ConnectionInfo
from ._pipeline import BasePipeline, Pipeline
from .generators import notifies, connect, execute
def __repr__(self) -> str:
cls = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
- info = pq.misc.connection_summary(self.pgconn)
+ info = connection_summary(self.pgconn)
return f"<{cls} {info} at 0x{id(self):x}>"
@property
from . import errors as e
from .abc import Buffer, ConnectionType, PQGen, Transformer
from ._compat import create_task
+from .pq.misc import connection_summary
from ._cmodule import _psycopg
from ._encodings import pgconn_encoding
from .generators import copy_from, copy_to, copy_end
def __repr__(self) -> str:
cls = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
- info = pq.misc.connection_summary(self._pgconn)
+ info = connection_summary(self._pgconn)
return f"<{cls} {info} at 0x{id(self):x}>"
def _enter(self) -> None:
from .copy import Copy, Writer as CopyWriter
from .rows import Row, RowMaker, RowFactory
from ._column import Column
+from .pq.misc import connection_summary
from ._queries import PostgresQuery, PostgresClientQuery
from ._pipeline import Pipeline
from ._encodings import pgconn_encoding
def __repr__(self) -> str:
cls = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
- info = pq.misc.connection_summary(self._pgconn)
+ info = connection_summary(self._pgconn)
if self._closed:
status = "closed"
elif self.pgresult:
from . import sql
from . import errors as e
from .abc import ConnectionType, PQGen
+from .pq.misc import connection_summary
if TYPE_CHECKING:
from typing import Any
def __repr__(self) -> str:
cls = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
- info = pq.misc.connection_summary(self.pgconn)
+ info = connection_summary(self.pgconn)
if not self._entered:
status = "inactive"
elif not self._exited: