Skip to content

Commit cbab4b2

Browse files
committed
uri [and general format scaffolding]
1 parent ba44cce commit cbab4b2

1 file changed

Lines changed: 22 additions & 9 deletions

File tree

jsonschema/_format.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,16 @@ def conforms(self, instance, format):
132132
_draft_checkers = {"draft3": [], "draft4": [], "draft6": []}
133133

134134

135-
def _checks_drafts(both=None, draft3=None, draft4=None, raises=()):
136-
draft3 = draft3 or both
137-
draft4 = draft4 or both
135+
def _checks_drafts(
136+
name=None,
137+
draft3=None,
138+
draft4=None,
139+
draft6=None,
140+
raises=(),
141+
):
142+
draft3 = draft3 or name
143+
draft4 = draft4 or name
144+
draft6 = draft6 or name
138145

139146
def wrap(func):
140147
if draft3:
@@ -143,11 +150,14 @@ def wrap(func):
143150
if draft4:
144151
_draft_checkers["draft4"].append(draft4)
145152
func = FormatChecker.cls_checks(draft4, raises)(func)
153+
if draft6:
154+
_draft_checkers["draft6"].append(draft6)
155+
func = FormatChecker.cls_checks(draft6, raises)(func)
146156
return func
147157
return wrap
148158

149159

150-
@_checks_drafts("email")
160+
@_checks_drafts(name="email")
151161
def is_email(instance):
152162
if not isinstance(instance, str_types):
153163
return True
@@ -167,7 +177,7 @@ def is_ipv4(instance):
167177

168178

169179
if hasattr(socket, "inet_pton"):
170-
@_checks_drafts("ipv6", raises=socket.error)
180+
@_checks_drafts(name="ipv6", raises=socket.error)
171181
def is_ipv6(instance):
172182
if not isinstance(instance, str_types):
173183
return True
@@ -195,7 +205,7 @@ def is_host_name(instance):
195205
except ImportError:
196206
pass
197207
else:
198-
@_checks_drafts("uri", raises=ValueError)
208+
@_checks_drafts(name="uri", raises=ValueError)
199209
def is_uri(instance):
200210
if not isinstance(instance, str_types):
201211
return True
@@ -210,20 +220,23 @@ def is_uri(instance):
210220
except ImportError:
211221
pass
212222
else:
213-
@_checks_drafts("date-time", raises=(ValueError, isodate.ISO8601Error))
223+
@_checks_drafts(
224+
name="date-time",
225+
raises=(ValueError, isodate.ISO8601Error),
226+
)
214227
def is_datetime(instance):
215228
if not isinstance(instance, str_types):
216229
return True
217230
return isodate.parse_datetime(instance)
218231
else:
219-
@_checks_drafts("date-time")
232+
@_checks_drafts(name="date-time")
220233
def is_datetime(instance):
221234
if not isinstance(instance, str_types):
222235
return True
223236
return strict_rfc3339.validate_rfc3339(instance)
224237

225238

226-
@_checks_drafts("regex", raises=re.error)
239+
@_checks_drafts(name="regex", raises=re.error)
227240
def is_regex(instance):
228241
if not isinstance(instance, str_types):
229242
return True

0 commit comments

Comments
 (0)