Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.25.0 #71

Merged
merged 11 commits into from
Apr 15, 2023
4 changes: 2 additions & 2 deletions doc/Dependency.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ the mandatory dependencies too.
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| **Package** | **Version** | **License** | **Dependencies** |
+===========================================================+=============+========================================================================================+======================+
| `pytest <https://GitHub.com/pytest-dev/pytest>`__ | ≥7.2.0 | `MIT <https://GitHub.com/pytest-dev/pytest/blob/master/LICENSE>`__ | *Not yet evaluated.* |
| `pytest <https://GitHub.com/pytest-dev/pytest>`__ | ≥7.3.0 | `MIT <https://GitHub.com/pytest-dev/pytest/blob/master/LICENSE>`__ | *Not yet evaluated.* |
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `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.* |
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `Coverage <https://GitHub.com/nedbat/coveragepy>`__ | ≥7.2 | `Apache License, 2.0 <https://GitHub.com/nedbat/coveragepy/blob/master/LICENSE.txt>`__ | *Not yet evaluated.* |
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `mypy <https://GitHub.com/python/mypy>`__ | ≥1.1.1 | `MIT <https://GitHub.com/python/mypy/blob/master/LICENSE>`__ | *Not yet evaluated.* |
| `mypy <https://GitHub.com/python/mypy>`__ | ≥1.2.0 | `MIT <https://GitHub.com/python/mypy/blob/master/LICENSE>`__ | *Not yet evaluated.* |
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `lxml <https://GitHub.com/lxml/lxml>`__ | ≥4.9 | `BSD 3-Clause <https://GitHub.com/lxml/lxml/blob/master/LICENSE.txt>`__ | *Not yet evaluated.* |
+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
Expand Down
2 changes: 1 addition & 1 deletion pyVHDLModel/Association.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def __str__(self):
if self._formal is None:
return str(self._actual)
else:
return "{formal!s} => {actual!s}".format(formal=self._formal, actual=self._actual)
return f"{self._formal!s} => {self._actual!s}"


@export
Expand Down
6 changes: 1 addition & 5 deletions pyVHDLModel/Base.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,11 +410,7 @@ def Direction(self) -> Direction:
return self._direction

def __str__(self) -> str:
return "{leftBound!s} {direction!s} {rightBound!s}".format(
leftBound=self._leftBound,
direction=self._direction,
rightBound=self._rightBound,
)
return f"{self._leftBound!s} {self._direction!s} {self._rightBound!s}"


@export
Expand Down
6 changes: 3 additions & 3 deletions pyVHDLModel/Concurrent.py
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ def Choices(self) -> List[ConcurrentChoice]:
return self._choices

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


@export
Expand Down Expand Up @@ -575,7 +575,7 @@ def Expression(self) -> ExpressionUnion:
return self._expression

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


@export
Expand All @@ -593,4 +593,4 @@ def Range(self) -> 'Range':
return self._range

def __str__(self) -> str:
return "{range!s}".format(range=self._range)
return str(self._range)
30 changes: 16 additions & 14 deletions pyVHDLModel/DesignUnit.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,12 +383,12 @@ def IndexPackage(self):
print(item)

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

return f"Package: {lib}.{self.Identifier}"
return f"Package: '{lib}.{self.Identifier}'"

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

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

Expand All @@ -399,7 +399,7 @@ class PackageBody(SecondaryUnit, DesignUnitWithContextMixin):
_declaredItems: List

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

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

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

return f"Entity: {lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
return f"Entity: '{lib}.{self.Identifier}({archs})'"

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

return f"{lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
return f"{lib}.{self.Identifier}({archs})"


@export
Expand Down Expand Up @@ -528,14 +530,14 @@ def Library(self, library: 'Library') -> None:
self._library = library

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 ""
lib = self._library.Identifier if self._library is not None else "%"
ent = self._entity.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.Identifier + "?" if self._entity is not None else ""
lib = self._library.Identifier if self._library is not None else "%"
ent = self._entity.Identifier if self._entity is not None else "%"

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

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

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

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

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

return f"{lib}.{self.Identifier}"
14 changes: 4 additions & 10 deletions pyVHDLModel/Expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ def Subtype(self) -> Symbol:
return self._subtype

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


@export
Expand All @@ -633,7 +633,7 @@ def QualifiedExpression(self) -> QualifiedExpression:
return self._qualifiedExpression

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


@export
Expand Down Expand Up @@ -673,10 +673,7 @@ def Index(self) -> int:
return self._index

def __str__(self) -> str:
return "{index!s} => {value!s}".format(
index=self._index,
value=self._expression,
)
return f"{self._index!s} => {self._expression!s}"


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

def __str__(self) -> str:
return "{range!s} => {value!s}".format(
range=self._range,
value=self._expression,
)
return f"{self._range!s} => {self._expression!s}"


@export
Expand Down
37 changes: 20 additions & 17 deletions pyVHDLModel/Name.py
Original file line number Diff line number Diff line change
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"
22 changes: 10 additions & 12 deletions pyVHDLModel/STD.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@

from pyTooling.Decorators import export

from pyVHDLModel import Library
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 All @@ -61,7 +62,7 @@ def AddPackages(self, packages):
@export
class PredefinedMixin:
def _AddLibraryClause(self, libraries: Iterable[str]):
symbols = [LibraryReferenceSymbol(libName) for libName in libraries]
symbols = [LibraryReferenceSymbol(SimpleName(libName)) for libName in libraries]
libraryClause = LibraryClause(symbols)

self._contextItems.append(libraryClause)
Expand All @@ -71,11 +72,12 @@ def _AddPackageClause(self, packages: Iterable[str]):
symbols = []
for qualifiedPackageName in packages:
libName, packName, members = qualifiedPackageName.split(".")
packageSymbol = PackageReferenceSymbol(packName, LibraryReferenceSymbol(libName))

packageName = SelectedName(packName, SimpleName(libName))
if members.lower() == "all":
symbols.append(AllPackageMembersReferenceSymbol(packageSymbol))
symbols.append(AllPackageMembersReferenceSymbol(AllName(packageName)))
else:
symbols.append(PackageMembersReferenceSymbol(members, packageSymbol))
symbols.append(PackageMembersReferenceSymbol(SelectedName(members, packageName)))

useClause = UseClause(symbols)
self._contextItems.append(useClause)
Expand All @@ -91,7 +93,7 @@ def __init__(self):
@export
class PredefinedPackageBody(PackageBody, PredefinedMixin):
def __init__(self):
packageSymbol = PackageSymbol(self.__class__.__name__[:-5])
packageSymbol = PackageSymbol(SimpleName(self.__class__.__name__[:-5]))
super().__init__(packageSymbol)


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

# Use clauses
useTextIOSymbols = (
AllPackageMembersReferenceSymbol(PackageReferenceSymbol("textio", LibraryReferenceSymbol("work"))),
)
self._packageReferences.append(UseClause(useTextIOSymbols))
self._AddPackageClause(("work.textio.all",))


@export
Expand Down
6 changes: 3 additions & 3 deletions pyVHDLModel/Sequential.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def Expression(self) -> ExpressionUnion:
return self._expression

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


@export
Expand All @@ -232,7 +232,7 @@ def Range(self) -> 'Range':
return self._range

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


@export
Expand Down Expand Up @@ -268,7 +268,7 @@ def Choices(self) -> List[SequentialChoice]:
return self._choices

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


@export
Expand Down
Loading