Source code for pyEDAA.IPXACT.DesignConfiguration

# ==================================================================================================================== #
#              _____ ____    _        _      ___ ______  __    _    ____ _____                                         #
#  _ __  _   _| ____|  _ \  / \      / \    |_ _|  _ \ \/ /   / \  / ___|_   _|                                        #
# | '_ \| | | |  _| | | | |/ _ \    / _ \    | || |_) \  /   / _ \| |     | |                                          #
# | |_) | |_| | |___| |_| / ___ \  / ___ \ _ | ||  __//  \  / ___ \ |___  | |                                          #
# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)___|_|  /_/\_\/_/   \_\____| |_|                                          #
# |_|    |___/                                                                                                         #
# ==================================================================================================================== #
# Authors:                                                                                                             #
#   Patrick Lehmann                                                                                                    #
#                                                                                                                      #
# License:                                                                                                             #
# ==================================================================================================================== #
# Copyright 2017-2025 Patrick Lehmann - Bötzingen, Germany                                                             #
# Copyright 2016-2016 Patrick Lehmann - Dresden, Germany                                                               #
#                                                                                                                      #
# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
# you may not use this file except in compliance with the License.                                                     #
# You may obtain a copy of the License at                                                                              #
#                                                                                                                      #
#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
#                                                                                                                      #
# Unless required by applicable law or agreed to in writing, software                                                  #
# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
# See the License for the specific language governing permissions and                                                  #
# limitations under the License.                                                                                       #
#                                                                                                                      #
# SPDX-License-Identifier: Apache-2.0                                                                                  #
# ==================================================================================================================== #
#
from pathlib              import Path
from textwrap             import dedent
from typing               import Optional as Nullable, ClassVar

from lxml.etree           import _Element, QName
from pyTooling.Decorators import export

from pyEDAA.IPXACT        import RootElement, __DEFAULT_SCHEMA__, VLNV, IPXACTSchema, IPXACTException


[docs] @export class DesignConfiguration(RootElement): """Represents an IP-XACT design configuration.""" _rootTagName: ClassVar[str] = "designConfiguration" _generatorChainConfiguration: Nullable["GeneratorChainConfiguration"] _interconnectionConfiguration: Nullable["InterconnectionConfiguration"] _viewConfiguration: Nullable["ViewConfiguration"]
[docs] def __init__( self, designConfigurationFile: Nullable[Path] = None, parse: bool = False, vlnv: Nullable[VLNV] = None, description: Nullable[str] = None ): self._generatorChainConfiguration = None self._interconnectionConfiguration = None self._viewConfiguration = None super().__init__(designConfigurationFile, parse, vlnv, description)
def Parse(self, element: _Element) -> None: elementLocalname = QName(element).localname # if elementLocalname == "catalogs": # for ipxactFileElement in element: # self.AddItem(IpxactFile.FromXml(ipxactFileElement)) # else: raise IPXACTException(f"Unsupported tag '{elementLocalname}' at root-level.") def SetItem(self, item): if isinstance(item, GeneratorChainConfiguration): self._generatorChainConfiguration = item elif isinstance(item, InterconnectionConfiguration): self._interconnectionConfiguration = item elif isinstance(item, ViewConfiguration): self._viewConfiguration = item else: raise ValueError()
[docs] def ToXml(self, schema: IPXACTSchema = __DEFAULT_SCHEMA__) -> str: """Converts the object's data into XML format.""" xmlns = schema.NamespacePrefix buffer = dedent(f"""\ <?xml version="1.0" encoding="UTF-8"?> <{xmlns}:designConfiguration \txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \txmlns:{xmlns}="{schema.SchemaUri}" \txsi:schemaLocation="{schema.SchemaUri} {schema.SchemaUrl}"> {self._vlnv.ToXml(schema, isVersionedIdentifier=True)} \t<{xmlns}:description>{self._description}</{xmlns}:description> """) if self._generatorChainConfiguration: buffer += f"\t<{xmlns}:componentInstances>\n" buffer += self._generatorChainConfiguration.ToXml(2, schema) buffer += f"\t</{xmlns}:componentInstances>\n" if self._interconnectionConfiguration: buffer += f"\t<{xmlns}:interconnectionConfiguration>\n" buffer += self._interconnectionConfiguration.ToXml(2, schema) buffer += f"\t</{xmlns}:interconnectionConfiguration>\n" if self._viewConfiguration: buffer += f"\t<{xmlns}:viewConfiguration>\n" buffer += self._viewConfiguration.ToXml(2, schema) buffer += f"\t</{xmlns}:viewConfiguration>\n" buffer += dedent(f"""\ </{xmlns}:designConfiguration> """) return buffer
[docs] @export class GeneratorChainConfiguration: """Represents an IP-XACT generator chain configuration."""
[docs] def __init__(self) -> None: pass
[docs] def ToXml(self, indent: int = 0, schema: IPXACTSchema = __DEFAULT_SCHEMA__) -> str: """Converts the object's data into XML format.""" return ""
[docs] @export class InterconnectionConfiguration: """Represents an IP-XACT interconnection configuration."""
[docs] def __init__(self) -> None: pass
[docs] def ToXml(self, indent: int = 0, schema: IPXACTSchema = __DEFAULT_SCHEMA__) -> str: """Converts the object's data into XML format.""" return ""
[docs] @export class ViewConfiguration: """Represents an IP-XACT view configuration."""
[docs] def __init__(self) -> None: pass
[docs] def ToXml(self, indent: int = 0, schema: IPXACTSchema = __DEFAULT_SCHEMA__) -> str: """Converts the object's data into XML format.""" return ""