I agree with all of these points, but just for my own edification and learning, I’ve implemented your code in a fork of validus here (with a pull request that needs work to pass the travis tests – working on it). I am a fan of Validus just for its simplicity and this seemed like a nice place to build off of.
This has some similarity to attrs, but I like the idea of having something that I can copy and customize as my base class (assert this but warn that and ignore the other) so I view it more as a “here is a nice base to customize from” than, here is something that you should use out of the box. The documentation I’ve written reflects this.
I am personally interested in this as I’ve liked the idea of Enthought’s traits, but I’ve never liked the implementation (it clutters up the namespace too much). This is a nice start towards something I might like better with Validus providing the underlying validation, and contract.py providing the tricks to something cleaner.
So thanks for the talk. Fun stuff!