Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ee5eeea
Update Lasso version, dissolve deprecated Poetry group
druzsan Oct 28, 2025
1c77ad2
Use Poetry 2.2.1
druzsan Oct 28, 2025
010f5dc
Format CI/CD workflow
druzsan Oct 28, 2025
04287f8
Format Setup CI action, update Poetry version to 2.2.1
druzsan Oct 28, 2025
c5248fd
Set Poetry version via argument
druzsan Oct 28, 2025
de182c6
Update dependencies
druzsan Oct 28, 2025
5943ffb
Add matplotlib to dev dependencies
druzsan Oct 28, 2025
17787ae
Fix linting (almost) and partly types
druzsan Oct 29, 2025
8b0f203
Fix types (or ignore for now)
druzsan Oct 29, 2025
0bf9b31
Fix lint errors and types
druzsan Oct 29, 2025
ad05f64
Add mypy to CI pipeline
druzsan Oct 29, 2025
3f41939
Update and pin GitHub Actions
druzsan Oct 29, 2025
beea193
Rename CI/CD pipeline
druzsan Oct 29, 2025
dfd5427
Fix typing
druzsan Oct 29, 2025
51d5b7d
Fix lint errors
druzsan Oct 29, 2025
22d07d5
Remove `py` from dependencies
druzsan Oct 29, 2025
f663fba
Add Makefile
druzsan Oct 29, 2025
27a017f
Update CI pipeline
druzsan Oct 29, 2025
1046ebc
Remove unused dependencies
druzsan Oct 29, 2025
9e7ec74
Update dependencies
druzsan Oct 29, 2025
8b5a1db
Alias numpy.typing as npt
druzsan Oct 29, 2025
eba3425
Add Python 3.13 to CI
druzsan Oct 29, 2025
25a6252
Install `imghdr` for Python>=3.13
druzsan Oct 29, 2025
029cb25
Set fail-fast ic CI to false
druzsan Oct 29, 2025
f73415f
Adjust prints of ordereddicts in REPLs
druzsan Oct 29, 2025
01f4554
Make unit test verbose
druzsan Oct 29, 2025
0f754fc
Check wheel as a separate stage
druzsan Oct 29, 2025
d4e0ad9
Only release if check wheel job didn't fail
druzsan Oct 29, 2025
2e75306
Allow tests failure on Windows and Python 3.13
druzsan Oct 30, 2025
22b5f79
Allow Python^3.9
druzsan Oct 30, 2025
4e9aa92
Update minimal versions without major
druzsan Oct 30, 2025
9a20b56
Move continue-on-error from step level to job level
druzsan Oct 30, 2025
59ecc2a
Test on Python 3.14
druzsan Oct 30, 2025
e25537f
Use `poetry sync`
druzsan Oct 30, 2025
0e39207
Update min trimesh version
druzsan Oct 30, 2025
8e5ece9
Fix: trimesh usage
druzsan Oct 30, 2025
b479106
Update Sphinx
druzsan Oct 30, 2025
216ba0d
Allow failure on Windows & Python 3.13, 3.14
druzsan Oct 30, 2025
a4413da
Increate test verbosity
druzsan Oct 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 34 additions & 34 deletions .github/actions/ci-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,44 @@ name: CI setup

inputs:
os:
description: 'OS'
description: "OS"
required: true
python-version:
description: 'The python version to install and setup'
description: "The python version to install and setup"
required: true

poetry-version:
description: "The poetry version to install and setup"
default: "2.2.1"

runs:
using: composite
steps:
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ inputs.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
version: "2.1.4"
- name: add poetry to windows path
if: runner.os == 'Windows'
run: echo "C:/Users/runneradmin/.local/bin" >> $GITHUB_PATH
shell: bash
- name: add dynamic versioning
run: poetry self add "poetry-dynamic-versioning[plugin]"
shell: bash
- name: Cache Packages
id: poetry-cache
uses: actions/cache@v3
with:
path: |
.venv
poetry.lock
key: poetry-${{ inputs.os }}-${{ inputs.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ hashFiles('.github/workflows/*.yml') }}
- name: Install dependencies
env:
SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL: true
if: steps.poetry-cache.outputs.cache-hit != 'true'
run: poetry install
shell: bash
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}
- name: Install Poetry ${{ inputs.poetry-version }}
uses: snok/install-poetry@76e04a911780d5b312d89783f7b1cd627778900a
with:
virtualenvs-create: true
virtualenvs-in-project: true
version: ${{ inputs.poetry-version }}
- name: add poetry to windows path
if: runner.os == 'Windows'
run: echo "C:/Users/runneradmin/.local/bin" >> $GITHUB_PATH
shell: bash
- name: add dynamic versioning
run: poetry self add "poetry-dynamic-versioning[plugin]"
shell: bash
- name: Cache Packages
id: poetry-cache
uses: actions/cache@v4
with:
path: |
.venv
poetry.lock
key: poetry-${{ inputs.os }}-${{ inputs.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ hashFiles('.github/workflows/*.yml') }}
- name: Install dependencies
if: steps.poetry-cache.outputs.cache-hit != 'true'
run: poetry sync --no-interaction
shell: bash
255 changes: 255 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,255 @@
name: CI/CD
on: push
permissions:
contents: write

