Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
    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]
Ejemplo n.º 4
0
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)