try:
with self._conn.lock:
self._conn.wait(self._sync_gen())
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
def __enter__(self: _Self) -> _Self:
try:
async with self._conn.lock:
await self._conn.wait(self._sync_gen())
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
async def __aenter__(self: _Self) -> _Self:
cls._connect_gen(conninfo, autocommit=autocommit),
timeout=params["connect_timeout"],
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
if row_factory:
return cur.execute(query, params, prepare=prepare)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
def commit(self) -> None:
with self.lock:
try:
ns = self.wait(notifies(self.pgconn))
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
enc = pgconn_encoding(self.pgconn)
for pgn in ns:
cls._connect_gen(conninfo, autocommit=autocommit),
timeout=params["connect_timeout"],
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
if row_factory:
return await cur.execute(query, params, prepare=prepare)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
async def commit(self) -> None:
async with self.lock:
try:
ns = await self.wait(notifies(self.pgconn))
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
enc = pgconn_encoding(self.pgconn)
for pgn in ns:
self._conn.wait(
self._execute_gen(query, params, prepare=prepare, binary=binary)
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
return self
self._conn.wait(
self._executemany_gen_no_pipeline(query, params_seq, returning)
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
def stream(
yield rec
first = False
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
finally:
with Copy(self, writer=writer) as copy:
yield copy
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
# If a fresher result has been set on the cursor by the Copy object,
await self._conn.wait(
self._execute_gen(query, params, prepare=prepare, binary=binary)
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
return self
await self._conn.wait(
self._executemany_gen_no_pipeline(query, params_seq, returning)
)
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
async def stream(
yield rec
first = False
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
finally:
async with AsyncCopy(self, writer=writer) as copy:
yield copy
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
self._select_current_result(0)
from typing import Any, Dict, Optional, Sequence, Tuple, Type, Union
from typing_extensions import TypeAlias
+from asyncio import CancelledError
from .pq.abc import PGconn, PGresult
from .pq._enums import DiagnosticField
# autogenerated: end
# fmt: on
+
+# Don't show a complete traceback upon raising these exception.
+# Usually the traceback starts from internal functions (for instance in the
+# server communication callbacks) but, for the end user, it's more important
+# to get the high level information about where the exception was raised, for
+# instance in a certain `Cursor.execute()`.
+
+_NO_TRACEBACK = (Error, KeyboardInterrupt, CancelledError)
try:
with self._conn.lock:
self._conn.wait(self._declare_gen(query, params, binary))
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
return self
try:
async with self._conn.lock:
await self._conn.wait(self._declare_gen(query, params, binary))
- except e.Error as ex:
+ except e._NO_TRACEBACK as ex:
raise ex.with_traceback(None)
return self