code: def contextmanager(func):
      """@contextmanager decorator.
  
      Typical usage:
  
          @contextmanager
          def some_generator(<arguments>):
              <setup>
              try:
                  yield <value>
              finally:
                  <cleanup>
  
      This makes this:
  
          with some_generator(<arguments>) as <variable>:
              <body>
  
      equivalent to this:
  
          <setup>
          try:
              <variable> = <value>
              <body>
          finally:
              <cleanup>
  
      """
  
      @wraps(func)
      def helper(*args, **kwds):
          return _GeneratorContextManager(func, args, kwds)
  
      return helper
  
imports: import abc
  import sys
  import warnings
  from collections import deque
  from functools import wraps
label_desc: Use image node_id 3 for calling a global function with example usage: contextmanager(func) and returns: helper, _GeneratorContextManager