Skip to content

feat: Add free-threaded Python 3.14t support with parallel processing (1.55x speedup) #885

feat: Add free-threaded Python 3.14t support with parallel processing (1.55x speedup)

feat: Add free-threaded Python 3.14t support with parallel processing (1.55x speedup) #885

Workflow file for this run

name: Json2xml
on:
push:
branches: [main, master]
paths-ignore:
- 'docs/**'
- '*.md'
- '*.rst'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
- '*.rst'
permissions:
contents: read
checks: write # For test results
pull-requests: write # For codecov
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ['3.13t', '3.14', '3.14t', '3.15.0-alpha.1']
os: [
ubuntu-latest,
windows-latest,
macos-latest,
"ubuntu-24.04-arm"
]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Verify freethreaded Python
if: endsWith(matrix.python-version, 't')
run: |
python --version --version
python -c "import sys; print('Free-threading enabled:', not sys._is_gil_enabled() if hasattr(sys, '_is_gil_enabled') else False)"
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
requirements*.txt
requirements-dev.in
pyproject.toml
- name: Install dependencies
run: |
uv venv
uv pip install -e .
uv pip install pytest pytest-xdist pytest-cov
- name: Create coverage directory
run: mkdir -p coverage/reports
- name: Run tests
run: |
uv run pytest --cov=json2xml --cov-report=xml:coverage/reports/coverage.xml --cov-report=term -xvs tests -n auto
env:
PYTHONPATH: ${{ github.workspace }}
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
if: success()
with:
directory: ./coverage/reports/
env_vars: OS,PYTHON
fail_ci_if_error: false # Don't fail CI if codecov upload fails
files: ./coverage/reports/coverage.xml
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}
name: codecov-umbrella
verbose: true
env:
OS: ${{ matrix.os }}
PYTHON: ${{ matrix.python-version }}
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Python 3.13
uses: actions/[email protected]
with:
python-version: '3.13'
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
requirements*.txt
requirements-dev.in
pyproject.toml
- name: Install dependencies
run: |
uv venv
uv pip install -e .
- name: Run ruff
run: uvx ruff check json2xml tests
- name: Run ty typecheck
run: uvx ty check json2xml tests