diff --git a/.github/workflows/Parameters.yml b/.github/workflows/Parameters.yml index c6297db..7983420 100644 --- a/.github/workflows/Parameters.yml +++ b/.github/workflows/Parameters.yml @@ -32,12 +32,12 @@ on: python_version: description: 'Python version.' required: false - default: '3.12' + default: '3.13' 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' + default: '3.9 3.10 3.11 3.12 3.13' type: string system_list: description: 'Space separated list of systems to run tests on.' @@ -123,8 +123,8 @@ jobs: disable_list = "${{ inputs.disable_list }}".strip() currentMSYS2Version = "3.11" - currentAlphaVersion = "3.13" - currentAlphaRelease = "3.13.0-alpha.1" + currentAlphaVersion = "3.14" + currentAlphaRelease = "3.14.0-alpha.1" if systems == "": print("::error title=Parameter::system_list is empty.") @@ -151,8 +151,8 @@ jobs: else: disabled = [disable.strip() for disable in disable_list.split(" ")] - if "3.7" in versions: - print("::warning title=Deprecated::Support for Python 3.7 ended in 2023.06.27.") + if "3.8" in versions: + print("::warning title=Deprecated::Support for Python 3.8 ended in 2024.10.") if "msys2" in systems: print("::warning title=Deprecated::System 'msys2' will be replaced by 'mingw64'.") if currentAlphaVersion in versions: @@ -164,13 +164,13 @@ jobs: data = { # Python and PyPy versions supported by "setup-python" action "python": { - "3.7": { "icon": "⚫", "until": "2023.06.27" }, - "3.8": { "icon": "🔴", "until": "2024.10" }, - "3.9": { "icon": "🟠", "until": "2025.10" }, - "3.10": { "icon": "🟡", "until": "2026.10" }, - "3.11": { "icon": "🟢", "until": "2027.10" }, + "3.8": { "icon": "⚫", "until": "2024.10" }, + "3.9": { "icon": "🔴", "until": "2025.10" }, + "3.10": { "icon": "🟠", "until": "2026.10" }, + "3.11": { "icon": "🟡", "until": "2027.10" }, "3.12": { "icon": "🟢", "until": "2028.10" }, - # "3.13": { "icon": "🟣", "until": "2028.10" }, + "3.13": { "icon": "🟢", "until": "2029.10" }, + "3.14": { "icon": "🟣", "until": "2030.10" }, "pypy-3.7": { "icon": "⟲⚫", "until": "????.??" }, "pypy-3.8": { "icon": "⟲🔴", "until": "????.??" }, "pypy-3.9": { "icon": "⟲🟠", "until": "????.??" }, diff --git a/.github/workflows/_Checking_ArtifactCleanup.yml b/.github/workflows/_Checking_ArtifactCleanup.yml index 3d00135..6cde55c 100644 --- a/.github/workflows/_Checking_ArtifactCleanup.yml +++ b/.github/workflows/_Checking_ArtifactCleanup.yml @@ -6,10 +6,10 @@ on: jobs: Params: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.10 3.11" + python_version_list: "3.12 3.13" system_list: "ubuntu windows" Testing: @@ -50,7 +50,7 @@ jobs: retention-days: 1 ArtifactCleanUp: - uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@r1 + uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev needs: - Params - Testing diff --git a/.github/workflows/_Checking_Parameters.yml b/.github/workflows/_Checking_Parameters.yml index 5f3e6ce..4856925 100644 --- a/.github/workflows/_Checking_Parameters.yml +++ b/.github/workflows/_Checking_Parameters.yml @@ -6,54 +6,54 @@ on: jobs: Params_Default: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example Params_PythonVersions: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.9 3.10 pypy-3.8 pypy-3.9" + python_version_list: "3.11 3.12 pypy-3.9 pypy-3.10" Params_Systems: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example system_list: "windows mingw32 mingw64" Params_Include: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.10" - system_list: "ubuntu windows macos" - include_list: "ubuntu:3.11 ubuntu:3.12" + python_version_list: "3.11" + system_list: "ubuntu windows macos macos-arm" + include_list: "ubuntu:3.12 ubuntu:3.13" Params_Exclude: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.10" - system_list: "ubuntu windows macos" - exclude_list: "windows:3.10 windows:3.11" + python_version_list: "3.12" + system_list: "ubuntu windows macos macos-arm" + exclude_list: "windows:3.12 windows:3.13" Params_Disable: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.10" - system_list: "ubuntu windows macos" - disable_list: "windows:3.10 windows:3.11" + python_version_list: "3.12" + system_list: "ubuntu windows macos macos-arm" + disable_list: "windows:3.12 windows:3.13" Params_All: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Example - python_version_list: "3.10 3.11" - system_list: "ubuntu windows macos" - include_list: "windows:3.8 windows:3.9 windows:3.12" - exclude_list: "macos:3.10 macos:3.11" + python_version_list: "3.12 3.13" + 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" Params_Check: needs: @@ -80,12 +80,10 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.8", "3.9", "3.10", "3.11", "3.12"] - expectedSystems = ["ubuntu", "windows", "macos"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.9", "3.10", "3.11", "3.12", "3.13"] + expectedSystems = ["ubuntu", "windows", "macos", "macos-arm"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["mingw64:3.11", "ucrt64:3.11"] - expectedJobs.remove("macos:3.8") - expectedJobs.remove("macos:3.9") expectedName = "Example" expectedArtifacts = { "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", @@ -116,7 +114,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -142,13 +143,10 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.9", "3.10", "pypy-3.8", "pypy-3.9"] - expectedSystems = ["ubuntu", "windows", "macos"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.11", "3.12", "pypy-3.9", "pypy-3.10"] + expectedSystems = ["ubuntu", "windows", "macos", "macos-arm"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["mingw64:3.11", "ucrt64:3.11"] - expectedJobs.remove("macos:3.9") - expectedJobs.remove("macos:pypy-3.8") - expectedJobs.remove("macos:pypy-3.9") expectedName = "Example" expectedArtifacts = { "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", @@ -179,7 +177,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -205,8 +206,8 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.8", "3.9", "3.10", "3.11", "3.12"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.9", "3.10", "3.11", "3.12", "3.13"] expectedSystems = ["windows"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["mingw32:3.11", "mingw64:3.11"] expectedName = "Example" @@ -239,7 +240,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -265,9 +269,9 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.10"] - expectedSystems = ["ubuntu", "windows", "macos"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.12"] + expectedSystems = ["ubuntu", "windows", "macos", "macos-arm"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["ubuntu:3.11", "ubuntu:3.12"] expectedName = "Example" expectedArtifacts = { @@ -299,7 +303,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -325,9 +332,9 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.10"] - expectedSystems = ["ubuntu", "macos"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.12"] + expectedSystems = ["ubuntu", "macos", "macos-arm"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] expectedName = "Example" expectedArtifacts = { @@ -359,7 +366,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -385,9 +395,9 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.10"] - expectedSystems = ["ubuntu", "macos"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.12"] + expectedSystems = ["ubuntu", "macos", "macos-arm"] expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] expectedName = "Example" expectedArtifacts = { @@ -419,7 +429,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") @@ -445,10 +458,10 @@ jobs: from pyTooling.Common import zipdicts - expectedPythonVersion = "3.12" - expectedPythons = ["3.10", "3.11"] + expectedPythonVersion = "3.13" + expectedPythons = ["3.12", "3.13"] expectedSystems = ["ubuntu", "windows"] - expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["windows:3.8", "windows:3.9", "windows:3.12"] + expectedJobs = [f"{system}:{python}" for system in expectedSystems for python in expectedPythons] + ["windows:3.10", "windows:3.11", "windows:3.13"] expectedName = "Example" expectedArtifacts = { "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", @@ -479,7 +492,10 @@ jobs: print(f"Number of 'python_jobs' does not match: {len(actualPythonJobs)} != {len(expectedJobs)}.") print("Actual jobs:") for job in actualPythonJobs: - print(f" {job['system']}:{job['python']}") + 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}") diff --git a/.github/workflows/_Checking_Pipeline.yml b/.github/workflows/_Checking_Pipeline.yml index a1b27e4..fab1198 100644 --- a/.github/workflows/_Checking_Pipeline.yml +++ b/.github/workflows/_Checking_Pipeline.yml @@ -6,21 +6,21 @@ on: jobs: UnitTestingParams: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: pyDummy - python_version_list: "3.8 3.9 3.10 3.11 3.12 pypy-3.8 pypy-3.9 pypy-3.10" - disable_list: "windows:pypy-3.10" + python_version_list: "3.8 3.9 3.10 3.11 3.12 3.13 pypy-3.8 pypy-3.9 pypy-3.10" +# disable_list: "windows:pypy-3.10" PlatformTestingParams: - uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 + uses: pyTooling/Actions/.github/workflows/Parameters.yml@py313 with: name: Platform python_version_list: "" system_list: "ubuntu windows macos mingw32 mingw64 clang64 ucrt64" UnitTesting: - uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@r1 + uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@py313 needs: - UnitTestingParams with: @@ -33,7 +33,7 @@ jobs: # coverage_html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} PlatformTesting: - uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@r1 + uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@py313 needs: - PlatformTestingParams with: @@ -48,7 +48,7 @@ jobs: coverage_html_artifact: ${{ fromJson(needs.PlatformTestingParams.outputs.artifact_names).codecoverage_html }} # Coverage: -# uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@r1 +# uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@py313 # needs: # - UnitTestingParams # with: @@ -58,7 +58,7 @@ jobs: # codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} StaticTypeCheck: - uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@r1 + uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@py313 needs: - UnitTestingParams with: @@ -69,7 +69,7 @@ jobs: html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} PublishCoverageResults: - uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@r1 + uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@py313 needs: - UnitTestingParams - UnitTesting @@ -84,7 +84,7 @@ jobs: codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} PublishTestResults: - uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev + uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@py313 needs: - UnitTesting - PlatformTesting @@ -92,7 +92,7 @@ jobs: additional_merge_args: '-d "--pytest=rewrite-dunder-init;reduce-depth:pytest.tests.unit;reduce-depth:pytest.tests.platform"' Package: - uses: pyTooling/Actions/.github/workflows/Package.yml@r1 + uses: pyTooling/Actions/.github/workflows/Package.yml@py313 needs: - UnitTestingParams - UnitTesting @@ -103,14 +103,14 @@ jobs: artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} # VerifyDocs: -# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@r1 +# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@py313 # needs: # - UnitTestingParams # with: # python_version: ${{ needs.UnitTestingParams.outputs.python_version }} BuildTheDocs: - uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@r1 + uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@py313 needs: - UnitTestingParams # - VerifyDocs @@ -118,7 +118,7 @@ jobs: artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} PublishToGitHubPages: - uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r1 + uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@py313 needs: - UnitTestingParams - BuildTheDocs @@ -131,7 +131,7 @@ jobs: typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} ReleasePage: - uses: pyTooling/Actions/.github/workflows/Release.yml@r1 + uses: pyTooling/Actions/.github/workflows/Release.yml@py313 if: startsWith(github.ref, 'refs/tags') needs: - UnitTesting @@ -142,7 +142,7 @@ jobs: - PublishToGitHubPages PublishOnPyPI: - uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@r1 + uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@py313 if: startsWith(github.ref, 'refs/tags') needs: - UnitTestingParams @@ -156,7 +156,7 @@ jobs: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} ArtifactCleanUp: - uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@r1 + uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@py313 needs: - UnitTestingParams - PlatformTestingParams