python-cad-tools 0.1.11__tar.gz → 0.1.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.github/workflows/ci.yml +62 -2
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.github/workflows/downstream-compatibility.yml +6 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.github/workflows/release-candidate.yml +14 -0
- python_cad_tools-0.1.13/.github/workflows/release.yml +61 -0
- {python_cad_tools-0.1.11/src/python_cad_tools.egg-info → python_cad_tools-0.1.13}/PKG-INFO +1 -1
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13/src/python_cad_tools.egg-info}/PKG-INFO +1 -1
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/scm_version.json +2 -2
- python_cad_tools-0.1.11/.github/workflows/release.yml +0 -51
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.gitattributes +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.githooks/pre-push +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.gitignore +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.opencode/commands/autocommit.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.opencode/tools/specrepo-autocommit.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.opencode/tools/specrepo-autocommit.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/AGENTS.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/CHANGELOG.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/CLAUDE.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/LICENSE +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/MANIFEST.in +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/README.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/build-semantics.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/drawing-extensions.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/manifests.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/neutral-model.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/project-configuration.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/public-api.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/spikes/format-feasibility.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/toolchain.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/two-tier-contract.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/docs/viewer-delivery.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/pyproject.toml +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/setup.cfg +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/__init__.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/__main__.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_locking.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_project_loader.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_project_state.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_scaffold.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_transaction.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/app.webmanifest +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/asset-manifest.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/animationGroup-d5_0GqzW.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-BTnhNnCG.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-B1WedbgE.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-DIdTXZSR.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/bumpFragment-C_S7LReC.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/bumpVertex-9p8w1w7z.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-B8rpdm3U.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-A-1cS0Wr.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-B34pEy_z.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-BAw8ctMB.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/dds-BDxArwXs.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/dds.pure-D_Zw5OEt.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-DeQLZozV.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/default.fragment-BI3GAR2C.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/default.vertex-CQ4MILUZ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-DOBRS3iS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/dumpTools-DCMMRWtL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/envTextureLoader-C-7LpDe_.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-oNqXrLmH.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-DUMH2798.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-DUvs7iqs.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-B-qeUHG6.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-Cjm4_L1J.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-CXnNy9QR.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-DLUVB1dZ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-BkfdjQtr.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-DwzbjNTQ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-CzFaSgik.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-DsMUDoGH.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-CVWywmBY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-BNIgu4QC.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-DuQCYIgK.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-DxCqjQc8.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-BOncXvGP.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-43eNp_3W.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-CYRuaSbJ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-Du-7uIwS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-C6lQQb9c.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-Ba-WebLx.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-CC4ZykmE.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-Cc8odCYm.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-Bs8eI-tc.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-BR2ioMLJ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-DD4Eo4N8.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-CiXY_22u.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-BFuYrykd.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-yylHk0Tj.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-Yoy3NMR4.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-DP0lG6uk.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-Dp46lAXL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-DAAojSot.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-BzyaFJtY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-4qIsPViO.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-BZG5ehwx.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-rpKm7KQS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-DZ0cYho3.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-CiAmYMbH.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-CbJDlFUY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-DICrYBP4.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-ftOIDo5d.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-DTChczhf.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-DdupWV9J.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-DBsgO-6v.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-DWcr1ULl.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-CVKDMyoo.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BXVH0aEG.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-LNU38ZaS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-L9Wzp4sm.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-Cgf9rHw2.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-0bOFbyCB.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-CJQEfL96.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-Dr4yXdtL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-DpKjQPwo.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-CTK4Ndci.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-CzJbobbg.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-DBQ1n5eJ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-oBhLC7Vj.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-DXlS3umF.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-DhrCI14Z.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DdNE9BcN.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-Be7qTZ0l.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-Bx8fCC87.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-Bmh5show.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-BP87cysh.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-DPK4HFJ5.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-9n5l3RYF.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-BkqUQ3IX.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-CzYmr0Rg.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-C72DA8Ot.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-B57atF6V.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-BwO8ctcl.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-B5xQ7raL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-BSQ0Jp6s.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-DkjMKncY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-DiDLbXDS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/fogFragment-QU9YOYuH.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-CBvJqSQF.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-EGwqbpHv.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-CG3O4l2t.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-CYV0OcvY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-DU77eH5y.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-s8IsAoDR.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-Bt1AWZNn.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-luoOzTyP.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-m9aQdgcg.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-xDMDxXMl.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/geometry.fragment-C_-6JJr4.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/geometry.fragment-oisMFtj8.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/geometry.vertex-CBkXTBVF.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/geometry.vertex-DQDqvDk5.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-QolNMgw6.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-DRwn6uC2.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-BPPwu0E9.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-ODjisfEL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-DB7eIwXj.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-B2jlXPLE.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/helperFunctions-B6Z1LJrO.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-8wFKF-ak.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/index-BnAaL7KS.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/index-CnrKUEff.css +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-C0PAazdd.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-DmepFK-C.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CQTyg7d5.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-C_mnrqaY.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-DCLBcYIA.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-DuoJgAZp.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CIypOERT.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/lightFragment-BinX63GB.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-D8jcsZiW.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/logDepthVertex-CAoFmcco.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-oF31v9Zp.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-BXrkHWWW.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/oitFragment-2x3JPdq6.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-B5ZDpeFy.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-CpT08ThE.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-BaGhkjmV.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DAeXubyL.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-BXY_lClt.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-MpirTHMd.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-CHHhh58w.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-DthxrR9-.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration--Zhq0q7d.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-CXcZlREH.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/packingFunctions-Bo_ikKLB.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/packingFunctions-u3uWRkpF.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pass.fragment-slK02MnO.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/passCube.fragment-C13WHRV7.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/passCube.fragment-DnuA3v4l.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbr.fragment-8v2GDfO1.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BuCPFkDX.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-5nHUuKRr.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrDebug-C8fLVEpD.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-BM49sbQB.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-B6n6Ic80.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-C0d04FRz.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CL7R5LTR.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-BhCyZbyQ.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/procedural.vertex-Cb5DsSFx.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/procedural.vertex-W-IcNTXE.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/reflectionFunction-DYrae64q.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-CFpIpdxk.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BIBfrJET.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-yPbrkGKz.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-D5YHSknt.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-GSzJSZKX.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-NwUMt_sy.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-Z9HWdnv1.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-DkZl_JUT.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/favicon.svg +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/index.html +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/_viewer_static/sw.js +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/artifacts.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/build-info.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/build.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/cli.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/context.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/determinism.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/drawings/__init__.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/drawings/_catalog.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/drawings/_validation.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/elements.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exceptions.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/__init__.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/base.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/__init__.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/annotations.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/dxf.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/model.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/pdf.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/primitives.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/projection.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/drawings/svg.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/glb.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/ifc.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/quantities.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/exporters/step.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/geometry.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/manifests.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/project_config.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/py.typed +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/runtime_sync.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/build-manifest-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/design-manifest-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/download-manifest-2.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/drawing-annotations-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/glb-manifest-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/ifc-validation-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/quantities-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/run-metadata-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/site-metadata-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/schemas/step-validation-1.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/site.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/.gitignore +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/README.md +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/config.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/drawing_annotations.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/generated/.gitkeep +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/model.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/templates/project/pyproject.toml +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/units.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools/validation.py +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/SOURCES.txt +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/dependency_links.txt +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/entry_points.txt +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/requires.txt +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/scm_file_list.json +0 -0
- {python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/src/python_cad_tools.egg-info/top_level.txt +0 -0
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
# Main CI workflow: runs the full test/quality/packaging suite on
|
|
2
|
+
# every PR and on push to main, and is also the ONE place that
|
|
3
|
+
# publishes to PyPI.
|
|
4
|
+
#
|
|
5
|
+
# Publishing happens only in the `build-publish` job, gated behind
|
|
6
|
+
# every other job via `needs:` and only when the ref being tested is
|
|
7
|
+
# a "v*" tag (see the `if:` on that job). release.yml creates that
|
|
8
|
+
# tag but pushes it using the default GITHUB_TOKEN, and GitHub does
|
|
9
|
+
# not start new workflow runs from GITHUB_TOKEN-authored pushes (its
|
|
10
|
+
# anti-recursion rule) — so the tag push alone won't reach this file.
|
|
11
|
+
# Instead release.yml explicitly dispatches this workflow against the
|
|
12
|
+
# new tag via `workflow_dispatch` below, which IS exempt from that
|
|
13
|
+
# rule. `workflow_dispatch` is included here for that purpose (and
|
|
14
|
+
# lets you manually re-run CI against any existing tag/ref by hand).
|
|
15
|
+
#
|
|
16
|
+
# release.yml itself does not build or publish anything — it only
|
|
17
|
+
# creates the tag and triggers this run. Keeping publish logic in one
|
|
18
|
+
# gated place (instead of duplicating it in release.yml) avoids two
|
|
19
|
+
# workflows racing to publish the same version.
|
|
1
20
|
name: CI
|
|
2
21
|
|
|
3
22
|
on:
|
|
@@ -5,11 +24,14 @@ on:
|
|
|
5
24
|
branches: [main]
|
|
6
25
|
tags: ['v*']
|
|
7
26
|
pull_request:
|
|
27
|
+
workflow_dispatch:
|
|
8
28
|
|
|
9
29
|
permissions:
|
|
10
30
|
contents: read
|
|
11
31
|
|
|
12
32
|
jobs:
|
|
33
|
+
# Fastest signal: static checks plus unit/typing tests, so obvious
|
|
34
|
+
# problems fail before the slower jobs below even start.
|
|
13
35
|
lint-type-unit:
|
|
14
36
|
name: Lint, type, unit
|
|
15
37
|
runs-on: ubuntu-latest
|
|
@@ -25,6 +47,8 @@ jobs:
|
|
|
25
47
|
- run: mypy
|
|
26
48
|
- run: pytest tests/unit tests/typing -q
|
|
27
49
|
|
|
50
|
+
# Integration tests against the real CAD/BIM/mesh/drawing exporter
|
|
51
|
+
# libraries (not mocked) to catch toolchain-level breakage.
|
|
28
52
|
exporter-integration:
|
|
29
53
|
name: Exporter integration
|
|
30
54
|
runs-on: ubuntu-latest
|
|
@@ -38,6 +62,8 @@ jobs:
|
|
|
38
62
|
- run: pip install -e '.[dev]'
|
|
39
63
|
- run: pytest tests/integration -q
|
|
40
64
|
|
|
65
|
+
# Builds the TypeScript viewer and runs its unit + headless-browser
|
|
66
|
+
# (Playwright) end-to-end tests.
|
|
41
67
|
viewer-browser:
|
|
42
68
|
name: Viewer and browser tests
|
|
43
69
|
runs-on: ubuntu-latest
|
|
@@ -65,6 +91,9 @@ jobs:
|
|
|
65
91
|
- working-directory: viewer
|
|
66
92
|
run: npm run test:e2e
|
|
67
93
|
|
|
94
|
+
# Builds the wheel and sdist, validates them with twine, and runs
|
|
95
|
+
# packaging-specific tests — catches issues the editable install
|
|
96
|
+
# used elsewhere in CI wouldn't surface.
|
|
68
97
|
wheel-sdist:
|
|
69
98
|
name: Wheel and sdist inspection
|
|
70
99
|
runs-on: ubuntu-latest
|
|
@@ -80,6 +109,9 @@ jobs:
|
|
|
80
109
|
- run: python -m twine check dist/*
|
|
81
110
|
- run: pytest tests/packaging -q
|
|
82
111
|
|
|
112
|
+
# Installs the built wheel into a fresh venv (non-editable, unlike
|
|
113
|
+
# the rest of CI) and runs a generic project through the CLI —
|
|
114
|
+
# catches packaging omissions an editable install would hide.
|
|
83
115
|
clean-install:
|
|
84
116
|
name: Clean non-editable install
|
|
85
117
|
runs-on: ubuntu-latest
|
|
@@ -104,6 +136,8 @@ jobs:
|
|
|
104
136
|
/tmp/clean-venv/bin/python-cad build --project-root /tmp/generic-project
|
|
105
137
|
/tmp/clean-venv/bin/python-cad verify --project-root /tmp/generic-project
|
|
106
138
|
|
|
139
|
+
# End-to-end CLI smoke test on an editable install: init, build,
|
|
140
|
+
# verify, clean.
|
|
107
141
|
generic-e2e:
|
|
108
142
|
name: Generic E2E
|
|
109
143
|
runs-on: ubuntu-latest
|
|
@@ -122,6 +156,7 @@ jobs:
|
|
|
122
156
|
python-cad verify --project-root /tmp/e2e-project
|
|
123
157
|
python-cad clean --project-root /tmp/e2e-project
|
|
124
158
|
|
|
159
|
+
# Guards against unintentional breaking changes to the public API.
|
|
125
160
|
public-api:
|
|
126
161
|
name: Public API surface
|
|
127
162
|
runs-on: ubuntu-latest
|
|
@@ -135,6 +170,8 @@ jobs:
|
|
|
135
170
|
- run: pip install -e '.[dev]'
|
|
136
171
|
- run: pytest tests/unit/test_public_api.py -q
|
|
137
172
|
|
|
173
|
+
# Fails if legacy/retired naming from a prior repo migration
|
|
174
|
+
# reappears in tracked source (see EXCLUDES below for what's exempt).
|
|
138
175
|
active-terminology:
|
|
139
176
|
name: Active terminology scan
|
|
140
177
|
runs-on: ubuntu-latest
|
|
@@ -157,6 +194,9 @@ jobs:
|
|
|
157
194
|
fi
|
|
158
195
|
echo "No active legacy concepts found."
|
|
159
196
|
|
|
197
|
+
# Enforces repository layout policy: legacy files/dirs stay absent,
|
|
198
|
+
# required symlinks (CLAUDE.md -> AGENTS.md) exist, backups stay
|
|
199
|
+
# untracked, and the expected workflow files are present.
|
|
160
200
|
tree-shape:
|
|
161
201
|
name: Tree shape and policy checks
|
|
162
202
|
runs-on: ubuntu-latest
|
|
@@ -187,6 +227,9 @@ jobs:
|
|
|
187
227
|
done
|
|
188
228
|
echo "All tree shape checks passed."
|
|
189
229
|
|
|
230
|
+
# Confirms init/build works on Linux, macOS, and Windows. Windows
|
|
231
|
+
# skips ruff/mypy since static checks aren't part of the
|
|
232
|
+
# cross-platform contract, just the CLI behavior.
|
|
190
233
|
supported-platforms:
|
|
191
234
|
name: Supported platforms (${{ matrix.os }})
|
|
192
235
|
strategy:
|
|
@@ -218,6 +261,9 @@ jobs:
|
|
|
218
261
|
python-cad build --project-root C:\platform-test
|
|
219
262
|
if: matrix.os == 'windows-latest'
|
|
220
263
|
|
|
264
|
+
# Generates a per-OS `pip freeze` lockfile as a downloadable
|
|
265
|
+
# artifact for reference. Informational only — not enforced or
|
|
266
|
+
# committed anywhere automatically.
|
|
221
267
|
platform-locks:
|
|
222
268
|
name: Platform lock generation (${{ matrix.os }})
|
|
223
269
|
strategy:
|
|
@@ -250,6 +296,10 @@ jobs:
|
|
|
250
296
|
name: ${{ matrix.lock }}
|
|
251
297
|
path: ${{ matrix.lock }}
|
|
252
298
|
|
|
299
|
+
# Confirms every optional dependency group (cad, bim, mesh, ...)
|
|
300
|
+
# installs cleanly and imports across OS/Python combinations. PRs
|
|
301
|
+
# only run a fast subset (core+all on ubuntu/py3.13) via the gate
|
|
302
|
+
# step below; main and tag pushes run the full matrix.
|
|
253
303
|
toolchain-matrix:
|
|
254
304
|
name: Toolchain matrix (${{ matrix.os }}, py${{ matrix.python }}, ${{ matrix.group }})
|
|
255
305
|
strategy:
|
|
@@ -368,9 +418,17 @@ jobs:
|
|
|
368
418
|
name: toolchain-compatibility-${{ matrix.os }}-py${{ matrix.python }}-${{ matrix.group }}
|
|
369
419
|
path: toolchain-compatibility.json
|
|
370
420
|
|
|
421
|
+
# THE publish step for this repo — only runs when the ref under
|
|
422
|
+
# test is a "v*" tag, and only after every job above has passed
|
|
423
|
+
# (see `needs:`). Checking the ref rather than the event name lets
|
|
424
|
+
# this fire both from a direct tag push and from release.yml's
|
|
425
|
+
# workflow_dispatch trigger (see the file header for why dispatch
|
|
426
|
+
# is needed). Tags are created by the separate "Release" workflow
|
|
427
|
+
# (release.yml); nothing else in this repo should build or publish
|
|
428
|
+
# to PyPI.
|
|
371
429
|
build-publish:
|
|
372
430
|
name: Build and publish to PyPI
|
|
373
|
-
if:
|
|
431
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
374
432
|
needs:
|
|
375
433
|
- lint-type-unit
|
|
376
434
|
- exporter-integration
|
|
@@ -412,9 +470,11 @@ jobs:
|
|
|
412
470
|
TWINE_USERNAME: __token__
|
|
413
471
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
414
472
|
|
|
473
|
+
# Generates a SLSA build provenance attestation for the artifacts
|
|
474
|
+
# build-publish just uploaded, for supply-chain verifiability.
|
|
415
475
|
provenance:
|
|
416
476
|
name: Generate SLSA provenance
|
|
417
|
-
if:
|
|
477
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
418
478
|
needs: [build-publish]
|
|
419
479
|
permissions:
|
|
420
480
|
actions: read
|
{python_cad_tools-0.1.11 → python_cad_tools-0.1.13}/.github/workflows/downstream-compatibility.yml
RENAMED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# Placeholder for testing python-cad-tools wheels against a future
|
|
2
|
+
# downstream "companion repository" (not yet created). It intentionally
|
|
3
|
+
# always fails (exit 1) — that's not a bug, it's a guard against this
|
|
4
|
+
# check silently being treated as passing before it's actually
|
|
5
|
+
# implemented. Do not run it or remove the exit 1 until a companion
|
|
6
|
+
# repository exists at the URL you'd pass in.
|
|
1
7
|
name: Downstream compatibility
|
|
2
8
|
|
|
3
9
|
on:
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# Release candidate: builds and verifies a pre-release artifact for
|
|
2
|
+
# manual QA WITHOUT publishing anything to PyPI or pushing any tag.
|
|
3
|
+
# Use this to sanity-check a wheel/sdist before running the real
|
|
4
|
+
# "Release" workflow (release.yml), which does publish.
|
|
5
|
+
#
|
|
6
|
+
# To run: Actions -> Release candidate -> Run workflow, with a label
|
|
7
|
+
# for this candidate (e.g. "0.1.0rc1"). Download the built artifact
|
|
8
|
+
# from the "build" job's summary page to test it locally.
|
|
1
9
|
name: Release candidate
|
|
2
10
|
|
|
3
11
|
on:
|
|
@@ -12,6 +20,9 @@ permissions:
|
|
|
12
20
|
contents: read
|
|
13
21
|
|
|
14
22
|
jobs:
|
|
23
|
+
# Builds the wheel/sdist after lint/type/unit checks pass, and
|
|
24
|
+
# uploads them as a workflow artifact (90-day retention). Nothing
|
|
25
|
+
# is published here.
|
|
15
26
|
build:
|
|
16
27
|
name: Build wheel and sdist
|
|
17
28
|
runs-on: ubuntu-latest
|
|
@@ -54,6 +65,9 @@ jobs:
|
|
|
54
65
|
path: dist/
|
|
55
66
|
retention-days: 90
|
|
56
67
|
|
|
68
|
+
# Re-downloads the build job's artifact, re-verifies its hashes, and
|
|
69
|
+
# installs it non-editably — catches artifact corruption or a
|
|
70
|
+
# mismatch between what "build" produced and what got uploaded.
|
|
57
71
|
verify:
|
|
58
72
|
name: Verify candidate hashes
|
|
59
73
|
runs-on: ubuntu-latest
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Release: cuts a new version by tagging `main`. Manual trigger only.
|
|
2
|
+
#
|
|
3
|
+
# This workflow does NOT build or publish anything itself — it only
|
|
4
|
+
# creates a "v*" tag and hands off to ci.yml's `build-publish` job,
|
|
5
|
+
# which is the single, test-gated path to PyPI. Keeping build/publish
|
|
6
|
+
# out of this file avoids two workflows racing to publish the same
|
|
7
|
+
# version.
|
|
8
|
+
#
|
|
9
|
+
# The hand-off can't just be "push the tag": pushes made with the
|
|
10
|
+
# default GITHUB_TOKEN (used below via actions/checkout) don't start
|
|
11
|
+
# other workflow runs — that's a deliberate GitHub anti-recursion
|
|
12
|
+
# rule, not a bug. GitHub exempts workflow_dispatch from that rule, so
|
|
13
|
+
# the last step here explicitly dispatches ci.yml against the new tag
|
|
14
|
+
# using that same GITHUB_TOKEN. No extra token/secret is needed.
|
|
15
|
+
#
|
|
16
|
+
# To run: Actions -> Release -> Run workflow, with the version to
|
|
17
|
+
# release (e.g. "0.1.13", no "v" prefix). Then watch the "CI" workflow
|
|
18
|
+
# run that starts against the new tag — that run is the actual publish.
|
|
19
|
+
name: Release
|
|
20
|
+
|
|
21
|
+
on:
|
|
22
|
+
workflow_dispatch:
|
|
23
|
+
inputs:
|
|
24
|
+
version:
|
|
25
|
+
description: "Version to release (e.g. 0.1.2)"
|
|
26
|
+
required: true
|
|
27
|
+
type: string
|
|
28
|
+
|
|
29
|
+
permissions:
|
|
30
|
+
contents: write
|
|
31
|
+
actions: write
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
release:
|
|
35
|
+
name: Tag and push release
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
39
|
+
with:
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
|
|
42
|
+
- name: Check version is not already published
|
|
43
|
+
run: |
|
|
44
|
+
version="${{ inputs.version }}"
|
|
45
|
+
status=$(curl -s -o /dev/null -w "%{http_code}" "https://pypi.org/pypi/python-cad-tools/${version}/json")
|
|
46
|
+
if [ "$status" = "200" ]; then
|
|
47
|
+
echo "::error::python-cad-tools ${version} is already published on PyPI. This looks like a duplicate release attempt (a previous run likely already tagged and uploaded it) — choose a new version instead of re-running with the same one."
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
- name: Create and push tag
|
|
52
|
+
run: |
|
|
53
|
+
git config user.name "github-actions"
|
|
54
|
+
git config user.email "github-actions@github.com"
|
|
55
|
+
git tag "v${{ inputs.version }}"
|
|
56
|
+
git push origin "v${{ inputs.version }}"
|
|
57
|
+
|
|
58
|
+
- name: Trigger CI publish run for the new tag
|
|
59
|
+
env:
|
|
60
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
61
|
+
run: gh workflow run ci.yml --repo "${{ github.repository }}" --ref "v${{ inputs.version }}"
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
inputs:
|
|
6
|
-
version:
|
|
7
|
-
description: "Version to release (e.g. 0.1.2)"
|
|
8
|
-
required: true
|
|
9
|
-
type: string
|
|
10
|
-
|
|
11
|
-
permissions:
|
|
12
|
-
contents: write
|
|
13
|
-
id-token: write
|
|
14
|
-
|
|
15
|
-
jobs:
|
|
16
|
-
release:
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
steps:
|
|
19
|
-
- uses: actions/checkout@v4
|
|
20
|
-
with:
|
|
21
|
-
fetch-depth: 0
|
|
22
|
-
|
|
23
|
-
- uses: actions/setup-python@v5
|
|
24
|
-
with:
|
|
25
|
-
python-version: "3.13"
|
|
26
|
-
|
|
27
|
-
- name: Check version is not already published
|
|
28
|
-
run: |
|
|
29
|
-
version="${{ inputs.version }}"
|
|
30
|
-
status=$(curl -s -o /dev/null -w "%{http_code}" "https://pypi.org/pypi/python-cad-tools/${version}/json")
|
|
31
|
-
if [ "$status" = "200" ]; then
|
|
32
|
-
echo "::error::python-cad-tools ${version} is already published on PyPI. This looks like a duplicate release attempt (a previous run likely already tagged and uploaded it) — choose a new version instead of re-running with the same one."
|
|
33
|
-
exit 1
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
- name: Create and push tag
|
|
37
|
-
run: |
|
|
38
|
-
git config user.name "github-actions"
|
|
39
|
-
git config user.email "github-actions@github.com"
|
|
40
|
-
git tag "v${{ inputs.version }}"
|
|
41
|
-
git push origin "v${{ inputs.version }}"
|
|
42
|
-
|
|
43
|
-
- name: Build distribution
|
|
44
|
-
run: |
|
|
45
|
-
pip install build
|
|
46
|
-
python -m build
|
|
47
|
-
|
|
48
|
-
- name: Upload to PyPI
|
|
49
|
-
uses: pypa/gh-action-pypi-publish@v1.10.3
|
|
50
|
-
with:
|
|
51
|
-
password: ${{ secrets.PYPI_TOKEN }}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|