Source code for fbrelation.declarations.program

'''
Defines declaration classes for entire programs.
'''

[docs]class ProgramDeclaration(object): ''' Defines a program declaration, which consists of a series of individual relation constraint declarations. '''
[docs] def __init__(self, relationDeclarations): ''' Initializes a new program from the provided list of relation constraint declaration objects. ''' self.relations = relationDeclarations
[docs] def execute(self): ''' Executes the program, creating and configuring an FBConstraintRelation for each relation declaration in the program. :returns: a dictionary which maps the names of the relation declarations to their corresponding constraint objects. :raises: an :class:`.ExecutionError` if any problems are encountered at runtime. ''' # Collect a dictionary of name -> FBConstraintRelation mappings as # each relation is executed relationComponents = {} # Execute each individual relation declaration for relationDeclaration in self.relations: # Create the FBConstraintRelation by executing the relation, # passing in the dictionary of already-created relation # constraints. Then add the new constraint to the dictionary. constraint = relationDeclaration.execute(relationComponents) relationComponents[relationDeclaration.name] = constraint # Return the dictionary of relation constraints to complete the program return relationComponents