Update validate.py

This commit is contained in:
Thomas Krijnen
2020-08-30 15:21:21 +02:00
committed by GitHub
parent 1b2c8bdf8e
commit 1e3dc6ba16
@@ -19,22 +19,22 @@ attribute = ifcopenshell.ifcopenshell_wrapper.attribute
class ValidationError(Exception): pass class ValidationError(Exception): pass
log_entry_type = namedtuple('log_entry_type', ("level", "message", "product")) log_entry_type = namedtuple('log_entry_type', ("level", "message", "instance"))
class json_logger: class json_logger:
def __init__(self): def __init__(self):
self.statements = [] self.statements = []
self.product = None self.instance = None
def set_product(self, product): def set_instance(self, instance):
self.product = product self.instance = instance
def log(self, level, message, product): def log(self, level, message, instance):
self.statements.append(log_entry_type(level, message, product)._asdict()) self.statements.append(log_entry_type(level, message, instance)._asdict())
def __getattr__(self, level): def __getattr__(self, level):
return functools.partial(self.log, level, product=self.product) return functools.partial(self.log, level, instance=self.instance)
simple_type_python_mapping = { simple_type_python_mapping = {
@@ -100,8 +100,8 @@ def try_valid(attr, val):
def validate(f, logger): def validate(f, logger):
schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(f.schema) schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(f.schema)
for inst in f: for inst in f:
if hasattr(logger, 'set_product'): if hasattr(logger, 'set_instance'):
logger.set_product(inst) logger.set_instance(inst)
entity = schema.declaration_by_name(inst.is_a()) entity = schema.declaration_by_name(inst.is_a())
@@ -115,7 +115,7 @@ def validate(f, logger):
try: try:
assert_valid(attr, val) assert_valid(attr, val)
except ValidationError as e: except ValidationError as e:
if hasattr(logger, 'set_product'): if hasattr(logger, 'set_instance'):
logger.error(str(e)) logger.error(str(e))
else: else:
logger.error('In {}\n{}'.format(inst, e)) logger.error('In {}\n{}'.format(inst, e))
@@ -125,7 +125,7 @@ def validate(f, logger):
try: try:
assert_valid_inverse(attr, val) assert_valid_inverse(attr, val)
except ValidationError as e: except ValidationError as e:
if hasattr(logger, 'set_product'): if hasattr(logger, 'set_instance'):
logger.error(str(e)) logger.error(str(e))
else: else:
logger.error('In {}\n{}'.format(inst, e)) logger.error('In {}\n{}'.format(inst, e))