spherical-wrist
spherical-wrist is a Python package for six-axis industrial robot
kinematics, collision checking, path planning, and visualization.
spherical-wrist is backed by the rs-opw-kinematics crate. It wraps the
same Rust library as py-opw-kinematics, but exposes a broader API surface:
py-opw-kinematics intentionally publishes only a selected subset of
rs-opw-kinematics.
The goal of spherical-wrist is to make the full potential of
rs-opw-kinematics available from Python, including collision-free path and
trajectory planning. Collision checking is separate from inverse kinematics,
but collision-aware stroke planning needs both capabilities close together:
available from multiple threads and without repeated Python-Rust boundary
crossing overhead.
The public API is Python first: joint positions are tuples or arrays, poses are SciPy
RigidTransform objects, and examples are plain Python scripts.
Install
python -m pip install spherical-wrist
The package requires Python 3.11 or newer.
For local development, source builds, and maturin, see Development With Maturin. The Rust dependencies are resolved from crates.io during the build.
Hello World
Create a kinematic model, compute a TCP pose from joint angles, then ask inverse kinematics for joint solutions that reach the same pose.
from scipy.spatial.transform import RigidTransform, Rotation
from spherical_wrist import KinematicModel, Robot
model = KinematicModel(
a1=400,
a2=-250,
b=0,
c1=830,
c2=1175,
c3=1444,
c4=230,
offsets=(0, 0, 0, 0, 0, 0),
flip_axes=(True, False, True, True, False, True),
)
robot = Robot(model, degrees=True)
tool = RigidTransform.from_components(
rotation=Rotation.from_euler("xyz", [0, -90, 0], degrees=True),
translation=[0, 0, 0],
)
joints = (10, 0, -90, 0, 0, 0)
pose = robot.forward(joints, tool=tool)
solutions = robot.inverse(pose, tool=tool)
print("TCP position:", pose.translation)
print("IK solutions:", solutions)
The same script is in python/examples/readme_intro.py.
What It Does
- analytical forward and inverse kinematics for spherical-wrist industrial arms
- continuing inverse kinematics that handles wrist singularities with a previous joint position
- optional joint constraints and solution ranking
- bulk inverse kinematics, optionally filtering solutions against constraints and collision geometry. This method is parallelized, all solutions are returned for each pose
- 5-DOF inverse kinematics for tools that do not care about J6 rotation
- base, tool, frame, and parallelogram transforms
- mesh loading and collision/proximity checks
- shaped robot models with tool, base, and environment geometry
- RRT joint-space planning
- Cartesian stroke planning with annotated path segments
- Bevy-based visualization and path playback
Supported singularities
The strong side of this library is support of singularities - critical poses where two or more joint motions produce the same TCP motion. As OPW robot is clearly defined, these can be detected (and resolved) from joint positions complemented by robot geometry. Generic solution does not work at singularity poses.
-
Free base rotation (J1). With
b = 0and the wrist center on the base rotation axis, the position equations cannot determine J1. The solver searches J1 while keeping J2 and J3 fixed for each arm branch, then recovers compatible wrist angles. The built-in Stäubli TX2-140 is tested at such a pose; ABB IRB2400 geometry also permits this case. -
Free shoulder rotation (J2). When
c2² = a2² + c3², the arm can fold completely at modelJ3 = π - atan2(a2, c3). The wrist center returns to the shoulder rotation axis, so J2 can vary while J1 and J3 stay fixed. The solver searches this family for candidates compatible with wrist orientation and joint limits. Both Stäubli TX2-140 and TX40 presets have the required equal effective arm lengths. -
J1 and J2 free together. A fully folded arm with
c2² = a2² + c3²,a1 = 0, andb = 0places the wrist center at the shoulder on the base axis. Both J1 and J2 can vary while J3 remains folded. The solver selects J1 slices and searches J2 within each slice, using wrist-limit boundaries to locate feasible regions. Tests use a TX2-140-based geometry witha1changed to zero; no unchanged built-in preset currently has this combination. -
Fully extended or folded elbow. At model
J3 = -atan2(a2, c3)orJ3 = π - atan2(a2, c3), the effective arm links are parallel or antiparallel and elbow branches merge at the outer or inner reach boundary. The inverse equations retain reachable boundary solutions despite arithmetic roundoff. With unequal effective lengths, J2 remains determined at the folded boundary. Tests cover both boundaries with the ABB IRB2400 preset. -
Shoulder-cylinder boundary. With a nonzero lateral offset
b, the wrist center can lie exactlyabs(b)from the base axis. The two shoulder branches meet at this boundary, but J1 remains determined. The solver handles the square-root boundary with a roundoff allowance. Tests cover the Stäubli TX40 and cases where shoulder and elbow boundaries occur together. -
Wrist joint J5 = 0°. The J4 and J6 axes align, and the target orientation fixes only their sum,
J4 + J6. The solver recovers this phase and chooses a coupled pair near the reference. Without joint limits, the required phase correction is split equally between J4 and J6. With limits, it selects a possible pair according to the configured preference for previous angles and constraint centers. -
Wrist joint at J5 = 180°. The wrist is reversed, so the target fixes the difference,
J4 - J6. Recovery follows the same approach as the zero pole, but the phase correction moves J4 and J6 in opposite directions.
Arm and wrist singularities can occur together.
Main Examples
The most useful examples are:
- bulk_inverse.py: converts pose stacks with both robot types using the bundled RX160 meshes, applies constraints and collision filtering, and processes large inputs in chunks without opening a window.
- cartesian_stroke.py: builds a shaped Staubli RX160 robot, plans a Cartesian TCP stroke, annotates the path, and plays it in the visualization window.
- path_planning_rrt.py: plans a collision-free joint-space path between start and goal configurations.
Run them with:
python python/examples/bulk_inverse.py
python python/examples/cartesian_stroke.py
python python/examples/path_planning_rrt.py
If your shell has ROS or another global Python stack on PYTHONPATH, unset it
for these commands:
env -u PYTHONPATH python python/examples/cartesian_stroke.py
See Examples for the full example catalog.
Visualization Requirements
The default release includes visualization tools that are important for trying out the package easily and checking if the robot is properly configured. Headless release for advanced users who have RViz or comparable visualization as an alternative is planned.
Non-visual kinematics, collision, and planning APIs need only the Python dependencies installed by pip. Visualization opens a Bevy/wgpu desktop window, so it also needs a graphical session and a working GPU driver.
Linux:
- run inside an X11 or Wayland desktop session; headless servers and minimal containers need a display server or virtual display setup
- install GPU runtime drivers, including a Vulkan driver such as
mesa-vulkan-drivers,vulkan-radeon,vulkan-intel, or the appropriate NVIDIA driver package for your system - if building from source, install Bevy's native build dependencies:
g++,pkg-config,libx11-dev,libasound2-dev,libudev-dev,libxkbcommon-x11-0,libwayland-dev, andlibxkbcommon-dev
macOS:
- run in a normal graphical login session on a Metal-capable Mac
- prebuilt wheels should not require Xcode or command line tools at runtime
- source builds require Apple's command line tools or Xcode
Windows:
- run in a normal graphical desktop session with current GPU drivers
- prebuilt wheels should not require Visual Studio Build Tools at runtime
- source builds require the Visual Studio C++ build tools and a Windows SDK
Documentation
- Installation
- Quickstart
- Core Concepts
- Robot Models
- Transforms And Units
- Bulk Inverse Kinematics
- Jacobian
- Meshes And Collisions
- Path Planning
- Visualization
- API Reference
- Troubleshooting
- Development With Maturin
Project Links
Please use the GitHub repository to raise issues and provide merge requests. The core Rust implementation is rs-opw-kinematics. A useful background article is An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators with an Ortho-parallel Basis and a Spherical Wrist.
Use cases
Use Robot when you only need kinematics. It provides forward
kinematics for all roboto joints, not only the tool-tip pose.
Use KinematicsWithShape when robot geometry matters: collision checks,
distance queries, path planning, or visualization.
Use inverse_multiple on either robot type to convert large stacks of SciPy
RigidTransform poses to a list of solution lists. Each pose is solved
independently in parallel; constraints and the shaped robot's collision policy
filter its solutions. See the
bulk conversion guide.
Use RRTPlanner when you want to move the robot between the two known poses.
It plans a collision-free joint-space path between them and can
enforce a configurable safety distance around geometry. That margin matters in
real cells: calibration error can otherwise turn a mathematically valid
near-contact path into brief surface contact, resulting in scratches, or robot damage.
Use CartesianPlanner when the tool center point must follow a Cartesian
stroke defined by poses. It can start from an arbitrary robot pose, plan the landing into
best suitable joint configuration for the stroke when alternatives exist, and plan a
collision-free path that follows the Cartesian line. Simple joint interpolation
does not provide that guarantee.
Metadata
Release files for spherical-wrist 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spherical_wrist-0.0.4.tar.gz | 1.0 MB | Details |
Built distributions (wheels)
Total release size: 481.4 MB
Release files / spherical_wrist-0.0.4.tar.gz
| Download URL | spherical_wrist-0.0.4.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a4e668f0f0068a014af0d272253da0938e83473dcdcd39259851d626cd06f400
|
|
BLAKE2b-256 checksum How to use checksums |
80551a8e4012d3c7968a8240eeb3a594317080b31eaee59a26622cef1490f519
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp314-cp314-win_amd64.whl
| Download URL | spherical_wrist-0.0.4-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 25.5 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3148c3800a9b8a3104cc19272ca8e6b8ad9492aa60212c765d0ae193e7449af5
|
|
BLAKE2b-256 checksum How to use checksums |
72577647e2933e5e97bfa2108d600e5bcfa76053cdc02cee593a237f91b5962e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 35.4 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
0a0ed9f34585bbac9a1a277a74389f733e28190d7d7aba2ed65535714953f403
|
|
BLAKE2b-256 checksum How to use checksums |
1a5208876a278e04faa1b78aab018af26c57c3b216124a6a036210a1ecc4abcd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | spherical_wrist-0.0.4-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.5 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
311be970a065b08f945971c15f7e1fce48931521d135549c33fc3c0ceda0b0f8
|
|
BLAKE2b-256 checksum How to use checksums |
efa2adb6e063b1a296f7b41428024c5c7da3534702c2c1bb6b525fe42ce4a0c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 29.7 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
2bb13ce7c77f05fd8273a64c95d300465beb67d365a123f0efb93f47931c680d
|
|
BLAKE2b-256 checksum How to use checksums |
876c6fdc9e6a6cb2f39f78cd269032f1658cc933d9b13157642f57b82ecc0487
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp313-cp313-win_amd64.whl
| Download URL | spherical_wrist-0.0.4-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 25.5 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
aa3168bcdb144d5b7b62973652b0233eebd9830b439b415d92a0a027fac66892
|
|
BLAKE2b-256 checksum How to use checksums |
b7967514aca6d264f85f1e1d23072cffb880cad951c450dcea78c034e1ac4018
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 35.4 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5dc8ba11d17cf5eb15d2c438b48e972bf4242c64b2ea1f7623418a84be23a41c
|
|
BLAKE2b-256 checksum How to use checksums |
4200edc73a59c4876581e7b5a91c290851ba1d92aa37fb3fcbd6b2a2447ebb6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | spherical_wrist-0.0.4-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.5 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5f5c909dd8b59a0db00931caff778754072063613f301c977cc0931c769f4356
|
|
BLAKE2b-256 checksum How to use checksums |
21f48eadaa8b1277350f2a87914aab5e8fbe3f3c54e5059b8fd644906fb8553a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 29.7 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d22489a2106a4d81b40c636e53cab04bd44a69048c66c46f43c44a96accc5cd3
|
|
BLAKE2b-256 checksum How to use checksums |
b9c4dd3dc4cd26f1b2d57b8f70157e1f582d1273f3f85c1aca15b0eed801bb9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp312-cp312-win_amd64.whl
| Download URL | spherical_wrist-0.0.4-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 25.5 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5b4c0e26c28d957cbeb825fa83776668f239f93e82269529da8e2fb676c6e63f
|
|
BLAKE2b-256 checksum How to use checksums |
c358a407447b43ce8004099669b3a8bfa286cfb601821234ce5bde3a32977bc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 35.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6b998fa847451420f0af839504d77ea4e09605611ae94655377abacf008fecc1
|
|
BLAKE2b-256 checksum How to use checksums |
d4c302a76d43bd6748fb15a8ed9f6a69a50408f9727e91d85b19addbf21aca42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | spherical_wrist-0.0.4-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.5 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ca7bb137e31c604909d5c7b15d3ccb025b0dcdb30d0ed30a20702593e8e98ad4
|
|
BLAKE2b-256 checksum How to use checksums |
2f785355526f0821914b1d15e1423126c5967496234230a08046f893718ff455
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 29.7 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
5dd3ad7fa147ea6635e57ff718f8053d4155175ca476bb9768c168865542e577
|
|
BLAKE2b-256 checksum How to use checksums |
59b909b8b14dfdd50afc19b65a06dbca0ba635883a7cc3f0c47189a8d781f4a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp311-cp311-win_amd64.whl
| Download URL | spherical_wrist-0.0.4-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 25.5 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
abb0edeebd70f8798ff958cc05aeec9e90e9e525b6a80eb4328a4ab15fd41bed
|
|
BLAKE2b-256 checksum How to use checksums |
bee46b7358e6cc61b271f8cf48a4ab5c2a3ed6471dee6417e4f33d60f4b9b801
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 35.4 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
52eb717a65253db6c7006e9df6d0fb3fc55277448b9fef8ee15083c812fb28ed
|
|
BLAKE2b-256 checksum How to use checksums |
0f93facff497a5ade8bec80cd2d50fd38b97b1320504069dcbf8337ced47d8b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | spherical_wrist-0.0.4-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 29.5 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e0947e41ab01c8950893d3b2c97ed115ff0e8da6d4ca01cc5388878076c171f9
|
|
BLAKE2b-256 checksum How to use checksums |
8201e79a3eee19eb145212b7de3742274c227d2ae8a21cd61657f0e6b31ce211
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / spherical_wrist-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | spherical_wrist-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 29.7 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1cd05d20cdb6ab0e9a7cdb7318f537fbe8b2788ec2d6ca7467a5bc0d10f26694
|
|
BLAKE2b-256 checksum How to use checksums |
f11991b1413f17ec8c3f951e4640f9f6b78feb8ae3ad49d2715c6d61c5d2a0b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency log