Skip to content

Commit d315d8a

Browse files
authored
v0.25.0
2 parents 7590a6c + 58c1803 commit d315d8a

File tree

14 files changed

+452
-270
lines changed

14 files changed

+452
-270
lines changed

doc/Dependency.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ the mandatory dependencies too.
5151
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
5252
| **Package** | **Version** | **License** | **Dependencies** |
5353
+===========================================================+=============+========================================================================================+======================+
54-
| `pytest <https://GitHub.com/pytest-dev/pytest>`__ | ≥7.2.0 | `MIT <https://GitHub.com/pytest-dev/pytest/blob/master/LICENSE>`__ | *Not yet evaluated.* |
54+
| `pytest <https://GitHub.com/pytest-dev/pytest>`__ | ≥7.3.0 | `MIT <https://GitHub.com/pytest-dev/pytest/blob/master/LICENSE>`__ | *Not yet evaluated.* |
5555
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
5656
| `pytest-cov <https://GitHub.com/pytest-dev/pytest-cov>`__ | ≥4.0.0 | `MIT <https://GitHub.com/pytest-dev/pytest-cov/blob/master/LICENSE>`__ | *Not yet evaluated.* |
5757
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
5858
| `Coverage <https://GitHub.com/nedbat/coveragepy>`__ | ≥7.2 | `Apache License, 2.0 <https://GitHub.com/nedbat/coveragepy/blob/master/LICENSE.txt>`__ | *Not yet evaluated.* |
5959
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
60-
| `mypy <https://GitHub.com/python/mypy>`__ | ≥1.1.1 | `MIT <https://GitHub.com/python/mypy/blob/master/LICENSE>`__ | *Not yet evaluated.* |
60+
| `mypy <https://GitHub.com/python/mypy>`__ | ≥1.2.0 | `MIT <https://GitHub.com/python/mypy/blob/master/LICENSE>`__ | *Not yet evaluated.* |
6161
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
6262
| `lxml <https://GitHub.com/lxml/lxml>`__ | ≥4.9 | `BSD 3-Clause <https://GitHub.com/lxml/lxml/blob/master/LICENSE.txt>`__ | *Not yet evaluated.* |
6363
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+

pyVHDLModel/Association.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def __str__(self):
6969
if self._formal is None:
7070
return str(self._actual)
7171
else:
72-
return "{formal!s} => {actual!s}".format(formal=self._formal, actual=self._actual)
72+
return f"{self._formal!s} => {self._actual!s}"
7373

7474

7575
@export

pyVHDLModel/Base.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -410,11 +410,7 @@ def Direction(self) -> Direction:
410410
return self._direction
411411

412412
def __str__(self) -> str:
413-
return "{leftBound!s} {direction!s} {rightBound!s}".format(
414-
leftBound=self._leftBound,
415-
direction=self._direction,
416-
rightBound=self._rightBound,
417-
)
413+
return f"{self._leftBound!s} {self._direction!s} {self._rightBound!s}"
418414

419415

420416
@export

pyVHDLModel/Concurrent.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ def Choices(self) -> List[ConcurrentChoice]:
437437
return self._choices
438438

439439
def __str__(self) -> str:
440-
return "when {choices} =>".format(choices=" | ".join([str(c) for c in self._choices]))
440+
return "when {choices} =>".format(choices=" | ".join(str(c) for c in self._choices))
441441

442442

443443
@export
@@ -575,7 +575,7 @@ def Expression(self) -> ExpressionUnion:
575575
return self._expression
576576

577577
def __str__(self) -> str:
578-
return "{expression!s}".format(expression=self._expression)
578+
return str(self._expression)
579579

580580

581581
@export
@@ -593,4 +593,4 @@ def Range(self) -> 'Range':
593593
return self._range
594594

595595
def __str__(self) -> str:
596-
return "{range!s}".format(range=self._range)
596+
return str(self._range)

pyVHDLModel/DesignUnit.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -383,12 +383,12 @@ def IndexPackage(self):
383383
print(item)
384384

385385
def __str__(self) -> str:
386-
lib = self._library.Identifier + "?" if self._library is not None else ""
386+
lib = self._library.Identifier if self._library is not None else "%"
387387

