Choose-Dataclass-and-Validation-Library
==============================================================================
**Candidates**
- `marshmallow `_: validation and serialization framework, created on 2013.
- `attrs `_: writing python class, simple validation, simple serialization, created on 2015.
- `pydantic `_: validation library based on type hint, created on 2017.
- `dataclasses `_: Python3.7 standard library for data class, created on 2018.
**Highlight**
In this section, I show the best part of each library that completely beat others:
- marshmallow: no intrusion to your existing code, the capability to extend and customization is the best.
- attrs: mature, zero dependency, support the most of Python versions, including PyPy. has all features, and be capable to extend.
- pydantic: strongly depends on type hint, fast.
- dataclasses: standard library, no need to install anything.
**Deal Breaker**
In this section, I show the strong reason NOT use each library.
- marshmallow: it cannot help you writing your data class
- attrs: NO
- pydantic: you need to work under <= 3.6.
- dataclasses: you need custom validation.