Skip to content

Commit

Permalink
Reworked some __str__/__repr__ methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
Paebbels committed Apr 15, 2023
1 parent 5a20b76 commit a42ad96
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 27 deletions.
37 changes: 20 additions & 17 deletions pyVHDLModel/Name.py
Expand Up @@ -114,6 +114,12 @@ def HasPrefix(self) -> bool:
"""
return self._prefix is not None

def __repr__(self) -> str:
return f"Name: '{self.__str__()}'"

def __str__(self) -> str:
return self._identifier


@export
class SimpleName(Name):
Expand All @@ -125,9 +131,6 @@ class SimpleName(Name):
reference other (already) declared language entities.
"""

def __str__(self):
return self._identifier


@export
class ParenthesisName(Name):
Expand All @@ -145,8 +148,8 @@ def __init__(self, prefix: Name, associations: Iterable):
def Associations(self) -> List:
return self._associations

def __str__(self):
return str(self._prefix) + "(" + ", ".join([str(a) for a in self._associations]) + ")"
def __str__(self) -> str:
return f"{self._prefix!s}({', '.join(str(a) for a in self._associations)})"


@export
Expand All @@ -165,6 +168,9 @@ def __init__(self, prefix: Name, indices: Iterable[ExpressionUnion]):
def Indices(self) -> List[ExpressionUnion]:
return self._indices

def __str__(self) -> str:
return f"{self._prefix!s}({', '.join(str(i) for i in self._indices)})"


@export
class SlicedName(Name):
Expand All @@ -184,42 +190,39 @@ class SelectedName(Name):
def __init__(self, identifier: str, prefix: Name):
super().__init__(identifier, prefix)

def __str__(self):
return str(self._prefix) + "." + self._identifier
def __str__(self) -> str:
return f"{self._prefix!s}.{self._identifier}"


@export
class AttributeName(Name):
def __init__(self, identifier: str, prefix: Name):
super().__init__(identifier, prefix)

def __str__(self):
return str(self._prefix) + "'" + self._identifier
def __str__(self) -> str:
return f"{self._prefix!s}'{self._identifier}"


@export
class AllName(Name):
class AllName(SelectedName):
"""
The *all name* represents the reserved word ``all`` used in names.
Most likely this name is used in use-statements.
"""
def __init__(self, prefix: Name):
super().__init__("all", prefix)

def __str__(self):
return str(self._prefix) + "." + "all"
super().__init__("all", prefix) # TODO: the case of 'ALL' is not preserved


@export
class OpenName(Name):
"""
The *open name* represents the reserved word ``open``.
Most likely this name is used in port assoziations.
Most likely this name is used in port associations.
"""
def __init__(self):
super().__init__("open")
super().__init__("open") # TODO: the case of 'ALL' is not preserved

def __str__(self):
def __str__(self) -> str:
return "open"
12 changes: 4 additions & 8 deletions pyVHDLModel/STD.py
Expand Up @@ -34,9 +34,9 @@

from pyTooling.Decorators import export

from pyVHDLModel import Library
from pyVHDLModel.Name import SimpleName, SelectedName, AllName
from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageReferenceSymbol, PackageMembersReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol
from pyVHDLModel import Library
from pyVHDLModel.Name import SimpleName, SelectedName, AllName
from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageMembersReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol
from pyVHDLModel.DesignUnit import LibraryClause, UseClause, Package, PackageBody


Expand Down Expand Up @@ -128,11 +128,7 @@ class Env(PredefinedPackage):
def __init__(self):
super().__init__()

# Use clauses
useTextIOSymbols = (
AllPackageMembersReferenceSymbol(AllName(SelectedName("textio", SimpleName("work")))),
)
self._packageReferences.append(UseClause(useTextIOSymbols))
self._AddPackageClause(("work.textio.all",))


@export
Expand Down
5 changes: 4 additions & 1 deletion pyVHDLModel/Symbol.py
Expand Up @@ -116,11 +116,14 @@ def IsResolved(self) -> bool:
def __bool__(self) -> bool:
return self._reference is not None

def __repr__(self) -> str:
return f"{self.__class__.__name__}: {self._innerName!s}"

def __str__(self) -> str:
if self._reference is not None:
return str(self._reference)

return str(self._innerName)
return f"{self._innerName!s} (unresolved)"


@export
Expand Down
14 changes: 13 additions & 1 deletion pyVHDLModel/__init__.py
Expand Up @@ -1042,6 +1042,11 @@ def IterateDocumentsInCompileOrder(self) -> Generator['Document', None, None]:
def GetUnusedDesignUnits(self) -> List[DesignUnit]:
raise NotImplementedError()

def __repr__(self) -> str:
return f"Design: {self._nane}"

__str__ = __repr__


@export
class Library(ModelEntity, NamedEntityMixin):
Expand Down Expand Up @@ -1181,9 +1186,11 @@ def IndexArchitectures(self):
for architecture in architectures.values():
architecture.Index()

def __str__(self):
def __repr__(self) -> str:
return f"Library: '{self.Identifier}'"

__str__ = __repr__


@export
class Document(ModelEntity, DocumentedEntityMixin):
Expand Down Expand Up @@ -1464,3 +1471,8 @@ def IterateDesignUnits(self, filter: DesignUnitKind = DesignUnitKind.All) -> Gen
# yield entity
# for verificationMode in self._verificationModes.values():
# yield verificationMode

def __repr__(self) -> str:
return f"Document: '{self._path}'"

__str__ = __repr__

0 comments on commit a42ad96

Please sign in to comment.