388-
return f"Package: {lib}.{self.Identifier}"
388+
return f"Package: '{lib}.{self.Identifier}'"
389389

390390
def __repr__(self) -> str:
391-
lib = self._library.Identifier + "?" if self._library is not None else ""
391+
lib = self._library.Identifier if self._library is not None else "%"
392392

393393
return f"{lib}.{self.Identifier}"
394394

@@ -399,7 +399,7 @@ class PackageBody(SecondaryUnit, DesignUnitWithContextMixin):
399399
_declaredItems: List
400400

401401
def __init__(self, packageSymbol: PackageSymbol, contextItems: Iterable['Context'] = None, declaredItems: Iterable = None, documentation: str = None):
402-
super().__init__(packageSymbol.Identifier, contextItems, documentation)
402+
super().__init__(packageSymbol.Name.Identifier, contextItems, documentation)
403403
DesignUnitWithContextMixin.__init__(self)
404404

405405
self._package = packageSymbol
@@ -490,14 +490,16 @@ def Architectures(self) -> Dict[str, 'Architecture']:
490490
return self._architectures
491491

492492
def __str__(self) -> str:
493-
lib = self._library.Identifier + "?" if self._library is not None else ""
493+
lib = self._library.Identifier if self._library is not None else "%"
494+
archs = ', '.join(self._architectures.keys()) if self._architectures else "%"
494495

495-
return f"Entity: {lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
496+
return f"Entity: '{lib}.{self.Identifier}({archs})'"
496497

497498
def __repr__(self) -> str:
498-
lib = self._library.Identifier + "?" if self._library is not None else ""
499+
lib = self._library.Identifier if self._library is not None else "%"
500+
archs = ', '.join(self._architectures.keys()) if self._architectures else "%"
499501

500-
return f"{lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
502+
return f"{lib}.{self.Identifier}({archs})"
501503

502504

503505
@export
@@ -528,14 +530,14 @@ def Library(self, library: 'Library') -> None:
528530
self._library = library
529531

530532
def __str__(self) -> str:
531-
lib = self._library.Identifier + "?" if self._library is not None else ""
532-
ent = self._entity.Identifier + "?" if self._entity is not None else ""
533+
lib = self._library.Identifier if self._library is not None else "%"
534+
ent = self._entity.Identifier if self._entity is not None else "%"
533535

534536
return f"Architecture: {lib}.{ent}({self.Identifier})"
535537

536538
def __repr__(self) -> str:
537-
lib = self._library.Identifier + "?" if self._library is not None else ""
538-
ent = self._entity.Identifier + "?" if self._entity is not None else ""
539+
lib = self._library.Identifier if self._library is not None else "%"
540+
ent = self._entity.Identifier if self._entity is not None else "%"
539541

540542
return f"{lib}.{ent}({self.Identifier})"
541543

