File tree Expand file tree Collapse file tree 2 files changed +13
-0
lines changed Expand file tree Collapse file tree 2 files changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -201,6 +201,7 @@ def field_for_schema(
201
201
202
202
if default is not marshmallow .missing :
203
203
desert_metadata .setdefault ("default" , default )
204
+ desert_metadata .setdefault ('allow_none' , True )
204
205
if not desert_metadata .get (
205
206
"required"
206
207
): # 'missing' must not be set for required fields.
@@ -242,9 +243,11 @@ def field_for_schema(
242
243
metadata [_DESERT_SENTINEL ]["missing" ] = metadata .get ("missing" , None )
243
244
metadata [_DESERT_SENTINEL ]["required" ] = False
244
245
246
+
245
247
field = field_for_schema (subtyp , metadata = metadata , default = None )
246
248
field .default = None
247
249
field .missing = None
250
+ field .allow_none = True
248
251
249
252
elif typing_inspect .is_union_type (typ ):
250
253
subfields = [field_for_schema (subtyp ) for subtyp in arguments ]
Original file line number Diff line number Diff line change @@ -137,6 +137,16 @@ class A:
137
137
data = desert .schema_class (A )().load ({})
138
138
assert data == A (None )
139
139
140
+ def test_optional_present (module ):
141
+ """Setting an optional type allows passing None."""
142
+
143
+ @module .dataclass
144
+ class A :
145
+ x : t .Optional [int ]
146
+
147
+ data = desert .schema_class (A )().load ({"x" : None })
148
+ assert data == A (None )
149
+
140
150
141
151
def test_custom_field (module ):
142
152
@module .dataclass
You can’t perform that action at this time.
0 commit comments