MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _expect_state

Method _expect_state

lib/sqlalchemy/orm/state_changes.py:174–196  ·  view source on GitHub ↗

called within a method that changes states. method must also use the ``@declare_states()`` decorator.

(self, expected: _StateChangeState)

Source from the content-addressed store, hash-verified

172
173 @contextlib.contextmanager
174 def _expect_state(self, expected: _StateChangeState) -> Iterator[Any]:
175 """called within a method that changes states.
176
177 method must also use the ``@declare_states()`` decorator.
178
179 """
180 assert self._next_state is _StateChangeStates.CHANGE_IN_PROGRESS, (
181 "Unexpected call to _expect_state outside of "
182 "state-changing method"
183 )
184
185 self._next_state = expected
186 try:
187 yield
188 except:
189 raise
190 else:
191 if self._state is not expected:
192 raise sa_exc.IllegalStateChangeError(
193 f"Unexpected state change to {self._state!r}", code="isce"
194 )
195 finally:
196 self._next_state = _StateChangeStates.CHANGE_IN_PROGRESS

Callers 4

_prepare_implMethod · 0.80
commitMethod · 0.80
rollbackMethod · 0.80
move_to_bMethod · 0.80

Calls

no outgoing calls

Tested by 1

move_to_bMethod · 0.64