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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cadquery_ocp_proxy-8.0.1.0.0-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

Details for the file cadquery_ocp_proxy-8.0.1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for cadquery_ocp_proxy-8.0.1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d6a6909a73d2300ca4581ff762ccf0137993ac75c57a2dc82e12bffa3a12b680
MD5 7ba2cc0e2bdb52d3c3c28d75853d1b75
BLAKE2b-256 15364a8dbfdf4ab61a7841c36398615c6ab3d3c932d4254b978963690650feea

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

8.0.1.0.0 This release

1 file

7.9.3.1.1

1 file

7.9.3.1

1 file

7.9.3.0

1 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