InterpolatePy
InterpolatePy is a trajectory-planning and interpolation library for robotics, animation, and scientific computing. It includes scalar splines, B-spline curve tools, bounded motion profiles, quaternion interpolation, and 3D path utilities.
The package has a NumPy/SciPy implementation and an optional C++20 backend. Use
the public names exported by interpolatepy; they select the available backend
at import time.
Installation
python -m pip install InterpolatePy
InterpolatePy 3.3.0 requires Python 3.11 or newer, NumPy 1.26 or newer, and SciPy 1.11 or newer. Install plotting support when needed:
python -m pip install "InterpolatePy[plot]"
Quick start
import numpy as np
from interpolatepy import CubicSpline
from interpolatepy import DoubleSTrajectory
from interpolatepy import StateParams
from interpolatepy import TrajectoryBounds
# A clamped cubic spline: v0 and vn are endpoint velocities.
spline = CubicSpline(
[0.0, 1.0, 2.0, 3.0],
[0.0, 1.5, -0.5, 2.0],
v0=0.0,
vn=0.0,
)
times = np.linspace(0.0, 3.0, 100)
positions = spline.evaluate(times)
velocities = spline.evaluate_velocity(times)
# A jerk-limited Double-S motion profile.
state = StateParams(q_0=0.0, q_1=10.0, v_0=0.0, v_1=0.0)
bounds = TrajectoryBounds(v_bound=5.0, a_bound=10.0, j_bound=30.0)
motion = DoubleSTrajectory(state, bounds)
sample_times = np.linspace(0.0, motion.get_duration(), 100)
q, qd, qdd, qddd = motion.evaluate_full(sample_times)
DoubleSTrajectory.evaluate() returns position only. Use
evaluate_velocity(), evaluate_acceleration(), and evaluate_jerk() for one
component, or evaluate_full() for all four.
What is included
| Area | Public APIs | Typical use |
|---|---|---|
| Scalar splines | CubicSpline, CubicSmoothingSpline, CubicSplineWithAcceleration1, CubicSplineWithAcceleration2 |
Smooth scalar waypoint trajectories and noisy data |
| B-splines | BSpline, BSplineInterpolator, CubicBSplineInterpolation, ApproximationBSpline, SmoothingCubicBSpline |
Parametric curves, interpolation, approximation, and smoothing |
| Motion profiles | DoubleSTrajectory, TrapezoidalTrajectory, PolynomialTrajectory, ParabolicBlendTrajectory |
Bounded or boundary-conditioned scalar motion |
| Rotations | Quaternion, QuaternionSpline, SquadC2, SpringQuaternionInterpolation, ShootingQuaternionInterpolation, LogQuaternionInterpolation, ModifiedLogQuaternionInterpolation |
Orientation interpolation without Euler-angle singularities |
| Paths and utilities | LinearPath, CircularPath, Frenet-frame helpers, linear_traj, solve_tridiagonal |
Geometric paths, moving frames, and numerical helpers |
Degrees 3, 4, and 5 of BSplineInterpolator,
LogQuaternionInterpolation, and ModifiedLogQuaternionInterpolation support
as few as two waypoints in version 3.2.0.
See the algorithm selection guide, the full documentation, and the runnable examples.
Optional C++ backend
Platform wheels include the compiled backend. The package falls back to Python automatically when the extension is absent:
import interpolatepy
print(interpolatepy.HAS_CPP)
Set INTERPOLATEPY_NO_CPP=1 before importing the package to force the Python
implementation. Installing a published wheel does not need a compiler. Building
from a source distribution or source checkout requires CMake 3.21+, a C++20
compiler, and network access for CMake's fetched dependencies;
see the installation guide.
Development
This project uses uv:
git clone https://github.com/GiorgioMedico/InterpolatePy.git
cd InterpolatePy
uv sync
uv run pytest
uv run pre-commit run --all-files
Documentation dependencies are in a separate group:
uv sync --group docs
uv run mkdocs serve
Every Python program in examples/ can also be run directly, for example:
uv run python examples/double_s_ex.py
For the complete workflow, see Contributing.
License and citation
InterpolatePy is distributed under the MIT License.
@misc{InterpolatePy,
author = {Giorgio Medico},
title = {InterpolatePy: Trajectory Planning and Interpolation for Python},
year = {2026},
url = {https://github.com/GiorgioMedico/InterpolatePy}
}
Metadata
Release files for InterpolatePy 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| interpolatepy-3.3.0.tar.gz | 547.2 kB | Details |
Built distributions (wheels)
Total release size: 12.7 MB
Release files / interpolatepy-3.3.0.tar.gz
| Download URL | interpolatepy-3.3.0.tar.gz |
|---|---|
| Size | 547.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbfca9ab54e460c93680c262a4d28555d6559e27b92815ff51659f6d5eb4ee8b
|
|
BLAKE2b-256 checksum How to use checksums |
a7b6bad511c00437c000ac2e42140a5b7585b2d049382cd5046ca4d538364fa9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
96876d28a1761a948bdb30d8597b2410215099b26cb5fe3bb04365ee959beba4
|
|
BLAKE2b-256 checksum How to use checksums |
de09f10ceb12c9c4f27af37e2394cf6c5bcab811918fb47f32782708f3bca40b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 821.3 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c26d88336ed7374e054a761bc0c394962896990e75eb8d3d0146ded238a2e90d
|
|
BLAKE2b-256 checksum How to use checksums |
743f64fc8bbb39da3270e4c9e9435b9ec4725ddc3c929519a8e4b4a2f2f80717
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | interpolatepy-3.3.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 638.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f821a5281c3014ce1571d41422ab85caee300034c8d1665bf765b8155b60d99e
|
|
BLAKE2b-256 checksum How to use checksums |
d9d43ba9b4415c926052f14d7ba093d03b6cc349ae6e06b38474c14935b099ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 710.8 kB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
7c03e3e3d72e637600e06ad6cf63c0a7462cb7ad22d7008d20b464bc7f0b4d84
|
|
BLAKE2b-256 checksum How to use checksums |
787a5d8fde30db00f7c602506e9fedab4d9a3cdfd2f5c3cd7401f49f7d17da4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
5907d2211d9daea2c2cc8eee7814956ada1cce5571d1b8c68e90bcf0df68374d
|
|
BLAKE2b-256 checksum How to use checksums |
baeb6068cab84bad351c4b7ca3866e83c5e864efad371627dc0c9b77eb57b3dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 821.2 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1bfd16ef24b3e783e8ed278aebfb43efa0d379e872d3a08d9e712154420038de
|
|
BLAKE2b-256 checksum How to use checksums |
33ea835b6f5fce6ae859d3a867f84af31b3bb9bf6474208ed5cb50786c8725a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | interpolatepy-3.3.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 638.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4b2d045e475c83031199533b520397e679a50821b3d3ae0ac6fc6ca8799e20d4
|
|
BLAKE2b-256 checksum How to use checksums |
532692589349721459da643e2c25aef73420d7eff816b8e1b349842ae09493b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 710.8 kB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
b704b538968ebabfc8096ed276145e8c819caa313585b6bc69bd65b9492f82a9
|
|
BLAKE2b-256 checksum How to use checksums |
fd47a4c8c1710d9a289baa283e28db8b5ecf16c1c9a60c60c9f805457e47cfbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
5b4383f27387001c5df8cbc65265e71be8d6d80666b8b0e02c73b54853c4e507
|
|
BLAKE2b-256 checksum How to use checksums |
bce60e67514bb4b7f0738658e8c357dd88ce1881831b9b33b7325f4c79e2c4e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 815.4 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b7e625504debcca835a07ad19526847d78cb929defb7ffcb16c7fbf7407fbc98
|
|
BLAKE2b-256 checksum How to use checksums |
dbb26df19224a75bd5f3e224f777f512b5f973b2469805b106f82c7dfe8706b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | interpolatepy-3.3.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 636.2 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
71b38dfd3137480f39ff60c493519e7228f6df3119740ddda25ed7f30a74acfc
|
|
BLAKE2b-256 checksum How to use checksums |
77ff8fe7519d611f13ce29ed6938c4dcda369082028d3accf8179d818a7f96f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency logRelease files / interpolatepy-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | interpolatepy-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 704.3 kB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
d378d8fc5185ffe9020570af9266c2c95340690f6aa081048bf441f97eb148fd
|
|
BLAKE2b-256 checksum How to use checksums |
6c4972586328b3db246d02cb83576d06caa545bfaadc41a6faa3b332bc030ef1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 19, 2026.
Transparency log