Skip to content

Commit caa6541

Browse files
committed
fix falsy values of default model
1 parent 1093642 commit caa6541

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

datamodel/base.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,10 @@ def _handle_list_of_dataclasses(self, value, _type):
189189
pass
190190
return value
191191

192-
def _process_field_(self, name: str, value: Any, f: Field) -> dict[Any]:
192+
def _process_field_(
193+
self,
194+
name: str, value: Any, f: Field
195+
) -> Optional[dict[Any, Any]]:
193196
_type = f.type
194197
_encoder = f.metadata.get('encoder')
195198
new_val = value
@@ -203,7 +206,8 @@ def _process_field_(self, name: str, value: Any, f: Field) -> dict[Any]:
203206

204207
if is_primitive(_type):
205208
try:
206-
new_val = parse_basic(f.type, value, _encoder)
209+
if value is not None:
210+
new_val = parse_basic(f.type, value, _encoder)
207211
return self._validation_(name, new_val, f, _type)
208212
except (TypeError, ValueError) as ex:
209213
raise ValueError(
@@ -266,7 +270,7 @@ def _validation_(
266270
name: str,
267271
value: Any,
268272
f: Field, _type: Any
269-
) -> Optional[Any]:
273+
) -> Optional[dict[Any, Any]]:
270274
"""
271275
_validation_.
272276
TODO: cover validations as length, not_null, required, max, min, etc
@@ -276,7 +280,11 @@ def _validation_(
276280
setattr(self, name, value)
277281

278282
if val_type == type or value == _type or is_empty(value):
279-
self._field_checks_(f, name, value)
283+
try:
284+
self._field_checks_(f, name, value)
285+
return True
286+
except (ValueError, TypeError):
287+
raise
280288
else:
281289
# capturing other errors from validator:
282290
return _validation(f, name, value, _type, val_type)

datamodel/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
__title__ = 'python-datamodel'
44
__description__ = ('simple library based on python +3.8 to use Dataclass-syntax'
55
'for interacting with Data')
6-
__version__ = '0.6.15'
6+
__version__ = '0.6.16'
77
__author__ = 'Jesus Lara'
88
__author_email__ = '[email protected]'
99
__license__ = 'BSD'

0 commit comments

Comments
 (0)