Skip to content

Commit 59f8564

Browse files
Merge pull request #274 from SpectralVectors/master
5.1 Wheels, Log Formatting, Numpy Fix
2 parents a3e71b5 + 117c385 commit 59f8564

130 files changed

Lines changed: 49523 additions & 835111 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/black.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: black-action
2-
on: [push, pull_request]
2+
on: [pull_request] # push
33
jobs:
44
linter_name:
55
name: runner / black

.github/workflows/build_and_test.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ jobs:
1414
# blender_version: '4.2.1'
1515
runs-on: ${{ matrix.os }}
1616
steps:
17+
1718
- name: Checkout repository
1819
uses: actions/checkout@v4.1.1
1920
# - name: Install bash 4(macOS)
@@ -22,13 +23,15 @@ jobs:
2223
# - name: Install blender (macOS)
2324
# if: runner.os == 'macOS'
2425
# run: brew install --cask blender
26+
2527
- name: Cache blender
2628
id: cache-blender
2729
if: runner.os != 'macOS'
2830
uses: actions/cache/restore@v4
2931
with:
3032
path: blender
3133
key: ${{ matrix.os }}-${{ matrix.blender_version }}-blender
34+
3235
- name: Download blender
3336
id: download
3437
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
@@ -48,6 +51,7 @@ jobs:
4851
echo Archive name: $BLENDER_ARCHIVE
4952
curl -O -L https://download.blender.org/release/Blender${BLENDER_MAJOR}/${BLENDER_ARCHIVE}
5053
echo "BLENDER_ARCHIVE=${BLENDER_ARCHIVE}" >> "$GITHUB_OUTPUT"
54+
5155
- name: Extract blender
5256
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
5357
run: |
@@ -56,12 +60,14 @@ jobs:
5660
os.makedirs("blender",exist_ok=True)
5761
shutil.unpack_archive("${{ steps.download.outputs.BLENDER_ARCHIVE }}","blender")
5862
shell: python
63+
5964
- name: Save blender
6065
uses: actions/cache/save@v4
6166
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
6267
with:
6368
path: blender
6469
key: ${{ matrix.os }}-${{ matrix.blender_version }}-blender
70+
6571
- name: Make addon zip
6672
uses: thedoctor0/zip-release@0.7.5
6773
if: always()
@@ -71,6 +77,7 @@ jobs:
7177
directory: './'
7278
path: 'fabex'
7379
exclusions: '/*docs/* /*tests/*'
80+
7481
- name: Run tests
7582
shell: bash
7683
run: |
@@ -82,6 +89,7 @@ jobs:
8289
cd tests
8390
python install_addon.py ${ADDON_PATH}
8491
python test_suite.py -vvv
92+
8593
- uses: actions/upload-artifact@v4
8694
if: always()
8795
with:

.github/workflows/create_release.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ jobs:
1818
permissions:
1919
contents: write
2020
steps:
21+
2122
- name: Checkout
2223
uses: actions/checkout@v4.1.1
24+
2325
- name: Bump version
2426
shell: python
2527
env:
@@ -72,6 +74,7 @@ jobs:
7274
env_file.write_text(f"VERSION_TAG={major}.{minor}.{patch}")
7375
7476
print(f"New version: {major}.{minor}.{patch}")
77+
7578
- name: Make addon zip
7679
uses: thedoctor0/zip-release@0.7.5
7780
with:
@@ -80,17 +83,20 @@ jobs:
8083
directory: './'
8184
path: 'fabex'
8285
exclusions: '/*docs/* /*tests/*'
86+
8387
- name: Write version number
8488
if: ${{ inputs.version_bump }} != "overwrite previous tag"
8589
run: |
8690
git config --global user.name 'Release robot'
8791
git config --global user.email 'release-robot@users.noreply.github.com'
8892
git commit -am "Version number" || true
93+
8994
- name: Push changes
9095
uses: ad-m/github-push-action@master
9196
with:
9297
github_token: ${{ secrets.GITHUB_TOKEN }}
9398
branch: ${{ github.ref }}
99+
94100
- name: make release
95101
uses: ncipollo/release-action@v1
96102
with:

