Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
dd8edec
Modernize project for Python 3.9+ and COMPAS 2.x
jf--- Dec 9, 2025
811b7b0
Add type hints to core geometry and slicer modules
jf--- Dec 9, 2025
9c17f7a
f-strings, ruff fixes, COMPAS 2.x API compat, fix circular imports
jf--- Dec 9, 2025
88bc60f
fix COMPAS 2.x API: edge_faces, fix circular imports
jf--- Dec 9, 2025
c11b34b
COMPAS 2.x serialization: __data__ and __from_data__ API
jf--- Dec 9, 2025
d368f46
fix mypy errors: direct imports, type annotations, mypy config
jf--- Dec 9, 2025
67ba43d
refactor: replace dicts with dataclasses throughout codebase
jf--- Dec 9, 2025
e80aee7
unify deps: environment.yml only, prefer conda
jf--- Dec 9, 2025
d9c48b2
use compas_libigl for geodesics/massmatrix, keep igl for cotmatrix/gr…
jf--- Dec 9, 2025
76c2f6f
refactor: replace igl with compas_libigl, drop libigl dep
jf--- Dec 9, 2025
fe53a41
refactor: replace os.path with pathlib.Path
jf--- Dec 9, 2025
c6fb9e6
add typed config module, type hints to slicers and print organizers
jf--- Dec 9, 2025
b004095
type hints for parameters module, add min/max layer height defaults
jf--- Dec 9, 2025
c0cb5af
type hints utils.py, Path return for get_output_directory
jf--- Dec 9, 2025
22ca36d
type hints post_processing, slice_utilities, planar_slicing
jf--- Dec 9, 2025
6996247
type hints pre_processing main modules, update save_to_json sig
jf--- Dec 9, 2025
89a081e
type hints preprocessing_utils, print_organization_utilities
jf--- Dec 9, 2025
acfd2c0
add examples to test suite, add compas_cgal dep, fix compas 2.x compat
jf--- Dec 9, 2025
1974d01
perf: numpy vectorization + KDTree for hot loops
jf--- Dec 9, 2025
448941f
fix up_vector serialization after smoothing
jf--- Dec 9, 2025
34577cd
unify rdp + add batch closest point, CGAL fallback
jf--- Dec 9, 2025
28ea19c
perf: geodesic caching + vectorized contour finding
jf--- Dec 9, 2025
be25b65
add CGAL features: polygon offset, holes, remesh
jf--- Dec 9, 2025
9ce4f8f
vectorize assign_interpolation_distance, 11s->9.7s
jf--- Dec 9, 2025
bacf624
simplify calculate_z_bounds
jf--- Dec 9, 2025
bcf4a31
switch geodesics default to heat_igl: 22s->3.4s (85%)
jf--- Dec 9, 2025
bb2fbb9
add CGAL heat geodesics method option
jf--- Dec 9, 2025
6e290d0
remove libigl dependency, replace with CGAL + NumPy
jf--- Dec 9, 2025
cc3d7ff
add medial axis infill using CGAL straight skeleton
jf--- Dec 9, 2025
83b629a
align environment.yml with pyproject.toml deps
jf--- Dec 9, 2025
1b365cb
update env versions to match installed
jf--- Dec 9, 2025
bb5af98
add compas_viewer visualization to examples
jf--- Dec 9, 2025
58d6192
add viz to example 6
jf--- Dec 9, 2025
238c968
add viz to example 5
jf--- Dec 9, 2025
5c23f85
move visualization to own module compas_slicer.visualization
jf--- Dec 9, 2025
3057bde
close polylines for closed paths in viz
jf--- Dec 9, 2025
a64d9c6
replace os.path with pathlib in all examples
jf--- Dec 10, 2025
abbe09d
replace os.path with pathlib in tests
jf--- Dec 10, 2025
124fa89
replace logging with loguru throughout codebase
jf--- Dec 10, 2025
9332280
move plot_networkx_graph to viz module, lazy load matplotlib
jf--- Dec 10, 2025
ce8ad21
fix ruff errors
jf--- Dec 10, 2025
c5be2aa
add ruff CI check
jf--- Dec 10, 2025
d9848be
fix deploy-n-publish.yml: update actions, use python -m build, drop p…
jf--- Dec 10, 2025
25bfb54
replace print() with logger calls
jf--- Dec 10, 2025
6b1bb01
add comment explaining silent exception in __init__.py
jf--- Dec 10, 2025
010fb73
replace assertions with explicit validation in user-facing APIs
jf--- Dec 10, 2025
4131d60
sync pyproject.toml deps with environment.yml, drop numba
jf--- Dec 10, 2025
dc62c47
remove mypy continue-on-error in CI
jf--- Dec 10, 2025
9d637ab
fix pr-checks.yml: remove duplicate ruff, fix branch target
jf--- Dec 10, 2025
7bbf321
add coverage threshold (50%) to pytest config
jf--- Dec 10, 2025
6526442
fix list comprehension side effect anti-pattern
jf--- Dec 10, 2025
8b69a81
fix get_dict_key_from_value to return None instead of string
jf--- Dec 10, 2025
c8522a5
remove commented-out debug code
jf--- Dec 10, 2025
8051090
refactor: replace parameters module w/ TOML config
jf--- Dec 10, 2025
99c3e76
refactor gcode: GcodeBuilder class, extract helpers, named constants
jf--- Dec 10, 2025
40a4d77
replace custom is_point_on_line_xy with compas is_point_on_segment_xy
jf--- Dec 10, 2025
7a37be1
remove default planar slicer, use only CGAL (required dep)
jf--- Dec 10, 2025
12fd6a1
migrate docs from rst/sphinx to markdown/mkdocs
jf--- Dec 10, 2025
43c8bf6
clean rst cruft from module docstrings
jf--- Dec 10, 2025
50adf7a
add yak workflow for rhino pkg manager
jf--- Dec 10, 2025
7856f83
modernize CI: split docs/release, add py3.13, simplify pr-checks
jf--- Dec 10, 2025
219009f
cleanup: remove legacy files, convert changelog to md, update tasks f…
jf--- Dec 10, 2025
f685958
docs: add concepts section with architecture, algorithms, print organ…
jf--- Dec 10, 2025
3f9affc
improve example documentation with full explanations
jf--- Dec 10, 2025
4cb6226
replace asserts with proper exceptions, use f-strings
jf--- Dec 10, 2025
b07e690
fix geodesics: remove buggy default method, use CGAL by default
jf--- Dec 10, 2025
aee2067
add medial axis infill example documentation
jf--- Dec 10, 2025
80c64ab
add mike for versioned docs
jf--- Dec 11, 2025
bd64b9d
add mathjax support for math rendering
jf--- Dec 11, 2025
e3024bb
fix ascii art rendering: preserve whitespace in code blocks
jf--- Dec 11, 2025
d004139
update the authors, weazle myself in
jf--- Dec 11, 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
16 changes: 8 additions & 8 deletions .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
[bumpversion]
current_version = 0.7.0
current_version = 0.8.0
message = Bump version to {new_version}
commit = True
tag = True

