This diff switches to using the cleaner NamedTuple syntax for InputContext and OutputContext.
Two weird things:
log_manager -> log as argument to new. This is technically a breaking change for those who might be directly initting these contexts (should not affect those who are mocking them).
A bunch of casts in places where they weren't necessary before. I'm not sure why these weren't previously caught, because nothing should have changed about the optionalality of the arguments.