diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0cae82b..1d914e4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -31,12 +31,12 @@ jobs: - runner: ubuntu-latest target: aarch64 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 with: python-version: 3.14 - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -45,7 +45,7 @@ jobs: sccache: 'true' manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: wheels-linux-${{ matrix.platform.target }} path: dist @@ -63,7 +63,7 @@ jobs: pytest - name: pytest if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }} - uses: uraimo/run-on-arch-action@v2 + uses: uraimo/run-on-arch-action@v3.1.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -79,6 +79,26 @@ jobs: pip3 install e57 --find-links dist --force-reinstall pytest + pytest: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + steps: + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 + with: + python-version: ${{ matrix.python-version }} + - name: Build and install package + uses: PyO3/maturin-action@v1.51.0 + env: + PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 + with: + command: develop + args: --release --extras test + - name: pytest + run: pytest + musllinux: runs-on: ${{ matrix.platform.runner }} strategy: @@ -91,12 +111,12 @@ jobs: - runner: ubuntu-latest target: aarch64 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 with: python-version: 3.14 - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -105,13 +125,13 @@ jobs: sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: wheels-musllinux-${{ matrix.platform.target }} path: dist - name: pytest if: ${{ !startsWith(matrix.platform.target, 'x86') }} - uses: uraimo/run-on-arch-action@v2 + uses: uraimo/run-on-arch-action@v3.1.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -138,13 +158,13 @@ jobs: - runner: windows-latest target: x86 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 with: python-version: 3.14 architecture: ${{ matrix.platform.target }} - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -152,7 +172,7 @@ jobs: args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: wheels-windows-${{ matrix.platform.target }} path: dist @@ -175,12 +195,12 @@ jobs: - runner: macos-14 target: aarch64 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 with: python-version: 3.14 - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 env: PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 with: @@ -188,7 +208,7 @@ jobs: args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: wheels-macos-${{ matrix.platform.target }} path: dist @@ -203,17 +223,39 @@ jobs: pip install pytest pytest + coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6.0.3 + - uses: actions/setup-python@v6.2.0 + with: + python-version: "3.12" + - name: Build and install package + uses: PyO3/maturin-action@v1.51.0 + env: + PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1 + with: + command: develop + args: --release --extras test + - name: Run coverage + run: pytest --cov=e57 --cov-report=term-missing --cov-report=xml + - name: Upload coverage artifact + uses: actions/upload-artifact@v7.0.1 + with: + name: coverage-xml + path: coverage.xml + sdist: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6.0.3 - name: Build sdist - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 with: command: sdist args: --out dist - name: Upload sdist - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: wheels-sdist path: dist @@ -231,14 +273,14 @@ jobs: # Used to generate artifact attestation attestations: write steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8.0.1 - name: Generate artifact attestation - uses: actions/attest-build-provenance@v1 + uses: actions/attest-build-provenance@v4.1.0 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@v1.51.0 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: diff --git a/pyproject.toml b/pyproject.toml index cb25851..5744eac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,7 @@ classifiers = [ [project.optional-dependencies] test = [ 'pytest>=9,<10', + 'pytest-cov>=5,<7', ] [project.urls]