Skip to content

Commit 52b1f04

Browse files
committed
Use contextmanager.suppress to kill a bit of boilerplate.
1 parent 0995995 commit 52b1f04

File tree

1 file changed

+17
-36
lines changed

1 file changed

+17
-36
lines changed

jsonschema/_format.py

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from contextlib import suppress
12
from uuid import UUID
23
import datetime
34
import ipaddress
@@ -220,11 +221,9 @@ def is_ipv6(instance):
220221
return not getattr(address, "scope_id", "")
221222

222223

223-
try:
224+
with suppress(ImportError):
224225
from fqdn import FQDN
225-
except ImportError: # pragma: no cover
226-
pass
227-
else:
226+
228227
@_checks_drafts(
229228
draft3="host-name",
230229
draft4="hostname",
@@ -239,12 +238,10 @@ def is_host_name(instance):
239238
return FQDN(instance).is_valid
240239

241240

242-
try:
241+
with suppress(ImportError):
243242
# The built-in `idna` codec only implements RFC 3890, so we go elsewhere.
244243
import idna
245-
except ImportError: # pragma: no cover
246-
pass
247-
else:
244+
248245
@_checks_drafts(
249246
draft7="idn-hostname",
250247
draft201909="idn-hostname",
@@ -261,11 +258,9 @@ def is_idn_host_name(instance):
261258
try:
262259
import rfc3987
263260
except ImportError:
264-
try:
261+
with suppress(ImportError):
265262
from rfc3986_validator import validate_rfc3986
266-
except ImportError: # pragma: no cover
267-
pass
268-
else:
263+
269264
@_checks_drafts(name="uri")
270265
def is_uri(instance):
271266
if not isinstance(instance, str):
@@ -325,11 +320,9 @@ def is_uri_reference(instance):
325320
return True
326321
return rfc3987.parse(instance, rule="URI_reference")
327322

328-
try:
323+
with suppress(ImportError):
329324
from rfc3339_validator import validate_rfc3339
330-
except ImportError:
331-
pass
332-
else:
325+
333326
@_checks_drafts(name="date-time")
334327
def is_datetime(instance):
335328
if not isinstance(instance, str):
@@ -374,16 +367,10 @@ def is_draft3_time(instance):
374367
return datetime.datetime.strptime(instance, "%H:%M:%S")
375368

376369

377-
try: # webcolors>=1.11
370+
with suppress(ImportError):
378371
from webcolors import CSS21_NAMES_TO_HEX
379372
import webcolors
380-
except ImportError:
381-
try: # webcolors<1.11
382-
from webcolors import css21_names_to_hex as CSS21_NAMES_TO_HEX
383-
import webcolors
384-
except ImportError: # pragma: no cover
385-
pass
386-
else:
373+
387374
def is_css_color_code(instance):
388375
return webcolors.normalize_hex(instance)
389376

@@ -402,11 +389,9 @@ def is_css3_color(instance):
402389
return is_css_color_code(instance)
403390

404391

405-
try:
392+
with suppress(ImportError):
406393
import jsonpointer
407-
except ImportError: # pragma: no cover
408-
pass
409-
else:
394+
410395
@_checks_drafts(
411396
draft6="json-pointer",
412397
draft7="json-pointer",
@@ -452,11 +437,9 @@ def is_relative_json_pointer(instance):
452437
return (rest == "#") or jsonpointer.JsonPointer(rest)
453438

454439

455-
try:
440+
with suppress(ImportError):
456441
import uri_template
457-
except ImportError: # pragma: no cover
458-
pass
459-
else:
442+
460443
@_checks_drafts(
461444
draft6="uri-template",
462445
draft7="uri-template",
@@ -469,11 +452,9 @@ def is_uri_template(instance):
469452
return uri_template.validate(instance)
470453

471454

472-
try:
455+
with suppress(ImportError):
473456
import isoduration
474-
except ImportError: # pragma: no cover
475-
pass
476-
else:
457+
477458
@_checks_drafts(
478459
draft201909="duration",
479460
draft202012="duration",

0 commit comments

Comments
 (0)