]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor: remove enter/exit attributes from transaction
authorimmortalcodes <21112002mj@gmail.com>
Wed, 22 Oct 2025 18:27:47 +0000 (23:57 +0530)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 22 Nov 2025 18:12:55 +0000 (19:12 +0100)
psycopg/psycopg/transaction.py

index e7713aba2c3a8beb297ffc8fc32c352cfa09ca2e..5db380de7b9c8357a39e8fad043ea48656e91f38 100644 (file)
@@ -70,7 +70,6 @@ class BaseTransaction(Generic[ConnectionType]):
         self.pgconn = self._conn.pgconn
         self._savepoint_name = savepoint_name or ""
         self.force_rollback = force_rollback
-        self._entered = self._exited = False
         self.status = self.Status.NOT_STARTED
         self._outer_transaction = False
         self._stack_index = -1
@@ -91,9 +90,8 @@ class BaseTransaction(Generic[ConnectionType]):
         return f"<{cls} {sp}({self.status.value}) {info} at 0x{id(self):x}>"
 
     def _enter_gen(self) -> PQGen[None]:
-        if self._entered:
+        if self.status != self.Status.NOT_STARTED:
             raise TypeError("transaction blocks can be used only once")
-        self._entered = True
         self.status = self.Status.ACTIVE
 
         self._push_savepoint()
@@ -127,7 +125,6 @@ class BaseTransaction(Generic[ConnectionType]):
 
     def _commit_gen(self) -> PQGen[None]:
         ex = self._pop_savepoint("commit")
-        self._exited = True
         self.status = self.Status.COMMITTED
         if ex:
             raise ex
@@ -140,7 +137,6 @@ class BaseTransaction(Generic[ConnectionType]):
             logger.debug(f"{self._conn}: Explicit rollback from: ", exc_info=True)
 
         ex = self._pop_savepoint("rollback")
-        self._exited = True
 
         if isinstance(exc_val, Rollback) or self.force_rollback:
             self.status = self.Status.ROLLED_BACK_EXPLICITLY