diff --git a/.github/actions/CheckArtifactNames/action.yml b/.github/actions/CheckArtifactNames/action.yml new file mode 100644 index 0000000..173addd --- /dev/null +++ b/.github/actions/CheckArtifactNames/action.yml @@ -0,0 +1,75 @@ +name: Check artifact names +branding: + icon: check-square + color: green +description: Check generated artifact names. +author: Patrick Lehmann (@Paebbels) + +inputs: + prefix: + description: + type: string + required: true + generated-names: + description: + type: string + required: true + +runs: + using: composite + steps: + - name: Install dependencies + shell: bash + run: pip install --disable-pip-version-check --break-system-packages pyTooling + + - name: Check artifact names + id: check + shell: python + run: | + from json import loads as json_loads + from sys import exit + + from pyTooling.Common import zipdicts + + actualArtifactNames = json_loads("""${{ inputs.generated-names }}""".replace("'", '"')) + + expectedName = "${{ inputs.prefix }}" + expectedArtifacts = { + "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", + "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", + "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", + "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", + "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", + "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", + "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", + "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", + "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", + "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", + "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", + "statictyping_html": f"{expectedName}-StaticTyping-HTML", + "package_all": f"{expectedName}-Packages", + "documentation_html": f"{expectedName}-Documentation-HTML", + "documentation_latex": f"{expectedName}-Documentation-LaTeX", + "documentation_pdf": f"{expectedName}-Documentation-PDF", + } + + errors = 0 + if len(actualArtifactNames) != len(expectedArtifacts): + print(f"❌ Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") + errors += 1 + else: + print("✅ Number of 'artifact_names' as expected.") + print("Checking artifact names ...") + + for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): + if actual != expected: + print(f" ❌ Artifact name '{key}' does not match: {actual} != {expected}.") + errors += 1 + else: + print(f" ☑ Artifact name as expected: {key} ⇢ {actual}.") + + if errors == 0: + print("✅ All checks PASSED.") + else: + print(f"❌ Counted {errors} errors.") + exit(errors) diff --git a/.github/actions/CheckJobMatrix/action.yml b/.github/actions/CheckJobMatrix/action.yml new file mode 100644 index 0000000..54c475d --- /dev/null +++ b/.github/actions/CheckJobMatrix/action.yml @@ -0,0 +1,92 @@ +name: Check job matrix +branding: + icon: check-square + color: green +description: Check generated job matrix. +author: Patrick Lehmann (@Paebbels) + +inputs: + expected-default-version: + description: + type: string + required: true + expected-python-versions: + description: + type: string + required: true + expected-systems: + description: + type: string + required: true + expected-exclude-jobs: + description: + type: string + required: true + expected-include-jobs: + description: + type: string + required: true + generated-default-version: + description: + type: string + required: true + generated-jobmatrix: + description: + type: string + required: true + +runs: + using: composite + steps: + - name: Check parameters + id: check + shell: python + run: | + from json import loads as json_loads + from sys import exit + + actualPythonVersion = """${{ inputs.generated-default-version }}""" + actualPythonJobs = json_loads("""${{ inputs.generated-jobmatrix }}""".replace("'", '"')) + + expectedPythonVersion = """${{ inputs.expected-default-version }}""" + expectedPythons = json_loads("""${{ inputs.expected-python-versions }}""".replace("'", '"')) + expectedSystems = json_loads("""${{ inputs.expected-systems }}""".replace("'", '"')) + excludedJobs = json_loads("""${{ inputs.expected-exclude-jobs }}""".replace("'", '"')) + includeJobs = json_loads("""${{ inputs.expected-include-jobs }}""".replace("'", '"')) + expectedJobs = sorted([f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs) + + errors = 0 + if actualPythonVersion != expectedPythonVersion: + print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") + errors += 1 + + if len(actualPythonJobs) != len(expectedJobs): + print(f"❌ Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") + print("Actual jobs:") + for job in actualPythonJobs: + if job['system'] == "msys2": + print(f" {job['runtime'].lower()}:{job['python']}") + else: + print(f" {job['system']}:{job['python']}") + + print("Expected jobs:") + for job in expectedJobs: + print(f" {job}") + errors += 1 + else: + print("✅ Number of 'python_jobs' as expected.") + print("Checking job combinations ...") + + actualJobs = sorted([f"{job['system'] if job['system'] != 'msys2' else job['runtime'].lower()}:{job['python']}" for job in actualPythonJobs]) + for actual, expected in zip(actualJobs, expectedJobs): + if actual != expected: + print(f" ❌ Job does not match: {actual} != {expected}.") + errors += 1 + else: + print(f" ☑ Job as expected: {actual}.") + + if errors == 0: + print("✅ All checks PASSED.") + else: + print(f"❌ Counted {errors} errors.") + exit(errors) diff --git a/.github/workflows/CheckCodeQuality.yml b/.github/workflows/CheckCodeQuality.yml index ce32362..7666fd4 100644 --- a/.github/workflows/CheckCodeQuality.yml +++ b/.github/workflows/CheckCodeQuality.yml @@ -32,7 +32,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string package_directory: description: 'The package''s directory' diff --git a/.github/workflows/CheckDocumentation.yml b/.github/workflows/CheckDocumentation.yml index d519687..5b71d5e 100644 --- a/.github/workflows/CheckDocumentation.yml +++ b/.github/workflows/CheckDocumentation.yml @@ -32,7 +32,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string directory: description: 'Source code directory to check.' diff --git a/.github/workflows/CompletePipeline.yml b/.github/workflows/CompletePipeline.yml index ec86853..086bbc8 100644 --- a/.github/workflows/CompletePipeline.yml +++ b/.github/workflows/CompletePipeline.yml @@ -36,12 +36,12 @@ on: unittest_python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string unittest_python_version_list: description: 'Space separated list of Python versions to run tests with.' required: false - default: '3.9 3.10 3.11 3.12 3.13' + default: '3.10 3.11 3.12 3.13 3.14' type: string unittest_system_list: description: 'Space separated list of systems to run tests on.' @@ -66,7 +66,7 @@ on: apptest_python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string apptest_python_version_list: description: 'Space separated list of Python versions to run tests with.' diff --git a/.github/workflows/ExtractConfiguration.yml b/.github/workflows/ExtractConfiguration.yml index a52b043..d84bfc5 100644 --- a/.github/workflows/ExtractConfiguration.yml +++ b/.github/workflows/ExtractConfiguration.yml @@ -32,7 +32,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string coverage_config: description: 'Path to the .coveragerc file. Use pyproject.toml by default.' diff --git a/.github/workflows/Package.yml b/.github/workflows/Package.yml index 365c4ee..dd5b563 100644 --- a/.github/workflows/Package.yml +++ b/.github/workflows/Package.yml @@ -33,7 +33,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string requirements: description: 'Python dependencies to be installed through pip; if empty, use pyproject.toml through build.' diff --git a/.github/workflows/Parameters.yml b/.github/workflows/Parameters.yml index 5d6b91f..3fe0e1f 100644 --- a/.github/workflows/Parameters.yml +++ b/.github/workflows/Parameters.yml @@ -48,12 +48,12 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string python_version_list: description: 'Space separated list of Python versions to run tests with.' required: false - default: '3.9 3.10 3.11 3.12 3.13' + default: '3.10 3.11 3.12 3.13 3.14' type: string system_list: description: 'Space separated list of systems to run tests on.' @@ -259,8 +259,8 @@ jobs: disable_list = "${{ inputs.disable_list }}".strip() currentMSYS2Version = "3.12" - currentAlphaVersion = "3.14" - currentAlphaRelease = "3.14.0-rc.3" + currentAlphaVersion = "3.15" + currentAlphaRelease = "3.15.0-a.1" if systems == "": print("::error title=Parameter::system_list is empty.") diff --git a/.github/workflows/PublishOnPyPI.yml b/.github/workflows/PublishOnPyPI.yml index cae9dfa..ef50c14 100644 --- a/.github/workflows/PublishOnPyPI.yml +++ b/.github/workflows/PublishOnPyPI.yml @@ -33,7 +33,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string requirements: description: 'Python dependencies to be installed through pip.' diff --git a/.github/workflows/SphinxDocumentation.yml b/.github/workflows/SphinxDocumentation.yml index 997faed..371ce90 100644 --- a/.github/workflows/SphinxDocumentation.yml +++ b/.github/workflows/SphinxDocumentation.yml @@ -32,7 +32,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string requirements: description: 'Python dependencies to be installed through pip.' diff --git a/.github/workflows/StaticTypeCheck.yml b/.github/workflows/StaticTypeCheck.yml index 431d239..a93e80b 100644 --- a/.github/workflows/StaticTypeCheck.yml +++ b/.github/workflows/StaticTypeCheck.yml @@ -33,7 +33,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string requirements: description: 'Python dependencies to be installed through pip.' diff --git a/.github/workflows/VerifyDocs.yml b/.github/workflows/VerifyDocs.yml index 637c457..4e89d0e 100644 --- a/.github/workflows/VerifyDocs.yml +++ b/.github/workflows/VerifyDocs.yml @@ -33,7 +33,7 @@ on: python_version: description: 'Python version.' required: false - default: '3.13' + default: '3.14' type: string jobs: diff --git a/.github/workflows/_Checking_ArtifactCleanup.yml b/.github/workflows/_Checking_ArtifactCleanup.yml index 9d686d2..bf263ff 100644 --- a/.github/workflows/_Checking_ArtifactCleanup.yml +++ b/.github/workflows/_Checking_ArtifactCleanup.yml @@ -9,7 +9,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.12 3.13" + python_version_list: "3.13 3.14" # py-1, py-0 system_list: "ubuntu windows" Testing: diff --git a/.github/workflows/_Checking_JobTemplates.yml b/.github/workflows/_Checking_JobTemplates.yml index b1b45bc..740312e 100644 --- a/.github/workflows/_Checking_JobTemplates.yml +++ b/.github/workflows/_Checking_JobTemplates.yml @@ -15,7 +15,8 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: package_name: 'myPackage' - python_version_list: '3.9 3.10 3.11 3.12 3.13 3.14 pypy-3.10 pypy-3.11' + python_version: '3.13' # workaround to use Sphinx in Python 3.13 for sphinx_reports not yet supporting lxml 6.0 + python_version_list: '3.10 3.11 3.12 3.13 3.14 pypy-3.10 pypy-3.11' disable_list: 'windows-arm:pypy-3.10 windows-arm:pypy-3.11' PlatformTestingParams: @@ -88,7 +89,9 @@ jobs: with: python_version: ${{ needs.UnitTestingParams.outputs.python_version }} package_directory: ${{ needs.UnitTestingParams.outputs.package_directory }} - artifact: CodeQuality + bandit: 'true' + pylint: 'true' + artifact: 'CodeQuality' DocCoverage: uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@r6 diff --git a/.github/workflows/_Checking_NamespacePackage_Pipeline.yml b/.github/workflows/_Checking_NamespacePackage_Pipeline.yml index 0325cd4..5eb9e57 100644 --- a/.github/workflows/_Checking_NamespacePackage_Pipeline.yml +++ b/.github/workflows/_Checking_NamespacePackage_Pipeline.yml @@ -8,11 +8,15 @@ jobs: NamespacePackage: uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r6 with: - package_namespace: myFramework - package_name: Extension - codecov: true - codacy: true - dorny: true + package_namespace: 'myFramework' + package_name: 'Extension' + unittest_python_version: '3.13' # workaround to use Sphinx in Python 3.13 for sphinx_reports not yet supporting lxml 6.0 + bandit: 'true' + pylint: 'true' + codecov: 'true' + codacy: 'true' + dorny: 'true' + cleanup: 'false' secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/_Checking_Parameters.yml b/.github/workflows/_Checking_Parameters.yml index 306f9d3..b1e54b3 100644 --- a/.github/workflows/_Checking_Parameters.yml +++ b/.github/workflows/_Checking_Parameters.yml @@ -14,7 +14,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.12 3.13 pypy-3.10 pypy-3.11" + python_version_list: "3.12 3.13 pypy-3.10 pypy-3.11" # py-2, py-1, pypy-1, pypy-0 Params_Systems: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 @@ -26,7 +26,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.12" + python_version_list: "3.12" # py-2 system_list: "ubuntu windows macos macos-arm" include_list: "ubuntu:3.13 ubuntu:3.14 ubuntu-arm:3.12" @@ -34,7 +34,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.13" + python_version_list: "3.13" # py-1 system_list: "ubuntu windows macos macos-arm" exclude_list: "windows:3.13 windows:3.14" @@ -42,7 +42,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.13" + python_version_list: "3.13" # py-1 system_list: "ubuntu windows macos macos-arm" disable_list: "windows:3.13 windows:3.14" @@ -50,7 +50,7 @@ jobs: uses: pyTooling/Actions/.github/workflows/Parameters.yml@r6 with: name: Example - python_version_list: "3.12 3.13" + python_version_list: "3.12 3.13" # py-2, py-1 system_list: "ubuntu windows macos macos-arm" include_list: "windows:3.10 windows:3.11 windows:3.13" exclude_list: "macos:3.12 macos:3.13" @@ -63,75 +63,25 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_Default' - run: | - from json import loads as json_loads - from sys import exit + - name: Checking job matrix from 'Params_Default' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]' + expected-systems: '["ubuntu", "ubuntu-arm", "windows", "windows-arm", "macos", "macos-arm"]' + expected-exclude-jobs: '["windows-arm:3.10"]' + expected-include-jobs: '["mingw64:3.12", "ucrt64:3.12"]' + generated-default-version: ${{ needs.Params_Default.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_Default.outputs.python_jobs }} - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.9", "3.10", "3.11", "3.12", "3.13"] - expectedSystems = ["ubuntu", "ubuntu-arm", "windows", "windows-arm", "macos", "macos-arm"] - excludedJobs = ["windows-arm:3.9", "windows-arm:3.10"] - includeJobs = ["mingw64:3.12", "ucrt64:3.12"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_Default.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_Default.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_Default.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking artifact names from 'Params_Default' + uses: ./.github/actions/CheckArtifactNames + with: + prefix: 'Example' + generated-names: ${{ needs.Params_Default.outputs.artifact_names }} Params_Check_PythonVersions: needs: @@ -141,75 +91,19 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_PythonVersions' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.12", "3.13", "pypy-3.10", "pypy-3.11"] - expectedSystems = ["ubuntu", "ubuntu-arm", "windows", "windows-arm", "macos", "macos-arm"] - excludedJobs = ["windows-arm:pypy-3.10", "windows-arm:pypy-3.11"] - includeJobs = ["mingw64:3.12", "ucrt64:3.12"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_PythonVersions.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_PythonVersions.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_PythonVersions.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_PythonVersions' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.12", "3.13", "pypy-3.10", "pypy-3.11"]' + expected-systems: '["ubuntu", "ubuntu-arm", "windows", "windows-arm", "macos", "macos-arm"]' + expected-exclude-jobs: '["windows-arm:pypy-3.10", "windows-arm:pypy-3.11"]' + expected-include-jobs: '["mingw64:3.12", "ucrt64:3.12"]' + generated-default-version: ${{ needs.Params_PythonVersions.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_PythonVersions.outputs.python_jobs }} Params_Check_Systems: needs: @@ -219,75 +113,19 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_Systems' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.9", "3.10", "3.11", "3.12", "3.13"] - expectedSystems = ["windows"] - excludedJobs = [] - includeJobs = ["mingw64:3.12", "ucrt64:3.12"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_Systems.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_Systems.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_Systems.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_Systems' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]' + expected-systems: '["windows"]' + expected-exclude-jobs: '[]' + expected-include-jobs: '["mingw32:3.12", "mingw64:3.12"]' + generated-default-version: ${{ needs.Params_Systems.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_Systems.outputs.python_jobs }} Params_Check_Include: needs: @@ -297,75 +135,19 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_Include' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.12"] - expectedSystems = ["ubuntu", "windows", "macos", "macos-arm"] - excludedJobs = [] - includeJobs = ["ubuntu:3.13", "ubuntu:3.14", "ubuntu-arm:3.12"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_Include.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_Include.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_Include.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_Include' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.12"]' + expected-systems: '["ubuntu", "windows", "macos", "macos-arm"]' + expected-exclude-jobs: '[]' + expected-include-jobs: '["ubuntu:3.13", "ubuntu:3.14", "ubuntu-arm:3.12"]' + generated-default-version: ${{ needs.Params_Include.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_Include.outputs.python_jobs }} Params_Check_Exclude: needs: @@ -375,75 +157,19 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_Exclude' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.13"] - expectedSystems = ["ubuntu", "macos", "macos-arm"] - excludedJobs = [] - includeJobs = [] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_Exclude.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_Exclude.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_Exclude.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_Exclude' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.13"]' + expected-systems: '["ubuntu", "macos", "macos-arm"]' + expected-exclude-jobs: '[]' + expected-include-jobs: '[]' + generated-default-version: ${{ needs.Params_Exclude.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_Exclude.outputs.python_jobs }} Params_Check_Disable: needs: @@ -453,75 +179,19 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_Disable' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.13"] - expectedSystems = ["ubuntu", "windows", "macos", "macos-arm"] - excludedJobs = ["windows:3.13"] - includeJobs = [] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_Disable.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_Disable.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_Disable.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_Disable' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.13"]' + expected-systems: '["ubuntu", "windows", "macos", "macos-arm"]' + expected-exclude-jobs: '["windows:3.13"]' + expected-include-jobs: '[]' + generated-default-version: ${{ needs.Params_Disable.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_Disable.outputs.python_jobs }} Params_Check_All: needs: @@ -531,72 +201,16 @@ jobs: run: shell: python steps: - - name: Install dependencies - shell: bash - run: pip install --disable-pip-version-check --break-system-packages pyTooling + - name: Checkout repository to access local Action + uses: actions/checkout@v5 - - name: Checking results from 'Params_All' - run: | - from json import loads as json_loads - from sys import exit - - from pyTooling.Common import zipdicts - - expectedPythonVersion = "3.13" - expectedPythons = ["3.12", "3.13"] - expectedSystems = ["ubuntu", "macos-arm", "windows"] - excludedJobs = [] - includeJobs = ["windows:3.10", "windows:3.11", "windows:3.13"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons if f"{system}:{python}" not in excludedJobs] + includeJobs - expectedName = "Example" - expectedArtifacts = { - "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", - "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", - "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", - "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", - "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", - "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", - "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", - "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", - "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", - "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", - "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", - "statictyping_html": f"{expectedName}-StaticTyping-HTML", - "package_all": f"{expectedName}-Packages", - "documentation_html": f"{expectedName}-Documentation-HTML", - "documentation_latex": f"{expectedName}-Documentation-LaTeX", - "documentation_pdf": f"{expectedName}-Documentation-PDF", - } - - actualPythonVersion = """${{ needs.Params_All.outputs.python_version }}""" - actualPythonJobs = json_loads("""${{ needs.Params_All.outputs.python_jobs }}""".replace("'", '"')) - actualArtifactNames = json_loads("""${{ needs.Params_All.outputs.artifact_names }}""".replace("'", '"')) - errors = 0 - - if actualPythonVersion != expectedPythonVersion: - print(f"'python_version' does not match: '{actualPythonVersion}' != '{expectedPythonVersion}'.") - errors += 1 - if len(actualPythonJobs) != len(expectedJobs): - print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") - print("Actual jobs:") - for job in actualPythonJobs: - if job['system'] == "msys2": - print(f" {job['runtime'].lower()}:{job['python']}") - else: - print(f" {job['system']}:{job['python']}") - print("Expected jobs:") - for job in expectedJobs: - print(f" {job}") - errors += 1 - if len(actualArtifactNames) != len(expectedArtifacts): - print(f"Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") - errors += 1 - else: - for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): - if actual != expected: - print(f"Artifact name '{key}' does not match: {actual} != {expected}.") - errors += 1 - - if errors == 0: - print(f"All checks PASSED.") - exit(errors) + - name: Checking job matrix from 'Params_All' + uses: ./.github/actions/CheckJobMatrix + with: + expected-default-version: '3.14' + expected-python-versions: '["3.12", "3.13"]' + expected-systems: '["ubuntu", "windows", "macos-arm"]' + expected-exclude-jobs: '[]' + expected-include-jobs: '["windows:3.10", "windows:3.11", "windows:3.13"]' + generated-default-version: ${{ needs.Params_All.outputs.python_version }} + generated-jobmatrix: ${{ needs.Params_All.outputs.python_jobs }} diff --git a/.github/workflows/_Checking_SimplePackage_Pipeline.yml b/.github/workflows/_Checking_SimplePackage_Pipeline.yml index a344786..5dcc657 100644 --- a/.github/workflows/_Checking_SimplePackage_Pipeline.yml +++ b/.github/workflows/_Checking_SimplePackage_Pipeline.yml @@ -8,11 +8,14 @@ jobs: SimplePackage: uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r6 with: - package_name: myPackage - codecov: true - codacy: true - dorny: true - cleanup: false + package_name: 'myPackage' + unittest_python_version: '3.13' # workaround to use Sphinx in Python 3.13 for sphinx_reports not yet supporting lxml 6.0 + bandit: 'true' + pylint: 'true' + codecov: 'true' + codacy: 'true' + dorny: 'true' + cleanup: 'false' secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/doc/JobTemplate/AllInOne/CompletePipeline.rst b/doc/JobTemplate/AllInOne/CompletePipeline.rst index 2b0ac8f..afacc2d 100644 --- a/doc/JobTemplate/AllInOne/CompletePipeline.rst +++ b/doc/JobTemplate/AllInOne/CompletePipeline.rst @@ -375,9 +375,9 @@ Parameter Summary +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ | :ref:`JOBTMPL/CompletePipeline/Input/package_name` | yes | string | — — — — | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ -| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ -| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version_list` | no | string | ``'3.9 3.10 3.11 3.12 3.13'`` | +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version_list` | no | string | ``'3.10 3.11 3.12 3.13 3.14'`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ | :ref:`JOBTMPL/CompletePipeline/Input/unittest_system_list` | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ @@ -387,7 +387,7 @@ Parameter Summary +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ | :ref:`JOBTMPL/CompletePipeline/Input/unittest_disable_list` | no | string | ``'windows-arm:pypy-3.10 windows-arm:pypy-3.11'`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ -| :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ | :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version_list` | no | string | ``''`` | +---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ @@ -532,7 +532,7 @@ unittest_python_version :Type: string :Required: no -:Default Value: ``'3.13'`` +:Default Value: ``'3.14'`` :Possible Values: Any valid Python version conforming to the pattern ``.`` or ``pypy-.``. |br| See `actions/python-versions - available Python versions `__ and `actions/setup-python - configurable Python versions `__. @@ -550,7 +550,7 @@ unittest_python_version_list :Type: string :Required: no -:Default Value: ``'3.9 3.10 3.11 3.12 3.13'`` +:Default Value: ``'3.10 3.11 3.12 3.13 3.14'`` :Possible Values: A space separated list of valid Python versions conforming to the pattern ``.`` or ``pypy-.``. :Description: The list of space-separated Python versions used for unit testing. @@ -625,7 +625,7 @@ apptest_python_version :Type: string :Required: no -:Default Value: ``'3.13'`` +:Default Value: ``'3.14'`` :Possible Values: Any valid Python version conforming to the pattern ``.`` or ``pypy-.``. |br| See `actions/python-versions - available Python versions `__ and `actions/setup-python - configurable Python versions `__. diff --git a/doc/JobTemplate/Documentation/SphinxDocumentation.rst b/doc/JobTemplate/Documentation/SphinxDocumentation.rst index 29a903a..00e54b1 100644 --- a/doc/JobTemplate/Documentation/SphinxDocumentation.rst +++ b/doc/JobTemplate/Documentation/SphinxDocumentation.rst @@ -98,7 +98,7 @@ Parameter Summary +=========================================================================+==========+================+===================================================================+ | :ref:`JOBTMPL/SphinxDocumentation/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +-------------------------------------------------------------------------+----------+----------------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/SphinxDocumentation/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/SphinxDocumentation/Input/python_version` | no | string | ``'3.14'`` | +-------------------------------------------------------------------------+----------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/SphinxDocumentation/Input/requirements` | no | string | ``'-r doc/requirements.txt'`` | +-------------------------------------------------------------------------+----------+----------------+-------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Package/Package.rst b/doc/JobTemplate/Package/Package.rst index fd6b4f9..fabb248 100644 --- a/doc/JobTemplate/Package/Package.rst +++ b/doc/JobTemplate/Package/Package.rst @@ -91,7 +91,7 @@ Parameter Summary +=====================================================================+==========+==========+===================================================================+ | :ref:`JOBTMPL/Package/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/Package/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/Package/Input/python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/Package/Input/requirements` | no | string | ``''`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Package/PublishOnPyPI.rst b/doc/JobTemplate/Package/PublishOnPyPI.rst index 219e075..a038ba3 100644 --- a/doc/JobTemplate/Package/PublishOnPyPI.rst +++ b/doc/JobTemplate/Package/PublishOnPyPI.rst @@ -116,7 +116,7 @@ Parameter Summary +=====================================================================+==========+==========+===================================================================+ | :ref:`JOBTMPL/PublishOnPyPI/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/PublishOnPyPI/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/PublishOnPyPI/Input/python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/PublishOnPyPI/Input/requirements` | no | string | ``'wheel twine'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Quality/CheckDocumentation.rst b/doc/JobTemplate/Quality/CheckDocumentation.rst index b8d292f..c8ca80c 100644 --- a/doc/JobTemplate/Quality/CheckDocumentation.rst +++ b/doc/JobTemplate/Quality/CheckDocumentation.rst @@ -78,7 +78,7 @@ Parameter Summary +=========================================================================+==========+==========+===================================================================+ | :ref:`JOBTMPL/CheckDocumentation/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/CheckDocumentation/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/CheckDocumentation/Input/python_version` | no | string | ``'3.14'`` | +-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/CheckDocumentation/Input/directory` | yes | string | — — — — | +-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Quality/StaticTypeCheck.rst b/doc/JobTemplate/Quality/StaticTypeCheck.rst index 7b237f0..cecedab 100644 --- a/doc/JobTemplate/Quality/StaticTypeCheck.rst +++ b/doc/JobTemplate/Quality/StaticTypeCheck.rst @@ -123,7 +123,7 @@ Parameter Summary +=====================================================================+==========+================+==========================================================================================================================================+ | :ref:`JOBTMPL/StaticTypeCheck/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +---------------------------------------------------------------------+----------+----------------+------------------------------------------------------------------------------------------------------------------------------------------+ -| :ref:`JOBTMPL/StaticTypeCheck/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/StaticTypeCheck/Input/python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`JOBTMPL/StaticTypeCheck/Input/requirements` | no | string | ``'-r tests/requirements.txt'`` | +---------------------------------------------------------------------+----------+----------------+------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Setup/ExtractConfiguration.rst b/doc/JobTemplate/Setup/ExtractConfiguration.rst index 4b78d84..1b8c0c5 100644 --- a/doc/JobTemplate/Setup/ExtractConfiguration.rst +++ b/doc/JobTemplate/Setup/ExtractConfiguration.rst @@ -107,7 +107,7 @@ Parameter Summary +=====================================================================+==========+==========+===================================================================+ | :ref:`JOBTMPL/ExtractConfiguration/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/ExtractConfiguration/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/ExtractConfiguration/Input/python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Input/coverage_config` | no | string | ``'pyproject.toml'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ diff --git a/doc/JobTemplate/Setup/Parameters.rst b/doc/JobTemplate/Setup/Parameters.rst index 51cbc2c..fe08054 100644 --- a/doc/JobTemplate/Setup/Parameters.rst +++ b/doc/JobTemplate/Setup/Parameters.rst @@ -169,9 +169,9 @@ Parameter Summary +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/Parameters/Input/package_name` | no | string | ``''`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/Parameters/Input/python_version` | no | string | ``'3.13'`` | +| :ref:`JOBTMPL/Parameters/Input/python_version` | no | string | ``'3.14'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -| :ref:`JOBTMPL/Parameters/Input/python_version_list` | no | string | ``'3.9 3.10 3.11 3.12 3.13'`` | +| :ref:`JOBTMPL/Parameters/Input/python_version_list` | no | string | ``'3.10 3.11 3.12 3.13 3.14'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/Parameters/Input/system_list` | no | string | ``'ubuntu windows macos macos-arm mingw64 ucrt64'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ @@ -348,7 +348,7 @@ python_version :Type: string :Required: no -:Default Value: ``'3.13'`` +:Default Value: ``'3.14'`` :Possible Values: Any valid Python version conforming to the pattern ``.`` or ``pypy-.``. |br| See `actions/python-versions - available Python versions `__ and `actions/setup-python - configurable Python versions `__. @@ -364,7 +364,7 @@ python_version_list :Type: string :Required: no -:Default Value: ``'3.9 3.10 3.11 3.12 3.13'`` +:Default Value: ``'3.10 3.11 3.12 3.13 3.14'`` :Possible Values: A space separated list of valid Python versions conforming to the pattern ``.`` or ``pypy-.``. |br| See `actions/python-versions - available Python versions `__ @@ -563,7 +563,7 @@ python_version ============== :Type: string -:Default Value: ``'3.13'`` +:Default Value: ``'3.14'`` :Possible Values: Any valid Python version conforming to the pattern ``.`` or ``pypy-.``. :Description: Returns diff --git a/doc/JobTemplate/_python_version.rst b/doc/JobTemplate/_python_version.rst index f137334..2507a87 100644 --- a/doc/JobTemplate/_python_version.rst +++ b/doc/JobTemplate/_python_version.rst @@ -3,7 +3,7 @@ python_version :Type: string :Required: no -:Default Value: ``'3.13'`` +:Default Value: ``'3.14'`` :Possible Values: Any valid Python version conforming to the pattern ``.`` or ``pypy-.``. |br| See `actions/python-versions - available Python versions `__ and `actions/setup-python - configurable Python versions `__. diff --git a/tests/requirements.txt b/tests/requirements.txt index c8b94c7..e40a119 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,7 +1,7 @@ -r ../requirements.txt # Coverage collection -Coverage ~= 7.10 +Coverage ~= 7.11 # Test Runner pytest ~= 8.4