Skip to main content

pypolaris

Cross-platform SWIG/C++ wrapper for NDI Polaris trackers.

  • CAPIcommon/: NDI communication library.
  • CAPIsample/src/main.cpp: Python-facing implementation.
  • pypolaris.i and pypolaris.h: SWIG interface and public wrapper API.
  • sroms/: tool definition files used by examples and local testing.
  • CMakeLists.txt: the only native build definition.

Build from the repository root:

uv run --python 3.12 python build-system/build_wheel.py pypolaris

This creates one wheel for the selected Python and the current operating system. Cross-platform wheels are built by the repository's GitHub Actions matrix, not by cross-compiling this command locally.

Multiple-object support introduced in version 0.0.9 remains available. Pass the tool definitions in a StringVector to Initialize; the corresponding measurements and visibility flags are exposed through objs and objIDs:

objects = pypolaris.StringVector()
objects.push_back(b"coil-1.rom")
objects.push_back(b"coil-2.rom")
tracker.Initialize(b"COM1", b"NBSprobe", b"NBSref", objects)
tracker.Run()
print(tracker.objs, tracker.objIDs)

The single-object Initialize overload and the obj/objID attributes from version 0.0.7 remain available for compatibility.

Initialize() returns 0 only after tracking starts. Device warnings, such as WARNING03 (incompatible loaded tools), are reported to stderr and initialization continues. These warnings still indicate a tool configuration issue; they do not guarantee that the tools can be tracked reliably. Actual errors stop initialization, disconnect the tracker and return the original negative NDI error code. Transport failures, unreadable ROM files or no enabled tools return -1.

Connection progress and raw commands (including ROM uploads) are quiet by default. Enable them explicitly before initialization when troubleshooting:

tracker.SetVerbose(True)

Warnings and errors remain visible regardless of this setting. Tracking commands (BX, BX2, TX) are never traced to avoid per-frame console overhead.

The native calls release Python's GIL while waiting for the tracker. Access to each Polaris connection is serialized, so concurrent Python work can continue without interleaving device commands. Separate pypolaris instances no longer share a connection or tracking state.

For the lowest per-frame overhead, use ReadFrame() instead of Run(). It returns numeric values directly and avoids creating the legacy CSV strings:

frame = tracker.ReadFrame()
if frame.status == 0:
    for transform in frame.transforms:
        if transform.visible:
            print(transform.toolHandle, transform.tx, transform.ty, transform.tz)

frame.status is 0 on success, -1 after a transport/parse failure and -2 when tracking has not been started. Run() remains backward compatible, updates probe, ref, objs and their ID flags, and returns 1, -1 or -2 for those same states.

Do not commit generated pypolaris.py, _pypolaris.*, CMake build trees or wheels. The shared builder stages those files automatically.

Metadata

Release files for pypolaris 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pypolaris 0.1.0
File Actions
pypolaris-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pypolaris-0.1.0-cp312-cp312-win_amd64.whl
pypolaris-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details for pypolaris-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
pypolaris-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 14.0+ x86-64 Details for pypolaris-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl
pypolaris-0.1.0-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details for pypolaris-0.1.0-cp312-cp312-macosx_14_0_arm64.whl
pypolaris-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pypolaris-0.1.0-cp311-cp311-win_amd64.whl
pypolaris-0.1.0-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details for pypolaris-0.1.0-cp311-cp311-manylinux_2_34_x86_64.whl
pypolaris-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 14.0+ x86-64 Details for pypolaris-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl
pypolaris-0.1.0-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for pypolaris-0.1.0-cp311-cp311-macosx_14_0_arm64.whl
pypolaris-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pypolaris-0.1.0-cp310-cp310-win_amd64.whl
pypolaris-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details for pypolaris-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl
pypolaris-0.1.0-cp310-cp310-macosx_14_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 14.0+ x86-64 Details for pypolaris-0.1.0-cp310-cp310-macosx_14_0_x86_64.whl
pypolaris-0.1.0-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details for pypolaris-0.1.0-cp310-cp310-macosx_14_0_arm64.whl
pypolaris-0.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for pypolaris-0.1.0-cp39-cp39-win_amd64.whl
pypolaris-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.34+ x86-64 Details for pypolaris-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl
pypolaris-0.1.0-cp39-cp39-macosx_14_0_x86_64.whl CPython 3.9 CPython 3.9 macOS 14.0+ x86-64 Details for pypolaris-0.1.0-cp39-cp39-macosx_14_0_x86_64.whl
pypolaris-0.1.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for pypolaris-0.1.0-cp38-cp38-win_amd64.whl
pypolaris-0.1.0-cp38-cp38-manylinux_2_34_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.34+ x86-64 Details for pypolaris-0.1.0-cp38-cp38-manylinux_2_34_x86_64.whl
pypolaris-0.1.0-cp38-cp38-macosx_14_0_x86_64.whl CPython 3.8 CPython 3.8 macOS 14.0+ x86-64 Details for pypolaris-0.1.0-cp38-cp38-macosx_14_0_x86_64.whl