[bumpversion:file:setup.py]
search = version="{current_version}"
replace = version="{new_version}"
[bumpversion:file:pyproject.toml]
search = version = "{current_version}"
replace = version = "{new_version}"

[bumpversion:file:docs/conf.py]
search = version = release = '{current_version}'
replace = version = release = '{new_version}'
search = version = release = "{current_version}"
replace = version = release = "{new_version}"

[bumpversion:file:docs/doc_versions.txt]
search = {current_version}
replace = {new_version}
{current_version}

[bumpversion:file:src/compas_slicer/__init__.py]
search = __version__ = '{current_version}'
replace = __version__ = '{new_version}'
search = __version__ = "{current_version}"
replace = __version__ = "{new_version}"

[bumpversion:file:CHANGELOG.rst]
search = Unreleased
Expand Down
43 changes: 24 additions & 19 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
name: build

on:
# [push]
push:
branches:
- master
Expand All @@ -10,33 +9,39 @@ on:
- master

jobs:
build-packages:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v2
- name: Setup miniconda with python ${{ matrix.python-version }}
uses: conda-incubator/setup-miniconda@v2
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
activate-environment: compas_slicer
environment-file: environment.yml
python-version: 3.8
auto-activate-base: false
auto-update-conda: true
- name: Conda info
run: conda info
- name: Install project
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --no-cache-dir -r requirements-dev.txt
python -m pip install --upgrade pip
pip install -e ".[dev]"

