Validate Python e2e freethread #58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate Python e2e freethread | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '**.md' | |
| pull_request: | |
| paths-ignore: | |
| - '**.md' | |
| schedule: | |
| - cron: 30 3 * * * | |
| workflow_dispatch: | |
| jobs: | |
| setup-versions-from-manifest: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0t, 3.13.1t, 3.13.2t] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-from-file: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} version file | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0t, 3.13.1t, 3.13.2t] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: build-version-file ${{ matrix.python }} | |
| run: echo ${{ matrix.python }} > .python-version | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version-file: .python-version | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-from-file-without-parameter: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} version file without parameter | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0t, 3.13.1t, 3.13.2t] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: build-version-file ${{ matrix.python }} | |
| run: echo ${{ matrix.python }} > .python-version | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-from-standard-pyproject-file: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} standard pyproject file | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0, 3.13.1, 3.13.2] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: build-version-file ${{ matrix.python }} | |
| run: | | |
| echo '[project] | |
| requires-python = "${{ matrix.python }}" | |
| ' > pyproject.toml | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version-file: pyproject.toml | |
| freethreaded: true | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-from-poetry-pyproject-file: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} poetry pyproject file | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0, 3.13.1, 3.13.2] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: build-version-file ${{ matrix.python }} | |
| run: | | |
| echo '[tool.poetry.dependencies] | |
| python = "${{ matrix.python }}" | |
| ' > pyproject.toml | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version-file: pyproject.toml | |
| freethreaded: true | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-from-tool-versions-file: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} .tool-versions file | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0t, 3.13.1t, 3.13.2t, 3.14t-dev] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: build-tool-versions-file ${{ matrix.python }} | |
| run: | | |
| echo "python ${{ matrix.python }}" > .tool-versions | |
| - name: setup-python using .tool-versions ${{ matrix.python }} | |
| id: setup-python-tool-versions | |
| uses: ./ | |
| with: | |
| python-version-file: .tool-versions | |
| setup-pre-release-version-from-manifest: | |
| name: Setup 3.14.0-alpha.6 ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python 3.14.0-alpha.6 | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: '3.14.0-alpha.6' | |
| freethreaded: true | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-dev-version: | |
| name: Setup 3.14t-dev ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| ubuntu-24.04-arm, | |
| ubuntu-latest, | |
| macos-13 | |
| ] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python 3.14t-dev | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: '3.14t-dev' | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Validate version | |
| run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} | |
| shell: bash | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-prerelease-version: | |
| name: Setup 3.14t ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| ubuntu-24.04-arm, | |
| ubuntu-latest, | |
| macos-13 | |
| ] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python 3.14t | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: '3.14t' | |
| allow-prereleases: true | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Validate version | |
| run: ${{ startsWith(steps.setup-python.outputs.python-version, '3.14.') }} | |
| shell: bash | |
| - name: Run simple code | |
| run: python -c 'import math; print(math.factorial(5))' | |
| setup-versions-noenv: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} (noenv) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.0t, 3.13.1t, 3.13.2t] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: ${{ matrix.python }} | |
| update-environment: false | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| - name: Run simple code | |
| run: ${{ steps.setup-python.outputs.python-path }} -c 'import math; print(math.factorial(5))' | |
| check-latest: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| ubuntu-24.04-arm, | |
| ubuntu-latest, | |
| macos-13 | |
| ] | |
| python-version: [3.13t, 3.14t-dev] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python and check latest | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| check-latest: true | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| setup-python-multiple-python-versions: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| ubuntu-24.04-arm, | |
| ubuntu-latest, | |
| macos-13 | |
| ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python and check latest | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: | | |
| 3.13.1t | |
| 3.13.2t | |
| 3.14t-dev | |
| - name: Verify Python version | |
| run: ${{ steps.setup-python.outputs.python-path }} -VVV | |
| setup-versions-with-freethread-input: | |
| name: Setup ${{ matrix.python }} ${{ matrix.os }} using freethread input parameter | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| [ | |
| macos-latest, | |
| windows-latest, | |
| ubuntu-22.04, | |
| ubuntu-22.04-arm, | |
| macos-13, | |
| ubuntu-latest, | |
| ubuntu-24.04-arm | |
| ] | |
| python: [3.13.1, 3.13.2, 3.14-dev, 3.14.0-alpha.6] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: setup-python ${{ matrix.python }} | |
| id: setup-python | |
| uses: ./ | |
| with: | |
| python-version: ${{ matrix.python }} | |
| freethreaded: true | |
| - name: Check python-path | |
| run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}' | |
| shell: bash | |
| - name: Validate GIL | |
| run: python ./__tests__/verify-freethreaded.py |