Ejemplo n.º 1
0
class NodeType(types.Type):

    schema = {
        'derived_from': types.TypeDerivedFrom,
        'interfaces': operation.NodeTypeInterfaces,
        'properties': _data_types.SchemaWithInitialDefault,
    }
    requires = {
        'self': [
            requirements.Value('super_type',
                               predicate=types.derived_from_predicate,
                               required=False)
        ],
        _data_types.DataTypes: [requirements.Value('data_types')]
    }

    def parse(self, super_type, data_types):
        node_type = self.build_dict_result()
        if not node_type.get('derived_from'):
            node_type.pop('derived_from', None)
        if super_type:
            node_type[constants.PROPERTIES] = utils.merge_schemas(
                overridden_schema=super_type.get('properties', {}),
                overriding_schema=node_type.get('properties', {}),
                data_types=data_types)
            node_type[constants.INTERFACES] = interfaces_parser. \
                merge_node_type_interfaces(
                    overridden_interfaces=super_type[constants.INTERFACES],
                    overriding_interfaces=node_type[constants.INTERFACES])
        node_type[constants.TYPE_HIERARCHY] = self.create_type_hierarchy(
            super_type)
        self.fix_properties(node_type)
        return node_type
Ejemplo n.º 2
0
 class TestChild(elements.Element):
     schema = elements.Leaf(type=str)
     requires = {
         'self': [requirements.Value(
             'req',
             multiple_results=True,
             predicate=predicate)]
     }