]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
perf: micro optimise attribute access to ConnStatus
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 17 May 2022 19:20:34 +0000 (21:20 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 17 May 2022 19:28:29 +0000 (21:28 +0200)
psycopg/psycopg/_pipeline.py
psycopg/psycopg/connection.py
psycopg/psycopg/generators.py
psycopg/psycopg/pq/misc.py
psycopg/psycopg/transaction.py

index 69c2a21d3aa09772f2083d02f7287ff4ef2090dd..e11c7b423709ccf4f936e2d262bc73cab7f24036 100644 (file)
@@ -10,7 +10,6 @@ from typing import Any, List, Optional, Union, Tuple, Type, TYPE_CHECKING
 
 from . import pq
 from . import errors as e
-from .pq import ConnStatus
 from .abc import PipelineCommand, PQGen
 from ._compat import Deque, TypeAlias
 from ._cmodule import _psycopg
@@ -41,6 +40,7 @@ PendingResult: TypeAlias = Union[
 
 FATAL_ERROR = pq.ExecStatus.FATAL_ERROR
 PIPELINE_ABORTED = pq.ExecStatus.PIPELINE_ABORTED
+BAD = pq.ConnStatus.BAD
 
 logger = logging.getLogger("psycopg")
 
@@ -84,7 +84,7 @@ class BasePipeline:
 
     def _exit(self) -> None:
         self.level -= 1
-        if self.level == 0 and self.pgconn.status != ConnStatus.BAD:
+        if self.level == 0 and self.pgconn.status != BAD:
             self.pgconn.exit_pipeline_mode()
 
     def _sync_gen(self) -> PQGen[None]:
index b7ce3134a987f53b75798eeb99eb881ddbd47bdb..d96ef1aef5003050c869c0c024278d4f1e845ded 100644 (file)
@@ -19,7 +19,6 @@ from . import pq
 from . import errors as e
 from . import waiting
 from . import postgres
-from .pq import ConnStatus
 from .abc import AdaptContext, ConnectionType, Params, Query, RV
 from .abc import PQGen, PQGenConn
 from .sql import Composable, SQL
@@ -59,6 +58,9 @@ CursorRow = TypeVar("CursorRow")
 TEXT = pq.Format.TEXT
 BINARY = pq.Format.BINARY
 
+OK = pq.ConnStatus.OK
+BAD = pq.ConnStatus.BAD
+
 COMMAND_OK = pq.ExecStatus.COMMAND_OK
 TUPLES_OK = pq.ExecStatus.TUPLES_OK
 FATAL_ERROR = pq.ExecStatus.FATAL_ERROR
@@ -172,7 +174,7 @@ class BaseConnection(Generic[Row]):
     @property
     def closed(self) -> bool:
         """`!True` if the connection is closed."""
-        return self.pgconn.status == ConnStatus.BAD
+        return self.pgconn.status == BAD
 
     @property
     def broken(self) -> bool:
@@ -182,7 +184,7 @@ class BaseConnection(Generic[Row]):
         A broken connection is always `closed`, but wasn't closed in a clean
         way, such as using `close()` or a ``with`` block.
         """
-        return self.pgconn.status == ConnStatus.BAD and not self._closed
+        return self.pgconn.status == BAD and not self._closed
 
     @property
     def autocommit(self) -> bool:
@@ -480,10 +482,10 @@ class BaseConnection(Generic[Row]):
         return result
 
     def _check_connection_ok(self) -> None:
-        if self.pgconn.status == ConnStatus.OK:
+        if self.pgconn.status == OK:
             return
 
-        if self.pgconn.status == ConnStatus.BAD:
+        if self.pgconn.status == BAD:
             raise e.OperationalError("the connection is closed")
         raise e.InterfaceError(
             "cannot execute operations: the connection is"
index c788cadefcf7b1cbe8e82bbd8ffdd01b42953f9d..3e78e07c3d1e8ce88d82e2e1a5997400ed8ab432 100644 (file)
@@ -20,13 +20,16 @@ from typing import List, Optional, Union
 
 from . import pq
 from . import errors as e
-from .pq import ConnStatus, PollingStatus
+from .pq import PollingStatus
 from .abc import PipelineCommand, PQGen, PQGenConn
 from .pq.abc import PGconn, PGresult
 from .waiting import Wait, Ready
 from ._compat import Deque
 from ._encodings import pgconn_encoding, conninfo_encoding
 
+OK = pq.ConnStatus.OK
+BAD = pq.ConnStatus.BAD
+
 COMMAND_OK = pq.ExecStatus.COMMAND_OK
 COPY_OUT = pq.ExecStatus.COPY_OUT
 COPY_IN = pq.ExecStatus.COPY_IN
@@ -43,7 +46,7 @@ def connect(conninfo: str) -> PQGenConn[PGconn]:
     """
     conn = pq.PGconn.connect_start(conninfo.encode())
     while True:
-        if conn.status == ConnStatus.BAD:
+        if conn.status == BAD:
             encoding = conninfo_encoding(conninfo)
             raise e.OperationalError(
                 f"connection is bad: {pq.error_message(conn, encoding=encoding)}",
index b035f2581d6f5ed4f45753e963c7ea08eda7fb54..9ad16bec46d990e51d99037a344e36ad7bd62bb2 100644 (file)
@@ -10,6 +10,8 @@ from .abc import PGconn, PGresult
 from ._enums import ConnStatus, TransactionStatus, PipelineStatus
 from .._encodings import pgconn_encoding
 
+OK = ConnStatus.OK
+
 
 class PGnotify(NamedTuple):
     relname: bytes
@@ -61,7 +63,7 @@ def error_message(obj: Union[PGconn, PGresult], encoding: str = "utf8") -> str:
     elif hasattr(obj, "error_message"):
         # obj is a PGconn
         obj = cast(PGconn, obj)
-        if obj.status == ConnStatus.OK:
+        if obj.status == OK:
             encoding = pgconn_encoding(obj)
         bmsg = obj.error_message
 
@@ -87,7 +89,7 @@ def connection_summary(pgconn: PGconn) -> str:
     Useful for __repr__
     """
     parts = []
-    if pgconn.status == ConnStatus.OK:
+    if pgconn.status == OK:
         # Put together the [STATUS]
         status = TransactionStatus(pgconn.transaction_status).name
         if pgconn.pipeline_status:
index 77a576dfb568ae8430e73d8e39af1745f8e6cc11..e5c1514b56175780505629ae6f1ba69b4a21b323 100644 (file)
@@ -12,7 +12,6 @@ from typing import Generic, Iterator, Optional, Type, Union, TYPE_CHECKING
 from . import pq
 from . import sql
 from . import errors as e
-from .pq import ConnStatus
 from .abc import ConnectionType, PQGen
 
 if TYPE_CHECKING:
@@ -22,6 +21,8 @@ if TYPE_CHECKING:
 
 IDLE = pq.TransactionStatus.IDLE
 
+OK = pq.ConnStatus.OK
+
 logger = logging.getLogger(__name__)
 
 
@@ -249,7 +250,7 @@ class Transaction(BaseTransaction["Connection[Any]"]):
         exc_val: Optional[BaseException],
         exc_tb: Optional[TracebackType],
     ) -> bool:
-        if self.pgconn.status == ConnStatus.OK:
+        if self.pgconn.status == OK:
             with self._conn.lock:
                 return self._conn.wait(self._exit_gen(exc_type, exc_val, exc_tb))
         else:
@@ -278,7 +279,7 @@ class AsyncTransaction(BaseTransaction["AsyncConnection[Any]"]):
         exc_val: Optional[BaseException],
         exc_tb: Optional[TracebackType],
     ) -> bool:
-        if self.pgconn.status == ConnStatus.OK:
+        if self.pgconn.status == OK:
             async with self._conn.lock:
                 return await self._conn.wait(self._exit_gen(exc_type, exc_val, exc_tb))
         else: