code: def when(
          self,
          test_fn,
          *,
          args: Sequence = None,
          kwargs: Mapping = None,
          live: bool = False,
          timeout: float = None,
          identical_okay: bool = False,
          start_time: bool = None,
          count: int = None,
      ) -> StateWatcher:
          
          if args is None:
              args = []
          if kwargs is None:
              kwargs = {}
  
          def callback(update: StateUpdate) -> dict:
              snapshot = update.after
              if test_fn(snapshot, *args, **kwargs):
                  return snapshot
              raise _SkipStateUpdate
  
          return StateWatcher(
              state=self,
              live=live,
              timeout=timeout,
              identical_okay=identical_okay,
              start_time=start_time,
              count=count,
              callback=callback,
          )
docs: Block until ``test_fn(snapshot)`` returns a "truthy" value,
          and then return a copy of the state.
  
          *Where-*
  
          ``snapshot`` is a ``dict``, containing a version of the state after this update was applied.
  
          .. include:: /api/state/get_when.rst