jobs:
prepare-linux:
name: "🐧 Prepare Linux"
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
os-version: ["ubuntu-latest"]
fail-fast: false
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: ${{ matrix.os-version }}
python-version: ${{ matrix.python-version }}

prepare-win:
name: "🪟 Prepare Windows"
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
os-version: ["windows-latest"]
fail-fast: false
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: ${{ matrix.os-version }}
python-version: ${{ matrix.python-version }}

check-format:
name: "🔍 Check Code Format"
needs: prepare-linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.9"
- name: check
run: |
poetry run black --check docs mesh2vec scripts tests

pylint:
name: "🔍 Lint Code"
needs: prepare-linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.9"
- name: check
run: |
poetry run pylint docs/examples mesh2vec scripts tests

mypy:
name: "🔍 Check Code Types"
needs: prepare-linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.9"
- name: check
run: |
poetry run mypy docs/examples mesh2vec scripts tests

audit:
name: "🔍 Audit Dependencies"
needs: [prepare-linux, prepare-win]
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
os-version: ["windows-latest", "ubuntu-latest"]
fail-fast: false
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: ${{ matrix.os-version }}
python-version: ${{ matrix.python-version }}
- name: check
run: |
poetry run pip-audit

doctest:
name: "🧪 Run Doctests"
needs: [prepare-linux, prepare-win]
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
os-version: ["windows-latest", "ubuntu-latest"]
fail-fast: false
continue-on-error: ${{ matrix.os-version == 'windows-latest' && (matrix.python-version == '3.13' || matrix.python-version == '3.14') }}
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: ${{ matrix.os-version }}
python-version: ${{ matrix.python-version }}
- name: test
run: |
poetry run sphinx-build docs/source build/documentation/ -W -vvv -b doctest

unit-test:
name: "🧪 Run Unit Tests"
needs: [prepare-linux, prepare-win]
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
os-version: ["windows-latest", "ubuntu-latest"]
fail-fast: false
continue-on-error: ${{ matrix.os-version == 'windows-latest' && (matrix.python-version == '3.13' || matrix.python-version == '3.14') }}
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: ${{ matrix.os-version }}
python-version: ${{ matrix.python-version }}
- name: test
run: |
poetry run pytest -vv -s --tb=long tests

build-docs:
name: "🧱 Build Documentation"
needs: prepare-linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.13"
- name: build docs
run: |
poetry run sphinx-build docs/source build/documentation/ -W -vvv -b html
- name: Store docs
uses: actions/upload-artifact@v5
with:
name: docs
path: build/documentation/

build-wheel:
name: "🧱 Build Wheel"
needs: prepare-linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.13"
- name: build wheel
run: poetry build -f wheel -vvv
- name: Store wheel
uses: actions/upload-artifact@v5
with:
name: dist
path: dist/

check-wheel:
name: "🔍 Check Wheel"
needs: [prepare-linux, build-wheel]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup CI
uses: "./.github/actions/ci-setup"
with:
os: "ubuntu-latest"
python-version: "3.9"
- name: Download wheels
uses: actions/download-artifact@v6
with:
name: dist
path: dist/
- name: check wheel contents
run: poetry run check-wheel-contents dist/

release-docs:
name: "🚀 Release Documentation"
if: startsWith(github.ref, 'refs/tags/v')
needs:
- check-format
- audit
- pylint
- mypy
- unit-test
- doctest
- build-wheel
- check-wheel
- build-docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Download docs
uses: actions/download-artifact@v6
with:
name: docs
path: build/documentation/
- name: Deploy
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/documentation/

release:
name: "🚀 Release"
if: startsWith(github.ref, 'refs/tags/v')
needs:
- check-format
- audit
- pylint
- mypy
- unit-test
- doctest
- build-wheel
- check-wheel
- build-docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Download wheels
uses: actions/download-artifact@v6
with:
name: dist
path: dist/
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e
with:
password: ${{ secrets.PYPI_API_TOKEN }}
Loading
Loading