diff options
-rw-r--r-- | pyGHDL/dom/Attribute.py | 8 | ||||
-rw-r--r-- | pyGHDL/dom/Concurrent.py | 12 | ||||
-rw-r--r-- | pyGHDL/dom/Expression.py | 4 | ||||
-rw-r--r-- | pyGHDL/dom/NonStandard.py | 4 | ||||
-rw-r--r-- | pyGHDL/dom/Sequential.py | 8 | ||||
-rw-r--r-- | pyGHDL/dom/Type.py | 4 | ||||
-rw-r--r-- | pyGHDL/dom/_Translate.py | 64 | ||||
-rw-r--r-- | pyGHDL/dom/formatting/prettyprint.py | 32 | ||||
-rw-r--r-- | pyGHDL/libghdl/_decorator.py | 14 |
9 files changed, 111 insertions, 39 deletions
diff --git a/pyGHDL/dom/Attribute.py b/pyGHDL/dom/Attribute.py index 808f0a6a3..86be400ac 100644 --- a/pyGHDL/dom/Attribute.py +++ b/pyGHDL/dom/Attribute.py @@ -121,14 +121,18 @@ class AttributeSpecification(VHDLModel_AttributeSpecification, DOMMixin): print("[NOT IMPLEMENTED] Signature name in attribute specifications.") else: position = Position.parse(name) - raise DOMException(f"Unknown name kind '{nameKind.name}' in attribute specification '{attributeNode}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown name kind '{nameKind.name}' in attribute specification '{attributeNode}' at {position.Filename}:{position.Line}:{position.Column}." + ) entityClassToken = nodes.Get_Entity_Class(attributeNode) try: entityClass = _TOKEN_TRANSLATION[entityClassToken] except KeyError: position = Position.parse(attributeNode) - raise DOMException(f"Unknown token '{entityClassToken.name}' in attribute specification for entity class '{attributeNode}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown token '{entityClassToken.name}' in attribute specification for entity class '{attributeNode}' at {position.Filename}:{position.Line}:{position.Column}." + ) expression = GetExpressionFromNode(nodes.Get_Expression(attributeNode)) diff --git a/pyGHDL/dom/Concurrent.py b/pyGHDL/dom/Concurrent.py index 754f58f14..693feba27 100644 --- a/pyGHDL/dom/Concurrent.py +++ b/pyGHDL/dom/Concurrent.py @@ -552,7 +552,9 @@ class CaseGenerateStatement(VHDLModel_CaseGenerateStatement, DOMMixin): rng = GetNameFromNode(choiceRange) else: pos = Position.parse(alternative) - raise DOMException(f"Unknown choice range kind '{choiceRangeKind.name}' in case...generate statement at line {pos.Line}.") + raise DOMException( + f"Unknown choice range kind '{choiceRangeKind.name}' in case...generate statement at line {pos.Line}." + ) choice = RangedGenerateChoice(alternative, rng) if sameAlternative: @@ -569,7 +571,9 @@ class CaseGenerateStatement(VHDLModel_CaseGenerateStatement, DOMMixin): continue else: pos = Position.parse(alternative) - raise DOMException(f"Unknown choice kind '{choiceKind.name}' in case...generate statement at line {pos.Line}.") + raise DOMException( + f"Unknown choice kind '{choiceKind.name}' in case...generate statement at line {pos.Line}." + ) if choices is not None: cases.append(GenerateCase.parse(caseNode, choices)) @@ -625,7 +629,9 @@ class ForGenerateStatement(VHDLModel_ForGenerateStatement, DOMMixin): rng = GetNameFromNode(discreteRange) else: pos = Position.parse(generateNode) - raise DOMException(f"Unknown discete range kind '{rangeKind.name}' in for...generate statement at line {pos.Line}.") + raise DOMException( + f"Unknown discete range kind '{rangeKind.name}' in for...generate statement at line {pos.Line}." + ) body = nodes.Get_Generate_Statement_Body(generateNode) declarationChain = nodes.Get_Declaration_Chain(body) diff --git a/pyGHDL/dom/Expression.py b/pyGHDL/dom/Expression.py index f56ca148f..51b73c57e 100644 --- a/pyGHDL/dom/Expression.py +++ b/pyGHDL/dom/Expression.py @@ -519,7 +519,9 @@ class Aggregate(VHDLModel_Aggregate, DOMMixin): rng = GetNameFromNode(choiceRange) else: pos = Position.parse(item) - raise DOMException(f"Unknown discete range kind '{rangeKind.name}' in for...generate statement at line {pos.Line}.") + raise DOMException( + f"Unknown discete range kind '{rangeKind.name}' in for...generate statement at line {pos.Line}." + ) choices.append(RangedAggregateElement(item, rng, value)) elif kind == nodes.Iir_Kind.Choice_By_Name: diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index e6af8284a..c55786d54 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -191,7 +191,9 @@ class Document(VHDLModel_Document): contextItems.append(ContextReference.parse(item)) else: pos = Position.parse(item) - raise DOMException(f"Unknown context item kind '{itemKind.name}' in context at line {pos.Line}.") + raise DOMException( + f"Unknown context item kind '{itemKind.name}' in context at line {pos.Line}." + ) if nodeKind == nodes.Iir_Kind.Entity_Declaration: entity = Entity.parse(libraryUnit, contextItems) diff --git a/pyGHDL/dom/Sequential.py b/pyGHDL/dom/Sequential.py index 3e9ebaf48..0258d3a14 100644 --- a/pyGHDL/dom/Sequential.py +++ b/pyGHDL/dom/Sequential.py @@ -291,7 +291,9 @@ class CaseStatement(VHDLModel_CaseStatement, DOMMixin): rng = GetNameFromNode(choiceRange) else: pos = Position.parse(alternative) - raise DOMException(f"Unknown choice range kind '{choiceRangeKind.name}' in case statement at line {pos.Line}.") + raise DOMException( + f"Unknown choice range kind '{choiceRangeKind.name}' in case statement at line {pos.Line}." + ) choice = RangedChoice(alternative, rng) if sameAlternative: @@ -362,7 +364,9 @@ class ForLoopStatement(VHDLModel_ForLoopStatement, DOMMixin): rng = GetNameFromNode(discreteRange) else: pos = Position.parse(loopNode) - raise DOMException(f"Unknown discete range kind '{rangeKind.name}' in for...loop statement at line {pos.Line}.") + raise DOMException( + f"Unknown discete range kind '{rangeKind.name}' in for...loop statement at line {pos.Line}." + ) statementChain = nodes.Get_Sequential_Statement_Chain(loopNode) statements = GetSequentialStatementsFromChainedNodes(statementChain, "for", label) diff --git a/pyGHDL/dom/Type.py b/pyGHDL/dom/Type.py index 6724ac743..b0f2d1311 100644 --- a/pyGHDL/dom/Type.py +++ b/pyGHDL/dom/Type.py @@ -168,7 +168,9 @@ class ArrayType(VHDLModel_ArrayType, DOMMixin): indexSubtype = GetSimpleTypeFromNode(index) indices.append(indexSubtype) else: - raise DOMException(f"Unknown kind '{indexKind.name}' for an index in the array definition of `{typeName}`.") + raise DOMException( + f"Unknown kind '{indexKind.name}' for an index in the array definition of `{typeName}`." + ) elementSubtypeIndication = nodes.Get_Element_Subtype_Indication(typeDefinitionNode) elementSubtype = GetSubtypeIndicationFromIndicationNode(elementSubtypeIndication, "array declaration", typeName) diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py index 7e21b98bf..a125abfe5 100644 --- a/pyGHDL/dom/_Translate.py +++ b/pyGHDL/dom/_Translate.py @@ -216,7 +216,9 @@ def GetAssociations(node: Iir) -> List: associations.append(expr) else: - raise DOMException(f"Unknown association kind '{kind.name}' in array index/slice or function call '{node}'.") + raise DOMException( + f"Unknown association kind '{kind.name}' in array index/slice or function call '{node}'." + ) return associations @@ -239,7 +241,9 @@ def GetArrayConstraintsFromSubtypeIndication( constraints.append(GetNameFromNode(constraint)) else: position = Position.parse(constraint) - raise DOMException(f"Unknown constraint kind '{constraintKind.name}' for constraint '{constraint}' in subtype indication '{subtypeIndication}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown constraint kind '{constraintKind.name}' for constraint '{constraint}' in subtype indication '{subtypeIndication}' at {position.Filename}:{position.Line}:{position.Column}." + ) return constraints @@ -266,7 +270,9 @@ def GetTypeFromNode(node: Iir) -> BaseType: return ProtectedType.parse(typeName, typeDefinition) else: position = Position.parse(typeDefinition) - raise DOMException(f"GetTypeFromNode: Unknown type definition kind '{kind.name}' for type '{typeName}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"GetTypeFromNode: Unknown type definition kind '{kind.name}' for type '{typeName}' at {position.Filename}:{position.Line}:{position.Column}." + ) @export @@ -294,7 +300,9 @@ def GetAnonymousTypeFromNode(node: Iir) -> BaseType: return ArrayType(typeDefinition, "????", [], None) else: position = Position.parse(typeDefinition) - raise DOMException(f"GetAnonymousTypeFromNode: Unknown type definition kind '{kind.name}' for type '{typeName}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"GetAnonymousTypeFromNode: Unknown type definition kind '{kind.name}' for type '{typeName}' at {position.Filename}:{position.Line}:{position.Column}." + ) @export @@ -438,7 +446,9 @@ def GetExpressionFromNode(node: Iir) -> ExpressionUnion: cls = __EXPRESSION_TRANSLATION[kind] except KeyError: position = Position.parse(node) - raise DOMException(f"Unknown expression kind '{kind.name}' in expression '{node}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown expression kind '{kind.name}' in expression '{node}' at {position.Filename}:{position.Line}:{position.Column}." + ) return cls.parse(node) @@ -495,7 +505,9 @@ def GetGenericsFromChainedNodes( yield GenericFunctionInterfaceItem.parse(generic) else: position = Position.parse(generic) - raise DOMException(f"Unknown generic kind '{kind.name}' in generic '{generic}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown generic kind '{kind.name}' in generic '{generic}' at {position.Filename}:{position.Line}:{position.Column}." + ) generic = nodes.Get_Chain(generic) @@ -537,7 +549,9 @@ def GetPortsFromChainedNodes( continue else: position = Position.parse(port) - raise DOMException(f"Unknown port kind '{kind.name}' in port '{port}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown port kind '{kind.name}' in port '{port}' at {position.Filename}:{position.Line}:{position.Column}." + ) @export @@ -566,7 +580,9 @@ def GetParameterFromChainedNodes( param = ParameterFileInterfaceItem.parse(parameter) else: position = Position.parse(parameter) - raise DOMException(f"Unknown parameter kind '{kind.name}' in parameter '{parameter}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown parameter kind '{kind.name}' in parameter '{parameter}' at {position.Filename}:{position.Line}:{position.Column}." + ) # Lookahead for parameters with multiple identifiers at once if nodes.Get_Has_Identifier_List(parameter): @@ -682,7 +698,9 @@ def GetDeclaredItemsFromChainedNodes(nodeChain: Iir, entity: str, name: str) -> pass else: position = Position.parse(item) - raise DOMException(f"Found unexpected function body '{GetNameOfNode(item)}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Found unexpected function body '{GetNameOfNode(item)}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}." + ) elif kind == nodes.Iir_Kind.Procedure_Declaration: if nodes.Get_Has_Body(item): yield Procedure.parse(item) @@ -697,7 +715,9 @@ def GetDeclaredItemsFromChainedNodes(nodeChain: Iir, entity: str, name: str) -> pass else: position = Position.parse(item) - raise DOMException(f"Found unexpected procedure body '{GetNameOfNode(item)}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Found unexpected procedure body '{GetNameOfNode(item)}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}." + ) elif kind == nodes.Iir_Kind.Protected_Type_Body: yield ProtectedTypeBody.parse(item) elif kind == nodes.Iir_Kind.Object_Alias_Declaration: @@ -748,7 +768,9 @@ def GetDeclaredItemsFromChainedNodes(nodeChain: Iir, entity: str, name: str) -> print(f"[NOT IMPLEMENTED] Terminal declaration in {name}") else: position = Position.parse(item) - raise DOMException(f"Unknown declared item kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown declared item kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}." + ) lastKind = None item = nodes.Get_Chain(item) @@ -796,9 +818,13 @@ def GetConcurrentStatementsFromChainedNodes( elif kind == nodes.Iir_Kind.Concurrent_Simple_Signal_Assignment: yield ConcurrentSimpleSignalAssignment.parse(statement, label) elif kind == nodes.Iir_Kind.Concurrent_Conditional_Signal_Assignment: - print(f"[NOT IMPLEMENTED] Concurrent (conditional) signal assignment (label: '{label}') at line {position.Line}") + print( + f"[NOT IMPLEMENTED] Concurrent (conditional) signal assignment (label: '{label}') at line {position.Line}" + ) elif kind == nodes.Iir_Kind.Concurrent_Selected_Signal_Assignment: - print(f"[NOT IMPLEMENTED] Concurrent (selected) signal assignment (label: '{label}') at line {position.Line}") + print( + f"[NOT IMPLEMENTED] Concurrent (selected) signal assignment (label: '{label}') at line {position.Line}" + ) elif kind == nodes.Iir_Kind.Concurrent_Procedure_Call_Statement: yield ConcurrentProcedureCall.parse(statement, label) elif kind == nodes.Iir_Kind.Component_Instantiation_Statement: @@ -811,7 +837,9 @@ def GetConcurrentStatementsFromChainedNodes( elif instantiatedUnitKind == nodes.Iir_Kind.Simple_Name: yield ComponentInstantiation.parse(statement, instantiatedUnit, label) else: - raise DOMException(f"Unknown instantiation kind '{instantiatedUnitKind.name}' in instantiation of label {label} at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown instantiation kind '{instantiatedUnitKind.name}' in instantiation of label {label} at {position.Filename}:{position.Line}:{position.Column}." + ) elif kind == nodes.Iir_Kind.Block_Statement: yield ConcurrentBlockStatement.parse(statement, label) elif kind == nodes.Iir_Kind.If_Generate_Statement: @@ -825,7 +853,9 @@ def GetConcurrentStatementsFromChainedNodes( elif kind == nodes.Iir_Kind.Simple_Simultaneous_Statement: print(f"[NOT IMPLEMENTED] Simple simultaneous statement (label: '{label}') at line {position.Line}") else: - raise DOMException(f"Unknown statement of kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown statement of kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}." + ) def GetSequentialStatementsFromChainedNodes( @@ -861,7 +891,9 @@ def GetSequentialStatementsFromChainedNodes( elif kind == nodes.Iir_Kind.Null_Statement: yield NullStatement(statement, label) else: - raise DOMException(f"Unknown statement of kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}.") + raise DOMException( + f"Unknown statement of kind '{kind.name}' in {entity} '{name}' at {position.Filename}:{position.Line}:{position.Column}." + ) def GetAliasFromNode(aliasNode: Iir): diff --git a/pyGHDL/dom/formatting/prettyprint.py b/pyGHDL/dom/formatting/prettyprint.py index 14d13e2c5..aa9c90c34 100644 --- a/pyGHDL/dom/formatting/prettyprint.py +++ b/pyGHDL/dom/formatting/prettyprint.py @@ -189,7 +189,9 @@ class PrettyPrint: def formatEntity(self, entity: Entity, level: int = 0) -> StringBuffer: buffer = [] prefix = " " * level - buffer.append(f"{prefix}- Name: {entity.Identifier}\n{prefix} File: {entity.Position.Filename.name}\n{prefix} Position: {entity.Position.Line}:{entity.Position.Column}") + buffer.append( + f"{prefix}- Name: {entity.Identifier}\n{prefix} File: {entity.Position.Filename.name}\n{prefix} Position: {entity.Position.Line}:{entity.Position.Column}" + ) buffer.append(f"{prefix} Generics:") for generic in entity.GenericItems: for line in self.formatGeneric(generic, level + 1): @@ -214,7 +216,9 @@ class PrettyPrint: def formatArchitecture(self, architecture: Architecture, level: int = 0) -> StringBuffer: buffer = [] prefix = " " * level - buffer.append(f"{prefix}- Name: {architecture.Identifier}\n{prefix} File: {architecture.Position.Filename.name}\n{prefix} Position: {architecture.Position.Line}:{architecture.Position.Column}") + buffer.append( + f"{prefix}- Name: {architecture.Identifier}\n{prefix} File: {architecture.Position.Filename.name}\n{prefix} Position: {architecture.Position.Line}:{architecture.Position.Column}" + ) buffer.append(f"{prefix} Entity: {architecture.Entity.SymbolName}") buffer.append(f"{prefix} Declared:") for item in architecture.DeclaredItems: @@ -250,7 +254,9 @@ class PrettyPrint: def formatPackage(self, package: Package, level: int = 0) -> StringBuffer: buffer = [] prefix = " " * level - buffer.append(f"{prefix}- Name: {package.Identifier}\n{prefix} File: {package.Position.Filename.name}\n{prefix} Position: {package.Position.Line}:{package.Position.Column}") + buffer.append( + f"{prefix}- Name: {package.Identifier}\n{prefix} File: {package.Position.Filename.name}\n{prefix} Position: {package.Position.Line}:{package.Position.Column}" + ) buffer.append(f"{prefix} Declared:") for item in package.DeclaredItems: for line in self.formatDeclaredItems(item, level + 1): @@ -301,13 +307,17 @@ class PrettyPrint: elif isinstance(generic, GenericTypeInterfaceItem): return self.formatGenericType(generic, level) else: - raise PrettyPrintException(f"Unhandled generic kind '{generic.__class__.__name__}' for generic '{generic.Identifiers[0]}'.") + raise PrettyPrintException( + f"Unhandled generic kind '{generic.__class__.__name__}' for generic '{generic.Identifiers[0]}'." + ) def formatPort(self, port: Union[NamedEntity, PortInterfaceItem], level: int = 0) -> StringBuffer: if isinstance(port, PortSignalInterfaceItem): return self.formatPortSignal(port, level) else: - raise PrettyPrintException(f"Unhandled port kind '{port.__class__.__name__}' for port '{port.Identifiers[0]}'.") + raise PrettyPrintException( + f"Unhandled port kind '{port.__class__.__name__}' for port '{port.Identifiers[0]}'." + ) def formatGenericConstant(self, generic: GenericConstantInterfaceItem, level: int = 0) -> StringBuffer: buffer = [] @@ -381,9 +391,7 @@ class PrettyPrint: prefix=prefix, name=", ".join(item.Identifiers), subtype=self.formatSubtypeIndication(item.Subtype, "signal", item.Identifiers[0]), - initValue=f" := {item.DefaultExpression!s}" - if item.DefaultExpression is not None - else "", + initValue=f" := {item.DefaultExpression!s}" if item.DefaultExpression is not None else "", ) ) elif isinstance(item, File): @@ -418,7 +426,9 @@ class PrettyPrint: elif isinstance(item, PackageInstantiation): buffer.append(f"{prefix}- package {item.Identifier} is new {item.PackageReference!s} generic map (.....)") elif isinstance(item, DefaultClock): - buffer.append(f"{prefix}- default {item.Identifier} is {'...'}", ) + buffer.append( + f"{prefix}- default {item.Identifier} is {'...'}", + ) else: raise PrettyPrintException(f"Unhandled declared item kind '{item.__class__.__name__}'.") @@ -461,7 +471,9 @@ class PrettyPrint: return "{type}({constraints})".format(type=subtypeIndication.SymbolName, constraints=", ".join(constraints)) else: - raise PrettyPrintException(f"Unhandled subtype kind '{subtypeIndication.__class__.__name__}' for {entity} '{name}'.") + raise PrettyPrintException( + f"Unhandled subtype kind '{subtypeIndication.__class__.__name__}' for {entity} '{name}'." + ) def formatInitialValue(self, item: WithDefaultExpressionMixin) -> str: if item.DefaultExpression is None: diff --git a/pyGHDL/libghdl/_decorator.py b/pyGHDL/libghdl/_decorator.py index 99ebbe286..65a0473da 100644 --- a/pyGHDL/libghdl/_decorator.py +++ b/pyGHDL/libghdl/_decorator.py @@ -136,7 +136,9 @@ def BindToLibGHDL(subprogramName): raise ValueError(f"Function {func.__name__} is not annotated with a return type.") if (typeHintCount - 1) != func.__code__.co_argcount: - raise ValueError(f"Number of type annotations ({typeHintCount - 1}) for function '{func.__name__}' does not match number of parameters ({func.__code__.co_argcount}).") + raise ValueError( + f"Number of type annotations ({typeHintCount - 1}) for function '{func.__name__}' does not match number of parameters ({func.__code__.co_argcount})." + ) # print(typeHints) @@ -167,7 +169,10 @@ def BindToLibGHDL(subprogramName): returnValue = functionPointer(*args) except OSError as ex: errors = [str(ex)] - raise LibGHDLException(f"Caught exception when calling '{subprogramName}' in libghdl.", errors,) from ex + raise LibGHDLException( + f"Caught exception when calling '{subprogramName}' in libghdl.", + errors, + ) from ex return returnType(returnValue) @@ -180,7 +185,10 @@ def BindToLibGHDL(subprogramName): return functionPointer(*args) except OSError as ex: errors = [str(ex)] - raise LibGHDLException(f"Caught exception when calling '{subprogramName}' in libghdl.", errors,) from ex + raise LibGHDLException( + f"Caught exception when calling '{subprogramName}' in libghdl.", + errors, + ) from ex return inner |