From cc003ef83edacc8879dccb5fc009c38a245fffd2 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:10:17 -0400 Subject: [PATCH 01/12] Add CI tests on threaded python --- .github/workflows/CI.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index e99b9c5..3036c24 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -13,11 +13,13 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] runs-on: ["ubuntu-24.04"] include: - runs-on: "macos-15" - python-version: "3.13" + python-version: "3.14" + - runs-on: "macos-15" + python-version: "3.14t" - runs-on: "macos-15" python-version: "3.9" # Pull in the test script from run_tests and distribute python from matrix versions From 4f72db95c37082ccf6d6b362a4e77f322f31ea96 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:16:33 -0400 Subject: [PATCH 02/12] Attempt postprocess --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 3036c24..c2fd8be 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -27,7 +27,7 @@ jobs: with: python-version: ${{ matrix.python-version }} runs-on: ${{ matrix.runs-on }} - requirements-file: ".github/requirements-${{ matrix.python-version }}.txt" + requirements-file: ".github/requirements-${{ matrix.python-version | replace('t', '') }}.txt" # run-tests-legacy-python: # needs: run-tests-modern-python # Wait until tests pass on python 3.9+ From 3fea6b111ed14e83c1e851193383448bcbb3f2b5 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:17:49 -0400 Subject: [PATCH 03/12] Replace jinja --- .github/workflows/CI.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index c2fd8be..e647646 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -13,7 +13,8 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] + python-version: + ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] runs-on: ["ubuntu-24.04"] include: - runs-on: "macos-15" @@ -27,7 +28,8 @@ jobs: with: python-version: ${{ matrix.python-version }} runs-on: ${{ matrix.runs-on }} - requirements-file: ".github/requirements-${{ matrix.python-version | replace('t', '') }}.txt" + # requirements-file: ".github/requirements-${{ matrix.python-version | replace('t', '') }}.txt" + requirements-file: ".github/requirements-${{ matrix.python-version != '' && endsWith(matrix.python-version, 't') && format('{0}', matrix.python-version[0:-1]) || matrix.python-version }}.txt" # run-tests-legacy-python: # needs: run-tests-modern-python # Wait until tests pass on python 3.9+ @@ -62,6 +64,6 @@ jobs: runs-on: ubuntu-24.04 steps: - - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' - - name: Done - run: exit 0 + - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' + - name: Done + run: exit 0 From d933df9b56de9b4b56100105e55fbd59e7cf2aaa Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:18:40 -0400 Subject: [PATCH 04/12] Regex? --- .github/workflows/CI.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index e647646..9099bfd 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -13,8 +13,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: - ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] runs-on: ["ubuntu-24.04"] include: - runs-on: "macos-15" @@ -28,8 +27,9 @@ jobs: with: python-version: ${{ matrix.python-version }} runs-on: ${{ matrix.runs-on }} - # requirements-file: ".github/requirements-${{ matrix.python-version | replace('t', '') }}.txt" - requirements-file: ".github/requirements-${{ matrix.python-version != '' && endsWith(matrix.python-version, 't') && format('{0}', matrix.python-version[0:-1]) || matrix.python-version }}.txt" + # requirements-file: ".github/requirements-${{ matrix.python-version }}.txt" + requirements-file: ".github/requirements-${{ replace(matrix.python-version, 't$', '') }}.txt" + # run-tests-legacy-python: # needs: run-tests-modern-python # Wait until tests pass on python 3.9+ @@ -64,6 +64,6 @@ jobs: runs-on: ubuntu-24.04 steps: - - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' - - name: Done - run: exit 0 + - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' + - name: Done + run: exit 0 From 71767dfde7cec84f93901c47af8ed223486af19d Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:30:11 -0400 Subject: [PATCH 05/12] New key --- .github/workflows/CI.yaml | 17 ++++++++++++----- .github/workflows/run_tests.yaml | 5 +++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 9099bfd..61ae06f 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -13,13 +13,21 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] runs-on: ["ubuntu-24.04"] include: + - runs-on: "ubuntu-24.04" + python-version: "3.13" + freethreaded: true + - runs-on: "ubuntu-24.04" + python-version: "3.14" + freethreaded: true - runs-on: "macos-15" python-version: "3.14" + freethreaded: true - runs-on: "macos-15" - python-version: "3.14t" + python-version: "3.14" + freethreaded: true - runs-on: "macos-15" python-version: "3.9" # Pull in the test script from run_tests and distribute python from matrix versions @@ -27,9 +35,8 @@ jobs: with: python-version: ${{ matrix.python-version }} runs-on: ${{ matrix.runs-on }} - # requirements-file: ".github/requirements-${{ matrix.python-version }}.txt" - requirements-file: ".github/requirements-${{ replace(matrix.python-version, 't$', '') }}.txt" - + requirements-file: ".github/requirements-${{ matrix.python-version }}.txt" + freethreaded: ${{ matrix.freethreaded }} # run-tests-legacy-python: # needs: run-tests-modern-python # Wait until tests pass on python 3.9+ diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index caf523f..96a38e0 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -12,6 +12,9 @@ on: requirements-file: required: true type: string + freethreaded: + required: false + type: boolean jobs: run_test: @@ -21,6 +24,7 @@ jobs: - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: ${{ inputs.python-version }} + freethreaded: $${{ inputs.freethreaded }} - name: Install uv uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1 with: @@ -32,6 +36,7 @@ jobs: python --version uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system python -c "import parsnip; print('parsnip', parsnip.__version__)" + python -c "import sys; print("GIL: ", sys._is_gil_enabled)" - name: Test with pytest run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto From 308a634bed8539f4f04c6c2512dad1b116a64741 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:31:04 -0400 Subject: [PATCH 06/12] Specify default --- .github/workflows/run_tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 96a38e0..b92ea93 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -15,6 +15,7 @@ on: freethreaded: required: false type: boolean + default: false jobs: run_test: From 3e395fccd921e829f8953ad4df246c0d12c79a81 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:31:42 -0400 Subject: [PATCH 07/12] Fix typo --- .github/workflows/run_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index b92ea93..1fceb2a 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: ${{ inputs.python-version }} - freethreaded: $${{ inputs.freethreaded }} + freethreaded: ${{ inputs.freethreaded }} - name: Install uv uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1 with: From 48acb621429dfa9bc16097895262ece487ce94b6 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:32:33 -0400 Subject: [PATCH 08/12] Fix duplicate --- .github/workflows/CI.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 61ae06f..2e70e2b 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -27,7 +27,6 @@ jobs: freethreaded: true - runs-on: "macos-15" python-version: "3.14" - freethreaded: true - runs-on: "macos-15" python-version: "3.9" # Pull in the test script from run_tests and distribute python from matrix versions From 2e6e6d638dd755d840eaf2b6933eb857d31193fc Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 11:33:07 -0400 Subject: [PATCH 09/12] Typo --- .github/workflows/run_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 1fceb2a..2212387 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -37,7 +37,7 @@ jobs: python --version uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system python -c "import parsnip; print('parsnip', parsnip.__version__)" - python -c "import sys; print("GIL: ", sys._is_gil_enabled)" + python -c "import sys; print('GIL: ', sys._is_gil_enabled)" - name: Test with pytest run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto From 4c1ae91a0e1aeabe679575a3dd423bf3493c4888 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 14:18:41 -0400 Subject: [PATCH 10/12] Fix prints --- .github/workflows/run_tests.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 2212387..037f907 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -37,7 +37,10 @@ jobs: python --version uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system python -c "import parsnip; print('parsnip', parsnip.__version__)" - python -c "import sys; print('GIL: ', sys._is_gil_enabled)" + + if [ "${{ inputs.freethreaded }}" = "true" ]; then + python -c "import sys; print('GIL: ', sys._is_gil_enabled)" + fi - name: Test with pytest run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto From 3e878f3b4dad4d0e56aabb62bf1ef59c9c275977 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 14:22:53 -0400 Subject: [PATCH 11/12] Uncommit --- .github/workflows/CI.yaml | 6 ++--- .github/workflows/run_tests.yaml | 38 +++++++++++++++----------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 2e70e2b..0f25020 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -70,6 +70,6 @@ jobs: runs-on: ubuntu-24.04 steps: - - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' - - name: Done - run: exit 0 + - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' + - name: Done + run: exit 0 diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 037f907..12a08aa 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -21,26 +21,24 @@ jobs: run_test: runs-on: ${{ inputs.runs-on }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 - with: - python-version: ${{ inputs.python-version }} - freethreaded: ${{ inputs.freethreaded }} - - name: Install uv - uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1 - with: - version: "0.9.5" + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 + with: + python-version: ${{ inputs.python-version }} + freethreaded: ${{ inputs.freethreaded }} + - name: Install uv + uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1 + with: + version: "0.9.5" - - name: Install package - run: | - which python - python --version - uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system - python -c "import parsnip; print('parsnip', parsnip.__version__)" + - name: Install package + run: | + which python + python --version + uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system + python -c "import parsnip; print('parsnip', parsnip.__version__)" - if [ "${{ inputs.freethreaded }}" = "true" ]; then - python -c "import sys; print('GIL: ', sys._is_gil_enabled)" - fi + python -c "import sys; print('GIL:', getattr(sys, '_is_gil_enabled', lambda: 'unknown')())" - - name: Test with pytest - run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto + - name: Test with pytest + run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto From a33d14edba5d1a0a9e842e7f2f99de2ff8dcd584 Mon Sep 17 00:00:00 2001 From: janbridley Date: Sun, 26 Oct 2025 14:24:23 -0400 Subject: [PATCH 12/12] Fix indent --- .github/workflows/run_tests.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 1cebe56..f267b7f 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -30,14 +30,14 @@ jobs: with: version: "0.9.5" - - name: Install package - run: | - which python - python --version - uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system - python -c "import parsnip; print('parsnip', parsnip.__version__)" + - name: Install package + run: | + which python + python --version + uv pip install . -r ${{ inputs.requirements-file }} -v --reinstall --system + python -c "import parsnip; print('parsnip', parsnip.__version__)" - python -c "import sys; print('GIL:', getattr(sys, '_is_gil_enabled', lambda: 'unknown')())" + python -c "import sys; print('GIL:', getattr(sys, '_is_gil_enabled', lambda: 'unknown')())" - - name: Test with pytest - run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto + - name: Test with pytest + run: python -m ${{ runner.os != 'Windows' && 'pytest' || 'pytest tests' }} -v -n auto