diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml
index ee49c5495..c985b7b72 100644
--- a/.github/workflows/Pipeline.yml
+++ b/.github/workflows/Pipeline.yml
@@ -12,6 +12,7 @@ jobs:
uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r6
with:
package_name: 'pyVHDLModel'
+ unittest_python_version_list: '3.11 3.12 3.13 3.14 pypy-3.11'
bandit: 'true'
pylint: 'false'
codecov: 'true'
diff --git a/.idea/pyVHDLModel.iml b/.idea/pyVHDLModel.iml
index 402cf9e80..9e95d66ff 100644
--- a/.idea/pyVHDLModel.iml
+++ b/.idea/pyVHDLModel.iml
@@ -16,7 +16,7 @@
-
+
diff --git a/doc/Dependency.rst b/doc/Dependency.rst
index b193ac278..520f2c7ea 100644
--- a/doc/Dependency.rst
+++ b/doc/Dependency.rst
@@ -55,7 +55,7 @@ the mandatory dependencies too.
+---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `pytest-cov `__ | ≥7.0 | `MIT `__ | *Not yet evaluated.* |
+---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
-| `Coverage `__ | ≥7.10 | `Apache License, 2.0 `__ | *Not yet evaluated.* |
+| `Coverage `__ | ≥7.11 | `Apache License, 2.0 `__ | *Not yet evaluated.* |
+---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
| `mypy `__ | ≥1.18 | `MIT `__ | *Not yet evaluated.* |
+---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+
@@ -101,7 +101,7 @@ the mandatory dependencies too.
+-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+
| !! `sphinx_fontawesome `__ | ≥0.0.6 | `GPL 2.0 `__ | *Not yet evaluated.* |
+-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+
-| `sphinx_autodoc_typehints `__ | ≥3.1 | `MIT `__ | *Not yet evaluated.* |
+| `sphinx_autodoc_typehints `__ | ≥3.5 | `MIT `__ | *Not yet evaluated.* |
+-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 498302850..040b1a704 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -13,5 +13,5 @@ sphinxcontrib-mermaid ~= 1.0
autoapi >= 2.0.1
sphinx_design ~= 0.6
sphinx-copybutton >= 0.5
-sphinx_autodoc_typehints ~= 3.1
+sphinx_autodoc_typehints ~= 3.5
sphinx_reports ~= 0.9
diff --git a/pyVHDLModel/Expression.py b/pyVHDLModel/Expression.py
index adbb63dc6..2bd8815d4 100644
--- a/pyVHDLModel/Expression.py
+++ b/pyVHDLModel/Expression.py
@@ -34,7 +34,8 @@
All declarations for literals, aggregates, operators forming an expressions.
"""
-from typing import Tuple, List, Iterable, Union
+from enum import Flag
+from typing import Tuple, List, Iterable, Union, ClassVar
from pyTooling.Decorators import export, readonly
@@ -196,14 +197,32 @@ def __str__(self) -> str:
return "\"" + self._value + "\""
+@export
+class BitStringBase(Flag):
+ NoBase = 0
+ Binary = 2
+ Octal = 8
+ Decimal = 10
+ Hexadecimal = 16
+ Unsigned = 32
+ Signed = 64
+
+
@export
class BitStringLiteral(Literal):
+ # _base: ClassVar[BitStringBase]
_value: str
+ _bits: int
def __init__(self, value: str) -> None:
super().__init__()
+ self._bits = len(value)
self._value = value
+ @readonly
+ def Bits(self) -> int:
+ return self._bits
+
@readonly
def Value(self) -> str:
return self._value
@@ -212,6 +231,58 @@ def __str__(self) -> str:
return "\"" + self._value + "\""
+@export
+class BinaryBitStringLiteral(BitStringLiteral):
+ _base: ClassVar[BitStringBase] = BitStringBase.Binary
+
+ def __init__(self, value: str, bits: int = 0) -> None:
+ super().__init__(value)
+ if bits > 0:
+ self._bits = bits
+
+ def __str__(self) -> str:
+ return "b\"" + self._value + "\""
+
+
+@export
+class OctalBitStringLiteral(BitStringLiteral):
+ _base: ClassVar[BitStringBase] = BitStringBase.Octal
+
+ def __init__(self, value: str, bits: int = 0) -> None:
+ super().__init__(value)
+ if bits > 0:
+ self._bits = bits
+
+ def __str__(self) -> str:
+ return "o\"" + self._value + "\""
+
+
+@export
+class DecimalBitStringLiteral(BitStringLiteral):
+ _base: ClassVar[BitStringBase] = BitStringBase.Decimal
+
+ def __init__(self, value: str, bits: int = 0) -> None:
+ super().__init__(value)
+ if bits > 0:
+ self._bits = bits
+
+ def __str__(self) -> str:
+ return "d\"" + self._value + "\""
+
+
+@export
+class HexadecimalBitStringLiteral(BitStringLiteral):
+ _base: ClassVar[BitStringBase] = BitStringBase.Hexadecimal
+
+ def __init__(self, value: str, bits: int = 0) -> None:
+ super().__init__(value)
+ if bits > 0:
+ self._bits = bits
+
+ def __str__(self) -> str:
+ return "x\"" + self._value + "\""
+
+
@export
class ParenthesisExpression: #(Protocol):
__slots__ = () # FIXME: use ExtendedType?
diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py
index 6d613e867..646e85648 100644
--- a/pyVHDLModel/__init__.py
+++ b/pyVHDLModel/__init__.py
@@ -48,7 +48,7 @@
__email__ = "Paebbels@gmail.com"
__copyright__ = "2016-2025, Patrick Lehmann"
__license__ = "Apache License, Version 2.0"
-__version__ = "0.31.3"
+__version__ = "0.32.0"
from enum import unique, Enum, Flag, auto
diff --git a/run.ps1 b/run.ps1
index 6ed9316a8..1aed3335f 100644
--- a/run.ps1
+++ b/run.ps1
@@ -33,7 +33,7 @@ Param(
)
$PackageName = "pyVHDLModel"
-$PackageVersion = "0.31.2"
+$PackageVersion = "0.32.0"
# set default values
$EnableDebug = [bool]$PSCmdlet.MyInvocation.BoundParameters["Debug"]
@@ -89,7 +89,7 @@ if ($build)
rm -Force .\build\bdist.win-amd64
rm -Force .\build\lib
Write-Host -ForegroundColor Yellow "[live][BUILD] Building $PackageName package as wheel ..."
- py -3.13 -m build --wheel --no-isolation
+ py -3.14 -m build --wheel --no-isolation
Write-Host -ForegroundColor Yellow "[live][BUILD] Building wheel finished"
}
@@ -103,9 +103,9 @@ if ($install)
}
else
{ Write-Host -ForegroundColor Cyan "[ADMIN][UNINSTALL] Uninstalling $PackageName ..."
- py -3.13 -m pip uninstall -y $PackageName
+ py -3.14 -m pip uninstall -y $PackageName
Write-Host -ForegroundColor Cyan "[ADMIN][INSTALL] Installing $PackageName from wheel ..."
- py -3.13 -m pip install .\dist\$PackageName-$PackageVersion-py3-none-any.whl
+ py -3.14 -m pip install .\dist\$($PackageName.Replace(".", "_").ToLower())-$PackageVersion-py3-none-any.whl
Write-Host -ForegroundColor Cyan "[ADMIN][INSTALL] Closing window in 5 seconds ..."
Start-Sleep -Seconds 5
diff --git a/setup.py b/setup.py
index b6186ffc0..c6b15f46f 100644
--- a/setup.py
+++ b/setup.py
@@ -47,12 +47,13 @@
gitHubNamespace=gitHubNamespace,
keywords="Python3 VHDL Language Model Abstract",
sourceFileWithVersion=packageInformationFile,
- developmentStatus="beta",
classifiers=list(DEFAULT_CLASSIFIERS) + [
"Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
"Topic :: Software Development :: Code Generators",
"Topic :: Software Development :: Compilers",
],
+ developmentStatus="beta",
+ pythonVersions=("3.11", "3.12", "3.13", "3.14"),
dataFiles={
packageName: ["py.typed"]
},
diff --git a/tests/requirements.txt b/tests/requirements.txt
index c8b94c7c0..787c2e678 100644
--- a/tests/requirements.txt
+++ b/tests/requirements.txt
@@ -1,7 +1,7 @@
-r ../requirements.txt
# Coverage collection
-Coverage ~= 7.10
+Coverage ~= 7.11
# Test Runner
pytest ~= 8.4
@@ -10,4 +10,4 @@ pytest-cov ~= 7.0
# Static Type Checking
mypy[reports] ~= 1.18
typing_extensions ~= 4.15
-lxml ~= 6.0
+lxml >= 5.4, <7.0