- name: Test import
run: |
python -c "import compas_slicer; print('COMPAS Slicer version: ' + compas_slicer.__version__)"
- name: Lint with flake8
python -c "import compas_slicer; print('COMPAS Slicer version: ' + compas_slicer.__version__)"

- name: Lint with ruff
run: |
invoke lint
ruff check src/

- name: Type check with mypy
run: |
mypy src/compas_slicer --ignore-missing-imports

- name: Test with pytest
run: |
invoke test
pytest tests/ -v
73 changes: 0 additions & 73 deletions .github/workflows/deploy-n-publish.yml

This file was deleted.

50 changes: 50 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: docs

on:
push:
branches: [master]
paths:
- 'docs/**'
- 'mkdocs.yml'
- '.github/workflows/docs.yml'
pull_request:
branches: [master]
paths:
- 'docs/**'
- 'mkdocs.yml'
- '.github/workflows/docs.yml'
workflow_dispatch:

permissions:
contents: write

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install dependencies
run: |
pip install -e ".[docs]"

- name: Build docs
run: mkdocs build --strict

- name: Configure git for mike
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
git config user.name github-actions
git config user.email github-actions@github.com

- name: Deploy docs with mike
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
git fetch origin gh-pages --depth=1
mike deploy --push --update-aliases latest stable
mike set-default --push latest
31 changes: 18 additions & 13 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
name: verify-pr-checklist
name: pr-checks

on:
pull_request:
types: [assigned, opened, synchronize, reopened, labeled, unlabeled]
branches:
- main
- master
branches: [master]

jobs:
build:
name: Check Actions
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Changelog check
uses: Zomzog/changelog-checker@v1.1.0
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
fileName: CHANGELOG.rst
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
python-version: "3.12"

- name: Install ruff
run: pip install ruff

- name: Check formatting
run: ruff format --check src/ tests/

- name: Check linting
run: ruff check src/ tests/
52 changes: 52 additions & 0 deletions .github/workflows/publish_yak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: publish_yak

on:
workflow_dispatch:
inputs:
environment:
description: "Choose deployment environment"
required: true
type: choice
options:
- test
- prod

jobs:
publish_yak:
runs-on: windows-latest

steps:
- name: Set test flag based on input
shell: pwsh
run: |
if ("${{ github.event.inputs.environment }}" -eq "test") {
echo "TEST_FLAG=--test-server" | Out-File -FilePath $env:GITHUB_ENV -Append
} else {
echo "TEST_FLAG=" | Out-File -FilePath $env:GITHUB_ENV -Append
}

- name: Checkout repo
uses: actions/checkout@v4

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]

- name: Create Rhino 8 Yak package
shell: pwsh
run: |
invoke yakerize -m $Env:YAK_TEMPLATE\manifest.yml -l $Env:YAK_TEMPLATE\icon.png -g $Env:USER_OBJECTS -t rh8
env:
USER_OBJECTS: src\compas_slicer_ghpython\gh_components
YAK_TEMPLATE: src\compas_slicer_ghpython\yak_template

- name: Publish to Yak server (Rhino 8)
shell: pwsh
run: |
$test_flag = if ($Env:TEST_FLAG) { $Env:TEST_FLAG } else { "" }
$file = Get-ChildItem -Path dist\yak_package\*rh8*.yak -File | Select-Object -ExpandProperty Name
$command = "invoke publish-yak -y dist\yak_package\$file $test_flag".Trim()
Invoke-Expression $command
env:
YAK_TOKEN: ${{ secrets.YAK_TOKEN }}
29 changes: 29 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: release

on:
push:
tags:
- "v*"

permissions:
id-token: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install build tools
run: pip install build

- name: Build package
run: python -m build

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
Loading
Loading