Skip to main content

InterpolatePy

Python PyPI Downloads pre-commit ci-test License: MIT

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.2 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.2

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

Source distribution (sdist)

Source distribution for InterpolatePy 3.3.2
File Size Uploaded
interpolatepy-3.3.2.tar.gz 550.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for InterpolatePy 3.3.2
File
interpolatepy-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
interpolatepy-3.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
interpolatepy-3.3.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
interpolatepy-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
interpolatepy-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
interpolatepy-3.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
interpolatepy-3.3.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
interpolatepy-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
interpolatepy-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
interpolatepy-3.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
interpolatepy-3.3.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
interpolatepy-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details

Total release size: 12.7 MB

Release files / interpolatepy-3.3.2.tar.gz

Download URL interpolatepy-3.3.2.tar.gz
Size 550.7 kB
Tags Source
SHA-256 checksum
How to use checksums
83e437f7d801390bcee49d1a5a977f67538ba2350c7e2f3a56e88c62e182c764
BLAKE2b-256 checksum
How to use checksums
046094115059e08327f51c0312eccd7f49aba847f45e28b79b0d814b82bc9747
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL interpolatepy-3.3.2-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
2d27377c89d96bc77493befa4f8c28caa6a7f56bdb44a12250897745eca43e86
BLAKE2b-256 checksum
How to use checksums
065a7086a17e04996efa4e502b7943f83d5b37cb4f7dc1fd9627e331282a100c
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL interpolatepy-3.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 823.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
02718b7a349eefb7f6c6d3f9b3e3e793000bf08213928f3f8256e3221f46aeee
BLAKE2b-256 checksum
How to use checksums
1a0f21ddb4f75d9decc7456b783dcc688f1120648d57810adc13d5f0791fda67
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL interpolatepy-3.3.2-cp313-cp313-macosx_11_0_arm64.whl
Size 639.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cce319d2f0b48b36652be58ed83f5b92b900baee66e7bd2fb03dd7e2bc8e23e0
BLAKE2b-256 checksum
How to use checksums
1129be7aa881a0481da12dc558b92610eea3105d61e0841b66b46e5230fad163
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl

Download URL interpolatepy-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl
Size 711.7 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
76e307fcaac77bd5a62641e967affac26a433f60c91b88153331755e53e33de9
BLAKE2b-256 checksum
How to use checksums
f4e3d1d38039eb3272e0fd872b21c9e955129a89448dc600ad758826e663afd2
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL interpolatepy-3.3.2-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
59f69c0068df91d52a94a065ed6e72f48207bb7c71a40398c6459d05457ab843
BLAKE2b-256 checksum
How to use checksums
aa2ed56bfc528061ef6670d095b5513e6dc349cc7c490527a5391b9925f1b691
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL interpolatepy-3.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 823.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
9a60b6006b661426687ad151acf0ae591beff4adc36da0ab8460356edc802419
BLAKE2b-256 checksum
How to use checksums
c4e1657a701aa2097da260836ff1a781a9d4fe292dcc1fbacf77a575b96dbee3
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL interpolatepy-3.3.2-cp312-cp312-macosx_11_0_arm64.whl
Size 639.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ec1e7f35da646f7839862a9b028401e736d38bca2913c240d4357eff48d2f13b
BLAKE2b-256 checksum
How to use checksums
21735c8f84732ed1e61e8e373368515adab2188ca33455520a6a231ab32a3aa6
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl

Download URL interpolatepy-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl
Size 711.7 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
9f4a9095f879300c3f450d02cb312f2594a0002e67357a01bf56fbfd4bddca24
BLAKE2b-256 checksum
How to use checksums
5a53027a6c42ceb712a402717afe220856084dc23bf7c05ca64b9e68fc8ca548
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL interpolatepy-3.3.2-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
c56d6aac81545a622d672cf0a2c9ce59bd414e42f3a453650427af7aca3d27e9
BLAKE2b-256 checksum
How to use checksums
4fedca274b9f504eb9889dec4d2dba61163293ea8bf976ceda900dbcbce8ba04
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL interpolatepy-3.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 816.6 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e0abf3d125294e723dd80a49d38bc5a9b53bb314fb5dcde4b6f04c8ed0c5f109
BLAKE2b-256 checksum
How to use checksums
01bcf50f47e94fd49ec98d99197cde87bab7b615da639f4a9a4465ac7481454d
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL interpolatepy-3.3.2-cp311-cp311-macosx_11_0_arm64.whl
Size 637.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
704a009ecaff97a93dd1fbcb06162be987251a8c2e08775a1f3db389b23fb718
BLAKE2b-256 checksum
How to use checksums
43f6642aab1885fee3e4b77a966a5836a1c950d1f728383ec30e0feea1d73aa7
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 Oct 8, 2026.

Transparency log

Release files / interpolatepy-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl

Download URL interpolatepy-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl
Size 705.0 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
17baec5fdec8ccfe1f4b38ecbf1ef634a1a21623ecacb751339b55100bf6e5b9
BLAKE2b-256 checksum
How to use checksums
009b04c9e4fd977905fdf8a0536f54881499972c3b950c1ee6e099ad014dba70
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 Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.3.2 This release

13 release files

3.3.1

13 release files

3.3.0

13 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

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