def _validate_class_property_type(ctx, module, factory, name, typeof): """Validates a class property type. """ typeof, qualifier = utils.parse_type(typeof) if typeof in _SIMPLE_CLASS_PROPERTY_TYPES: return if not re.match(_RE_CLASS_PROPERTY_TYPE, typeof): err = 'Invalid property: {0}.[{1}] --> ' err += 'type format must be lower_case_underscore ' err += '(for class references a "." is expected)' err = err.format(ctx.get_name(factory, module), name) ctx.set_error(err) if qualifier and not re.match(_RE_CLASS_PROPERTY_TYPE, qualifier): err = 'Invalid property qualifier: {0}.[{1}] --> ' err += 'type format must be lower_case_underscore ' err += '(for class references a "." is expected)' err = err.format(ctx.get_name(factory, module), name) ctx.set_error(err) if len(typeof.split('.')) == 1: err = 'Invalid property: {0}.[{1}] --> simple type must be in {2}' err = err.format(ctx.get_name(factory, module), name, _SIMPLE_CLASS_PROPERTY_TYPES) ctx.set_error(err)
def __init__(self, name): """Instance constructor. :param str name: Name of type. """ self.is_class = False self.is_complex = len(name.split('.')) > 1 self.is_simple = not self.is_complex if name.startswith("linked_to"): self.name, qualifier = utils.parse_type(name) else: self.name, qualifier = name, None self.qualifier_type = Type(qualifier) if qualifier else None if self.is_simple: self.name_of_package = None self.name_of_type = self.name else: self.name_of_package = self.name.split('.')[0] self.name_of_type = self.name.split('.')[1]
def _validate_class_property_type_references(ctx): """Validates base class references. """ valid_types = ctx.get_valid_types() for module, factory, cls in ctx.classes: for name, typeof in ctx.get_class_property_types(cls): typeof, qualifier = utils.parse_type(typeof) if typeof in _INJECTED_TYPES_WHITELIST: continue if typeof not in valid_types: err = 'Invalid class property: {0}.[{1}] --> ' err += 'type reference "{2}" is unrecognized' err = err.format(ctx.get_name(factory, module), name, typeof) ctx.set_error(err) if qualifier and qualifier not in valid_types: print name, typeof, qualifier # for t in valid_types: # print t err = 'Invalid linked_to qualifier: {0}.[{1}] --> ' err += 'type reference "{2}" is unrecognized' err = err.format(ctx.get_name(factory, module), name, qualifier) ctx.set_error(err)