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 | Actions Reset |
|---|---|---|---|---|
| cadquery_ocp_proxy-8.0.1.1.0-py3-none-any.whl | Python 3 | none | any | Details for cadquery_ocp_proxy-8.0.1.1.0-py3-none-any.whl |
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
|
Security for cadquery-ocp-proxy 8.0.1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.