Total release size: 5.5 MB

Release files / pypolaris-0.1.0-cp312-cp312-win_amd64.whl

Download URL pypolaris-0.1.0-cp312-cp312-win_amd64.whl
Size 284.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6b8dd3c66aa716ab17b2850226cdb4b2fb3fdae825bc027c24b604aa54647c30
BLAKE2b-256 checksum
How to use checksums
bd5628aaea9a719f50f15f724b3dc0498a87cf629a00683cb85f8bc438dbf7d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL pypolaris-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
Size 341.1 kB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
70956a4c6c0860d8695c1add48c6e482bee0cc5329cd57ae552a4f69b09d8461
BLAKE2b-256 checksum
How to use checksums
389f6b7874e8d425685da0b6d89a2eb4229eb8d4051b9a7caf2d2efe98e54595
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl

Download URL pypolaris-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl
Size 306.7 kB
Tags CPython 3.12 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
7b8d7855026ba10b0a3a1600a5976ae3a81ff7c2bd0c7880ebc240980a7b7c34
BLAKE2b-256 checksum
How to use checksums
1c047294e1bc1fc2872f7940c4f143d7d45b081043623cad80d51e13cbad46e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp312-cp312-macosx_14_0_arm64.whl

Download URL pypolaris-0.1.0-cp312-cp312-macosx_14_0_arm64.whl
Size 279.5 kB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
96290d99e4247069da66acce48ebab920ac279ca40521cb79de69a4edc6997f1
BLAKE2b-256 checksum
How to use checksums
43ee271c52d4f81d2baf80be113653e81ab153d99d327687b6f6a73c6405845a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp311-cp311-win_amd64.whl

Download URL pypolaris-0.1.0-cp311-cp311-win_amd64.whl
Size 283.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
01305a971ef4d8cbce64b878f288e82e0d1159a06e3e063b671e8314beaf4971
BLAKE2b-256 checksum
How to use checksums
b1c389d58d264d7601abfd02d92d031b16d5e5369453b4d7b4b983ed2f7fd36c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL pypolaris-0.1.0-cp311-cp311-manylinux_2_34_x86_64.whl
Size 341.8 kB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
2cf8b10d0af83b20618f24283b881c2da91c7c1e95289f38996f1e6f920bb6c6
BLAKE2b-256 checksum
How to use checksums
9567acaef06419e2629815cee89f5d40bae7b4649a9c1ba755eab4b79f51024e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl

Download URL pypolaris-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl
Size 305.6 kB
Tags CPython 3.11 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
469a34cde1823d845e33f207c52fab263603f68143c7129e96e85add6ed91414
BLAKE2b-256 checksum
How to use checksums
f47dd80c72d071343489502a3b1e11483e6941db5bd7a44793996df065b91f35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp311-cp311-macosx_14_0_arm64.whl

Download URL pypolaris-0.1.0-cp311-cp311-macosx_14_0_arm64.whl
Size 279.0 kB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
359c28137e41b15f60cb7ced65daa5dcee0015abf48718ec9a5fbef3bce0e175
BLAKE2b-256 checksum
How to use checksums
eb80f1dcbaca352e4565b7ad320d3d65fcf65405c5bb52c276e7d9929bda6dbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp310-cp310-win_amd64.whl

