depends on D8272 (which bans io managers on composite solids)
this diff makes sure solids inside composite can use their own custom io managers and the configs are processed correctly.
for example https://github.com/dagster-io/dagster/issues/3656
the code will be:
@root_input_manager(input_config_schema={"test": str}) def my_root(context): return context.config["test"] @solid(input_defs=[InputDefinition("data", dagster_type=str, root_manager_key="my_root")]) def inner_solid(_, data): return data @composite_solid def my_composite(): return inner_solid()
and the correct run config would be:
solids: my_composite: solids: inner_solid: inputs: data: test: hello # instead of composite:inputs, we get the input config from inner solid
this should also address https://github.com/dagster-io/dagster/issues/4130 where we will only respect the io managers set on inner solids