From bc0a9aeb30ee28e043361e03b5475baf635c6fdd Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 7 Jul 2023 23:20:44 +0200 Subject: [PATCH 01/10] Bumped version to v0.28.0. --- pyVHDLModel/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index 24ed79f84..690a3b1bb 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -48,7 +48,7 @@ __email__ = "Paebbels@gmail.com" __copyright__ = "2016-2023, Patrick Lehmann" __license__ = "Apache License, Version 2.0" -__version__ = "0.27.1" +__version__ = "0.28.0" from enum import unique, Enum, Flag, auto From e7da3abc2ac207093398540f4682b8d4edc0bff2 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 15 Jul 2023 23:11:50 +0200 Subject: [PATCH 02/10] Bumped dependencies. --- dist/requirements.txt | 4 ++-- doc/Dependency.rst | 6 +++--- pyproject.toml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/requirements.txt b/dist/requirements.txt index e4718c940..a414030af 100644 --- a/dist/requirements.txt +++ b/dist/requirements.txt @@ -1,2 +1,2 @@ -wheel>=0.38.1 -twine +wheel >= 0.40.0 +twine >= 4.0.2 diff --git a/doc/Dependency.rst b/doc/Dependency.rst index 063a0653a..d8111682b 100644 --- a/doc/Dependency.rst +++ b/doc/Dependency.rst @@ -127,7 +127,7 @@ install the mandatory dependencies too. +============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ | `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ -| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | +| `wheel `__ | ≥0.40.0 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -156,7 +156,7 @@ install the mandatory dependencies too. +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ | **Package** | **Version** | **License** | **Dependencies** | +==========================================================+==============+===========================================================================================+======================+ -| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | +| `wheel `__ | ≥0.40.0 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ -| `Twine `__ | any | `Apache License, 2.0 `__ | *Not yet evaluated.* | +| `Twine `__ | ≥4.0.2 | `Apache License, 2.0 `__ | *Not yet evaluated.* | +----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ diff --git a/pyproject.toml b/pyproject.toml index 868bf721e..a383f7e17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ "pyTooling >= 5.0.0", - "setuptools >= 62.3.3", - "wheel >= 0.38.1" + "setuptools >= 68.0.0", + "wheel >= 0.40.0" ] build-backend = "setuptools.build_meta" From 6110360a89d852ac423f4607b2e05f5f57d053f5 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Wed, 2 Aug 2023 23:41:13 +0200 Subject: [PATCH 03/10] Added doc-strings and added Latest version in VHDLVersion. --- pyVHDLModel/__init__.py | 94 ++++++++++++++++++++++++----------------- pyproject.toml | 6 +-- 2 files changed, 58 insertions(+), 42 deletions(-) diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index 690a3b1bb..071e24dd8 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -90,8 +90,8 @@ class VHDLVersion(Enum): Any = -1 #: Any VHDL87 = 87 #: VHDL-1987 VHDL93 = 93 #: VHDL-1993 -# AMS93 = 93 #: - AMS99 = 99 #: VHDL-AMS-1999 + AMS93 = 1993 #: VHDL-AMS-1993 + AMS99 = 1999 #: VHDL-AMS-1999 VHDL2000 = 2000 #: VHDL-2000 VHDL2002 = 2002 #: VHDL-2002 VHDL2008 = 2008 #: VHDL-2008 @@ -100,40 +100,46 @@ class VHDLVersion(Enum): Latest = 10000 #: Latest VHDL (2019) __VERSION_MAPPINGS__: Dict[Union[int, str], Enum] = { - 87: VHDL87, - 93: VHDL93, - 99: AMS99, - 0: VHDL2000, - 2: VHDL2002, - 8: VHDL2008, - 17: AMS2017, - 19: VHDL2019, - 1987: VHDL87, - 1993: VHDL93, - 1999: AMS99, - 2000: VHDL2000, - 2002: VHDL2002, - 2008: VHDL2008, - 2017: AMS2017, - 2019: VHDL2019, - "Any": Any, + -1: Any, + 87: VHDL87, + 93: VHDL93, + # 93: AMS93, + 99: AMS99, + 0: VHDL2000, + 2: VHDL2002, + 8: VHDL2008, + 17: AMS2017, + 19: VHDL2019, + 1987: VHDL87, + # 1993: VHDL93, + 1993: AMS93, + 1999: AMS99, + 2000: VHDL2000, + 2002: VHDL2002, + 2008: VHDL2008, + 2017: AMS2017, + 2019: VHDL2019, + 10000: Latest, + "Any": Any, + "87": VHDL87, + "93": VHDL93, + # "93": AMS93, + "99": AMS99, + "00": VHDL2000, + "02": VHDL2002, + "08": VHDL2008, + "17": AMS2017, + "19": VHDL2019, + "1987": VHDL87, + # "1993": VHDL93, + "1993": AMS93, + "1999": AMS99, + "2000": VHDL2000, + "2002": VHDL2002, + "2008": VHDL2008, + "2017": AMS2017, + "2019": VHDL2019, "Latest": Latest, - "87": VHDL87, - "93": VHDL93, - "99": AMS99, - "00": VHDL2000, - "02": VHDL2002, - "08": VHDL2008, - "17": AMS2017, - "19": VHDL2019, - "1987": VHDL87, - "1993": VHDL93, - "1999": AMS99, - "2000": VHDL2000, - "2002": VHDL2002, - "2008": VHDL2008, - "2017": AMS2017, - "2019": VHDL2019 } #: Dictionary of VHDL and VHDL-AMS year codes variants as integer and strings for mapping to unique enum values. def __init__(self, *_) -> None: @@ -143,7 +149,7 @@ def __init__(self, *_) -> None: self.__class__.__VERSION_MAPPINGS__[k] = self @classmethod - def Parse(cls, value: Union[int, str]) -> 'Enum': + def Parse(cls, value: Union[int, str]) -> "VHDLVersion": """ Parses a VHDL or VHDL-AMS year code as integer or string to an enum value. @@ -233,7 +239,7 @@ def __eq__(self, other: Any) -> bool: if (self is self.__class__.Any) or (other is self.__class__.Any): return True else: - return (self.value == other.value) + return self.value == other.value else: raise TypeError("Second operand is not of type 'VHDLVersion'.") @@ -253,7 +259,7 @@ def IsAMS(self) -> bool: :returns: True if version is a VHDL-AMS version. """ - return self in (self.AMS99, self.AMS2017) + return self in (self.AMS93, self.AMS99, self.AMS2017) def __str__(self) -> str: """ @@ -261,6 +267,11 @@ def __str__(self) -> str: :return: Formatted VHDL/VHDL-AMS version. """ + if self.value == self.Any.value: + return "VHDL'Any" + elif self.value == self.Latest.value: + return "VHDL'Latest" + year = str(self.value)[-2:] if self.IsVHDL: return f"VHDL'{year}" @@ -273,7 +284,12 @@ def __repr__(self) -> str: :return: Formatted VHDL/VHDL-AMS version. """ - return str(self.value) + if self.value == self.Any.value: + return "Any" + elif self.value == self.Latest.value: + return "Latest" + else: + return str(self.value) @export diff --git a/pyproject.toml b/pyproject.toml index a383f7e17..e2906375e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ - "pyTooling >= 5.0.0", - "setuptools >= 68.0.0", - "wheel >= 0.40.0" + "setuptools >= 68.0.0", + "wheel >= 0.40.0", + "pyTooling >= 5.0.0" ] build-backend = "setuptools.build_meta" From ea5611e6c4132a13514b14005867284a3308b329 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Wed, 2 Aug 2023 23:41:40 +0200 Subject: [PATCH 04/10] Added missing "raise" keyword. --- pyVHDLModel/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyVHDLModel/__init__.py b/pyVHDLModel/__init__.py index 071e24dd8..bce4f90db 100644 --- a/pyVHDLModel/__init__.py +++ b/pyVHDLModel/__init__.py @@ -160,7 +160,7 @@ def Parse(cls, value: Union[int, str]) -> "VHDLVersion": try: return cls.__VERSION_MAPPINGS__[value] except KeyError: - ValueError(f"Value '{value!s}' cannot be parsed to member of {cls.__name__}.") + raise ValueError(f"Value '{value!s}' cannot be parsed to member of {cls.__name__}.") def __lt__(self, other: Any) -> bool: """ From 21f1b4bc1dd8bc03f0d22150e2f067250ba2c61c Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 6 Aug 2023 22:08:53 +0200 Subject: [PATCH 05/10] Fixes for InterSphinx. --- doc/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index a491b0b5c..bc75984df 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -225,7 +225,7 @@ extlinks = { "ghissue": ('https://GitHub.com/vhdl/pyVHDLModel/issues/%s', 'issue #'), "ghpull": ('https://GitHub.com/vhdl/pyVHDLModel/pull/%s', 'pull request #'), - "ghsrc": ('https://GitHub.com/vhdl/pyVHDLModel/blob/main/%s?ts=2', ""), + "ghsrc": ('https://GitHub.com/vhdl/pyVHDLModel/blob/main/%s?ts=2', None), } From e59b4abea8b9618a4dbb96873b7cf5ed8c2f9fff Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 13 Aug 2023 23:04:14 +0200 Subject: [PATCH 06/10] Bumped dependencies. --- doc/Dependency.rst | 30 ++++++++++++++++-------------- doc/requirements.txt | 6 +++--- tests/requirements.txt | 10 +++++----- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/doc/Dependency.rst b/doc/Dependency.rst index d8111682b..fdb1e9f9e 100644 --- a/doc/Dependency.rst +++ b/doc/Dependency.rst @@ -48,19 +48,21 @@ the mandatory dependencies too. .. rubric:: Dependency List -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| **Package** | **Version** | **License** | **Dependencies** | -+===========================================================+=============+========================================================================================+======================+ -| `pytest `__ | ≥7.3.0 | `MIT `__ | *Not yet evaluated.* | -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `pytest-cov `__ | ≥4.1.0 | `MIT `__ | *Not yet evaluated.* | -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `Coverage `__ | ≥7.2 | `Apache License, 2.0 `__ | *Not yet evaluated.* | -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `mypy `__ | ≥1.2.0 | `MIT `__ | *Not yet evaluated.* | -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ -| `lxml `__ | ≥4.9 | `BSD 3-Clause `__ | *Not yet evaluated.* | -+-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=====================================================================+=============+========================================================================================+======================+ +| `pytest `__ | ≥7.4.0 | `MIT `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `pytest-cov `__ | ≥4.1.0 | `MIT `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `Coverage `__ | ≥7.3 | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `mypy `__ | ≥1.5 | `MIT `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `typing-extensions `__ | ≥4.7.1 | `PSF-2.0 `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `lxml `__ | ≥4.9 | `BSD 3-Clause `__ | *Not yet evaluated.* | ++---------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ .. _dependency-documentation: @@ -97,7 +99,7 @@ the mandatory dependencies too. +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+ | !! `sphinx_fontawesome `__ | ≥0.0.6 | `GPL 2.0 `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+ -| `sphinx_autodoc_typehints `__ | ≥1.19.5 | `MIT `__ | *Not yet evaluated.* | +| `sphinx_autodoc_typehints `__ | ≥1.24.0 | `MIT `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+----------------------+ diff --git a/doc/requirements.txt b/doc/requirements.txt index db0ee14ad..73d902076 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -3,7 +3,7 @@ pyTooling >= 5.0.0, <6.0 # Enforce latest version on ReadTheDocs -sphinx>=5.3.0, <6.0 +Sphinx >= 7.1.0, <8.0 # Sphinx Extenstions #sphinx.ext.coverage @@ -13,8 +13,8 @@ sphinxcontrib-mermaid>=0.9.2 #sphinxcontrib-textstyle>=0.2.1 #sphinxcontrib-spelling>=2.2.0 autoapi>=2.0.1 -sphinx_fontawesome>=0.0.6 -sphinx_autodoc_typehints>=1.19.5 +sphinx_fontawesome >= 0.0.6 +sphinx_autodoc_typehints >= 1.24.0 # changelog>=0.3.5 # BuildTheDocs Extensions (mostly patched Sphinx extensions) diff --git a/tests/requirements.txt b/tests/requirements.txt index 0a3bbd3c2..e75ed5eca 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,13 +1,13 @@ -r ../requirements.txt # Coverage collection -Coverage>=7.2 +Coverage >= 7.3 # Test Runner -pytest>=7.3.0 -pytest-cov>=4.1.0 +pytest >= 7.4.0 +pytest-cov >= 4.1.0 # Static Type Checking -mypy>=1.2.0 -typing_extensions>=4.6.3 +mypy >= 1.5.0 +typing_extensions >= 4.7.1 lxml>=4.9 From 8060cb3f5f88b694b487b187b9ccefaf7a94cf9c Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 20 Jan 2024 12:23:54 +0100 Subject: [PATCH 07/10] Bumped dependencies. --- .github/workflows/Pipeline.yml | 22 +++++++++++----------- .idea/pyVHDLModel.iml | 2 +- doc/conf.py | 4 ++-- pyVHDLModel/Concurrent.py | 9 ++++----- pyproject.toml | 2 +- requirements.txt | 2 +- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml index 0ba07ce61..da7c32c64 100644 --- a/.github/workflows/Pipeline.yml +++ b/.github/workflows/Pipeline.yml @@ -9,12 +9,12 @@ on: jobs: Params: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev + uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 with: name: pyVHDLModel UnitTesting: - uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev + uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@r1 needs: - Params with: @@ -22,7 +22,7 @@ jobs: artifact: ${{ fromJson(needs.Params.outputs.artifact_names).unittesting_xml }} Coverage: - uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@dev + uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@r1 needs: - Params with: @@ -32,7 +32,7 @@ jobs: codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} StaticTypeCheck: - uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev + uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@r1 needs: - Params with: @@ -42,12 +42,12 @@ jobs: html_artifact: ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} PublishTestResults: - uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev + uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r1 needs: - UnitTesting Package: - uses: pyTooling/Actions/.github/workflows/Package.yml@dev + uses: pyTooling/Actions/.github/workflows/Package.yml@r1 needs: - Params - Coverage @@ -56,7 +56,7 @@ jobs: artifact: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} Release: - uses: pyTooling/Actions/.github/workflows/Release.yml@dev + uses: pyTooling/Actions/.github/workflows/Release.yml@r1 if: startsWith(github.ref, 'refs/tags') needs: - UnitTesting @@ -65,7 +65,7 @@ jobs: - Package PublishOnPyPI: - uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev + uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@r1 if: startsWith(github.ref, 'refs/tags') needs: - Params @@ -129,7 +129,7 @@ jobs: python3 example.py BuildTheDocs: - uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@dev + uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@r1 needs: - Params - VerifyDocs @@ -137,7 +137,7 @@ jobs: artifact: ${{ fromJson(needs.Params.outputs.artifact_names).documentation_html }} PublishToGitHubPages: - uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev + uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r1 needs: - Params - BuildTheDocs @@ -149,7 +149,7 @@ jobs: typing: ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} ArtifactCleanUp: - uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev + uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@r1 needs: - Params - UnitTesting diff --git a/.idea/pyVHDLModel.iml b/.idea/pyVHDLModel.iml index 815ed973e..a48c3eee2 100644 --- a/.idea/pyVHDLModel.iml +++ b/.idea/pyVHDLModel.iml @@ -13,7 +13,7 @@ - + diff --git a/doc/conf.py b/doc/conf.py index bc75984df..9f75be6e7 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -223,8 +223,8 @@ # Sphinx.Ext.ExtLinks # ============================================================================== extlinks = { - "ghissue": ('https://GitHub.com/vhdl/pyVHDLModel/issues/%s', 'issue #'), - "ghpull": ('https://GitHub.com/vhdl/pyVHDLModel/pull/%s', 'pull request #'), + "ghissue": ('https://GitHub.com/vhdl/pyVHDLModel/issues/%s', 'issue #%s'), + "ghpull": ('https://GitHub.com/vhdl/pyVHDLModel/pull/%s', 'pull request #%s'), "ghsrc": ('https://GitHub.com/vhdl/pyVHDLModel/blob/main/%s?ts=2', None), } diff --git a/pyVHDLModel/Concurrent.py b/pyVHDLModel/Concurrent.py index 3145b129b..fb53af15c 100644 --- a/pyVHDLModel/Concurrent.py +++ b/pyVHDLModel/Concurrent.py @@ -704,17 +704,16 @@ def LoopIndex(self) -> str: def Range(self) -> Range: return self._range - IterateInstantiations = ConcurrentStatementsMixin.IterateInstantiations - # IndexDeclaredItems = ConcurrentStatements.IndexDeclaredItems def IndexStatement(self) -> None: self.IndexStatements() - IndexStatements = ConcurrentStatementsMixin.IndexStatements + def IndexStatements(self) -> None: + super().IndexStatements() - # def IterateInstantiations(self) -> Generator[Instantiation, None, None]: - # return ConcurrentStatements.IterateInstantiations(self) + def IterateInstantiations(self) -> Generator[Instantiation, None, None]: + return ConcurrentStatementsMixin.IterateInstantiations(self) @export diff --git a/pyproject.toml b/pyproject.toml index e2906375e..a4388632a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ requires = [ "setuptools >= 68.0.0", "wheel >= 0.40.0", - "pyTooling >= 5.0.0" + "pyTooling ~= 6.0" ] build-backend = "setuptools.build_meta" diff --git a/requirements.txt b/requirements.txt index 013cc1f0e..3bea232d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -pyTooling >= 5.0.0, <6.0 +pyTooling ~= 6.0 From a0ddc2c0556e6a88b9e9cb88e1d1ec46c0f19105 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 20 Jan 2024 16:38:14 +0100 Subject: [PATCH 08/10] Updated GitHub Actions workflow pipeline. --- .github/workflows/Pipeline.yml | 245 ++++++++++++++++++--------------- pyproject.toml | 36 +++-- tests/unit/requirements.txt | 1 + 3 files changed, 159 insertions(+), 123 deletions(-) create mode 100644 tests/unit/requirements.txt diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml index da7c32c64..017fd2bea 100644 --- a/.github/workflows/Pipeline.yml +++ b/.github/workflows/Pipeline.yml @@ -4,164 +4,181 @@ 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@r1 with: name: pyVHDLModel + python_version_list: "3.9 3.10 3.11 3.12 pypy-3.9 pypy-3.10" +# disable_list: "windows:pypy-3.8 windows:pypy-3.9 windows:pypy-3.10" UnitTesting: uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@r1 needs: - - Params + - UnitTestingParams with: - jobs: ${{ needs.Params.outputs.python_jobs }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).unittesting_xml }} + 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 }} - Coverage: - uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@r1 + StaticTypeCheck: + uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@r1 needs: - - Params + - UnitTestingParams with: - python_version: ${{ needs.Params.outputs.python_version }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).codecoverage_html }} - secrets: - codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + commands: | + mypy --html-report htmlmypy -p pyVHDLModel + html_report: 'htmlmypy' + html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} + + DocCoverage: + uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@r1 + needs: + - UnitTestingParams + with: + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + directory: pyVHDLModel +# fail_below: 70 - StaticTypeCheck: - uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@r1 + Package: + uses: pyTooling/Actions/.github/workflows/Package.yml@r1 needs: - - Params + - UnitTestingParams + - UnitTesting with: - python_version: ${{ needs.Params.outputs.python_version }} - requirements: '-r tests/requirements.txt' - commands: mypy --html-report htmlmypy -p pyVHDLModel - html_artifact: ${{ fromJson(needs.Params.outputs.artifact_names).statictyping_html }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} + + PublishCoverageResults: + uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@r1 + needs: + - UnitTestingParams + - UnitTesting + 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 }} PublishTestResults: uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r1 needs: + - UnitTestingParams - UnitTesting + with: + merged_junit_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} - Package: - uses: pyTooling/Actions/.github/workflows/Package.yml@r1 + IntermediateCleanUp: + uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@r1 + needs: + - UnitTestingParams + - PublishCoverageResults + - PublishTestResults + - HTMLDocumentation + 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 }}- + +# VerifyDocs: +# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@r1 +# needs: +# - UnitTestingParams +# with: +# python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + + HTMLDocumentation: + uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r1 + needs: + - UnitTestingParams + - PublishTestResults + - PublishCoverageResults +# - VerifyDocs + with: + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} + 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 }} + + PDFDocumentation: + uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@r1 + needs: + - UnitTestingParams + - HTMLDocumentation + with: + document: pyVHDLModel + 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@r1 needs: - - Params - - Coverage + - UnitTestingParams + - HTMLDocumentation +# - PDFDocumentation + - PublishCoverageResults + - StaticTypeCheck with: - python_version: ${{ needs.Params.outputs.python_version }} - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} + 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 }} - Release: + ReleasePage: uses: pyTooling/Actions/.github/workflows/Release.yml@r1 if: startsWith(github.ref, 'refs/tags') needs: - - UnitTesting - - Coverage - - StaticTypeCheck - Package + - PublishToGitHubPages PublishOnPyPI: uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@r1 if: startsWith(github.ref, 'refs/tags') needs: - - Params - - Release - - Package + - UnitTestingParams + - ReleasePage with: - python_version: ${{ needs.Params.outputs.python_version }} + python_version: ${{ needs.UnitTestingParams.outputs.python_version }} requirements: -r dist/requirements.txt - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).package_all }} + artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} - VerifyDocs: - needs: - - Params - name: 👍 Verify example snippets using Python ${{ needs.Params.outputs.python_version }} - runs-on: ubuntu-latest - - steps: - - name: ⏬ Checkout repository - uses: actions/checkout@v3 - - - name: ⚙ Setup GHDL - uses: ghdl/setup-ghdl-ci@master - - - name: 🐍 Setup Python - uses: actions/setup-python@v4 - with: - python-version: "3.10" -# python-version: ${{ needs.Params.outputs.python_version }} - - - name: 🐍 Install dependencies - run: | - pip3 install --disable-pip-version-check git+https://github.com/ghdl/ghdl.git@$(ghdl version hash) - - - name: ✂ Extract code snippet from README - shell: python - run: | - from pathlib import Path - import re - - ROOT = Path('.') - - with (ROOT / 'README.md').open('r') as rptr: - content = rptr.read() - - m = re.search(r"```py(thon)?(?P.*?)```", content, re.MULTILINE|re.DOTALL) - - if m is None: - raise Exception("Regular expression did not find the example in the README!") - - with (ROOT / 'tests/docs/example.py').open('w') as wptr: - wptr.write(m["code"]) - -# - name: Print example.py -# run: cat tests/docs/example.py - - - name: ☑ Run example snippet - working-directory: tests/docs - run: | - python3 example.py - - BuildTheDocs: - uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@r1 - needs: - - Params - - VerifyDocs - with: - artifact: ${{ fromJson(needs.Params.outputs.artifact_names).documentation_html }} - - PublishToGitHubPages: - uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r1 - needs: - - Params - - BuildTheDocs - - Coverage - - 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 }} - ArtifactCleanUp: uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@r1 needs: - - Params + - UnitTestingParams - UnitTesting - - Coverage - StaticTypeCheck - - BuildTheDocs - - PublishToGitHubPages + - HTMLDocumentation + - 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/pyproject.toml b/pyproject.toml index a4388632a..61563f646 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] requires = [ - "setuptools >= 68.0.0", + "setuptools >= 69.0.0", "wheel >= 0.40.0", "pyTooling ~= 6.0" ] @@ -10,12 +10,14 @@ build-backend = "setuptools.build_meta" line-length = 120 [tool.mypy] -python_version = "3.11" -namespace_packages = true - +files = ["pyVHDLModel"] +python_version = "3.12" +#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] @@ -27,13 +29,26 @@ 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 = 80 +#generate-badge = "." +#badge-format = "png" +ignore-setters = true [tool.coverage.run] branch = true +relative_files = true omit = [ "*site-packages*", "setup.py", - "tests/*" + "tests/benchmark/*", + "tests/performance/*", + "tests/platform/*", + "tests/unit/*" ] [tool.coverage.report] @@ -47,9 +62,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 pyVHDLModel" - -[tool.coverage.xml] -output = "report/coverage/coverage.xml" diff --git a/tests/unit/requirements.txt b/tests/unit/requirements.txt new file mode 100644 index 000000000..3c8d7e782 --- /dev/null +++ b/tests/unit/requirements.txt @@ -0,0 +1 @@ +-r ../requirements.txt From 4559127fac9aed4aade70158f9b87864db619976 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 20 Jan 2024 17:20:23 +0100 Subject: [PATCH 09/10] Updated documentation. --- doc/Dependency.rst | 4 +- doc/DocCoverage.rst | 7 ++ doc/Installation.rst | 204 ++++++++++++++++++++++++++++++++--- doc/_static/css/override.css | 101 +++++++++++++++++ doc/conf.py | 144 +++++++++++++++++-------- doc/coverage/index.rst | 9 +- doc/index.rst | 11 +- doc/requirements.txt | 19 ++-- doc/unittests/index.rst | 9 +- setup.py | 6 +- 10 files changed, 428 insertions(+), 86 deletions(-) create mode 100644 doc/DocCoverage.rst create mode 100644 doc/_static/css/override.css diff --git a/doc/Dependency.rst b/doc/Dependency.rst index fdb1e9f9e..c08fa8daf 100644 --- a/doc/Dependency.rst +++ b/doc/Dependency.rst @@ -23,7 +23,7 @@ pyVHDLModel Package +--------------------------------------------------------+-------------+------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +========================================================+=============+==========================================================================================+=================================================================================================================================+ -| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥6.0.0 | `Apache License, 2.0 `__ | *None* | +--------------------------------------------------------+-------------+------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ @@ -127,7 +127,7 @@ install the mandatory dependencies too. +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ -| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥6.0.0 | `Apache License, 2.0 `__ | *None* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | `wheel `__ | ≥0.40.0 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/doc/DocCoverage.rst b/doc/DocCoverage.rst new file mode 100644 index 000000000..c1e75266a --- /dev/null +++ b/doc/DocCoverage.rst @@ -0,0 +1,7 @@ +Documentation Coverage +###################### + +Documentation coverage generated by `docstr-coverage `__. + +.. report:doc-coverage:: + :packageid: src diff --git a/doc/Installation.rst b/doc/Installation.rst index 9693bba4d..19d04855e 100644 --- a/doc/Installation.rst +++ b/doc/Installation.rst @@ -1,37 +1,209 @@ -.. _installation: +.. _INSTALL: Installation/Updates #################### +.. _INSTALL/pip: +Using PIP to Install from PyPI +****************************** -.. _installation-pip: +The following instruction are using PIP (Package Installer for Python) as a package manager and PyPI (Python Package +Index) as a source of Python packages. -Using PIP -********* -Installation using PIP -====================== +.. _INSTALL/pip/install: + +Installing a Wheel Package from PyPI using PIP +============================================== + +Users of pyTooling can select if the want to install a basic variant of pyTooling. See :ref:`DEP` for more +details. + +.. tab-set:: + + .. tab-item:: Linux/MacOS + :sync: Linux + + .. code-block:: bash + + # Basic sphinx-reports package + pip3 install pyVHDLModel + + .. tab-item:: Windows + :sync: Windows + + .. code-block:: powershell + + # Basic sphinx-reports package + pip install pyVHDLModel + +Developers can install further dependencies for documentation generation (``doc``) or running unit tests (``test``) or +just all (``all``) dependencies. + +.. tab-set:: + + .. tab-item:: Linux/MacOS + :sync: Linux + + .. tab-set:: + + .. tab-item:: With Documentation Dependencies + :sync: Doc + + .. code-block:: bash + + # Install with dependencies to generate documentation + pip3 install pyVHDLModel[doc] + + .. tab-item:: With Unit Testing Dependencies + :sync: Unit + + .. code-block:: bash + + # Install with dependencies to run unit tests + pip3 install pyVHDLModel[test] + + .. tab-item:: All Developer Dependencies + :sync: All + + .. code-block:: bash + + # Install with all developer dependencies + pip install pyVHDLModel[all] + + .. tab-item:: Windows + :sync: Windows + + .. tab-set:: + + .. tab-item:: With Documentation Dependencies + :sync: Doc + + .. code-block:: powershell + + # Install with dependencies to generate documentation + pip install pyVHDLModel[doc] + + .. tab-item:: With Unit Testing Dependencies + :sync: Unit + + .. code-block:: powershell + + # Install with dependencies to run unit tests + pip install pyVHDLModel[test] + + .. tab-item:: All Developer Dependencies + :sync: All + + .. code-block:: powershell + + # Install with all developer dependencies + pip install pyVHDLModel[all] -.. code-block:: bash - pip3 install pyVHDLModel +.. _INSTALL/pip/update: +Updating from PyPI using PIP +============================ -Updating using PIP -================== +.. tab-set:: + + .. tab-item:: Linux/MacOS + :sync: Linux + + .. code-block:: bash + + pip install -U pyVHDLModel + + .. tab-item:: Windows + :sync: Windows + + .. code-block:: powershell + + pip3 install -U pyVHDLModel + + +.. _INSTALL/pip/uninstall: + +Uninstallation using PIP +======================== + +.. tab-set:: + + .. tab-item:: Linux/MacOS + :sync: Linux + + .. code-block:: bash + + pip uninstall pyVHDLModel + + .. tab-item:: Windows + :sync: Windows + + .. code-block:: powershell + + pip3 uninstall pyVHDLModel + + +.. _INSTALL/setup: + +Using ``setup.py`` (legacy) +*************************** + +See sections above on how to use PIP. + +Installation using ``setup.py`` +=============================== .. code-block:: bash - pip3 install -U pyVHDLModel + setup.py install + + +.. _INSTALL/building: + +Local Packaging and Installation via PIP +**************************************** + +For development and bug fixing it might be handy to create a local wheel package and also install it locally on the +development machine. The following instructions will create a local wheel package (``*.whl``) and then use PIP to +install it. As a user might have a sphinx-reports installation from PyPI, it's recommended to uninstall any previous +sphinx-reports packages. (This step is also needed if installing an updated local wheel file with same version number. PIP +will not detect a new version and thus not overwrite/reinstall the updated package contents.) + +Ensure :ref:`packaging requirements ` are installed. + +.. tab-set:: + + .. tab-item:: Linux/MacOS + :sync: Linux + + .. code-block:: bash + + cd + + # Package the code in a wheel (*.whl) + python -m build --wheel + + # Uninstall the old package + python -m pip uninstall -y pyVHDLModel + + # Install from wheel + python -m pip install ./dist/pyVHDLModel-0.28.0-py3-none-any.whl + .. tab-item:: Windows + :sync: Windows + .. code-block:: powershell -.. _installation-setup: + cd -Using setup.py -************** + # Package the code in a wheel (*.whl) + py -m build --wheel -.. todo:: + # Uninstall the old package + py -m pip uninstall -y pyVHDLModel - Describe setup procedure using ``setup.py`` + # Install from wheel + py -m pip install .\dist\pyVHDLModel-0.28.0-py3-none-any.whl diff --git a/doc/_static/css/override.css b/doc/_static/css/override.css new file mode 100644 index 000000000..5f36fec2f --- /dev/null +++ b/doc/_static/css/override.css @@ -0,0 +1,101 @@ +/* theme overrides */ +.rst-content h1, +.rst-content h2 { + margin-top: 24px; + margin-bottom: 6px; + text-decoration: underline; +} + +.rst-content h3, +.rst-content h4, +.rst-content h5, +.rst-content h6 { + margin-top: 12px; + margin-bottom: 6px; +} + +.rst-content p { + margin-bottom: 6px +} + +/* general overrides */ +html { + font-size: 15px; +} + +footer { + font-size: 95%; + text-align: center +} + +footer p { + margin-bottom: 0px /* 12px */; + font-size: 95% +} + +section > p, +.section p, +.simple li { + text-align: justify +} + +/* wyrm overrides */ +.wy-menu-vertical header, +.wy-menu-vertical p.caption { + color: #9b9b9b /* #55a5d9 */; + padding: 0 0.809em /* 0 1.618em */; + margin: 6px 0 0 0 /* 12px 0 0 */; + border-top: 1px solid #9b9b9b; +} + +.wy-side-nav-search { + margin-bottom: 0 /* .809em */; + background-color: #333333 /* #2980b9 */; + /* BTD: */ + /*color: #fcfcfc*/ +} + +.wy-side-nav-search input[type=text] { + border-radius: 0px /* 50px */; +} + +.wy-side-nav-search .wy-dropdown > a, .wy-side-nav-search > a { + /* BTD: */ + /*color: #fcfcfc;*/ + margin-bottom: 0.404em /* .809em */; +} + +.wy-side-nav-search > div.version { + margin: 0 0 6px 0; + /* BTD: */ + /*margin-top: -.4045em;*/ +} + +.wy-nav .wy-menu-vertical a:hover { + background-color: #333333 /* #2980b9 */; +} + +.wy-nav-content { + max-width: 1600px /* 800px */ ; +} + +.wy-nav-top { + background: #333333 /* #2980b9 */; +} + +/* Sphinx Design */ +.sd-tab-set { + margin: 0 +} + +.sd-tab-set > label { + padding-top: .5em; + padding-right: 1em; + padding-bottom: .5em; + padding-left: 1em +} + +.sd-container-fluid { + padding-left: 0; + padding-right: 0; +} diff --git a/doc/conf.py b/doc/conf.py index 9f75be6e7..c93693e2d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -2,18 +2,19 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. from importlib.util import find_spec -from json import loads +from sys import path as sys_path from os.path import abspath from pathlib import Path -from sys import path as sys_path +from json import loads from pyTooling.Packaging import extractVersionInformation ROOT = Path(__file__).resolve().parent -sys_path.insert(0, abspath('.')) -sys_path.insert(0, abspath('..')) -sys_path.insert(0, abspath('../pyVHDLModel')) +sys_path.insert(0, abspath(".")) +sys_path.insert(0, abspath("..")) +sys_path.insert(0, abspath("../pyVHDLModel")) +# sys_path.insert(0, abspath("_extensions")) # ============================================================================== @@ -22,7 +23,7 @@ # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. -project = "pyVHDLModel" +project = "pyVHDLModel" packageInformationFile = Path(f"../{project.replace('.', '/')}/__init__.py") versionInformation = extractVersionInformation(packageInformationFile) @@ -77,43 +78,35 @@ if ctx.is_file(): html_context.update(loads(ctx.open('r').read())) -if (ROOT / "_theme").is_dir(): - html_theme_path = ["."] - html_theme = "_theme" - html_theme_options = { - "logo_only": True, - "home_breadcrumbs": False, - "vcs_pageview_mode": 'blob', -# "body_max_width": None -# "navigation_depth": 5, - } -elif find_spec("sphinx_rtd_theme") is not None: - html_theme = "sphinx_rtd_theme" - html_theme_options = { - "logo_only": True, - "vcs_pageview_mode": 'blob', -# "navigation_depth": 5, - } -else: - html_theme = "alabaster" +# ============================================================================== +# Options for HTML output +# ============================================================================== +html_theme = "sphinx_rtd_theme" +html_theme_options = { + "logo_only": True, + "vcs_pageview_mode": 'blob', + "navigation_depth": 5, +} +html_css_files = [ + 'css/override.css', +] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] html_logo = str(Path(html_static_path[0]) / "logo.svg") html_favicon = str(Path(html_static_path[0]) / "favicon.svg") # Output file base name for HTML help builder. -htmlhelp_basename = 'pyVHDLModelDoc' +htmlhelp_basename = "pyVHDLModelDoc" # If not None, a 'Last updated on:' timestamp is inserted at every page # bottom, using the given strftime format. # The empty string is equivalent to '%b %d, %Y'. html_last_updated_fmt = "%d.%m.%Y" - # ============================================================================== # Python settings # ============================================================================== @@ -128,13 +121,13 @@ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). - 'papersize': 'a4paper', + "papersize": "a4paper", # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. - 'preamble': dedent(r""" + "preamble": dedent(r""" % ================================================================================ % User defined additional preamble code % ================================================================================ @@ -160,10 +153,10 @@ # author, documentclass [howto, manual, or own class]). latex_documents = [ ( master_doc, - 'pyVHDLModel.tex', - 'The pyVHDLModel Documentation', - 'Patrick Lehmann', - 'manual' + "pyVHDLModel.tex", + "The pyVHDLModel Documentation", + "Patrick Lehmann", + "manual" ), ] @@ -174,7 +167,6 @@ extensions = [ # Standard Sphinx extensions "sphinx.ext.autodoc", - "sphinx.ext.coverage", "sphinx.ext.extlinks", "sphinx.ext.intersphinx", "sphinx.ext.inheritance_diagram", @@ -186,9 +178,12 @@ # SphinxContrib extensions "sphinxcontrib.mermaid", # Other extensions - "sphinx_fontawesome", + "sphinx_design", + "sphinx_copybutton", "sphinx_autodoc_typehints", "autoapi.sphinx", + "sphinx_reports", +# User defined extensions ] @@ -196,10 +191,10 @@ # Sphinx.Ext.InterSphinx # ============================================================================== intersphinx_mapping = { - 'python': ('https://docs.python.org/3', None), - 'vasg': ('https://IEEE-P1076.gitlab.io/', None), - 'pyTool': ('https://pyTooling.github.io/pyTooling/', None), - 'ghdl': ('https://GHDL.github.io/ghdl/', None), + "python": ("https://docs.python.org/3", None), + "vasg": ("https://IEEE-P1076.gitlab.io/", None), + "pyTool": ("https://pyTooling.github.io/pyTooling/", None), + "ghdl": ("https://GHDL.github.io/ghdl/", None), } @@ -213,7 +208,7 @@ # "inherited-members": True, # "exclude-members": "__weakref__" #} -autodoc_class_signature = "separated" +#autodoc_class_signature = "separated" autodoc_member_order = "bysource" # alphabetical, groupwise, bysource autodoc_typehints = "both" #autoclass_content = "both" @@ -223,9 +218,11 @@ # Sphinx.Ext.ExtLinks # ============================================================================== extlinks = { - "ghissue": ('https://GitHub.com/vhdl/pyVHDLModel/issues/%s', 'issue #%s'), - "ghpull": ('https://GitHub.com/vhdl/pyVHDLModel/pull/%s', 'pull request #%s'), - "ghsrc": ('https://GitHub.com/vhdl/pyVHDLModel/blob/main/%s?ts=2', None), + "gh": ("https://GitHub.com/%s", "gh:%s"), + "ghissue": ("https://GitHub.com/VHDL/pyVHDLModel/issues/%s", "issue #%s"), + "ghpull": ("https://GitHub.com/VHDL/pyVHDLModel/pull/%s", "pull request #%s"), + "ghsrc": ("https://GitHub.com/VHDL/pyVHDLModel/blob/main/%s", None), + "wiki": ("https://en.wikipedia.org/wiki/%s", None), } @@ -265,14 +262,67 @@ # ============================================================================== -# Sphinx.Ext.Coverage +# Sphinx-reports # ============================================================================== -coverage_show_missing_items = True +report_dep_dependencies = { + "src": ["../requirements.txt"], + "doc": ["requirements.txt"], + "unit": ["../tests/unit/requirements.txt"], + "build": ["../build/requirements.txt"], + "publish": ["../dist/requirements.txt"], +} + +_coverageLevels = { + 30: {"class": "report-cov-below30", "desc": "almost undocumented"}, + 50: {"class": "report-cov-below50", "desc": "poorly documented"}, + 80: {"class": "report-cov-below80", "desc": "roughly documented"}, + 90: {"class": "report-cov-below90", "desc": "well documented"}, + 100: {"class": "report-cov-below100", "desc": "excellent documented"}, + "error": {"class": "report-cov-error", "desc": "internal error"}, +} + +report_unittest_testsuites = { + "src": {"xml_report": "../report/unit/TestReportSummary.xml"}, +} +report_codecov_packages = { + "src": { + "name": "pyVHDLModel", + "json_report": "../report/coverage/coverage.json", + "fail_below": 80, + "levels": _coverageLevels + } +} +report_doccov_packages = { + "src": { + "name": "pyVHDLModel", + "directory": "../pyVHDLModel", + "fail_below": 80, + "levels": _coverageLevels + } +} + + +# ============================================================================== +# Sphinx_Design +# ============================================================================== +sd_fontawesome_latex = True # ============================================================================== # AutoAPI.Sphinx # ============================================================================== autoapi_modules = { - 'pyVHDLModel': {'output': "pyVHDLModel", "override": True} + project: { + "template": "module", + "output": project, + "override": True + } } + +# for directory in [mod for mod in Path(f"../{project}").iterdir() if mod.is_dir() and mod.name != "__pycache__"]: +# print(f"Adding module rule for '{project}.{directory.name}'") +# autoapi_modules[f"{project}.{directory.name}"] = { +# "template": "module", +# "output": project, +# "override": True +# } diff --git a/doc/coverage/index.rst b/doc/coverage/index.rst index 80bbad2e9..bad51b90a 100644 --- a/doc/coverage/index.rst +++ b/doc/coverage/index.rst @@ -1,4 +1,7 @@ -Coverage Report -############### +Code Coverage Report +#################### -*Placeholder for the Coverage report generated with* ``pytest`` *and* ``coverage``. +Code coverage report generated with `pytest `__ and `Coverage.py `__. + +.. report:code-coverage:: + :packageid: src diff --git a/doc/index.rst b/doc/index.rst index c6364fb39..499a5bf7f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -192,9 +192,6 @@ License This Python package (source code) is licensed under **Apache License 2.0**. |br| The accompanying documentation is licensed under **Creative Commons - Attribution 4.0 (CC-BY 4.0)**. ------------------------------------- - -.. |docdate| date:: %d.%b %Y - %H:%M .. only:: html @@ -237,9 +234,10 @@ License :caption: References and Reports :hidden: - pyVHDLModel/pyVHDLModel - Unittest Report ➚ - Coverage Report ➚ + Python Class Reference + unittests/index + coverage/index + Doc. Coverage Report Static Type Check Report ➚ @@ -257,3 +255,4 @@ License Glossary genindex Python Module Index + TODO diff --git a/doc/requirements.txt b/doc/requirements.txt index 73d902076..9966ac9d4 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,20 +1,25 @@ -r ../requirements.txt -pyTooling >= 5.0.0, <6.0 +pyTooling ~= 6.0 # Enforce latest version on ReadTheDocs -Sphinx >= 7.1.0, <8.0 +sphinx >= 7.2, < 8.0 +docutils >= 0.18.0, < 0.19.0 + +# ReadTheDocs Theme +sphinx_rtd_theme ~= 2.0.0 # Sphinx Extenstions -#sphinx.ext.coverage #sphinxcontrib-actdiag>=0.8.5 -sphinxcontrib-mermaid>=0.9.2 +sphinxcontrib-mermaid >= 0.9.2 #sphinxcontrib-seqdiag>=0.8.5 #sphinxcontrib-textstyle>=0.2.1 #sphinxcontrib-spelling>=2.2.0 -autoapi>=2.0.1 -sphinx_fontawesome >= 0.0.6 -sphinx_autodoc_typehints >= 1.24.0 +autoapi >= 2.0.1 +sphinx_design >= 0.5.0 +sphinx-copybutton >= 0.5.2 +sphinx_autodoc_typehints >= 1.25.2 +sphinx_reports ~= 0.5 # changelog>=0.3.5 # BuildTheDocs Extensions (mostly patched Sphinx extensions) diff --git a/doc/unittests/index.rst b/doc/unittests/index.rst index dd6de5e77..8b840ee66 100644 --- a/doc/unittests/index.rst +++ b/doc/unittests/index.rst @@ -1,4 +1,7 @@ -UnitTest Report -############### +Unittest Summary Report +####################### -*Placeholder for the unittest report generated with* ``pytest``. +Unittest report generated with `pytest `__. + +.. report:unittest-summary:: + :reportid: src diff --git a/setup.py b/setup.py index 51f1f8d07..f92048ddc 100644 --- a/setup.py +++ b/setup.py @@ -30,6 +30,8 @@ # ==================================================================================================================== # # """Package installer for 'An abstract VHDL language model'.""" +from setuptools import setup + from pathlib import Path from pyTooling.Packaging import DescribePythonPackageHostedOnGitHub, DEFAULT_CLASSIFIERS @@ -38,7 +40,7 @@ packageDirectory = packageName packageInformationFile = Path(f"{packageDirectory}/__init__.py") -DescribePythonPackageHostedOnGitHub( +setup(**DescribePythonPackageHostedOnGitHub( packageName=packageName, description="An abstract VHDL language model.", gitHubNamespace=gitHubNamespace, @@ -53,4 +55,4 @@ dataFiles={ packageName: ["py.typed"] } -) +)) From dd81d856c4fbe93b34a57961d07e7374a1975231 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 21 Jan 2024 02:07:04 +0100 Subject: [PATCH 10/10] Disabled PDF generation. --- .github/workflows/Pipeline.yml | 20 ++++++------ doc/TODO.rst | 4 +++ doc/conf.py | 2 +- doc/index.rst | 2 +- doc/shields.inc | 56 +++++++++++++++++----------------- 5 files changed, 44 insertions(+), 40 deletions(-) create mode 100644 doc/TODO.rst diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml index 017fd2bea..3a63ce596 100644 --- a/.github/workflows/Pipeline.yml +++ b/.github/workflows/Pipeline.yml @@ -108,15 +108,15 @@ jobs: html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} - PDFDocumentation: - uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@r1 - needs: - - UnitTestingParams - - HTMLDocumentation - with: - document: pyVHDLModel - latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} - pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} +# PDFDocumentation: +# uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@r1 +# needs: +# - UnitTestingParams +# - HTMLDocumentation +# with: +# document: pyVHDLModel +# 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@r1 @@ -158,7 +158,7 @@ jobs: - UnitTesting - StaticTypeCheck - HTMLDocumentation - - PDFDocumentation +# - PDFDocumentation - PublishTestResults - PublishCoverageResults - PublishToGitHubPages diff --git a/doc/TODO.rst b/doc/TODO.rst new file mode 100644 index 000000000..3144da040 --- /dev/null +++ b/doc/TODO.rst @@ -0,0 +1,4 @@ +TODOs +##### + +.. todolist:: diff --git a/doc/conf.py b/doc/conf.py index c93693e2d..b60c29e65 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -282,7 +282,7 @@ } report_unittest_testsuites = { - "src": {"xml_report": "../report/unit/TestReportSummary.xml"}, + "src": {"xml_report": "../report/unit/TestReportSummary.xml"}, } report_codecov_packages = { "src": { diff --git a/doc/index.rst b/doc/index.rst index 499a5bf7f..70d2ebf19 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -3,7 +3,7 @@ .. image:: _static/logo.svg :height: 90 px :align: center - :target: https://GitHub.com/vhdl/pyVHDLModel + :target: https://GitHub.com/VHDL/pyVHDLModel .. raw:: html diff --git a/doc/shields.inc b/doc/shields.inc index d7bb73e5d..f749f98ed 100644 --- a/doc/shields.inc +++ b/doc/shields.inc @@ -7,11 +7,11 @@ .. |SHIELD:svg:pyVHDLModel-github| image:: https://img.shields.io/badge/VHDL-pyVHDLModel-29b6f6.svg?longCache=true&style=flat-square&logo=GitHub&labelColor=0277bd :alt: Sourcecode on GitHub :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel + :target: https://GitHub.com/VHDL/pyVHDLModel .. |SHIELD:png:pyVHDLModel-github| image:: https://raster.shields.io/badge/VHDL-pyVHDLModel-29b6f6.svg?longCache=true&style=flat-square&logo=GitHub&labelColor=0277bd :alt: Sourcecode on GitHub :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel + :target: https://GitHub.com/VHDL/pyVHDLModel .. # Sourcecode license .. |SHIELD:svg:pyVHDLModel-src-license| image:: https://img.shields.io/pypi/l/pyVHDLModel?longCache=true&style=flat-square&logo=Apache&label=code @@ -24,41 +24,41 @@ :target: https://GitHub.com/VHDL/pyVHDLModel/blob/main/LICENSE.md .. # GitHub tag -.. |SHIELD:svg:pyVHDLModel-tag| image:: https://img.shields.io/github/v/tag/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub&include_prereleases +.. |SHIELD:svg:pyVHDLModel-tag| image:: https://img.shields.io/github/v/tag/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub&include_prereleases :alt: GitHub tag (latest SemVer incl. pre-release :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/tags -.. |SHIELD:png:pyVHDLModel-tag| image:: https://raster.shields.io/github/v/tag/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub&include_prereleases + :target: https://GitHub.com/VHDL/pyVHDLModel/tags +.. |SHIELD:png:pyVHDLModel-tag| image:: https://raster.shields.io/github/v/tag/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub&include_prereleases :alt: GitHub tag (latest SemVer incl. pre-release :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/tags + :target: https://GitHub.com/VHDL/pyVHDLModel/tags .. # GitHub release date -.. |SHIELD:svg:pyVHDLModel-date| image:: https://img.shields.io/github/release-date/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub +.. |SHIELD:svg:pyVHDLModel-date| image:: https://img.shields.io/github/release-date/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub :alt: GitHub release date :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/releases -.. |SHIELD:png:pyVHDLModel-date| image:: https://raster.shields.io/github/release-date/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub + :target: https://GitHub.com/VHDL/pyVHDLModel/releases +.. |SHIELD:png:pyVHDLModel-date| image:: https://raster.shields.io/github/release-date/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=GitHub :alt: GitHub release date :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/releases + :target: https://GitHub.com/VHDL/pyVHDLModel/releases .. # GitHub/Libraries dependent projects .. |SHIELD:svg:pyVHDLModel-lib-dep| image:: https://img.shields.io/librariesio/dependent-repos/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Dependent repos (via libraries.io) :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/network/dependents + :target: https://GitHub.com/VHDL/pyVHDLModel/network/dependents .. |SHIELD:png:pyVHDLModel-lib-dep| image:: https://raster.shields.io/librariesio/dependent-repos/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Dependent repos (via libraries.io) :height: 22 - :target: https://GitHub.com/vhdl/pyVHDLModel/network/dependents + :target: https://GitHub.com/VHDL/pyVHDLModel/network/dependents .. # GHA workflow -.. |SHIELD:svg:pyVHDLModel-gha-test| image:: https://img.shields.io/github/actions/workflow/status/vhdl/pyVHDLModel/Pipeline.yml?branch=main&longCache=true&style=flat-square&label=Build%20and%20Test&logo=GitHub%20Actions&logoColor=FFFFFF +.. |SHIELD:svg:pyVHDLModel-gha-test| image:: https://img.shields.io/github/actions/workflow/status/VHDL/pyVHDLModel/Pipeline.yml?branch=main&longCache=true&style=flat-square&label=Build%20and%20Test&logo=GitHub%20Actions&logoColor=FFFFFF :alt: GitHub Workflow - Build and Test Status :height: 22 :target: https://GitHub.com/VHDL/pyVHDLModel/actions/workflows/Pipeline.yml -.. |SHIELD:png:pyVHDLModel-gha-test| image:: https://raster.shields.io/github/actions/workflow/status/vhdl/pyVHDLModel/Pipeline.yml?branch=main&longCache=true&style=flat-square&label=Build%20and%20Test&logo=GitHub%20Actions&logoColor=FFFFFF +.. |SHIELD:png:pyVHDLModel-gha-test| image:: https://raster.shields.io/github/actions/workflow/status/VHDL/pyVHDLModel/Pipeline.yml?branch=main&longCache=true&style=flat-square&label=Build%20and%20Test&logo=GitHub%20Actions&logoColor=FFFFFF :alt: GitHub Workflow - Build and Test Status :height: 22 :target: https://GitHub.com/VHDL/pyVHDLModel/actions/workflows/Pipeline.yml @@ -67,41 +67,41 @@ .. |SHIELD:svg:pyVHDLModel-codacy-quality| image:: https://img.shields.io/codacy/grade/2286426d2b11417e90010427b7fed8e7?longCache=true&style=flat-square&logo=codacy :alt: Codacy - Quality :height: 22 - :target: https://www.codacy.com/gh/vhdl/pyVHDLModel + :target: https://www.codacy.com/gh/VHDL/pyVHDLModel .. |SHIELD:png:pyVHDLModel-codacy-quality| image:: https://raster.shields.io/codacy/grade/2286426d2b11417e90010427b7fed8e7?longCache=true&style=flat-square&logo=codacy :alt: Codacy - Quality :height: 22 - :target: https://www.codacy.com/gh/vhdl/pyVHDLModel + :target: https://www.codacy.com/gh/VHDL/pyVHDLModel .. # Codacy - coverage .. |SHIELD:svg:pyVHDLModel-codacy-coverage| image:: https://img.shields.io/codacy/coverage/2286426d2b11417e90010427b7fed8e7?longCache=true&style=flat-square&logo=codacy :alt: Codacy - Line Coverage :height: 22 - :target: https://www.codacy.com/gh/vhdl/pyVHDLModel + :target: https://www.codacy.com/gh/VHDL/pyVHDLModel .. |SHIELD:png:pyVHDLModel-codacy-coverage| image:: https://raster.shields.io/codacy/coverage/2286426d2b11417e90010427b7fed8e7?longCache=true&style=flat-square&logo=codacy :alt: Codacy - Line Coverage :height: 22 - :target: https://www.codacy.com/gh/vhdl/pyVHDLModel + :target: https://www.codacy.com/gh/VHDL/pyVHDLModel .. # Codecov - coverage -.. |SHIELD:svg:pyVHDLModel-codecov-coverage| image:: https://img.shields.io/codecov/c/github/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=Codecov +.. |SHIELD:svg:pyVHDLModel-codecov-coverage| image:: https://img.shields.io/codecov/c/github/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=Codecov :alt: Codecov - Branch Coverage :height: 22 - :target: https://codecov.io/gh/vhdl/pyVHDLModel -.. |SHIELD:png:pyVHDLModel-codecov-coverage| image:: https://raster.shields.io/codecov/c/github/vhdl/pyVHDLModel?longCache=true&style=flat-square&logo=Codecov + :target: https://codecov.io/gh/VHDL/pyVHDLModel +.. |SHIELD:png:pyVHDLModel-codecov-coverage| image:: https://raster.shields.io/codecov/c/github/VHDL/pyVHDLModel?longCache=true&style=flat-square&logo=Codecov :alt: Codecov - Branch Coverage :height: 22 - :target: https://codecov.io/gh/vhdl/pyVHDLModel + :target: https://codecov.io/gh/VHDL/pyVHDLModel .. # Libraries - source rank .. |SHIELD:svg:pyVHDLModel-lib-rank| image:: https://img.shields.io/librariesio/sourcerank/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Libraries.io SourceRank :height: 22 - :target: https://libraries.io/github/vhdl/pyVHDLModel/sourcerank + :target: https://libraries.io/github/VHDL/pyVHDLModel/sourcerank .. |SHIELD:png:pyVHDLModel-lib-rank| image:: https://raster.shields.io/librariesio/sourcerank/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Libraries.io SourceRank :height: 22 - :target: https://libraries.io/github/vhdl/pyVHDLModel/sourcerank + :target: https://libraries.io/github/VHDL/pyVHDLModel/sourcerank .. # PyPI tag .. |SHIELD:svg:pyVHDLModel-pypi-tag| image:: https://img.shields.io/pypi/v/pyVHDLModel?longCache=true&style=flat-square&logo=PyPI&logoColor=FBE072 @@ -133,11 +133,11 @@ .. |SHIELD:svg:pyVHDLModel-lib-status| image:: https://img.shields.io/librariesio/release/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Libraries.io status for latest release :height: 22 - :target: https://libraries.io/github/vhdl/pyVHDLModel + :target: https://libraries.io/github/VHDL/pyVHDLModel .. |SHIELD:png:pyVHDLModel-lib-status| image:: https://raster.shields.io/librariesio/release/pypi/pyVHDLModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff :alt: Libraries.io status for latest release :height: 22 - :target: https://libraries.io/github/vhdl/pyVHDLModel + :target: https://libraries.io/github/VHDL/pyVHDLModel .. # Documentation license .. |SHIELD:svg:pyVHDLModel-doc-license| image:: https://img.shields.io/badge/doc-CC--BY%204.0-green?longCache=true&style=flat-square&logo=CreativeCommons&logoColor=fff @@ -153,11 +153,11 @@ .. |SHIELD:svg:pyVHDLModel-ghp-doc| image:: https://img.shields.io/website?longCache=true&style=flat-square&label=vhdl.github.io%2FpyVHDLModel&logo=GitHub&logoColor=fff&up_color=blueviolet&up_message=Read%20now%20%E2%9E%9A&url=https%3A%2F%2Fvhdl.github.io%2FpyVHDLModel%2Findex.html :alt: Documentation - Read Now! :height: 22 - :target: https://vhdl.github.io/pyVHDLModel/ + :target: https://VHDL.github.io/pyVHDLModel/ .. |SHIELD:png:pyVHDLModel-ghp-doc| image:: https://raster.shields.io/website?longCache=true&style=flat-square&label=vhdl.github.io%2FpyVHDLModel&logo=GitHub&logoColor=fff&up_color=blueviolet&up_message=Read%20now%20%E2%9E%9A&url=https%3A%2F%2Fvhdl.github.io%2FpyVHDLModel%2Findex.html :alt: Documentation - Read Now! :height: 22 - :target: https://vhdl.github.io/pyVHDLModel/ + :target: https://VHDL.github.io/pyVHDLModel/ .. # Gitter .. |SHIELD:svg:pyVHDLModel-gitter| image:: https://img.shields.io/badge/chat-on%20gitter-4db797.svg?longCache=true&style=flat-square&logo=gitter&logoColor=e8ecef