ocp-viewer-core
The shared half of the OCP viewer ecosystem: one show suite, one tessellation, one set of config semantics, used by four viewers that each keep their own transport and their own settings storage.
Currently supported hosts (viewers):
- ocp_vscode — the VS Code extension
- ocp_viewer — the standalone viewer,
python -m ocp_viewer - Jupyter CadQuery — The viewer for Jupyter Lab through cad-viewer-widget
- build123d Studio — The standalone app based on neutralinojs
The user-facing documentation of the shared behavior — the show commands, the config system, the viewer window and its tools — lives in docs/. Each host documents only its own specifics and refers there for the rest.
Published as one project to two registries: ocp-viewer-core on PyPI for the Python half, ocp-viewer-core on npm for the JavaScript half. Their major.minor is the contract and must match; the patch level is each half's own, so a one-sided fix ships without an artificial release of the other half. See Development.md.
The idea
Each host provides a Comms — a Python encoder and a JavaScript decoder, shipped as a pair — and a settings source. Everything above that is shared and knows nothing about which host it is running in.
Per-host imports stay per host:
from ocp_vscode import *orfrom ocp_vscode import show, set_defaults, ...from build123d_studio import *orfrom build123d_studio import show, set_defaults, ...from jupyter_cadquery import *orfrom jupyter_cadquery import show, set_defaults, ...from ocp_viewer import *orfrom ocp_viewer import show, set_defaults, ...
Layout
| path | what |
|---|---|
ocp_viewer_core/ |
the Python half |
ocp_viewer_core/config.py |
the config keys, each mapped to the name three-cad-viewer knows it by, and the precedence over them |
ocp_viewer_core/comms.py |
the transport a host implements, and the session that caches what it answers |
ocp_viewer_core/logo.py |
the splash logo as measurable geometry, for a host's measurement backend |
js/src/logo.js |
the splash logo as tessellated data plus its config, for the renderer |
js/ |
the JavaScript half, published to npm |
tests/ |
including the conformance kit |
ocp_viewer_core/__init__.py is import-free by design: hosts import the submodule they need, so that importing the package never pulls in the tessellator or OCP.
Use
A host writes one class and supplies one list. exclude_keys names the keywords it may not be told, because its surface decides them - the show signature is the superset of every host's, so a keyword one host owns is a keyword another has to refuse by name rather than ignore.
comms = MyComms()
session = Session(comms) # sets session cache to None
config = Config(session, ("cad_width", "height"))
show(objects)
What a host persists between sessions is its own business and needs no key list here: it answers with values, from Comms.workspace_config(). Which of the viewer's reported state counts as configuration - and so survives into the next show - is keys.CONFIG, derived from the vocabulary, because that set is a property of three-cad-viewer's state and not of any host's settings.
Dependencies
- The Python package ocp-tessellate for tessellation of OCP based CAD objects
- The Javascript package three-cad-viewer, the actual viewer component.
No OCP provider is declared — the same OCP namespace is supplied by cadquery_ocp, cadquery_ocp_novtk and conda's OCP, and naming one would break users of the other two. The host or the user chooses.
Licence
Apache-2.0.
Metadata
Release files for ocp-viewer-core 1.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ocp_viewer_core-1.0.13.tar.gz | 117.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ocp_viewer_core-1.0.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 235.1 kB
Release files / ocp_viewer_core-1.0.13.tar.gz
| Download URL | ocp_viewer_core-1.0.13.tar.gz |
|---|---|
| Size | 117.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57ccbfff31a03fdd6c78e1dc5f05ff55d49f959df956d450f211ec7b06bf91ca
|
|
BLAKE2b-256 checksum How to use checksums |
d2996c36e0fda14e44e66e2fccc04420be7650f813f9e6556cb27e5470171bb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / ocp_viewer_core-1.0.13-py3-none-any.whl
| Download URL | ocp_viewer_core-1.0.13-py3-none-any.whl |
|---|---|
| Size | 117.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e74796f6b91b058446b84c5469e4ed70c4e3da57afe6dee195d9ab94df9277e5
|
|
BLAKE2b-256 checksum How to use checksums |
c6f725889dfacdb3c9278ab3eb0ced060c41ace3c8eca535ad3060f16c19ffc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|