.github/workflows/docs_pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: docs_pages_workflow
33
# execute this workflow automatically when a we push to master
44
on:
55
push:
6-
branches: [ master ]
6+
branches: [ funk ] # master
77

88
jobs:
99
build_docs_job:
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
name: Build Split Platform Extension
2+
on:
3+
# push:
4+
pull_request:
5+
jobs:
6+
build_and_test:
7+
strategy:
8+
fail-fast: false
9+
matrix:
10+
os: ['ubuntu-latest'] # ,'windows-latest']
11+
blender_version: ['5.0.0'] # 5.1.0-beta+v51.748b1754d82a
12+
# include:
13+
# - os: 'macos-latest'
14+
# blender_version: '4.2.1'
15+
runs-on: ${{ matrix.os }}
16+
steps:
17+
18+
# Check out the Fabex repo
19+
- name: Checkout repository
20+
uses: actions/checkout@v4.1.1
21+
# - name: Install bash 4(macOS)
22+
# if: runner.os == 'macOS'
23+
# run: brew install bash
24+
# - name: Install blender (macOS)
25+
# if: runner.os == 'macOS'
26+
# run: brew install --cask blender
27+
28+
# Check for a cached version of Blender
29+
# Skips Download and Install if the Blender version is unchanged
30+
- name: Cache blender
31+
id: cache-blender
32+
if: runner.os != 'macOS'
33+
uses: actions/cache/restore@v4
34+
with:
35+
path: blender
36+
key: ${{ matrix.os }}-${{ matrix.blender_version }}-blender
37+
38+
# Download Blender for initial run, or when Blender version
39+
# is updated
40+
- name: Download blender
41+
id: download
42+
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
43+
shell: bash
44+
run: |
45+
declare -A os_suffixes
46+
os_suffixes["ubuntu-latest"]="linux-x64.tar.xz"
47+
os_suffixes["macos-latest"]="macos-x64.dmg"
48+
os_suffixes["windows-latest"]="windows-x64.zip"
49+
export OS_SUFFIX=${os_suffixes["${{ matrix.os }}"]}
50+
IFS='.' read -ra BLENDER_SPLIT <<< "${{ matrix.blender_version }}"
51+
export BLENDER_MAJOR=${BLENDER_SPLIT[0]}.${BLENDER_SPLIT[1]}
52+
export BLENDER_MINOR=${BLENDER_SPLIT[2]}
53+
export BLENDER_ARCHIVE="blender-${BLENDER_MAJOR}.${BLENDER_MINOR}-${OS_SUFFIX}"
54+
echo Major version: $BLENDER_MAJOR
55+
echo Minor version: $BLENDER_MINOR
56+
echo Archive name: $BLENDER_ARCHIVE
57+
curl -O -L https://download.blender.org/release/Blender${BLENDER_MAJOR}/${BLENDER_ARCHIVE}
58+
echo "BLENDER_ARCHIVE=${BLENDER_ARCHIVE}" >> "$GITHUB_OUTPUT"
59+
60+
# Extract the downloaded Blender archive
61+
- name: Extract blender
62+
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
63+
run: |
64+
import shutil
65+
import os
66+
os.makedirs("blender",exist_ok=True)
67+
shutil.unpack_archive("${{ steps.download.outputs.BLENDER_ARCHIVE }}","blender")
68+
shell: python
69+
70+
# Save this Blender version to the cache for re-use
71+
- name: Save blender
72+
uses: actions/cache/save@v4
73+
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
74+
with:
75+
path: blender
76+
key: ${{ matrix.os }}-${{ matrix.blender_version }}-blender
77+
78+
# Build the Extension using Blender
79+
- name: Build Extension
80+
id: build
81+
shell: bash
82+
run: |
83+
export BLENDER_BIN_PATH=${PWD}/blender/$(ls -AU blender | head -1)
84+
export PATH=$PATH:${BLENDER_BIN_PATH}
85+
blender --command extension build --source-dir=./fabex --split-platforms
86+
87+
- name: Get Version Tag
88+
shell: python
89+
run: |
90+
from pathlib import Path
91+
import re
92+
import os
93+
94+
# Path to the file with the version number
95+
v_file=Path("fabex","version.py")
96+
version_txt=v_file.read_text()
97+
98+
# Separate each number in the version into its own variable
99+
major,minor,patch = re.match(r".*\(\s*(\d+),(\s*\d+),(\s*\d+)\)",version_txt).groups()
100+
101+
# Write the version number to an env file for the 'make release' action
102+
103+
version_tag = f"{major}.{minor}.{patch}".replace(' ','')
104+
runner_os = "${{runner.os}}".lower()
105+
runner_arch = "${{runner.arch}}".lower()
106+
107+
env_file = Path(os.getenv('GITHUB_ENV'))
108+
env_file.write_text(
109+
f"""VERSION_TAG={version_tag}
110+
OS={runner_os}
111+
ARCH={runner_arch}
112+
""")
113+
114+
print(f"New version: {major}.{minor}.{patch}")
115+
116+
# Upload the Linux Extension file for download
117+
- name: Upload Linux Build
118+
uses: actions/upload-artifact@v4
119+
if: always()
120+
with:
121+
name: fabex-${{ env.VERSION_TAG }}-${{ env.OS }}_${{env.ARCH}}
122+
path: ./fabex-${{ env.VERSION_TAG }}-${{ env.OS }}_${{env.ARCH}}.zip
123+
124+
# Upload the Windows Extension file for download
125+
- name: Upload Windows Build
126+
uses: actions/upload-artifact@v4
127+
if: always()
128+
with:
129+
name: fabex-${{ env.VERSION_TAG }}-windows_x64
130+
path: ./fabex-${{ env.VERSION_TAG }}-windows_x64.zip
131+
132+
# Upload the Mac x64 Extension file for download
133+
- name: Upload Mac x86 Build
134+
uses: actions/upload-artifact@v4
135+
if: always()
136+
with:
137+
name: fabex-${{ env.VERSION_TAG }}-macos_x64
138+
path: ./fabex-${{ env.VERSION_TAG }}-macos_x64.zip
139+
140+
# Upload the Mac ARM Extension file for download
141+
- name: Upload Mac ARM Build
142+
uses: actions/upload-artifact@v4
143+
if: always()
144+
with:
145+
name: fabex-${{ env.VERSION_TAG }}-macos_arm64
146+
path: ./fabex-${{ env.VERSION_TAG }}-macos_arm64.zip
147+
148+
- name: make release
149+
uses: ncipollo/release-action@v1
150+
with:
151+
artifacts: "fabex-*.zip"
152+
tag: ${{ env.VERSION_TAG }}
153+
allowUpdates: true
154+
bodyFile: './docs/RELEASE.md'

