summaryrefslogtreecommitdiffstats
path: root/contacts_validation/contacts_validation/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'contacts_validation/contacts_validation/__init__.py')
-rw-r--r--contacts_validation/contacts_validation/__init__.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/contacts_validation/contacts_validation/__init__.py b/contacts_validation/contacts_validation/__init__.py
index 822e789..c9c75be 100644
--- a/contacts_validation/contacts_validation/__init__.py
+++ b/contacts_validation/contacts_validation/__init__.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# Copyright 2018 vg@devys.org
+# Copyright 2023 vg@devys.org
# SPDX-License-Identifier: MIT
import collections
@@ -7,6 +7,7 @@ import datetime
import os
import pprint
import sys
+import typing
import jsonschema
import yaml
@@ -17,10 +18,10 @@ def convert_types(obj):
return obj
elif isinstance(obj, datetime.date):
return obj.strftime('%F')
- elif isinstance(obj, collections.Sequence):
+ elif isinstance(obj, typing.Sequence):
for i, _ in enumerate(obj):
obj[i] = convert_types(obj[i])
- elif isinstance(obj, collections.Mapping):
+ elif isinstance(obj, typing.Mapping):
for k, v in obj.items():
obj[k] = convert_types(v)
@@ -58,10 +59,12 @@ def print_validation_error(data_obj, exception):
def validate_yaml_data(data_obj, schema_obj):
+ valid = True
try:
jsonschema.validate(convert_types(data_obj), schema_obj)
except jsonschema.ValidationError as e:
print_validation_error(data_obj, e)
+ valid = False
# schema ok, check for duplicates in display and uuids
display_dups = collections.defaultdict(list)
@@ -72,7 +75,10 @@ def validate_yaml_data(data_obj, schema_obj):
for e in (data_obj[e] for e in display_dups.values() if len(e) > 2):
print('WARNING: duplicated display value for these contacts:')
print(f'=> display: {e["display"]} uuid: {e["uuid"]}')
+ valid = False # by default warning are errors on cmdline
for e in (data_obj[e] for e in uuid_dups.values() if len(e) > 2):
print('ERROR: duplicated uuid value for these contacts:')
print(f'=> display: {e["display"]} uuid: {e["uuid"]}')
+ valid = False
+ return valid