name: Reusable Windows on: workflow_call: inputs: arch: description: CPU architecture required: true type: string free-threading: description: Whether to compile CPython in free-threading mode required: false type: boolean default: false interpreter: description: Which interpreter to build (switch-case or tail-call) required: true type: string env: FORCE_COLOR: 1 IncludeUwp: >- true jobs: build: name: Build and test (${{ inputs.arch }}, ${{ inputs.interpreter }}) runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025-vs2026' }} timeout-minutes: 60 env: ARCH: ${{ inputs.arch }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Register MSVC problem matcher if: inputs.arch != 'Win32' run: echo "::add-matcher::.github/problem-matchers/msvc.json" - name: Build CPython # msvc::musttail is not supported for debug builds, so we have to # switch to release. run: >- .\\PCbuild\\build.bat -e -v ${{ inputs.interpreter == 'switch-case' && '-d' || '--tail-call-interp -c Release' }} -p "${ARCH}" ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} shell: bash - name: Display build info run: .\\python.bat -m test.pythoninfo - name: Tests run: >- .\\PCbuild\\rt.bat -p "${ARCH}" -q --fast-ci ${{ inputs.interpreter == 'switch-case' && '-d' || '' }} ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} shell: bash