@@ -590,11 +592,11 @@ def __init__(self, identifier: str, contextItems: Iterable[Context] = None, docu
590592
DesignUnitWithContextMixin.__init__(self)
591593

592594
def __str__(self) -> str:
593-
lib = self._library.Identifier + "?" if self._library is not None else ""
595+
lib = self._library.Identifier if self._library is not None else "%"
594596

595597
return f"Configuration: {lib}.{self.Identifier}"
596598

597599
def __repr__(self) -> str:
598-
lib = self._library.Identifier + "?" if self._library is not None else ""
600+
lib = self._library.Identifier if self._library is not None else "%"
599601

600602
return f"{lib}.{self.Identifier}"

pyVHDLModel/Expression.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ def Subtype(self) -> Symbol:
615615
return self._subtype
616616

617617
def __str__(self) -> str:
618-
return "new {subtype!s}".format(subtype=self._subtype)
618+
return f"new {self._subtype!s}"
619619

620620

621621
@export
@@ -633,7 +633,7 @@ def QualifiedExpression(self) -> QualifiedExpression:
633633
return self._qualifiedExpression
634634

635635
def __str__(self) -> str:
636-
return "new {expr!s}".format(expr=self._qualifiedExpression)
636+
return f"new {self._qualifiedExpression!s}"
637637

638638

639639
@export
@@ -673,10 +673,7 @@ def Index(self) -> int:
673673
return self._index
674674

675675
def __str__(self) -> str:
676-
return "{index!s} => {value!s}".format(
677-
index=self._index,
678-
value=self._expression,
679-
)
676+
return f"{self._index!s} => {self._expression!s}"
680677

681678

682679
@export
@@ -694,10 +691,7 @@ def Range(self) -> 'Range':
694691
return self._range
695692

696693
def __str__(self) -> str:
697-
return "{range!s} => {value!s}".format(
698-
range=self._range,
699-
value=self._expression,
700-
)
694+
return f"{self._range!s} => {self._expression!s}"
701695

702696

703697
@export

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: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@
3434

3535
from pyTooling.Decorators import export
3636

37-
from pyVHDLModel import Library
38-
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
3940
from pyVHDLModel.DesignUnit import LibraryClause, UseClause, Package, PackageBody
4041

4142

@@ -61,7 +62,7 @@ def AddPackages(self, packages):
6162
@export
6263
class PredefinedMixin:
6364
def _AddLibraryClause(self, libraries: Iterable[str]):
64-
symbols = [LibraryReferenceSymbol(libName) for libName in libraries]
65+
symbols = [LibraryReferenceSymbol(SimpleName(libName)) for libName in libraries]
6566
libraryClause = LibraryClause(symbols)
6667

6768
self._contextItems.append(libraryClause)
@@ -71,11 +72,12 @@ def _AddPackageClause(self, packages: Iterable[str]):
7172
symbols = []
7273
for qualifiedPackageName in packages:
7374
libName, packName, members = qualifiedPackageName.split(".")
74-
packageSymbol = PackageReferenceSymbol(packName, LibraryReferenceSymbol(libName))
75+
76+
packageName = SelectedName(packName, SimpleName(libName))
7577
if members.lower() == "all":
76-
symbols.append(AllPackageMembersReferenceSymbol(packageSymbol))
78+
symbols.append(AllPackageMembersReferenceSymbol(AllName(packageName)))
7779
else:
78-
symbols.append(PackageMembersReferenceSymbol(members, packageSymbol))
80+
symbols.append(PackageMembersReferenceSymbol(SelectedName(members, packageName)))
7981

8082
useClause = UseClause(symbols)
8183
self._contextItems.append(useClause)
@@ -91,7 +93,7 @@ def __init__(self):
9193
@export
9294
class PredefinedPackageBody(PackageBody, PredefinedMixin):
9395
def __init__(self):
94-
packageSymbol = PackageSymbol(self.__class__.__name__[:-5])
96+
packageSymbol = PackageSymbol(SimpleName(self.__class__.__name__[:-5]))
9597
super().__init__(packageSymbol)
9698

9799

@@ -126,11 +128,7 @@ class Env(PredefinedPackage):
126128
def __init__(self):
127129
super().__init__()
128130

129-
# Use clauses
130-
useTextIOSymbols = (
131-
AllPackageMembersReferenceSymbol(PackageReferenceSymbol("textio", LibraryReferenceSymbol("work"))),
132-
)
133-
self._packageReferences.append(UseClause(useTextIOSymbols))
131+
self._AddPackageClause(("work.textio.all",))
134132

135133

136134
@export

pyVHDLModel/Sequential.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def Expression(self) -> ExpressionUnion:
214214
return self._expression
215215

216216
def __str__(self) -> str:
217-
return "{expression!s}".format(expression=self._expression)
217+
return str(self._expression)
218218

219219

220220
@export
@@ -232,7 +232,7 @@ def Range(self) -> 'Range':
232232
return self._range
233233

234234
def __str__(self) -> str:
235-
return "{range!s}".format(range=self._range)
235+
return str(self._range)
236236

237237

238238
@export
@@ -268,7 +268,7 @@ def Choices(self) -> List[SequentialChoice]:
268268
return self._choices
269269

270270
def __str__(self) -> str:
271-
return "when {choices} =>".format(choices=" | ".join([str(c) for c in self._choices]))
271+
return "when {choices} =>".format(choices=" | ".join(str(c) for c in self._choices))
272272

273273

274274
@export

0 commit comments

Comments
 (0)