From 95c56d1c0c58d8377ba18f2dfecd6c9909475ba1 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Thu, 6 Jul 2023 00:46:00 +0200 Subject: [PATCH 1/3] Bumped version to v0.28.0. --- pyVHDLModel/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index d08e717b7..377ce6db2 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -48,7 +48,7 @@ __email__ = "Paebbels@gmail.com" __copyright__ = "2016-2023, Patrick Lehmann" __license__ = "Apache License, Version 2.0" -__version__ = "0.27.0" +__version__ = "0.28.0" from enum import unique, Enum, Flag, auto From c97115f9e5ea4986bd40f275779ecc20fbce3cfc Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 7 Jul 2023 23:03:08 +0200 Subject: [PATCH 2/3] Fixed Symbol usage. --- pyVHDLModel/DesignUnit.py | 4 ++-- pyVHDLModel/Exception.py | 13 +++++++++++++ pyVHDLModel/__init__.py | 4 +++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pyVHDLModel/DesignUnit.py b/pyVHDLModel/DesignUnit.py index 6788202e7..a40b8bfc4 100644 --- a/pyVHDLModel/DesignUnit.py +++ b/pyVHDLModel/DesignUnit.py @@ -615,13 +615,13 @@ def Library(self, library: 'Library') -> None: def __str__(self) -> str: lib = self._library._identifier if self._library is not None else "%" - ent = self._entity._identifier if self._entity is not None else "%" + ent = self._entity._name._identifier if self._entity is not None else "%" return f"Architecture: {lib}.{ent}({self._identifier})" def __repr__(self) -> str: lib = self._library._identifier if self._library is not None else "%" - ent = self._entity.Name._identifier if self._entity is not None else "%" + ent = self._entity._name._identifier if self._entity is not None else "%" return f"{lib}.{ent}({self._identifier})" diff --git a/pyVHDLModel/Exception.py b/pyVHDLModel/Exception.py index c51ab80ce..2bbe50be6 100644 --- a/pyVHDLModel/Exception.py +++ b/pyVHDLModel/Exception.py @@ -35,6 +35,9 @@ The module ``Exceptions`` contains all structured errors that are raised by pyVHDLModel. Besides a default error message in english, each exception object contains one or multiple references to the exception's context. """ +from sys import version_info +from typing import List + from pyTooling.Decorators import export from pyVHDLModel.Symbol import Symbol @@ -44,6 +47,16 @@ class VHDLModelException(Exception): """Base-class for all exceptions (errors) raised by pyVHDLModel.""" + # WORKAROUND: for Python <3.11 + # Implementing a dummy method for Python versions before + __notes__: List[str] + if version_info < (3, 11): # pragma: no cover + def add_note(self, message: str): + try: + self.__notes__.append(message) + except AttributeError: + self.__notes__ = [message] + @export class LibraryExistsInDesignError(VHDLModelException): diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index 377ce6db2..690a3b1bb 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -979,7 +979,9 @@ def LinkLibraryReferences(self) -> None: try: library = self._libraries[libraryIdentifier] except KeyError: - raise VHDLModelException(f"Library '{librarySymbol.Name.Identifier}' referenced by library clause of design unit '{designUnit.Identifier}' doesn't exist in design.") + ex = VHDLModelException(f"Library '{librarySymbol.Name.Identifier}' referenced by library clause of design unit '{designUnit.Identifier}' doesn't exist in design.") + ex.add_note(f"""Known libraries: '{"', '".join(library for library in self._libraries)}'""") + raise ex librarySymbol.Library = library designUnit._referencedLibraries[libraryIdentifier] = library From 9f49589e16b2efcfc538403e9df4b5309e23a23a Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 7 Jul 2023 23:17:22 +0200 Subject: [PATCH 3/3] Reverted version to v0.27.1 for a hotfix. --- pyVHDLModel/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index 690a3b1bb..24ed79f84 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -48,7 +48,7 @@ __email__ = "Paebbels@gmail.com" __copyright__ = "2016-2023, Patrick Lehmann" __license__ = "Apache License, Version 2.0" -__version__ = "0.28.0" +__version__ = "0.27.1" from enum import unique, Enum, Flag, auto