Skip to content

contextvars_utils

with_contextvars(wrapped)

Source code in griptape/utils/contextvars_utils.py
def with_contextvars(wrapped: Callable) -> Callable:
    ctx = contextvars.copy_context()
    lock = threading.Lock()

    def wrapper(*args, **kwargs) -> Any:
        with lock:
            ctx_copy = ctx.run(contextvars.copy_context)
        return ctx_copy.run(wrapped, *args, **kwargs)

    return wrapper