Download URL pypolaris-0.1.0-cp310-cp310-win_amd64.whl
Size 283.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5ddf79cf9c89aacdba4c1ab6c7e0480cd06b245f9f587bdd60271cfec556ba93
BLAKE2b-256 checksum
How to use checksums
c0eeb0c3bedf5d28f362fefc1a78bfd90b3210697299a8a7bf24d3ea02693b9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL pypolaris-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl
Size 341.8 kB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
55d9e9fbd9a0df3885b9923218b291a735c0a8bfbd3874ecc6a7e53fa798e8cd
BLAKE2b-256 checksum
How to use checksums
8e8bc26e67f8d2bc14e8145d49e1b9955d5da1e216f1c020fab353fcbf9cb021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp310-cp310-macosx_14_0_x86_64.whl

Download URL pypolaris-0.1.0-cp310-cp310-macosx_14_0_x86_64.whl
Size 304.9 kB
Tags CPython 3.10 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
96df30c59e30f6abe02dfbcef3e4216f4854ce300fea2138d511b31cc98f5946
BLAKE2b-256 checksum
How to use checksums
d6e01e4496db47108a4f9de64d50ac1021a27e848a7aa16a4f272c64bba8c989
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp310-cp310-macosx_14_0_arm64.whl

Download URL pypolaris-0.1.0-cp310-cp310-macosx_14_0_arm64.whl
Size 278.3 kB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
91ffd7fd26eb84e65dcfe7296c74cc8ecd860c125092007fa33dc6b75e801650
BLAKE2b-256 checksum
How to use checksums
3f13a44028302cdcb53cb84bc38d0df71f7c946ad8efb53e1f99e0d2f5a6d0ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp39-cp39-win_amd64.whl

Download URL pypolaris-0.1.0-cp39-cp39-win_amd64.whl
Size 283.4 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
e5f0b1dd8f9b0e27a103c18491dc8aaa0259400e1694ed0a29023d594baf0ee7
BLAKE2b-256 checksum
How to use checksums
6188be6eeba2e9751170120a01f332d3cb0e40d0e2745340726d3e1fae7233ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl

Download URL pypolaris-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl
Size 342.2 kB
Tags CPython 3.9 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
09ea697aae9a577cdab4a212fc78ff54d95c87194de0830fa6b4088b96782d6b
BLAKE2b-256 checksum
How to use checksums
ab632a7450adb8d8d47cf3deea6a1547656d5a81282aa4e76358ad9de9ad7a17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp39-cp39-macosx_14_0_x86_64.whl

Download URL pypolaris-0.1.0-cp39-cp39-macosx_14_0_x86_64.whl
Size 304.9 kB
Tags CPython 3.9 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
5174206f1911804bc01006cf866f0c6786b177a621881d5397d3643fb4e0fbc7
BLAKE2b-256 checksum
How to use checksums
dc9618eadaa712ae25c2e5ed0ea22e835762cf2f86b515a6937fcac365fe6f22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp38-cp38-win_amd64.whl

Download URL pypolaris-0.1.0-cp38-cp38-win_amd64.whl
Size 283.4 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
28ed3d2942fa490c42f5d3915ab74abda94201e8cbff83e0814d0e129c2334db
BLAKE2b-256 checksum
How to use checksums
efd0b5826828916ca634fc5712c67348764d7da3749ea3305fe369ac8880b828
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp38-cp38-manylinux_2_34_x86_64.whl

Download URL pypolaris-0.1.0-cp38-cp38-manylinux_2_34_x86_64.whl
Size 341.9 kB
Tags CPython 3.8 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
46f1c33b3ba1a7b2792a2e575564b5359ca59c5ed452ab646172c2aa69dea82d
BLAKE2b-256 checksum
How to use checksums
ed37b92703e7b2bd5c7c2f1bdedec425b5a1f1152f5e5d8b825437b6f6107797
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pypolaris-0.1.0-cp38-cp38-macosx_14_0_x86_64.whl

Download URL pypolaris-0.1.0-cp38-cp38-macosx_14_0_x86_64.whl
Size 305.6 kB
Tags CPython 3.8 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
0fc9b2ebec11a8dddfd98e0c9faca80d0008ccd850eeff1ae5201c6c765337e5
BLAKE2b-256 checksum
How to use checksums
9b8a5aedb671fa2b277acbd533db4825b11f1f421abb11993c40e0154d94d27d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for pypolaris 0.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.

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