)
        )
[docs]class RunnableBindingBase(RunnableSerializable[Input, Output]):
    """A runnable that delegates calls to another runnable with a set of kwargs.
    Use only if creating a new RunnableBinding subclass with different __init__ args.
    See documentation for RunnableBinding for more details.
    """
    bound: Runnable[Input, Output]
    """The underlying runnable that this runnable delegates to."""
    kwargs: Mapping[str, Any] = Field(default_factory=dict)
    """kwargs to pass to the underlying runnable when running.
    For example, when the runnable binding is invoked the underlying
    runnable will be invoked with the same input but with these additional
    kwargs.
    """
    config: RunnableConfig = Field(default_factory=dict)
    """The config to bind to the underlying runnable."""
    config_factories: List[Callable[[RunnableConfig], RunnableConfig]] = Field(
        default_factory=list
    )
    """The config factories to bind to the underlying runnable."""
    # Union[Type[Input], BaseModel] + things like List[str]
    custom_input_type: Optional[Any] = None
    """Override the input type of the underlying runnable with a custom type.
    The type can be a pydantic model, or a type annotation (e.g., `List[str]`).
    """
    # Union[Type[Output], BaseModel] + things like List[str]
    custom_output_type: Optional[Any] = None
    """Override the output type of the underlying runnable with a custom type.
    The type can be a pydantic model, or a type annotation (e.g., `List[str]`).
    """
    class Config:
        arbitrary_types_allowed = True
    def __init__(
        self,
        *,
        bound: Runnable[Input, Output],