def initialize()

in rostran/core/template.py [0:0]


    def initialize(cls, data: dict):
        if cls.ROS_TEMPLATE_FORMAT_VERSION not in data:
            raise InvalidRosTemplateFormatVersion(
                reason=f"{cls.ROS_TEMPLATE_FORMAT_VERSION} is required"
            )
        if data.get(cls.ROS_TEMPLATE_FORMAT_VERSION) != "2015-09-01":
            raise InvalidRosTemplateFormatVersion(
                reason=f"{cls.ROS_TEMPLATE_FORMAT_VERSION} can only be 2015-09-01"
            )

        metadata = mappings = conditions = parameters = resources = outputs = rules = (
            workspace
        ) = None
        transform = data.get(cls.TRANSFORM)
        description = data.get(cls.DESCRIPTION)
        if cls.CONDITIONS in data:
            conditions = Conditions.initialize(data[cls.CONDITIONS])
        if cls.MAPPINGS in data:
            mappings = Mappings.initialize(data[cls.MAPPINGS])
        if cls.PARAMETERS in data:
            parameters = Parameters.initialize(data[cls.PARAMETERS])
        if cls.RESOURCES in data:
            resources = Resources.initialize(data[cls.RESOURCES])
        if cls.OUTPUTS in data:
            outputs = Outputs.initialize(data[cls.OUTPUTS])
        if cls.RULES in data:
            rules = Rules.initialize(data[cls.RULES])
        if cls.METADATA in data:
            metadata = MetaData.initialize(data[cls.METADATA])
        if cls.WORKSPACE in data:
            workspace = Workspace.initialize(data[cls.WORKSPACE])

        return cls(
            description,
            metadata,
            mappings,
            conditions,
            parameters,
            resources,
            outputs,
            rules,
            transform,
            workspace,
        )