MCPcopy
hub / github.com/python-attrs/attrs / deep_mapping

Function deep_mapping

src/attr/validators.py:410–457  ·  view source on GitHub ↗

A validator that performs deep validation of a dictionary. All validators are optional, but at least one of *key_validator* or *value_validator* must be provided. Args: key_validator: Validator(s) to apply to dictionary keys. value_validator: Validator(s) to apply

(
    key_validator=None, value_validator=None, mapping_validator=None
)

Source from the content-addressed store, hash-verified

408
409
410def deep_mapping(
411 key_validator=None, value_validator=None, mapping_validator=None
412):
413 """
414 A validator that performs deep validation of a dictionary.
415
416 All validators are optional, but at least one of *key_validator* or
417 *value_validator* must be provided.
418
419 Args:
420 key_validator: Validator(s) to apply to dictionary keys.
421
422 value_validator: Validator(s) to apply to dictionary values.
423
424 mapping_validator:
425 Validator(s) to apply to top-level mapping attribute.
426
427 .. versionadded:: 19.1.0
428
429 .. versionchanged:: 25.4.0
430 *key_validator* and *value_validator* are now optional, but at least one
431 of them must be provided.
432
433 .. versionchanged:: 25.4.0
434 *key_validator*, *value_validator*, and *mapping_validator* can now be a
435 list or tuple of validators.
436
437 Raises:
438 TypeError: If any sub-validator fails on validation.
439
440 ValueError:
441 If neither *key_validator* nor *value_validator* is provided on
442 instantiation.
443 """
444 if key_validator is None and value_validator is None:
445 msg = (
446 "At least one of key_validator or value_validator must be provided"
447 )
448 raise ValueError(msg)
449
450 if isinstance(key_validator, (list, tuple)):
451 key_validator = and_(*key_validator)
452 if isinstance(value_validator, (list, tuple)):
453 value_validator = and_(*value_validator)
454 if isinstance(mapping_validator, (list, tuple)):
455 mapping_validator = and_(*mapping_validator)
456
457 return _DeepMapping(key_validator, value_validator, mapping_validator)
458
459
460@attrs(repr=False, frozen=True, slots=True)

Calls 2

and_Function · 0.85
_DeepMappingClass · 0.85