diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ac698f89..4ed2d900 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,16 +1,30 @@ # New Features - + +* tbd * tbd # Changes +* tbd * tbd # Bug Fixes +* tbd +* tbd + +# Documentation + +* tbd +* tbd + +# Unit Tests + +* tbd * tbd ---------- -# Related PRs: +# Related Issues and Pull-Requests * tbd +* tbd diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml index a1d4c4bd..2a2f23b0 100644 --- a/.github/workflows/Pipeline.yml +++ b/.github/workflows/Pipeline.yml @@ -4,11 +4,11 @@ on: push: workflow_dispatch: schedule: - - cron: '0 0 * * 5' +# Every Friday at 22:00 - rerun pipeline to check for dependency-based issues + - cron: '0 22 * * 5' jobs: - - Params: + UnitTestingParams: uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev with: name: pySVModel @@ -16,109 +16,174 @@ jobs: UnitTesting: uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev needs: - - Params + - UnitTestingParams with: - jobs: ${{ needs.Params.outputs.python_jobs }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).unittesting_xml }} - - Coverage: - uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@dev - needs: - - Params - with: - python_version: ${{ needs.Params.outputs.python_version }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).codecoverage_html }} - secrets: - codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} + jobs: ${{ needs.UnitTestingParams.outputs.python_jobs }} + requirements: "-r tests/unit/requirements.txt" +# pacboy: "msys/git" + unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} + coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} StaticTypeCheck: uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev needs: - - Params + - UnitTestingParams with: - python_version: ${{ needs.Params.outputs.python_version }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} commands: | mypy --html-report htmlmypy -p pySVModel - html_artifact: ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} + html_report: 'htmlmypy' + html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} - PublishTestResults: - uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev + DocCoverage: + uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@dev needs: - - UnitTesting + - UnitTestingParams + with: + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + directory: pySVModel +# fail_below: 70 + + ConfigParams: + uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@dev + needs: + - DocCoverage Package: uses: pyTooling/Actions/.github/workflows/Package.yml@dev needs: - - Params - - Coverage + - UnitTestingParams + - UnitTesting with: - python_version: ${{ needs.Params.outputs.python_version }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} - Release: - uses: pyTooling/Actions/.github/workflows/Release.yml@dev - if: startsWith(github.ref, 'refs/tags') + PublishCoverageResults: + uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@dev needs: + - UnitTestingParams - UnitTesting - - Coverage - - StaticTypeCheck - - Package + with: +# coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} +# coverage_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }} + coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} + coverage_html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} + secrets: + codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} - PublishOnPyPI: - uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev - if: startsWith(github.ref, 'refs/tags') + PublishTestResults: + uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev needs: - - Params - - Release - - Package + - UnitTestingParams + - UnitTesting with: - python_version: ${{ needs.Params.outputs.python_version }} - requirements: -r dist/requirements.txt - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} - secrets: - PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + merged_junit_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} # VerifyDocs: # uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@dev # needs: -# - Params +# - UnitTestingParams # with: -# python_version: ${{ needs.Params.outputs.python_version }} +# python_version: ${{ needs.UnitTestingParams.outputs.python_version }} - BuildTheDocs: - uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@dev + Documentation: + uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@dev needs: - - Params + - UnitTestingParams + - ConfigParams + - PublishTestResults + - PublishCoverageResults # - VerifyDocs with: - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).documentation_html }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + coverage_report_json_directory: ${{ needs.ConfigParams.outputs.coverage_report_json_directory }} + unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-ubuntu-native-3.12 + coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} + html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} + latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} + + IntermediateCleanUp: + uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@dev + needs: + - UnitTestingParams + - PublishCoverageResults + - PublishTestResults + - Documentation + with: + sqlite_coverage_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}- + xml_unittest_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}- + +# PDFDocumentation: +# uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@dev +# needs: +# - UnitTestingParams +# - Documentation +# with: +# document: pySVModel +# latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} +# pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} PublishToGitHubPages: uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev needs: - - Params - - BuildTheDocs - - Coverage + - UnitTestingParams + - Documentation +# - PDFDocumentation + - PublishCoverageResults - StaticTypeCheck with: - doc: ${{ fromJson(needs.Params.outputs.artifact_names).documentation_html }} - coverage: ${{ fromJson(needs.Params.outputs.artifact_names).codecoverage_html }} - typing: ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} + doc: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} +# coverage: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} + typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} + + ReleasePage: + uses: pyTooling/Actions/.github/workflows/Release.yml@dev + if: startsWith(github.ref, 'refs/tags') + needs: + - Package + - PublishToGitHubPages + + PublishOnPyPI: + uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev + if: startsWith(github.ref, 'refs/tags') + needs: + - UnitTestingParams + - ReleasePage + with: + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + requirements: -r dist/requirements.txt + artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} ArtifactCleanUp: uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev needs: - - Params + - UnitTestingParams - UnitTesting - - Coverage - StaticTypeCheck - - BuildTheDocs - - PublishToGitHubPages + - Documentation +# - PDFDocumentation - PublishTestResults + - PublishCoverageResults + - PublishToGitHubPages +# - PublishOnPyPI with: - package: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} + package: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} remaining: | - ${{ fromJson(needs.Params.outputs.artifact_names).unittesting_xml }}-* - ${{ fromJson(needs.Params.outputs.artifact_names).codecoverage_html }} - ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} - ${{ fromJson(needs.Params.outputs.artifact_names).documentation_html }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}-* + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} + ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} +# ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} diff --git a/.idea/pySVModel.iml b/.idea/pySVModel.iml index eb934a99..5b5388d7 100644 --- a/.idea/pySVModel.iml +++ b/.idea/pySVModel.iml @@ -7,8 +7,10 @@ + + - + \ No newline at end of file diff --git a/dist/requirements.txt b/dist/requirements.txt index a414030a..878e3e51 100644 --- a/dist/requirements.txt +++ b/dist/requirements.txt @@ -1,2 +1,2 @@ -wheel >= 0.40.0 -twine >= 4.0.2 +wheel ~= 0.44 +twine ~= 5.1 diff --git a/doc/Dependency.rst b/doc/Dependency.rst index 0b0069ac..d93773e5 100644 --- a/doc/Dependency.rst +++ b/doc/Dependency.rst @@ -29,7 +29,7 @@ pySVModel Package +--------------------------------------------------------+-------------+------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +========================================================+=============+==========================================================================================+=================================================================================================================================+ -| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥7.0 | `Apache License, 2.0 `__ | *None* | +--------------------------------------------------------+-------------+------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ @@ -57,17 +57,17 @@ the mandatory dependencies too. +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ | **Package** | **Version** | **License** | **Dependencies** | +=====================================================================+=============+========================================================================================+======================+ -| `pytest `__ | ≥7.4.0 | `MIT `__ | *Not yet evaluated.* | +| `pytest `__ | ≥8.3 | `MIT `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `pytest-cov `__ | ≥4.1.0 | `MIT `__ | *Not yet evaluated.* | +| `pytest-cov `__ | ≥6.0 | `MIT `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `Coverage `__ | ≥7.3 | `Apache License, 2.0 `__ | *Not yet evaluated.* | +| `Coverage `__ | ≥7.6 | `Apache License, 2.0 `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `mypy `__ | ≥1.5 | `MIT `__ | *Not yet evaluated.* | +| `mypy `__ | ≥1.13 | `MIT `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `typing-extensions `__ | ≥4.7.1 | `PSF-2.0 `__ | *Not yet evaluated.* | +| `typing-extensions `__ | ≥4.12 | `PSF-2.0 `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `lxml `__ | ≥4.9 | `BSD 3-Clause `__ | *Not yet evaluated.* | +| `lxml `__ | ≥5.3 | `BSD 3-Clause `__ | *Not yet evaluated.* | +---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ @@ -95,15 +95,15 @@ the mandatory dependencies too. +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +=================================================================================================+==============+==========================================================================================================+======================================================================================================================================================+ -| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥7.0 | `Apache License, 2.0 `__ | *None* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ -| `Sphinx `__ | ≥5.3.0 | `BSD 3-Clause `__ | *Not yet evaluated.* | +| `Sphinx `__ | ≥8.1 | `BSD 3-Clause `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | `sphinx_btd_theme `__ | ≥0.5.2 | `MIT `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | !! `sphinx_fontawesome `__ | ≥0.0.6 | `GPL 2.0 `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ -| `sphinx_autodoc_typehints `__ | ≥1.19.5 | `MIT `__ | *Not yet evaluated.* | +| `sphinx_autodoc_typehints `__ | ≥2.5 | `MIT `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -131,9 +131,9 @@ install the mandatory dependencies too. +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ -| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥7.0 | `Apache License, 2.0 `__ | *None* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ -| `wheel `__ | ≥0.40.0 | `MIT `__ | *Not yet evaluated.* | +| `wheel `__ | ≥0.44 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -162,7 +162,7 @@ install the mandatory dependencies too. +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ | **Package** | **Version** | **License** | **Dependencies** | +==========================================================+==============+===========================================================================================+======================+ -| `wheel `__ | ≥0.40.0 | `MIT `__ | *Not yet evaluated.* | +| `wheel `__ | ≥0.44 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ -| `Twine `__ | ≥4.0.2 | `Apache License, 2.0 `__ | *Not yet evaluated.* | +| `Twine `__ | ≥5.1 | `Apache License, 2.0 `__ | *Not yet evaluated.* | +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ diff --git a/doc/LanguageModel/index.rst b/doc/LanguageModel/index.rst index 281fbdac..c72daff2 100644 --- a/doc/LanguageModel/index.rst +++ b/doc/LanguageModel/index.rst @@ -3,7 +3,7 @@ SystemVerilog Language Model ############################ -.. topic:: Design Goal +.. topic:: Design Goals * Clearly named classes that model the semantics of System Verilog. * All language constructs (statements, declarations, specifications, …) have their own classes. diff --git a/doc/conf.py b/doc/conf.py index f34a665f..6cb00686 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -61,7 +61,7 @@ # ============================================================================== prologPath = Path("prolog.inc") try: - with prologPath.open("r") as fileHandle: + with prologPath.open("r", encoding="utf-8") as fileHandle: rst_prolog = fileHandle.read() except Exception as ex: print(f"[ERROR:] While reading '{prologPath}'.") @@ -204,8 +204,8 @@ # Sphinx.Ext.ExtLinks # ============================================================================== extlinks = { - "ghissue": ('https://GitHub.com/edaa-org/pySVModel/issues/%s', 'issue #'), - "ghpull": ('https://GitHub.com/edaa-org/pySVModel/pull/%s', 'pull request #'), + "ghissue": ('https://GitHub.com/edaa-org/pySVModel/issues/%s', 'issue #%s'), + "ghpull": ('https://GitHub.com/edaa-org/pySVModel/pull/%s', 'pull request #%s'), "ghsrc": ('https://GitHub.com/edaa-org/pySVModel/blob/main/%s?ts=2', None), } diff --git a/doc/index.rst b/doc/index.rst index 1001984f..b9c3c22d 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -73,7 +73,7 @@ News * Moved ``VerilogVersion`` and ``SystemVerilogVersion`` classes from ``pyEDAA.ProjectModel`` to this new repository. -.. _contributors: +.. _CONTRIBUTORS: Contributors ************ @@ -83,6 +83,8 @@ Contributors * `and more... `__ +.. _LICENSE: + License ******* diff --git a/doc/requirements.txt b/doc/requirements.txt index 8c659351..67860f43 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,12 +1,12 @@ -r ../requirements.txt -pyTooling >= 5.0.0 - # Enforce latest version on ReadTheDocs -sphinx>=5.3.0 +sphinx ~= 8.1 +docutils ~= 0.21 +docutils_stubs ~= 0.0.22 # Sphinx Extenstions -sphinxcontrib-mermaid>=0.7.1 +sphinxcontrib-mermaid ~= 1.0 autoapi>=2.0.1 sphinx_fontawesome>=0.0.6 -sphinx_autodoc_typehints>=1.19.5 +sphinx_autodoc_typehints ~= 2.5 diff --git a/pySVModel/__init__.py b/pySVModel/__init__.py index 93119df5..a5973035 100644 --- a/pySVModel/__init__.py +++ b/pySVModel/__init__.py @@ -11,7 +11,7 @@ # # # License: # # ==================================================================================================================== # -# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany # +# Copyright 2021-2024 Patrick Lehmann - Boetzingen, Germany # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -31,7 +31,7 @@ """ An abstract SystemVerilog language model. -:copyright: Copyright 2021-2023 Patrick Lehmann - Bötzingen, Germany +:copyright: Copyright 2021-2024 Patrick Lehmann - Bötzingen, Germany :license: Apache License, Version 2.0 """ from enum import unique, Enum @@ -42,7 +42,7 @@ __author__ = "Patrick Lehmann" __email__ = "Paebbels@gmail.com" -__copyright__ = "2021-2023, Patrick Lehmann" +__copyright__ = "2021-2024, Patrick Lehmann" __license__ = "Apache License, Version 2.0" __version__ = "0.4.1" diff --git a/pyproject.toml b/pyproject.toml index 5edb2ebb..59979407 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ - "setuptools >= 68.0.0", - "wheel >= 0.40.0", - "pyTooling >= 5.0.0" + "setuptools ~= 75.3", + "wheel ~= 0.44", + "pyTooling ~= 7.0" ] build-backend = "setuptools.build_meta" @@ -10,15 +10,18 @@ build-backend = "setuptools.build_meta" line-length = 120 [tool.mypy] -python_version = "3.11" -namespace_packages = true - +files = ["pySVModel"] +python_version = "3.13" +#ignore_missing_imports = true +strict = true pretty = true show_error_context = true - +show_error_codes = true +namespace_packages = true html_report = "report/typing" [tool.pytest.ini_options] +addopts = "--tb=native" # Don't set 'python_classes = *' otherwise, pytest doesn't search for classes # derived from unittest.Testcase python_files = "*" @@ -27,13 +30,28 @@ filterwarnings = [ "error::DeprecationWarning", "error::PendingDeprecationWarning" ] +junit_logging = "all" + +[tool.interrogate] +color = true +verbose = 1 # possible values: 0 (minimal output), 1 (-v), 2 (-vv) +fail-under = 59 +exclude = [ + "build", + "dist", + "doc", + "tests", + "setup.py" +] +ignore-setters = true [tool.coverage.run] branch = true +relative_files = true omit = [ "*site-packages*", "setup.py", - "tests/*" + "tests/unit/*" ] [tool.coverage.report] @@ -47,9 +65,12 @@ omit = [ "tests/*" ] +[tool.coverage.xml] +output = "report/coverage/coverage.xml" + +[tool.coverage.json] +output = "report/coverage/coverage.json" + [tool.coverage.html] directory = "report/coverage/html" title="Code Coverage of pySVModel" - -[tool.coverage.xml] -output = "report/coverage/coverage.xml" diff --git a/requirements.txt b/requirements.txt index 07307ec0..ce027dff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -pyTooling >= 5.0.0 +pyTooling ~= 7.0 diff --git a/setup.py b/setup.py index 98381360..ec31d453 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ # # # License: # # ==================================================================================================================== # -# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany # +# Copyright 2021-2024 Patrick Lehmann - Boetzingen, Germany # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -29,6 +29,8 @@ # ==================================================================================================================== # # """Package installer for 'An abstract System Verilog language model'.""" +from setuptools import setup + from pathlib import Path from pyTooling.Packaging import DescribePythonPackageHostedOnGitHub, DEFAULT_CLASSIFIERS @@ -37,7 +39,7 @@ packageDirectory = packageName packageInformationFile = Path(f"{packageDirectory}/__init__.py") -DescribePythonPackageHostedOnGitHub( +setup(**DescribePythonPackageHostedOnGitHub( packageName=packageName, description="An abstract SystemVerilog language model (incl. Verilog).", gitHubNamespace=gitHubNamespace, @@ -48,5 +50,8 @@ "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Compilers" - ] -) + ], + dataFiles={ + packageName: ["py.typed"] + } +)) diff --git a/tests/requirements.txt b/tests/requirements.txt index 6904298c..2ad659b6 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,13 +1,13 @@ -r ../requirements.txt # Coverage collection -Coverage >= 7.3 +Coverage ~= 7.6 # Test Runner -pytest >= 7.4.0 -pytest-cov >= 4.1.0 +pytest ~= 8.3 +pytest-cov ~= 6.0 # Static Type Checking -mypy >= 1.5 -typing_extensions >= 4.7.1 -lxml>=4.9 +mypy ~= 1.13 +typing_extensions ~= 4.12 +lxml ~= 5.3 diff --git a/tests/unit/Instantiate.py b/tests/unit/Instantiate.py index f265e2ca..af900e1c 100644 --- a/tests/unit/Instantiate.py +++ b/tests/unit/Instantiate.py @@ -11,7 +11,7 @@ # # # License: # # ==================================================================================================================== # -# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany # +# Copyright 2021-2024 Patrick Lehmann - Boetzingen, Germany # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -41,7 +41,7 @@ class SVVersion(TestCase): - def test_Any(self): + def test_Any(self) -> None: versions = ( SystemVerilogVersion.Parse(-1), SystemVerilogVersion.Parse("Any"), @@ -54,7 +54,7 @@ def test_Any(self): print(version) print(version.value) - def test_V1995(self): + def test_V1995(self) -> None: versions = ( SystemVerilogVersion.Parse(95), SystemVerilogVersion.Parse(1995), @@ -69,7 +69,7 @@ def test_V1995(self): print(version) print(version.value) - def test_V2001(self): + def test_V2001(self) -> None: versions = ( SystemVerilogVersion.Parse(1), SystemVerilogVersion.Parse(2001), @@ -84,7 +84,7 @@ def test_V2001(self): print(version) print(version.value) - def test_V2005(self): + def test_V2005(self) -> None: versions = ( SystemVerilogVersion.Parse(5), # SystemVerilogVersion.Parse(2005), @@ -99,7 +99,7 @@ def test_V2005(self): print(version) print(version.value) - def test_SV2005(self): + def test_SV2005(self) -> None: versions = ( # SystemVerilogVersion.Parse(5), SystemVerilogVersion.Parse(2005), @@ -114,7 +114,7 @@ def test_SV2005(self): print(version) print(version.value) - def test_SV2009(self): + def test_SV2009(self) -> None: versions = ( SystemVerilogVersion.Parse(9), SystemVerilogVersion.Parse(2009), @@ -129,7 +129,7 @@ def test_SV2009(self): print(version) print(version.value) - def test_SV2012(self): + def test_SV2012(self) -> None: versions = ( SystemVerilogVersion.Parse(12), SystemVerilogVersion.Parse(2012), @@ -144,7 +144,7 @@ def test_SV2012(self): print(version) print(version.value) - def test_SV2017(self): + def test_SV2017(self) -> None: versions = ( SystemVerilogVersion.Parse(17), SystemVerilogVersion.Parse(2017), @@ -159,14 +159,14 @@ def test_SV2017(self): print(version) print(version.value) - def test_IntError(self): + def test_IntError(self) -> None: with self.assertRaises(ValueError): _ = SystemVerilogVersion.Parse(0) with self.assertRaises(ValueError): _ = SystemVerilogVersion.Parse(13) - def test_StrError(self): + def test_StrError(self) -> None: with self.assertRaises(ValueError): _ = SystemVerilogVersion.Parse("0") diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py index d7f3e0b9..f5cce2c9 100644 --- a/tests/unit/__init__.py +++ b/tests/unit/__init__.py @@ -11,7 +11,7 @@ # # # License: # # ==================================================================================================================== # -# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany # +# Copyright 2021-2024 Patrick Lehmann - Boetzingen, Germany # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # diff --git a/tests/unit/requirements.txt b/tests/unit/requirements.txt new file mode 100644 index 00000000..3c8d7e78 --- /dev/null +++ b/tests/unit/requirements.txt @@ -0,0 +1 @@ +-r ../requirements.txt