code: def scope(self, cleanup=True):
          
          if not cleanup:
              self._depth += 1
          try:
              with self as rv:
                  yield rv
          finally:
              if not cleanup:
                  self._depth -= 1
docs: This helper method can be used with the context object to promote
          it to the current thread local (see :func:`get_current_context`).
          The default behavior of this is to invoke the cleanup functions which
          can be disabled by setting `cleanup` to `False`.  The cleanup
          functions are typically used for things such as closing file handles.
  
          If the cleanup is intended the context object can also be directly
          used as a context manager.
  
          Example usage::
  
              with ctx.scope():
                  assert get_current_context() is ctx
  
          This is equivalent::
  
              with ctx:
                  assert get_current_context() is ctx
  
          .. versionadded:: 5.0
  
          :param cleanup: controls if the cleanup functions should be run or
                          not.  The default is to run these functions.  In
                          some situations the context only wants to be
                          temporarily pushed in which case this can be disabled.
                          Nested pushes automatically defer the cleanup.