(self, obj: t.Any, value: dict[t.Any, t.Any])
| 4016 | return self.validate_elements(obj, value) |
| 4017 | |
| 4018 | def validate_elements(self, obj: t.Any, value: dict[t.Any, t.Any]) -> dict[K, V] | None: |
| 4019 | per_key_override = self._per_key_traits or {} |
| 4020 | key_trait = self._key_trait |
| 4021 | value_trait = self._value_trait |
| 4022 | if not (key_trait or value_trait or per_key_override): |
| 4023 | return value |
| 4024 | |
| 4025 | validated = {} |
| 4026 | for key in value: |
| 4027 | v = value[key] |
| 4028 | if key_trait: |
| 4029 | try: |
| 4030 | key = key_trait._validate(obj, key) |
| 4031 | except TraitError: |
| 4032 | self.element_error(obj, key, key_trait, "Keys") |
| 4033 | active_value_trait = per_key_override.get(key, value_trait) |
| 4034 | if active_value_trait: |
| 4035 | try: |
| 4036 | v = active_value_trait._validate(obj, v) |
| 4037 | except TraitError: |
| 4038 | self.element_error(obj, v, active_value_trait, "Values") |
| 4039 | validated[key] = v |
| 4040 | |
| 4041 | return self.klass(validated) # type:ignore[misc,operator] |
| 4042 | |
| 4043 | def class_init(self, cls: type[t.Any], name: str | None) -> None: |
| 4044 | if isinstance(self._value_trait, TraitType): |
no test coverage detected