AbstractPropertyManager
The AbstractPropertiesManager facilitates the management of all the contract properties including that of the
connector handlers, parameterised intent and Augmented Knowledge
The Class initialisation is abstracted and is the only abstracted method. A concrete implementation of the
overloaded __init__ manages the root_key and knowledge_key for this construct. The root_key adds a key
property reference to the root of the properties and can be referenced directly with <name>_key. Likewise
the knowledge_key adds a catalog key to the restricted catalog keys.
More complex root_key constructs, where a grouping of keys might be desirable, passing a dictionary of name
value pairs as part of the list allows a root base to group related next level keys. For example
root_key = [{base: [primary, secondary}]
would add base.primary_key and base.secondary_key to the list of keys.
Here is a default example of an initialisation method:
def __init__(self, task_name: str, creator: str):
# set additional keys
root_keys = []
knowledge_keys = ['drift']
super().__init__(task_name=task_name, root_keys=root_keys, knowledge_keys=knowledge_keys, creator=creator)
The property manager is not responsible for persisting the properties but provides the methods to load and persist its in memory structure.