5 ms·
Shameless plug: When 3.7 was first released, I created a library to use dataclasses and add some light type validation to them. The library grew and now also s
by abatilo 7y ago
Shameless plug:
When 3.7 was first released, I created a library to use dataclasses and add some light type validation to them. The library grew and now also supports some basic serialization mapping.
I'd love some feedback/issues/PRs
https://github.com/abatilo/typed-json-dataclass https://github.com/abatilo/typed-json-dataclass
- kflansburg 7y agoNice! I always end up implementing some portion of this on every major project I do. After using something like Rust's Serde crate, you really miss this functionality in Python.
- ed_balls 7y agoLook pretty good, but that approach won't be sufficient for more advance serialisation e.g. you want a user with password in case X and without in case Y. Type system is not expressive enough, so you need something more expressive like Marshmallow.
- MapleWalnut 7y agoThere's also pydantic, which provides validation using type hints: https://pydantic-docs.helpmanual.io https://pydantic-docs.helpmanual.io
- zimablue 7y agoworth mentioning the attr library in this context, which is I think the most popular implementation and inspiration for dataclasses (I think I read the reason it's not in core is to allow it to move faster). My interpretation of dataclasses in the stlib was to put a seal of approval on attr.
- m_ke 7y agoAlso related to that I just came across a library that can generate json schema from a dataclass https://github.com/s-knibbs/dataclasses-jsonschema https://github.com/s-knibbs/dataclasses-jsonschema There's also https://github.com/Fatal1ty/mashumaro https://github.com/Fatal1ty/mashumaro for json serialization.
- BerislavLopac 7y agoattrs is basically what dataclasses haven't dared to be: https://www.attrs.org https://www.attrs.org For more context see https://www.attrs.org/en/stable/why.html#data-classes https://www.attrs.org/en/stable/why.html#data-classes and https://www.python.org/dev/peps/pep-0557/#why-not-just-use-attrs https://www.python.org/dev/peps/pep-0557/#why-not-just-use-a...
- jgalt212 7y agoTrue that. I'm not an OOP person, but to me, dataclasses seem like a solution in search of a problem. Or, even more nefariously, it seems akin to the Clojure model, if the core team didn't develop it, it won't be officially blessed. I'm more than willing to hear the other side, but I've read some and watched a few talks on dataclasses, and while their implementation is neat, I cannot figure out how I'd used them on a regular basis.
- BerislavLopac 7y ago> I'm not an OOP person, but to me, dataclasses seem like a solution in search of a problem. As an OOP person, I would say that dataclasses are an incomplete solution to a complex, multi-faceted problem, and a solution which doesn't really solve any of those facets. It is pretty much unusable as it is; for any practical use you need to extend it based on the specific needs of your application. But then it makes more sense to use a more complete solution such as attrs, which covers a much wider set of problems.