name: Verification Pipeline for Parameters

on:
  push:
  workflow_dispatch:

jobs:
  Params_Default:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example

  Params_PythonVersions:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example
      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@main
    with:
      name: Example
      system_list: "windows mingw32 mingw64"

  Params_Include:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example
      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"

  Params_Exclude:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example
      python_version_list: "3.13"                                # py-1
      system_list: "ubuntu windows macos macos-arm"
      exclude_list: "windows:3.13 windows:3.14"

  Params_Disable:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example
      python_version_list: "3.13"                                # py-1
      system_list: "ubuntu windows macos macos-arm"
      disable_list: "windows:3.13 windows:3.14"

  Params_All:
    uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
    with:
      name: Example
      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"

  Params_Check_Default:
    needs:
      - Params_Default
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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.13", "ucrt64:3.13"]'
          generated-default-version: ${{ needs.Params_Default.outputs.python_version }}
          generated-jobmatrix:       ${{ needs.Params_Default.outputs.python_jobs }}

      - 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:
      - Params_PythonVersions
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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.13", "ucrt64:3.13"]'
          generated-default-version: ${{ needs.Params_PythonVersions.outputs.python_version }}
          generated-jobmatrix:       ${{ needs.Params_PythonVersions.outputs.python_jobs }}

  Params_Check_Systems:
    needs:
      - Params_Systems
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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.13", "mingw64:3.13"]'
          generated-default-version: ${{ needs.Params_Systems.outputs.python_version }}
          generated-jobmatrix:       ${{ needs.Params_Systems.outputs.python_jobs }}

  Params_Check_Include:
    needs:
      - Params_Include
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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:
      - Params_Exclude
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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:
      - Params_Disable
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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:
      - Params_All
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: python
    steps:
      - name: Checkout repository to access local Action
        uses: actions/checkout@v6

      - 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 }}
