Skip to content

Commit a42ad96

Browse files
committed
Reworked some __str__/__repr__ methods.
1 parent 5a20b76 commit a42ad96

File tree

4 files changed

+41
-27
lines changed

4 files changed

+41
-27
lines changed

pyVHDLModel/Name.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ def HasPrefix(self) -> bool:
114114
"""
115115
return self._prefix is not None
116116

117+
def __repr__(self) -> str:
118+
return f"Name: '{self.__str__()}'"
119+
120+
def __str__(self) -> str:
121+
return self._identifier
122+
117123

118124
@export
119125
class SimpleName(Name):
@@ -125,9 +131,6 @@ class SimpleName(Name):
125131
reference other (already) declared language entities.
126132
"""
127133

128-
def __str__(self):
129-
return self._identifier
130-
131134

132135
@export
133136
class ParenthesisName(Name):
@@ -145,8 +148,8 @@ def __init__(self, prefix: Name, associations: Iterable):
145148
def Associations(self) -> List:
146149
return self._associations
147150

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

151154

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

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

169175
@export
170176
class SlicedName(Name):
@@ -184,42 +190,39 @@ class SelectedName(Name):
184190
def __init__(self, identifier: str, prefix: Name):
185191
super().__init__(identifier, prefix)
186192

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

190196

191197
@export
192198
class AttributeName(Name):
193199
def __init__(self, identifier: str, prefix: Name):
194200
super().__init__(identifier, prefix)
195201

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

199205

200206
@export
201-
class AllName(Name):
207+
class AllName(SelectedName):
202208
"""
203209
The *all name* represents the reserved word ``all`` used in names.
204210
205211
Most likely this name is used in use-statements.
206212
"""
207213
def __init__(self, prefix: Name):
208-
super().__init__("all", prefix)
209-
210-
def __str__(self):
211-
return str(self._prefix) + "." + "all"
214+
super().__init__("all", prefix) # TODO: the case of 'ALL' is not preserved
212215

213216

214217
@export
215218
class OpenName(Name):
216219
"""
217220
The *open name* represents the reserved word ``open``.
218221
219-
Most likely this name is used in port assoziations.
222+
Most likely this name is used in port associations.
220223
"""
221224
def __init__(self):
222-
super().__init__("open")
225+
super().__init__("open") # TODO: the case of 'ALL' is not preserved
223226

224-
def __str__(self):
227+
def __str__(self) -> str:
225228
return "open"

pyVHDLModel/STD.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434

3535
from pyTooling.Decorators import export
3636

37-
from pyVHDLModel import Library
38-
from pyVHDLModel.Name import SimpleName, SelectedName, AllName
39-
from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageReferenceSymbol, PackageMembersReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol
37+
from pyVHDLModel import Library
38+
from pyVHDLModel.Name import SimpleName, SelectedName, AllName
39+
from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageMembersReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol
4040
from pyVHDLModel.DesignUnit import LibraryClause, UseClause, Package, PackageBody
4141

4242

@@ -128,11 +128,7 @@ class Env(PredefinedPackage):
128128
def __init__(self):
129129
super().__init__()
130130

131-
# Use clauses
132-
useTextIOSymbols = (
133-
AllPackageMembersReferenceSymbol(AllName(SelectedName("textio", SimpleName("work")))),
134-
)
135-
self._packageReferences.append(UseClause(useTextIOSymbols))
131+
self._AddPackageClause(("work.textio.all",))
136132

137133

138134
@export

pyVHDLModel/Symbol.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,14 @@ def IsResolved(self) -> bool:
116116
def __bool__(self) -> bool:
117117
return self._reference is not None
118118

119+
def __repr__(self) -> str:
120+
return f"{self.__class__.__name__}: {self._innerName!s}"
121+
119122
def __str__(self) -> str:
120123
if self._reference is not None:
121124
return str(self._reference)
122125

123-
return str(self._innerName)
126+
return f"{self._innerName!s} (unresolved)"
124127

125128

126129
@export

pyVHDLModel/__init__.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,11 @@ def IterateDocumentsInCompileOrder(self) -> Generator['Document', None, None]:
10421042
def GetUnusedDesignUnits(self) -> List[DesignUnit]:
10431043
raise NotImplementedError()
10441044

1045+
def __repr__(self) -> str:
1046+
return f"Design: {self._nane}"
1047+
1048+
__str__ = __repr__
1049+
10451050

10461051
@export
10471052
class Library(ModelEntity, NamedEntityMixin):
@@ -1181,9 +1186,11 @@ def IndexArchitectures(self):
11811186
for architecture in architectures.values():
11821187
architecture.Index()
11831188

1184-
def __str__(self):
1189+
def __repr__(self) -> str:
11851190
return f"Library: '{self.Identifier}'"
11861191

1192+
__str__ = __repr__
1193+
11871194

11881195
@export
11891196
class Document(ModelEntity, DocumentedEntityMixin):
@@ -1464,3 +1471,8 @@ def IterateDesignUnits(self, filter: DesignUnitKind = DesignUnitKind.All) -> Gen
14641471
# yield entity
14651472
# for verificationMode in self._verificationModes.values():
14661473
# yield verificationMode
1474+
1475+
def __repr__(self) -> str:
1476+
return f"Document: '{self._path}'"
1477+
1478+
__str__ = __repr__

0 commit comments

Comments
 (0)