Skip to main content

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:

  1. Packages with cadquery_ocp dependencies the can (like ocpsvg ocp_gordon, and build123d) would need to use extra dependencies

    dependencies = ["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"]
    
  2. Packages that need VTK like cadquery would only depend on cadquery-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 tests passes all test.
  • ocpsvg: pytest tests passes all tests
  • ocp_gordon: pytest tests passes 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 tests passes all test.
  • ocpsvg: pytest tests passes all tests
  • ocp_gordon: pytest tests passes 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 tests passes 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 tests passes all test.

Tests:

  • cadquery: pytest tests passes all test.
  • build123d: pytest tests passes all test.
  • ocpsvg: pytest tests passes all tests
  • ocp_gordon: pytest tests passes 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 has build123d` as a dependency

Summary

The proxy package solves two major issue:

  1. Install build123d and CadQuery in the same environment
  2. Have a clear guidance on packages that should run with either cadquery_ocp and cadquery_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)

Table of built distributions (wheels) for cadquery-ocp-proxy 8.0.1.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

8.0.1.1.0 This release

1 release file

7.9.3.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page