From 938685859410c5047d9e9b0bdcaf705587d90bd1 Mon Sep 17 00:00:00 2001 From: Dark Dragon Date: Sat, 16 Sep 2023 19:31:12 +0200 Subject: [PATCH] Add option to ignore None values to Optional() --- schema.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/schema.py b/schema.py index 37b0fb1..436de82 100644 --- a/schema.py +++ b/schema.py @@ -401,6 +401,9 @@ def validate(self, data, **kwargs): continue skey.handler(nkey, data, e) else: + if isinstance(skey, Optional): + if hasattr(skey, "ignore_none") and skey.ignore_none and value is None: + continue try: nvalue = Schema(svalue, error=e, ignore_extra_keys=i).validate(value, **kwargs) except SchemaError as x: @@ -698,7 +701,8 @@ class Optional(Schema): _MARKER = object() - def __init__(self, *args, **kwargs): + def __init__(self, *args, ignore_none=False, **kwargs): + self.ignore_none = ignore_none default = kwargs.pop("default", self._MARKER) super(Optional, self).__init__(*args, **kwargs) if default is not self._MARKER: