TEST SETUP
There is a proxy package cadquery_ocp_proxy with version 8.0.0.0 that does nothing, but have optional dependencies:
```toml
[project.optional-dependencies]
vtk = ["cadquery_ocp>=8.0,< 8.1"]
novtk = ["cadquery_ocp_novtk>=8.0,< 8.1"]
```
I built the following packages using the proxy package for testing on my local pypi server.
NOTE: These are artificial new versions to force pip and uv to load them from my pypi server, so don't get confused about the version numbers. They don't exist on pypi.org
- build123d-0.11.0-py3-none-any.whl
- cadquery-2.8-py3-none-any.whl
- ocp_gordon-0.22.0-py3-none-any.whl
- ocpsvg-0.6.0-py3-none-any.whl
- cadquery_ocp_proxy-8.0.0.0.0-py3-none-any.whl
Setup for packages in the build123d, CadQuery, or OCP ecosystem:
-
Packages with
cadquery_ocpdependencies the can (likeocpsvgocp_gordon, andbuild123d) would need to use extra dependenciesdependencies = ["svgelements >= 1.9.6, <2"] [project.optional-dependencies] dev = ["pytest"] vtk = ["cadquery-ocp-proxy[vtk] >=8.0, < 8.1"] novtk = ["cadquery-ocp-proxy[novtk] >=8.0, < 8.1"]
-
Packages that need VTK like
cadquerywould only depend oncadquery-ocp-proxy[vtk]as default dependency
WORKFLOWS
Install build123d without VTK:
When we pip install build123d[novtk]==0.11.1, we get (pip list):
build123d 0.11.1
cadquery-ocp-novtk 8.0.0.0.0
cadquery-ocp-proxy 8.0.0.0.0
...
ocp-gordon 0.22.0
ocpsvg 0.6.0
Tests:
- build123d:
pytest --ignore=tests/test_direct_api/test_vtk_poly_data.py --ignore tests/test_direct_api/test_jupyter.py testspasses all test. - ocpsvg:
pytest testspasses all tests - ocp_gordon:
pytest testspasses all tests
Install build123d with VTK:
When we pip install build123d[vtk]==0.11.1, we get (pip list):
build123d 0.11.1
cadquery-ocp 8.0.0.0.0
cadquery-ocp-proxy 8.0.0.0.0
...
ocp-gordon 0.22.0
ocpsvg 0.6.0
Tests:
- build123d:
pytest testspasses all test. - ocpsvg:
pytest testspasses all tests - ocp_gordon:
pytest testspasses all tests
Install cadquery:
When we pip install cadquery==2.8, we get (pip list):
cadquery 2.8
cadquery-ocp 8.0.0.0.0
cadquery-ocp-proxy 8.0.0.0.0
Tests:
- cadquery:
pytest testspasses all test.
Since the dependency of ocpsvg is cadquery-ocp-proxy , we can pip install ocpsvg==0.6.0
cadquery 2.8
cadquery-ocp 8.0.0.0.0
cadquery-ocp-proxy 8.0.0.0.0
...
ocpsvg 0.6.0
All good, because cadquery-ocp was already there from the cadquery installation
Tests:
- ocpsvg:
pytest testspasses all test.
Tests:
- cadquery:
pytest testspasses all test. - build123d:
pytest testspasses all test. - ocpsvg:
pytest testspasses all tests - ocp_gordon:
pytest testspasses all tests
Caveats
Forgetting [vtk] or novtk
What happens when we only install pip install build123d==0.11.0?
We get (pip list):
```text
build123d 0.11.1
...
ocp-gordon 0.22.0
ocpsvg 0.6.0
```
No cadquery_ocp is installed, because it is an optional dependency . This is, unfortunately, a case where the pypi ecosystem at install time can't help any more.
This needs to be covered at runtime, e.g. in __init__.py
try:
import OCP
except ImportError:
print("If you only want to use build123d, install 'build123d[novtk]'")
print("When cadquery should also be installed, install 'build123d[vtk]'")
Notes:
- The same would hold for**
ocpsvg. ocp_svg would not suffer from it, since it hasbuild123d` as a dependency
Summary
The proxy package solves two major issue:
- Install build123d and CadQuery in the same environment
- Have a clear guidance on packages that should run with either
cadquery_ocpandcadquery_ocp_novtk(optional dependencies)
The downside is that users need to specifiy [vtk] or [novtk] during install. This can be clearly mentioned in the Readme, but also caught at runtime to pürovide guidance for the user.
Metadata
Release files for cadquery-ocp-proxy 8.0.1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cadquery_ocp_proxy-8.0.1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / cadquery_ocp_proxy-8.0.1.1.0-py3-none-any.whl
| Download URL | cadquery_ocp_proxy-8.0.1.1.0-py3-none-any.whl |
|---|---|
| Size | 3.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
98c71bb60cfb651afe179b134ab88580fd75384fce0cc6d633f727002cd18abd
|
|
BLAKE2b-256 checksum How to use checksums |
135e29c3d8c4b290dee82387468a33ac06c663518a167963cdb9ff48e6bbd8f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|