Module ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults vararg body Expr Str If CompareEq Call NameLoad NameLoad Num body ImportFrom alias Assign TupleStore NameStore NameLoad Assert Call NameLoad NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore TupleLoad NameLoad Assign NameStore Dict Str Str Call NameLoad NameLoad AttributeLoad NameLoad attr Return Call AttributeLoad Call NameLoad attr NameLoad NameLoad NameLoad orelse Return Call AttributeLoad Call NameLoad attr NameLoad decorator_list decorator_list
N/A ContextManagerTypeType N/A type N/A N/A 
    Metaclass for `ContextManagerType`. Shouldn't be used directly.
    
    Did I just create a metaclass for a metaclass. OH YES I DID. It's like a
    double rainbow, except I'm the only one who can see it.
     __call__ N/A N/A cls N/A args N/A N/A 
        Create a new `ContextManager`.
        
        This can work in two ways, depending on which arguments are given:
        
         1. The classic `type.__call__` way. If `name, bases, namespace` are
            passed in, `type.__call__` will be used normally.
            
         2. As a decorator for a generator function. For example:
            
                @ContextManagerType
                def MyContextManager():
                    # preparation
                    try:
                        yield
                    finally:
                        pass # cleanup
                        
            What happens here is that the function (in this case
            `MyContextManager`) is passed directly into
            `ContextManagerTypeType.__call__`. So we create a new
            `ContextManager` subclass for it, and use the original generator as
            its `.manage_context` function.
                        
         N/A N/A N/A len args 1 N/A context_manager ContextManager N/A N/A function args N/A N/A callable function N/A name N/A function __name__ N/A bases N/A ContextManager N/A namespace_dict N/A manage_context __init__ N/A staticmethod function N/A ContextManager _ContextManager__init_lone_manage_context N/A N/A N/A N/A super __call__ name bases namespace_dict N/A N/A N/A N/A N/A super __call__ args N/A N/A