]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
exceptions module renamed to errors
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 2 Apr 2020 02:29:52 +0000 (15:29 +1300)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 2 Apr 2020 02:29:52 +0000 (15:29 +1300)
To be part of the public interface, for compatibility with psycopg2

psycopg3/__init__.py
psycopg3/adapt.py
psycopg3/connection.py
psycopg3/conninfo.py
psycopg3/cursor.py
psycopg3/errors.py [moved from psycopg3/exceptions.py with 100% similarity]
psycopg3/pq/_pq_ctypes.py
psycopg3/pq/pq_ctypes.py
psycopg3/utils/queries.py
psycopg3/waiting.py

index 79573f3c575f713578b74f8c0331e7d836022b96..839729fabc53f11df2b6cee81b69f98db65fe005 100644 (file)
@@ -7,7 +7,7 @@ psycopg3 -- PostgreSQL database adapter for Python
 from .consts import VERSION as __version__  # noqa
 from .connection import AsyncConnection, Connection
 
-from .exceptions import (
+from .errors import (
     Warning,
     Error,
     InterfaceError,
index 082f32ad7a8419cd86f03dcac6128dc155c69b4a..b25b4894ec500aa607b675d6a497d2f1ad249adc 100644 (file)
@@ -9,7 +9,7 @@ from typing import cast
 from typing import Any, Callable, Dict, Generator, List, Optional, Sequence
 from typing import Tuple, Union
 
-from . import exceptions as exc
+from . import errors as e
 from .pq import Format, PGresult
 from .cursor import BaseCursor
 from .types.oids import type_oid, INVALID_OID
@@ -273,7 +273,7 @@ class Transformer:
         if key in Adapter.globals:
             return Adapter.globals[key]
 
-        raise exc.ProgrammingError(
+        raise e.ProgrammingError(
             f"cannot adapt type {cls} to format {Format(fmt).name}"
         )
 
index 161ff2ba7f2500715898765f4b05ea918fbfaf7a..0de2b9d5001d30b13a1fda0b986bb1c5d7d103a0 100644 (file)
@@ -12,7 +12,7 @@ from typing import Any, Generator, List, Optional, Tuple, Type, TypeVar
 from typing import cast, TYPE_CHECKING
 
 from . import pq
-from . import exceptions as exc
+from . import errors as e
 from . import cursor
 from .conninfo import make_conninfo
 from .waiting import wait, wait_async, Wait, Ready
@@ -80,7 +80,7 @@ class BaseConnection:
         logger.debug("connection started, status %s", conn.status.name)
         while 1:
             if conn.status == pq.ConnStatus.BAD:
-                raise exc.OperationalError(
+                raise e.OperationalError(
                     f"connection is bad: {pq.error_message(conn)}"
                 )
 
@@ -93,11 +93,11 @@ class BaseConnection:
             elif status == pq.PollingStatus.WRITING:
                 yield conn.socket, Wait.W
             elif status == pq.PollingStatus.FAILED:
-                raise exc.OperationalError(
+                raise e.OperationalError(
                     f"connection failed: {pq.error_message(conn)}"
                 )
             else:
-                raise exc.InternalError(f"unexpected poll status: {status}")
+                raise e.InternalError(f"unexpected poll status: {status}")
 
         conn.nonblocking = 1
         return conn
@@ -196,7 +196,7 @@ class Connection(BaseConnection):
             self.pgconn.send_query(command)
             (pgres,) = self.wait(self._exec_gen(self.pgconn))
             if pgres.status != pq.ExecStatus.COMMAND_OK:
-                raise exc.OperationalError(
+                raise e.OperationalError(
                     f"error on {command.decode('utf8')}:"
                     f" {pq.error_message(pgres)}"
                 )
@@ -253,7 +253,7 @@ class AsyncConnection(BaseConnection):
             self.pgconn.send_query(command)
             (pgres,) = await self.wait(self._exec_gen(self.pgconn))
             if pgres.status != pq.ExecStatus.COMMAND_OK:
-                raise exc.OperationalError(
+                raise e.OperationalError(
                     f"error on {command.decode('utf8')}:"
                     f" {pq.error_message(pgres)}"
                 )
index 81308a2a2ac42c0fc55efe513e61b8ad3612a573..0fdce34c4c26234c63311bde0d308bc1e261b99b 100644 (file)
@@ -2,7 +2,7 @@ import re
 from typing import Any, Dict, List
 
 from . import pq
-from . import exceptions as exc
+from . import errors as e
 
 
 def make_conninfo(conninfo: str = "", **kwargs: Any) -> str:
@@ -62,8 +62,8 @@ def _parse_conninfo(conninfo: str) -> List[pq.ConninfoOption]:
     """
     try:
         return pq.Conninfo.parse(conninfo.encode("utf8"))
-    except pq.PQerror as e:
-        raise exc.ProgrammingError(str(e))
+    except pq.PQerror as ex:
+        raise e.ProgrammingError(str(ex))
 
 
 re_escape = re.compile(r"([\\'])")
index 931f96f15f84c38b76cd4e5c8ed6512d9e79e784..9e360187b6bcf0a55c1ea277a0322d8aede251f5 100644 (file)
@@ -6,7 +6,7 @@ psycopg3 cursor objects
 
 from typing import Any, List, Mapping, Optional, Sequence, Tuple, TYPE_CHECKING
 
-from . import exceptions as exc
+from . import errors as e
 from .pq import error_message, DiagnosticField, ExecStatus, PGresult, Format
 from .utils.queries import query2pg, reorder_params
 from .utils.typing import Query, Params
@@ -80,7 +80,7 @@ class BaseCursor:
     def _execute_results(self, results: List[PGresult]) -> None:
         # Implement part of execute() after waiting common to sync and async
         if not results:
-            raise exc.InternalError("got no result from the query")
+            raise e.InternalError("got no result from the query")
 
         badstats = {res.status for res in results} - {
             ExecStatus.TUPLES_OK,
@@ -93,7 +93,7 @@ class BaseCursor:
             return
 
         if results[-1].status == ExecStatus.FATAL_ERROR:
-            ecls = exc.class_for_state(
+            ecls = e.class_for_state(
                 results[-1].error_field(DiagnosticField.SQLSTATE)
             )
             raise ecls(error_message(results[-1]))
@@ -103,11 +103,11 @@ class BaseCursor:
             ExecStatus.COPY_OUT,
             ExecStatus.COPY_BOTH,
         }:
-            raise exc.ProgrammingError(
+            raise e.ProgrammingError(
                 "COPY cannot be used with execute(); use copy() insead"
             )
         else:
-            raise exc.InternalError(
+            raise e.InternalError(
                 f"got unexpected status from query:"
                 f" {', '.join(sorted(s.name for s in sorted(badstats)))}"
             )
similarity index 100%
rename from psycopg3/exceptions.py
rename to psycopg3/errors.py
index f3868ed54dff27f298c0f80914f4c2588a8ce419..c2debb5d5ead1e4c2a53e0e10c18a08afee4f899 100644 (file)
@@ -10,7 +10,7 @@ from ctypes import Structure, POINTER
 from ctypes import c_char, c_char_p, c_int, c_uint, c_void_p
 from typing import List, Tuple
 
-from psycopg3.exceptions import NotSupportedError
+from psycopg3.errors import NotSupportedError
 
 libname = ctypes.util.find_library("pq")
 if libname is None:
index 1b26f71fb66ec3fb45956ee6fc292111a48972a9..ee053fb00c552254ff588ace49ad2a487eb445c8 100644 (file)
@@ -23,7 +23,7 @@ from .enums import (
 )
 from .misc import error_message, ConninfoOption
 from . import _pq_ctypes as impl
-from ..exceptions import OperationalError
+from ..errors import OperationalError
 from ..utils.typing import Oid
 
 
index 6ca0b83ab5c2aa9f0351168531cfe2bb49fc5a04..fb89383b9e11a94cb74d611f6a83f8c87629220e 100644 (file)
@@ -9,7 +9,7 @@ from codecs import CodecInfo
 from typing import Any, Dict, List, Mapping, Match, NamedTuple, Optional
 from typing import Sequence, Tuple, Union
 
-from .. import exceptions as exc
+from .. import errors as e
 from ..pq import Format
 from .typing import Params
 
@@ -41,7 +41,7 @@ def query2pg(
 
     if isinstance(vars, Sequence) and not isinstance(vars, (bytes, str)):
         if len(vars) != len(parts) - 1:
-            raise exc.ProgrammingError(
+            raise e.ProgrammingError(
                 f"the query has {len(parts) - 1} placeholders but"
                 f" {len(vars)} parameters were passed"
             )
@@ -74,7 +74,7 @@ def query2pg(
                 chunks.append(ph)
             else:
                 if seen[part.item][1] != part.format:
-                    raise exc.ProgrammingError(
+                    raise e.ProgrammingError(
                         f"placeholder '{part.item}' cannot have"
                         f" different formats"
                     )
@@ -149,18 +149,18 @@ def split_query(query: bytes, encoding: str = "ascii") -> List[QueryPart]:
             continue
 
         if ph == b"%(":
-            raise exc.ProgrammingError(
+            raise e.ProgrammingError(
                 f"incomplete placeholder:"
                 f" '{query[m.span(0)[0]:].split()[0].decode(encoding)}'"
             )
         elif ph == b"% ":
             # explicit messasge for a typical error
-            raise exc.ProgrammingError(
+            raise e.ProgrammingError(
                 "incomplete placeholder: '%'; if you want to use '%' as an"
                 " operator you can double it up, i.e. use '%%'"
             )
         elif ph[-1:] not in b"bs":
-            raise exc.ProgrammingError(
+            raise e.ProgrammingError(
                 f"only '%s' and '%b' placeholders allowed, got"
                 f" {m.group(0).decode(encoding)}"
             )
@@ -173,7 +173,7 @@ def split_query(query: bytes, encoding: str = "ascii") -> List[QueryPart]:
             phtype = type(item)
         else:
             if phtype is not type(item):  # noqa
-                raise exc.ProgrammingError(
+                raise e.ProgrammingError(
                     "positional and named placeholders cannot be mixed"
                 )
 
@@ -195,7 +195,7 @@ def reorder_params(
     try:
         return [params[item] for item in order]
     except KeyError:
-        raise exc.ProgrammingError(
+        raise e.ProgrammingError(
             f"query parameter missing:"
             f" {', '.join(sorted(i for i in order if i not in params))}"
         )
index 0128cb290f8fe1ab86d44af60bf4948dca330803..0f52d1a56cc8b9ac80b0a1957067c2d856546e59 100644 (file)
@@ -10,7 +10,7 @@ from typing import Generator, Optional, Tuple, TypeVar
 from asyncio import get_event_loop, Event
 from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE
 
-from . import exceptions as exc
+from . import errors as e
 
 
 class Wait(IntEnum):
@@ -54,8 +54,8 @@ def wait(
             assert len(ready) == 1
             fd, s = gen.send(ready[0][1])
 
-    except StopIteration as e:
-        rv: RV = e.args[0]
+    except StopIteration as ex:
+        rv: RV = ex.args[0]
         return rv
 
 
@@ -99,9 +99,9 @@ async def wait_async(gen: Generator[Tuple[int, Wait], Ready, RV]) -> RV:
                 loop.remove_reader(fd)
                 loop.remove_writer(fd)
             else:
-                raise exc.InternalError("bad poll status: %s")
+                raise e.InternalError("bad poll status: %s")
             fd, s = gen.send(ready)
 
-    except StopIteration as e:
-        rv: RV = e.args[0]
+    except StopIteration as ex:
+        rv: RV = ex.args[0]
         return rv