I’ve been creating an open source library for rich semantic data typing, which helps you managing and communicating data typing information. If you’re curious what this library can do, check out our new blog post!
Have you given much thought to either type annotations or decorators. One or both of them could potentially be useful for attaching schema information to the DataFrame inputs/outputs of functions and for reducing boilerplate when you might want to validate those inputs/outputs before or after calling the functions.