| 199 | |
| 200 | @attrs(repr=False, slots=True, unsafe_hash=True) |
| 201 | class _OptionalValidator: |
| 202 | validator = attrib() |
| 203 | |
| 204 | def __call__(self, inst, attr, value): |
| 205 | if value is None: |
| 206 | return |
| 207 | |
| 208 | self.validator(inst, attr, value) |
| 209 | |
| 210 | def __repr__(self): |
| 211 | return fclass="st">"<optional validator for {self.validator!r} or None>" |
| 212 | |
| 213 | |
| 214 | def optional(validator): |