in core/util.py [0:0]
def walk_contexts(pipe):
from inspect import signature
from . import Pipe
def _walk_ann(ann):
if isinstance(ann, type):
if issubclass(ann, Pipe.Context):
yield ann
yield from _walk_context(ann)
def _walk_context(ctx):
for ann in ctx.__annotations__.values():
yield from _walk_ann(ann)
for param in signature(pipe.func).parameters.values():
yield from _walk_ann(param.annotation)