Maat was created before dataclasses existed. For validation Maat offers the same. But it also allows for some really neat features such as validation on encrypted data. https://github.com/Attumm/Maat/blob/main/tests/test_validati...
Since validation is written as dictionaries its possible to store the validations in caching db such as Redis.
And since its simple its easy to extend for anyone use case. And there are no other dependencies.
Benchmarks of pydantic has Maat around twice as Pydantic.
Benchmarks of pydantic has Maat around twice the speed of Pydantic
And it's getting some wide adoption, for instance FastAPI which uses it for request validations.
The points you made are all very valid points.
At my employer we use both projects. If the data is very nested, or really large Maat is used.
And of course I agree 100% about tradoffs in engineering. However I usually advise against using 2 dependencies doing mainly the same thing if possible within the same project.
Anyway, good catch, thanks for enlightening me!