Skip to content

Add python 3.13 support #44

Add python 3.13 support

Add python 3.13 support #44

name: Automatic tests
on:
push:
branches: [main]
pull_request:
branches: [main]
release:
types: [published]
permissions:
contents: write
jobs:
python_base:
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
- run: pip install poetry==1.8.3
- run: poetry config virtualenvs.in-project true
- name: Setup caching
uses: actions/cache@v4
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: poetry install
test_python:
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13"]
runs-on: ubuntu-latest
needs:
- python_base
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
- run: pip install poetry==1.8.3
- run: poetry config virtualenvs.in-project true
- name: Setup caching
uses: actions/cache@v4
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: poetry install
- name: Run tests
run: poetry run pytest --cov-report=term --cov-report=html
- name: Upload pytest test coverage
uses: actions/upload-artifact@v4
with:
name: pytest-results-${{ matrix.python-version }}
path: htmlcov/
pre-commit:
runs-on: ubuntu-latest
needs:
- python_base
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- name: Install pre-commit
run: pip install pre-commit poetry==1.8.3
- name: Run pre-commit
run: pre-commit run --all
build_python:
runs-on: ubuntu-latest
needs:
- python_base
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- run: pip install poetry==1.8.3
- run: poetry config virtualenvs.in-project true
- name: Setup caching
uses: actions/cache@v4
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: poetry install
- name: Build package
run: poetry build
- name: Upload package artifacts
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: release-dists
path: dist/
deploy_docs:
if: github.event_name == 'push'
runs-on: ubuntu-latest
needs:
- python_base
- test_python
- pre-commit
steps:
- uses: actions/checkout@v4
# That's an ugly solution, but I need to copy this block for every supported python version
- name: Download 3.12 artifacts
uses: actions/download-artifact@v4
with:
name: pytest-results-3.12
path: htmlcov/v3.12
- name: Download 3.13 artifacts
uses: actions/download-artifact@v4
with:
name: pytest-results-3.13
path: htmlcov/v3.13
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- run: pip install poetry==1.8.3
- run: poetry config virtualenvs.in-project true
- name: Setup venv cache
uses: actions/cache@v4
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: poetry install
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: poetry run python docs/gen_badges.py
- run: poetry run python docs/gen_reference_code.py
- run: poetry run python docs/gen_reference_config.py
- run: poetry run typer b4_backup/__main__.py utils docs --name b4 --title "CLI reference" --output docs/reference/cli.md
- run: poetry run mkdocs gh-deploy --force
release_python:
if: startsWith(github.ref, 'refs/tags/')
# if: github.event_name == 'release'
runs-on: ubuntu-latest
needs:
- python_base
- test_python
- pre-commit
environment:
name: main
url: https://pypi.org/p/b4-backup
permissions:
id-token: write
steps:
- name: Retrieve package artifacts
uses: actions/download-artifact@v4
with:
name: release-dists
path: dist/
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1.10
with:
name: release-dists
path: dist/