Comments (6)
I would also find this valuable... a mapping you can can pass to class_schema
that gets merged with _native_to_marshmallow
.
if typ in _marshmallow_mapping:
field_fn = _marshmallow_mapping[typ]
if inpsect.isfunction(field_fn):
return field_fn(typ, **metadata)
else: #assume it's just a marshmallow field
return field_fn(**metadata)
from marshmallow_dataclass.
There was an idea introduced in another issue (#23) That I think could work very well here:
from typing import List
from ipaddress import IPv4Address
from marshmallow.fields import Field
from marshmallow_dataclass import dataclass, NewType
class IPField(Field):
... # serializes an IPv4Address instance into a str, and deserializes back into an instance
#IP = NewType('IP', str, validate=my_validation_function)
#This was the suggestion in the other issue
IP = NewType('IP', IPv4Address, marshmallow_field=IPField)
@dataclass
class Company:
name: str
ipv4s: List[IP]
The idea is to have a NewType implementation that works the same as typing.NewType, but also stores all the field metadata that we would normally store on a dataclass field, like validation functions and marshmallow_field selections.
Thoughts?
from marshmallow_dataclass.
The supported way to use custom fields for your type is to add a marshmallow_field
key to your field metadata, and make it contain your marshmallow field.
from marshmallow_dataclass.
I did see it in the documentation. The reason i wanted to not do this is because of what i wrote in a comment in a different issue:
#15 (comment)
from marshmallow_dataclass.
I just published version 6.1.0rc1
with support for NewType
. You can check out the README, the documentation, and try it. If you encounter any issues, or find that something could be improved in the documentation, open an issue. If no one complains, then I'll publish it as 6.1.0
and close this issue.
from marshmallow_dataclass.
Version 6.1.0 was just released with support for NewType, so I am closing this.
https://pypi.org/project/marshmallow-dataclass/6.1.0/
from marshmallow_dataclass.
Related Issues (20)
- Using NewType raises TypeError HOT 3
- marshmallow_dataclass.class_schema() breaks classes HOT 3
- Misunderstanding about how Union types are read from a JSON? HOT 3
- Cyclic references break when using `class_schema` in a class decorator HOT 1
- Add native marshmallow.fields.Enum suport HOT 1
- str | None fails HOT 5
- Enum parameters are ignored when loading a schema HOT 3
- field_for_schema can use _RECURSION_GUARD.seen_classes before it is initialized
- TypeError when creating a marshmallow schema from dataclass inherited from generic class HOT 1
- Enum fields always cast as JSON instead of native type
- Issues with typeguard package v3 HOT 3
- Error when using marshmallow_dataclass with attr.s HOT 1
- Arch Linux package? HOT 4
- Ability to configure custom Nested field class
- 8.5.13 broken on py3.9? HOT 3
- mypy: error: "Type[X]" has no attribute "Schema" [attr-defined] HOT 1
- Validating enum type HOT 1
- Union field is broken: The order of Union arguments is indeterminate
- Union with generic types is broken HOT 1
- Type stub-only objects not allowed in dataclass fields HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from marshmallow_dataclass.