It might be unecessary nitpicking on my side, but I wonder if using classes for validators here doesn't lead to unnecessary complexity? A large proportion of the code from this file is dedicated to allow to test validators that store settings on a local attribute. Would it make sense to use functions to define the validators, which would simply use values from the settings instead of object attributes. You would then be able to more easily override these settings in the tests by using the more usual `@patch.dict(settings...` call.

The only place where it seem justified to have a class with state is the loading of dictionary data, but given that the related decorator is only used for a single test, you could mock the `haystack` attribute from within the test itself?