fabex/blender_manifest.toml

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
schema_version = "3.0.3"
22

33
id = "fabex"
4-
version = "3.0.3"
4+
version = "3.0.5"
55
name = "Fabex CNC (formerly BlenderCAM)"
66
tagline = "G-code Generation Tools"
77
maintainer = "Alain Pelletier and Contributors"
@@ -18,41 +18,72 @@ license = [
1818
]
1919

2020
copyright = [
21-
"2012-2024 Vilem Novak, Alain Pelletier & contributors",
21+
"2012-2026 Vilem Novak, Alain Pelletier & contributors",
2222
]
2323

2424
platforms = ["windows-x64", "macos-x64", "macos-arm64", "linux-x64"]
2525

2626
wheels = [
27-
# llvmlite
27+
# llvmlite
28+
# 3.11
2829
"./wheels/llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl",
2930
"./wheels/llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl",
3031
"./wheels/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
3132
"./wheels/llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
3233
"./wheels/llvmlite-0.43.0-cp311-cp311-win_amd64.whl",
34+
# 3.13
35+
"./wheels/llvmlite-0.46.0-cp313-cp313-macosx_12_0_arm64.whl",
36+
"./wheels/llvmlite-0.46.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
37+
"./wheels/llvmlite-0.46.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
38+
"./wheels/llvmlite-0.46.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64(1).whl",
39+
"./wheels/llvmlite-0.46.0-cp313-cp313-win_amd64.whl",
3340

34-
# numba
41+
# numba
42+
# 3.11
3543
"./wheels/numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl",
3644
"./wheels/numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl",
3745
"./wheels/numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
3846
"./wheels/numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
3947
"./wheels/numba-0.60.0-cp311-cp311-win_amd64.whl",
48+
# 3.13
49+
"./wheels/numba-0.63.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
50+
"./wheels/numba-0.64.0-cp313-cp313-macosx_12_0_arm64.whl",
51+
"./wheels/numba-0.64.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
52+
"./wheels/numba-0.64.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
53+
"./wheels/numba-0.64.0-cp313-cp313-win_amd64.whl",
4054

41-
# opencamlib
55+
# opencamlib
56+
# 3.11
4257
"./wheels/opencamlib-2023.1.11-cp311-cp311-macosx_10_9_x86_64.whl",
4358
"./wheels/opencamlib-2023.1.11-cp311-cp311-macosx_11_0_arm64.whl",
4459
"./wheels/opencamlib-2023.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
4560
"./wheels/opencamlib-2023.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
4661
"./wheels/opencamlib-2023.1.11-cp311-cp311-win_amd64.whl",
4762
"./wheels/opencamlib-2023.1.11-cp311-cp311-win32.whl",
63+
# 3.13
64+
"./wheels/opencamlib-2026.3.3.dev27-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
65+
"./wheels/opencamlib-2026.3.3.dev27-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
66+
"./wheels/opencamlib-2026.3.3.dev27-cp313-cp313-win_amd64.whl",
67+
"./wheels/opencamlib-2026.3.3.dev27-cp313-cp313-win32.whl",
68+
"./wheels/opencamlib-2026.3.5.dev92-cp313-cp313-macosx_15_0_arm64.whl",
69+
"./wheels/opencamlib-2026.3.5.dev118-cp313-cp313-macosx_14_0_x86_64.whl",
4870

49-
# shapely
71+
# shapely
72+
# 3.11
5073
"./wheels/shapely-2.0.5-cp311-cp311-macosx_10_9_x86_64.whl",
5174
"./wheels/shapely-2.0.5-cp311-cp311-macosx_11_0_arm64.whl",
5275
"./wheels/shapely-2.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
5376
"./wheels/shapely-2.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
5477
"./wheels/shapely-2.0.5-cp311-cp311-win_amd64.whl",
5578
"./wheels/shapely-2.0.5-cp311-cp311-win32.whl",
79+
# 3.13
80+
"./wheels/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl",
81+
"./wheels/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl",
82+
"./wheels/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl",
83+
"./wheels/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
84+
"./wheels/shapely-2.1.2-cp313-cp313-win_amd64.whl",
85+
"./wheels/shapely-2.1.2-cp313-cp313-win32.whl",
86+
5687
]
5788

5889
[permissions]

fabex/bridges.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,4 +383,4 @@ def auto_cut_bridge(o):
383383
bridgecollectionname = o.bridges_collection_name
384384
bridgecollection = bpy.data.collections[bridgecollectionname]
385385
if len(bridgecollection.objects) > 0:
386-
log.info("Bridges")
386+
log.info("Bridges/Tabs: True")

fabex/chunk_builder.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -675,12 +675,12 @@ def lead_contour(self, o):
675675

676676
if self.parents: # if it is inside another parent
677677
perimeterDirection ^= 1 # toggle with a bitwise XOR
678-
log.info("Has Parent")
678+
log.info("Has Parent: True")
679679

680680
if perimeterDirection == 1:
681-
log.info("Path Direction is Clockwise")
681+
log.info("Path Direction: Clockwise")
682682
else:
683-
log.info("Path Direction is Counter Clockwise")
683+
log.info("Path Direction: Counter Clockwise")
684684

685685
iradius = o.lead_in
686686
oradius = o.lead_out

0 commit comments

Comments
 (0)