[pre-commit.ci] pre-commit autoupdate #2179
Workflow file for this run
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
| # This workflow will install Python dependencies, | |
| # run tests and lint with a variety of Python versions | |
| --- | |
| name: Tests | |
| on: [push, pull_request] | |
| jobs: | |
| cpython: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.15-dev'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel | |
| pip install -e ".[tests]" | |
| - name: Test with pytest | |
| run: | | |
| pytest tests | |
| cpython-lxml: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel | |
| pip install -e ".[tests, lxml]" | |
| - name: Test with pytest | |
| run: | | |
| pytest tests --cov=fastkml --cov=tests --cov-fail-under=95 --cov-report=xml | |
| - name: "Upload coverage to Codecov" | |
| if: ${{ matrix.python-version==3.11 }} | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| fail_ci_if_error: true | |
| verbose: true | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| doctest-lxml: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.12'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel | |
| pip install -e ".[tests, lxml, docs]" | |
| - name: test the python code in the documentation | |
| run: | | |
| python -m doctest docs/*.rst | |
| - name: Run the python code in the examples | |
| run: | | |
| python examples/read_kml.py | |
| python examples/shp2kml.py | |
| python examples/shp2kml_timed.py | |
| python examples/simple_example.py | |
| python examples/transform_cascading_style.py | |
| static-tests: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.12'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel | |
| pip install -e ".[typing, complexity, linting, tests]" | |
| - name: Typecheck | |
| run: | | |
| mypy fastkml tests | |
| - name: Linting | |
| run: | | |
| ruff check --no-fix fastkml tests examples docs | |
| ruff format --check fastkml tests examples docs | |
| yamllint .github/ | |
| yamllint .*.y*ml | |
| - name: Check complexity | |
| run: | | |
| radon cc --min B fastkml | |
| radon mi --min B fastkml | |
| complexipy fastkml | |
| lizard fastkml | |
| pypy: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| pypy-version: ['pypy-3.9', 'pypy-3.10', 'pypy-3.11'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.pypy-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.pypy-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel setuptools | |
| python -m pip install -e ".[tests]" | |
| - name: Test with pytest | |
| run: | | |
| pytest tests | |
| graalpy: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| graalpy-version: ['graalpy-24.1', 'graalpy-25.0'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.graalpy-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.graalpy-version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install -e ".[tests]" | |
| - name: Test with pytest, excluding hypothesis tests | |
| run: | | |
| pytest tests -m "not hypothesis" | |
| build-package: | |
| name: Build & inspect our package. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: hynek/build-and-inspect-python-package@v2 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Check with pyroma | |
| run: | | |
| python -m pip install pyroma | |
| pyroma . | |
| - name: Check tag name | |
| if: >- | |
| github.event_name == 'push' && | |
| startsWith(github.ref, 'refs/tags') | |
| run: | | |
| python -m pip install vercheck | |
| vercheck $GITHUB_REF_NAME fastkml/about.py | |
| test-publish: | |
| if: >- | |
| github.event_name == 'push' && | |
| github.repository == 'cleder/fastkml' && | |
| startsWith(github.ref, 'refs/tags') | |
| needs: [cpython, static-tests, pypy, cpython-lxml, doctest-lxml, build-package, graalpy] | |
| name: Test install on TestPyPI | |
| runs-on: ubuntu-latest | |
| environment: test-release | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download packages built by build-package | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: Packages | |
| path: dist | |
| - name: Upload package to Test PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| repository-url: https://test.pypi.org/legacy/ | |
| publish: | |
| if: >- | |
| github.event_name == 'push' && | |
| github.repository == 'cleder/fastkml' && | |
| github.ref == 'refs/heads/main' | |
| needs: [cpython, static-tests, pypy, cpython-lxml, doctest-lxml, build-package, graalpy] | |
| name: Publish to PyPI on push to main | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download packages built by build-package | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: Packages | |
| path: dist | |
| - name: Publish distribution 📦 to PyPI for push to main | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| ... |