Skip to content

Commit 001a725

Browse files
committed
[validation] Add prop value cardinality validation
1 parent 59835f9 commit 001a725

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

odml/validation.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,3 +454,32 @@ def property_values_string_check(prop):
454454

455455

456456
Validation.register_handler('property', property_values_string_check)
457+
458+
459+
def property_values_cardinality(prop):
460+
"""
461+
Checks Property values against any set value cardinality.
462+
463+
:param prop: odml.Property
464+
:return: Yields a ValidationError warning, if a set cardinality is not met.
465+
"""
466+
if prop.val_cardinality and isinstance(prop.val_cardinality, tuple):
467+
468+
val_min = prop.val_cardinality[0]
469+
val_max = prop.val_cardinality[1]
470+
471+
val_len = len(prop.values) if prop.values else 0
472+
473+
invalid_cause = ""
474+
if val_min and val_len < val_min:
475+
invalid_cause = "minimum %s values" % val_min
476+
elif val_max and (prop.values and len(prop.values) > val_max):
477+
invalid_cause = "maximum %s values" % val_max
478+
479+
if invalid_cause:
480+
msg = "Number of Property values does not satisfy value cardinality"
481+
msg += " (%s, %s found)" % (invalid_cause, val_len)
482+
yield ValidationError(prop, msg, LABEL_WARNING)
483+
484+
485+
Validation.register_handler("property", property_values_cardinality)

0 commit comments

Comments
 (0)