InterpolatePy 3.0.0__tar.gz → 3.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.github/workflows/docs.yml +9 -12
- interpolatepy-3.0.1/.github/workflows/pre-commit.yml +28 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.github/workflows/publish.yml +6 -10
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.github/workflows/test.yml +10 -14
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.gitignore +0 -3
- interpolatepy-3.0.1/.python-version +1 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/InterpolatePy.egg-info/PKG-INFO +19 -38
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/InterpolatePy.egg-info/SOURCES.txt +2 -0
- interpolatepy-3.0.1/InterpolatePy.egg-info/requires.txt +3 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/PKG-INFO +19 -38
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/README.md +15 -11
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/contributing.md +13 -17
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/installation.md +18 -13
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/troubleshooting.md +2 -2
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/quat_core.py +6 -6
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/version.py +1 -1
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/pyproject.toml +5 -3
- interpolatepy-3.0.1/uv.lock +2142 -0
- interpolatepy-3.0.0/.github/workflows/pre-commit.yml +0 -17
- interpolatepy-3.0.0/InterpolatePy.egg-info/requires.txt +0 -30
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.editorconfig +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.gitattributes +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.github/FUNDING.yml +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/.pre-commit-config.yaml +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/ALGORITHMS.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/InterpolatePy.egg-info/dependency_links.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/InterpolatePy.egg-info/top_level.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/LICENSE +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/codecov.yml +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/CMakeLists.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/CMakeLists.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_acc_splines.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_bspline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_cubic_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_motion.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_paths.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_quaternion.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_smoothing_search.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_smoothing_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/bind_tridiagonal.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/bindings/module.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/cmake/InterpolateCppConfig.cmake.in +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/cmake/version.hpp.in +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/CMakeLists.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/bspline_approx_smooth_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/bspline_cubic_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/bspline_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/bspline_interpolator_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/concepts_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/cubic_smoothing_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/cubic_spline_acc1_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/cubic_spline_acc2_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/cubic_spline_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/double_s_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/parabolic_linear_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/paths_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/polynomial_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/quaternion_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/shared/example_utils.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/examples/trapezoidal_example.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/approximation_bspline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/bspline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/bspline_interpolator.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/bspline_parameters.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/cubic_bspline_interpolation.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/bspline/smoothing_cubic_bspline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/concepts.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/config.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/motion/double_s_trajectory.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/motion/motion_types.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/motion/parabolic_blend_trajectory.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/motion/polynomial_trajectory.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/motion/trapezoidal_trajectory.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/path/circular_path.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/path/frenet_frame.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/path/linear_path.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/path/linear_traj.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/quat/log_quaternion_interpolation.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/quat/modified_log_quaternion_interpolation.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/quat/quaternion.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/quat/quaternion_spline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/quat/squad_c2.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/cubic_smoothing_spline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/cubic_spline.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/cubic_spline_with_acc1.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/cubic_spline_with_acc2.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/smoothing_search.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/spline/spline_parameters.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/include/interpolatecpp/tridiagonal.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/approximation_bspline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/bspline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/bspline_interpolator.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/circular_path.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/cubic_bspline_interpolation.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/cubic_smoothing_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/cubic_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/cubic_spline_with_acc1.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/cubic_spline_with_acc2.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/double_s_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/frenet_frame.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/linear_path.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/linear_traj.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/log_quaternion_interpolation.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/modified_log_quaternion_interpolation.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/parabolic_blend_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/polynomial_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/quaternion.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/quaternion_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/smoothing_cubic_bspline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/smoothing_search.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/squad_c2.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/src/trapezoidal_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/CMakeLists.txt +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/shared/test_data.hpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_bspline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_bspline_variants.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_concepts.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_cubic_smoothing_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_cubic_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_cubic_spline_with_acc1.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_cubic_spline_with_acc2.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_double_s_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_parabolic_blend_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_paths.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_polynomial_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_quaternion.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_quaternion_spline.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_smoothing_search.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_trapezoidal_trajectory.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/cpp/tests/test_tridiagonal.cpp +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/algorithms.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/api-reference.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/architecture.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/assets/extra.css +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/assets/extra.js +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/changelog.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/examples.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/index.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/quickstart.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/tutorials/motion-profiles.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/tutorials/path-planning.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/tutorials/quaternion-interpolation.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/tutorials/spline-interpolation.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/docs/user-guide.md +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/b_spline_approx_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/b_spline_cubic_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/b_spline_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/b_spline_interpolate_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/b_spline_smooth_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/c_s_smoot_search_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/c_s_smoothing_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/c_s_with_acc1_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/c_s_with_acc2_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/cubic_spline_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/double_s_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/frenet_frame_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/lin_poly_parabolic_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/linear_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/log_quat_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/log_quat_new_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/main.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/polynomials_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/protocols_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/quat_visualization_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/simple_paths_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/squad_c2_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/examples/trapezoidal_ex.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/__init__.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/__init__.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_bspline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_direct.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_motion.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_paths.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_quaternion.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_adapters/_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_api.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/_backend.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/b_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/b_spline_approx.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/b_spline_cubic.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/b_spline_interpolate.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/b_spline_smooth.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/c_s_smoot_search.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/c_s_smoothing.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/c_s_with_acc1.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/c_s_with_acc2.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/cubic_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/double_s.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/frenet_frame.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/lin_poly_parabolic.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/linear.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/log_quat.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/polynomials.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/protocols.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/quat_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/quat_visualization.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/simple_paths.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/squad_c2.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/trapezoidal.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/interpolatepy/tridiagonal_inv.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/mkdocs.yml +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/setup.cfg +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/__init__.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/inv_test.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_b_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_b_spline_variants.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_backend.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_cubic_spline.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_lin_poly_parabolic.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_linear.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_log_quat.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_motion_profiles.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_path_planning.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_polynomials.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_protocols.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_quat_interp.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_quat_visualization.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_smoothing.py +0 -0
- {interpolatepy-3.0.0 → interpolatepy-3.0.1}/tests/test_squad_c2.py +0 -0
|
@@ -35,20 +35,17 @@ jobs:
|
|
|
35
35
|
with:
|
|
36
36
|
fetch-depth: 0
|
|
37
37
|
|
|
38
|
-
- name:
|
|
39
|
-
uses:
|
|
38
|
+
- name: Install uv
|
|
39
|
+
uses: astral-sh/setup-uv@v6
|
|
40
40
|
with:
|
|
41
|
-
|
|
42
|
-
cache:
|
|
43
|
-
|
|
44
|
-
- name:
|
|
45
|
-
run:
|
|
46
|
-
|
|
47
|
-
pip install -e '.[docs]'
|
|
48
|
-
|
|
41
|
+
enable-cache: true
|
|
42
|
+
cache-dependency-glob: uv.lock
|
|
43
|
+
|
|
44
|
+
- name: Sync dependencies
|
|
45
|
+
run: uv sync --locked --no-default-groups --group docs
|
|
46
|
+
|
|
49
47
|
- name: Build documentation
|
|
50
|
-
run:
|
|
51
|
-
mkdocs build --clean --strict
|
|
48
|
+
run: uv run mkdocs build --clean --strict
|
|
52
49
|
|
|
53
50
|
- name: Setup Pages
|
|
54
51
|
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: pre-commit
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ main, master ]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
pre-commit:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- name: Install uv
|
|
14
|
+
uses: astral-sh/setup-uv@v6
|
|
15
|
+
with:
|
|
16
|
+
enable-cache: true
|
|
17
|
+
cache-dependency-glob: uv.lock
|
|
18
|
+
- name: Sync dependencies
|
|
19
|
+
run: uv sync --locked --no-default-groups --group dev
|
|
20
|
+
- name: Cache pre-commit hook environments
|
|
21
|
+
uses: actions/cache@v4
|
|
22
|
+
with:
|
|
23
|
+
path: ~/.cache/pre-commit
|
|
24
|
+
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}
|
|
25
|
+
restore-keys: |
|
|
26
|
+
pre-commit-${{ runner.os }}-
|
|
27
|
+
- name: Run pre-commit
|
|
28
|
+
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
@@ -15,18 +15,14 @@ jobs:
|
|
|
15
15
|
- uses: actions/checkout@v4
|
|
16
16
|
with:
|
|
17
17
|
fetch-depth: 0
|
|
18
|
-
- name:
|
|
19
|
-
uses:
|
|
18
|
+
- name: Install uv
|
|
19
|
+
uses: astral-sh/setup-uv@v6
|
|
20
20
|
with:
|
|
21
|
-
|
|
22
|
-
cache:
|
|
23
|
-
- name: Install build tools
|
|
24
|
-
run: |
|
|
25
|
-
python -m pip install --upgrade pip
|
|
26
|
-
pip install build twine
|
|
21
|
+
enable-cache: true
|
|
22
|
+
cache-dependency-glob: uv.lock
|
|
27
23
|
- name: Build package
|
|
28
|
-
run:
|
|
24
|
+
run: uv build
|
|
29
25
|
- name: Verify package
|
|
30
|
-
run: twine check dist/*
|
|
26
|
+
run: uvx twine check dist/*
|
|
31
27
|
- name: Publish to PyPI
|
|
32
28
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
name: ci-test
|
|
3
2
|
|
|
4
3
|
on:
|
|
@@ -14,27 +13,24 @@ jobs:
|
|
|
14
13
|
matrix:
|
|
15
14
|
os: [ubuntu-latest, macos-latest]
|
|
16
15
|
python-version: ['3.11', '3.12', '3.13']
|
|
16
|
+
env:
|
|
17
|
+
UV_PYTHON: ${{ matrix.python-version }}
|
|
17
18
|
steps:
|
|
18
19
|
- uses: actions/checkout@v4
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v6
|
|
19
22
|
with:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
python-version: ${{ matrix.python-version }}
|
|
25
|
-
cache: 'pip'
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: |
|
|
28
|
-
python -m pip install --upgrade pip
|
|
29
|
-
pip install -e '.[test]'
|
|
23
|
+
enable-cache: true
|
|
24
|
+
cache-dependency-glob: uv.lock
|
|
25
|
+
- name: Sync dependencies
|
|
26
|
+
run: uv sync --locked --no-default-groups --group test
|
|
30
27
|
- name: Testing with coverage
|
|
31
|
-
run:
|
|
32
|
-
python -m pytest tests --cov=interpolatepy --cov-report=xml --cov-report=term-missing
|
|
28
|
+
run: uv run pytest tests --cov=interpolatepy --cov-report=xml --cov-report=term-missing
|
|
33
29
|
- name: Upload coverage to Codecov
|
|
34
30
|
uses: codecov/codecov-action@v5
|
|
35
31
|
with:
|
|
36
32
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
37
|
-
|
|
33
|
+
files: ./coverage.xml
|
|
38
34
|
flags: unittests
|
|
39
35
|
name: codecov-umbrella
|
|
40
36
|
fail_ci_if_error: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InterpolatePy
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: A comprehensive Python library for generating smooth trajectories and curves with precise control over position, velocity, acceleration, and jerk profiles
|
|
5
5
|
Author-email: Giorgio Medico <giorgio.medico11@gmail.com>
|
|
6
6
|
Maintainer-email: Giorgio Medico <giorgio.medico11@gmail.com>
|
|
@@ -34,32 +34,9 @@ Classifier: Programming Language :: C++
|
|
|
34
34
|
Requires-Python: >=3.11
|
|
35
35
|
Description-Content-Type: text/markdown
|
|
36
36
|
License-File: LICENSE
|
|
37
|
-
Requires-Dist: numpy>=
|
|
38
|
-
Requires-Dist: matplotlib>=3.
|
|
39
|
-
Requires-Dist: scipy>=1.
|
|
40
|
-
Provides-Extra: test
|
|
41
|
-
Requires-Dist: pytest>=8.4.0; extra == "test"
|
|
42
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
43
|
-
Requires-Dist: codecov>=2.1.13; extra == "test"
|
|
44
|
-
Requires-Dist: pytest-benchmark>=4.0.0; extra == "test"
|
|
45
|
-
Requires-Dist: pre-commit>=4.2.0; extra == "test"
|
|
46
|
-
Provides-Extra: dev
|
|
47
|
-
Requires-Dist: ruff>=0.12.8; extra == "dev"
|
|
48
|
-
Requires-Dist: mypy>=1.17.0; extra == "dev"
|
|
49
|
-
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
|
|
50
|
-
Requires-Dist: pyright>=1.1.400; extra == "dev"
|
|
51
|
-
Requires-Dist: build>=1.0.3; extra == "dev"
|
|
52
|
-
Requires-Dist: twine>=4.0.2; extra == "dev"
|
|
53
|
-
Provides-Extra: docs
|
|
54
|
-
Requires-Dist: mkdocs>=1.5.3; extra == "docs"
|
|
55
|
-
Requires-Dist: mkdocs-material>=9.4.8; extra == "docs"
|
|
56
|
-
Requires-Dist: pymdown-extensions>=10.3.0; extra == "docs"
|
|
57
|
-
Requires-Dist: mkdocs-autorefs>=0.5.0; extra == "docs"
|
|
58
|
-
Requires-Dist: mkdocstrings>=0.23.0; extra == "docs"
|
|
59
|
-
Requires-Dist: mkdocstrings-python>=1.7.3; extra == "docs"
|
|
60
|
-
Requires-Dist: Pygments>=2.16.1; extra == "docs"
|
|
61
|
-
Provides-Extra: all
|
|
62
|
-
Requires-Dist: interpolatepy[dev,docs,test]; extra == "all"
|
|
37
|
+
Requires-Dist: numpy>=1.26
|
|
38
|
+
Requires-Dist: matplotlib>=3.6
|
|
39
|
+
Requires-Dist: scipy>=1.11
|
|
63
40
|
Dynamic: license-file
|
|
64
41
|
|
|
65
42
|
# InterpolatePy
|
|
@@ -92,11 +69,15 @@ pip install InterpolatePy
|
|
|
92
69
|
<details>
|
|
93
70
|
<summary><strong>Development Installation</strong></summary>
|
|
94
71
|
|
|
72
|
+
This project uses [uv](https://docs.astral.sh/uv/) for dependency and environment management.
|
|
73
|
+
|
|
95
74
|
```bash
|
|
96
75
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
97
76
|
cd InterpolatePy
|
|
98
|
-
|
|
77
|
+
uv sync # creates .venv with the default dev + test groups
|
|
99
78
|
```
|
|
79
|
+
|
|
80
|
+
To include the docs group as well: `uv sync --all-groups`.
|
|
100
81
|
</details>
|
|
101
82
|
|
|
102
83
|
## Quick Start
|
|
@@ -317,22 +298,22 @@ Set `INTERPOLATEPY_NO_CPP=1` to force pure-Python mode.
|
|
|
317
298
|
```bash
|
|
318
299
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
319
300
|
cd InterpolatePy
|
|
320
|
-
|
|
321
|
-
pre-commit install
|
|
301
|
+
uv sync # creates .venv with dev + test groups
|
|
302
|
+
uv run pre-commit install
|
|
322
303
|
|
|
323
304
|
# Run tests
|
|
324
|
-
|
|
305
|
+
uv run pytest tests/
|
|
325
306
|
|
|
326
307
|
# Run tests with coverage
|
|
327
|
-
|
|
308
|
+
uv run pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
328
309
|
|
|
329
310
|
# Code quality
|
|
330
|
-
ruff format interpolatepy/
|
|
331
|
-
ruff check interpolatepy/
|
|
332
|
-
mypy interpolatepy/
|
|
311
|
+
uv run ruff format interpolatepy/
|
|
312
|
+
uv run ruff check interpolatepy/
|
|
313
|
+
uv run mypy interpolatepy/
|
|
333
314
|
|
|
334
315
|
# Run all pre-commit hooks
|
|
335
|
-
pre-commit run --all-files
|
|
316
|
+
uv run pre-commit run --all-files
|
|
336
317
|
```
|
|
337
318
|
</details>
|
|
338
319
|
|
|
@@ -343,9 +324,9 @@ pre-commit run --all-files
|
|
|
343
324
|
Contributions welcome! Please:
|
|
344
325
|
|
|
345
326
|
1. Fork the repo and create a feature branch
|
|
346
|
-
2. Install dev dependencies: `
|
|
327
|
+
2. Install dev dependencies: `uv sync`
|
|
347
328
|
3. Follow existing patterns and add tests
|
|
348
|
-
4. Run `pre-commit run --all-files` before submitting
|
|
329
|
+
4. Run `uv run pre-commit run --all-files` before submitting
|
|
349
330
|
5. Open a pull request with clear description
|
|
350
331
|
|
|
351
332
|
For major changes, open an issue first to discuss the approach.
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
.gitattributes
|
|
3
3
|
.gitignore
|
|
4
4
|
.pre-commit-config.yaml
|
|
5
|
+
.python-version
|
|
5
6
|
ALGORITHMS.md
|
|
6
7
|
LICENSE
|
|
7
8
|
README.md
|
|
8
9
|
codecov.yml
|
|
9
10
|
mkdocs.yml
|
|
10
11
|
pyproject.toml
|
|
12
|
+
uv.lock
|
|
11
13
|
.github/FUNDING.yml
|
|
12
14
|
.github/workflows/docs.yml
|
|
13
15
|
.github/workflows/pre-commit.yml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InterpolatePy
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
Summary: A comprehensive Python library for generating smooth trajectories and curves with precise control over position, velocity, acceleration, and jerk profiles
|
|
5
5
|
Author-email: Giorgio Medico <giorgio.medico11@gmail.com>
|
|
6
6
|
Maintainer-email: Giorgio Medico <giorgio.medico11@gmail.com>
|
|
@@ -34,32 +34,9 @@ Classifier: Programming Language :: C++
|
|
|
34
34
|
Requires-Python: >=3.11
|
|
35
35
|
Description-Content-Type: text/markdown
|
|
36
36
|
License-File: LICENSE
|
|
37
|
-
Requires-Dist: numpy>=
|
|
38
|
-
Requires-Dist: matplotlib>=3.
|
|
39
|
-
Requires-Dist: scipy>=1.
|
|
40
|
-
Provides-Extra: test
|
|
41
|
-
Requires-Dist: pytest>=8.4.0; extra == "test"
|
|
42
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
43
|
-
Requires-Dist: codecov>=2.1.13; extra == "test"
|
|
44
|
-
Requires-Dist: pytest-benchmark>=4.0.0; extra == "test"
|
|
45
|
-
Requires-Dist: pre-commit>=4.2.0; extra == "test"
|
|
46
|
-
Provides-Extra: dev
|
|
47
|
-
Requires-Dist: ruff>=0.12.8; extra == "dev"
|
|
48
|
-
Requires-Dist: mypy>=1.17.0; extra == "dev"
|
|
49
|
-
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
|
|
50
|
-
Requires-Dist: pyright>=1.1.400; extra == "dev"
|
|
51
|
-
Requires-Dist: build>=1.0.3; extra == "dev"
|
|
52
|
-
Requires-Dist: twine>=4.0.2; extra == "dev"
|
|
53
|
-
Provides-Extra: docs
|
|
54
|
-
Requires-Dist: mkdocs>=1.5.3; extra == "docs"
|
|
55
|
-
Requires-Dist: mkdocs-material>=9.4.8; extra == "docs"
|
|
56
|
-
Requires-Dist: pymdown-extensions>=10.3.0; extra == "docs"
|
|
57
|
-
Requires-Dist: mkdocs-autorefs>=0.5.0; extra == "docs"
|
|
58
|
-
Requires-Dist: mkdocstrings>=0.23.0; extra == "docs"
|
|
59
|
-
Requires-Dist: mkdocstrings-python>=1.7.3; extra == "docs"
|
|
60
|
-
Requires-Dist: Pygments>=2.16.1; extra == "docs"
|
|
61
|
-
Provides-Extra: all
|
|
62
|
-
Requires-Dist: interpolatepy[dev,docs,test]; extra == "all"
|
|
37
|
+
Requires-Dist: numpy>=1.26
|
|
38
|
+
Requires-Dist: matplotlib>=3.6
|
|
39
|
+
Requires-Dist: scipy>=1.11
|
|
63
40
|
Dynamic: license-file
|
|
64
41
|
|
|
65
42
|
# InterpolatePy
|
|
@@ -92,11 +69,15 @@ pip install InterpolatePy
|
|
|
92
69
|
<details>
|
|
93
70
|
<summary><strong>Development Installation</strong></summary>
|
|
94
71
|
|
|
72
|
+
This project uses [uv](https://docs.astral.sh/uv/) for dependency and environment management.
|
|
73
|
+
|
|
95
74
|
```bash
|
|
96
75
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
97
76
|
cd InterpolatePy
|
|
98
|
-
|
|
77
|
+
uv sync # creates .venv with the default dev + test groups
|
|
99
78
|
```
|
|
79
|
+
|
|
80
|
+
To include the docs group as well: `uv sync --all-groups`.
|
|
100
81
|
</details>
|
|
101
82
|
|
|
102
83
|
## Quick Start
|
|
@@ -317,22 +298,22 @@ Set `INTERPOLATEPY_NO_CPP=1` to force pure-Python mode.
|
|
|
317
298
|
```bash
|
|
318
299
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
319
300
|
cd InterpolatePy
|
|
320
|
-
|
|
321
|
-
pre-commit install
|
|
301
|
+
uv sync # creates .venv with dev + test groups
|
|
302
|
+
uv run pre-commit install
|
|
322
303
|
|
|
323
304
|
# Run tests
|
|
324
|
-
|
|
305
|
+
uv run pytest tests/
|
|
325
306
|
|
|
326
307
|
# Run tests with coverage
|
|
327
|
-
|
|
308
|
+
uv run pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
328
309
|
|
|
329
310
|
# Code quality
|
|
330
|
-
ruff format interpolatepy/
|
|
331
|
-
ruff check interpolatepy/
|
|
332
|
-
mypy interpolatepy/
|
|
311
|
+
uv run ruff format interpolatepy/
|
|
312
|
+
uv run ruff check interpolatepy/
|
|
313
|
+
uv run mypy interpolatepy/
|
|
333
314
|
|
|
334
315
|
# Run all pre-commit hooks
|
|
335
|
-
pre-commit run --all-files
|
|
316
|
+
uv run pre-commit run --all-files
|
|
336
317
|
```
|
|
337
318
|
</details>
|
|
338
319
|
|
|
@@ -343,9 +324,9 @@ pre-commit run --all-files
|
|
|
343
324
|
Contributions welcome! Please:
|
|
344
325
|
|
|
345
326
|
1. Fork the repo and create a feature branch
|
|
346
|
-
2. Install dev dependencies: `
|
|
327
|
+
2. Install dev dependencies: `uv sync`
|
|
347
328
|
3. Follow existing patterns and add tests
|
|
348
|
-
4. Run `pre-commit run --all-files` before submitting
|
|
329
|
+
4. Run `uv run pre-commit run --all-files` before submitting
|
|
349
330
|
5. Open a pull request with clear description
|
|
350
331
|
|
|
351
332
|
For major changes, open an issue first to discuss the approach.
|
|
@@ -28,11 +28,15 @@ pip install InterpolatePy
|
|
|
28
28
|
<details>
|
|
29
29
|
<summary><strong>Development Installation</strong></summary>
|
|
30
30
|
|
|
31
|
+
This project uses [uv](https://docs.astral.sh/uv/) for dependency and environment management.
|
|
32
|
+
|
|
31
33
|
```bash
|
|
32
34
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
33
35
|
cd InterpolatePy
|
|
34
|
-
|
|
36
|
+
uv sync # creates .venv with the default dev + test groups
|
|
35
37
|
```
|
|
38
|
+
|
|
39
|
+
To include the docs group as well: `uv sync --all-groups`.
|
|
36
40
|
</details>
|
|
37
41
|
|
|
38
42
|
## Quick Start
|
|
@@ -253,22 +257,22 @@ Set `INTERPOLATEPY_NO_CPP=1` to force pure-Python mode.
|
|
|
253
257
|
```bash
|
|
254
258
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
255
259
|
cd InterpolatePy
|
|
256
|
-
|
|
257
|
-
pre-commit install
|
|
260
|
+
uv sync # creates .venv with dev + test groups
|
|
261
|
+
uv run pre-commit install
|
|
258
262
|
|
|
259
263
|
# Run tests
|
|
260
|
-
|
|
264
|
+
uv run pytest tests/
|
|
261
265
|
|
|
262
266
|
# Run tests with coverage
|
|
263
|
-
|
|
267
|
+
uv run pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
264
268
|
|
|
265
269
|
# Code quality
|
|
266
|
-
ruff format interpolatepy/
|
|
267
|
-
ruff check interpolatepy/
|
|
268
|
-
mypy interpolatepy/
|
|
270
|
+
uv run ruff format interpolatepy/
|
|
271
|
+
uv run ruff check interpolatepy/
|
|
272
|
+
uv run mypy interpolatepy/
|
|
269
273
|
|
|
270
274
|
# Run all pre-commit hooks
|
|
271
|
-
pre-commit run --all-files
|
|
275
|
+
uv run pre-commit run --all-files
|
|
272
276
|
```
|
|
273
277
|
</details>
|
|
274
278
|
|
|
@@ -279,9 +283,9 @@ pre-commit run --all-files
|
|
|
279
283
|
Contributions welcome! Please:
|
|
280
284
|
|
|
281
285
|
1. Fork the repo and create a feature branch
|
|
282
|
-
2. Install dev dependencies: `
|
|
286
|
+
2. Install dev dependencies: `uv sync`
|
|
283
287
|
3. Follow existing patterns and add tests
|
|
284
|
-
4. Run `pre-commit run --all-files` before submitting
|
|
288
|
+
4. Run `uv run pre-commit run --all-files` before submitting
|
|
285
289
|
5. Open a pull request with clear description
|
|
286
290
|
|
|
287
291
|
For major changes, open an issue first to discuss the approach.
|
|
@@ -22,26 +22,22 @@ Thank you for your interest in contributing to InterpolatePy! This guide will he
|
|
|
22
22
|
cd InterpolatePy
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
2. **
|
|
26
|
-
```bash
|
|
27
|
-
python -m venv venv
|
|
28
|
-
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
29
|
-
```
|
|
25
|
+
2. **Install [uv](https://docs.astral.sh/uv/)** (project uses uv for environment management).
|
|
30
26
|
|
|
31
27
|
3. **Install development dependencies**:
|
|
32
28
|
```bash
|
|
33
|
-
|
|
29
|
+
uv sync # creates .venv with the default dev + test groups
|
|
34
30
|
```
|
|
35
31
|
|
|
36
32
|
4. **Install pre-commit hooks**:
|
|
37
33
|
```bash
|
|
38
|
-
pre-commit install
|
|
34
|
+
uv run pre-commit install
|
|
39
35
|
```
|
|
40
36
|
|
|
41
37
|
5. **Verify installation**:
|
|
42
38
|
```bash
|
|
43
|
-
python -c "import interpolatepy; print(interpolatepy.__version__)"
|
|
44
|
-
pytest tests/ -v
|
|
39
|
+
uv run python -c "import interpolatepy; print(interpolatepy.__version__)"
|
|
40
|
+
uv run pytest tests/ -v
|
|
45
41
|
```
|
|
46
42
|
|
|
47
43
|
### Project Structure
|
|
@@ -104,32 +100,32 @@ Follow our [coding standards](#coding-standards) and ensure your changes:
|
|
|
104
100
|
|
|
105
101
|
```bash
|
|
106
102
|
# Run all tests
|
|
107
|
-
pytest tests/
|
|
103
|
+
uv run pytest tests/
|
|
108
104
|
|
|
109
105
|
# Run specific test file
|
|
110
|
-
pytest tests/test_cubic_spline.py -v
|
|
106
|
+
uv run pytest tests/test_cubic_spline.py -v
|
|
111
107
|
|
|
112
108
|
# Run with coverage
|
|
113
|
-
pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
109
|
+
uv run pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
114
110
|
|
|
115
111
|
# Run benchmarks
|
|
116
|
-
pytest tests/ -k "benchmark" --benchmark-only
|
|
112
|
+
uv run pytest tests/ -k "benchmark" --benchmark-only
|
|
117
113
|
```
|
|
118
114
|
|
|
119
115
|
### 4. Check Code Quality
|
|
120
116
|
|
|
121
117
|
```bash
|
|
122
118
|
# Format code
|
|
123
|
-
ruff format interpolatepy/
|
|
119
|
+
uv run ruff format interpolatepy/
|
|
124
120
|
|
|
125
121
|
# Check linting
|
|
126
|
-
ruff check interpolatepy/
|
|
122
|
+
uv run ruff check interpolatepy/
|
|
127
123
|
|
|
128
124
|
# Type checking
|
|
129
|
-
mypy interpolatepy/
|
|
125
|
+
uv run mypy interpolatepy/
|
|
130
126
|
|
|
131
127
|
# Run pre-commit checks
|
|
132
|
-
pre-commit run --all-files
|
|
128
|
+
uv run pre-commit run --all-files
|
|
133
129
|
```
|
|
134
130
|
|
|
135
131
|
### 5. Commit Changes
|
|
@@ -66,39 +66,44 @@ For contributing to InterpolatePy or accessing the latest features:
|
|
|
66
66
|
|
|
67
67
|
### Clone and Install
|
|
68
68
|
|
|
69
|
+
InterpolatePy uses [uv](https://docs.astral.sh/uv/) for development. Install uv first, then:
|
|
70
|
+
|
|
69
71
|
```bash
|
|
70
72
|
git clone https://github.com/GiorgioMedico/InterpolatePy.git
|
|
71
73
|
cd InterpolatePy
|
|
72
|
-
|
|
74
|
+
uv sync # creates .venv with the default dev + test groups
|
|
73
75
|
```
|
|
74
76
|
|
|
75
|
-
###
|
|
77
|
+
### Selecting Dependency Groups
|
|
76
78
|
|
|
77
79
|
```bash
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
+
# Default: dev + test groups
|
|
81
|
+
uv sync
|
|
82
|
+
|
|
83
|
+
# Include the docs group as well
|
|
84
|
+
uv sync --all-groups
|
|
80
85
|
|
|
81
|
-
# Or
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
# Or pick a specific group
|
|
87
|
+
uv sync --group test
|
|
88
|
+
uv sync --group docs
|
|
84
89
|
```
|
|
85
90
|
|
|
86
91
|
### Development Tools Setup
|
|
87
92
|
|
|
88
93
|
```bash
|
|
89
94
|
# Install pre-commit hooks
|
|
90
|
-
pre-commit install
|
|
95
|
+
uv run pre-commit install
|
|
91
96
|
|
|
92
97
|
# Run code quality checks
|
|
93
|
-
ruff format interpolatepy/
|
|
94
|
-
ruff check interpolatepy/
|
|
95
|
-
mypy interpolatepy/
|
|
98
|
+
uv run ruff format interpolatepy/
|
|
99
|
+
uv run ruff check interpolatepy/
|
|
100
|
+
uv run mypy interpolatepy/
|
|
96
101
|
|
|
97
102
|
# Run tests
|
|
98
|
-
|
|
103
|
+
uv run pytest tests/
|
|
99
104
|
|
|
100
105
|
# Run tests with coverage
|
|
101
|
-
|
|
106
|
+
uv run pytest tests/ --cov=interpolatepy --cov-report=html --cov-report=term
|
|
102
107
|
```
|
|
103
108
|
|
|
104
109
|
## C++ Backend (Optional)
|
|
@@ -18,8 +18,8 @@ ModuleNotFoundError: No module named 'interpolatepy'
|
|
|
18
18
|
# Install from PyPI
|
|
19
19
|
pip install interpolatepy
|
|
20
20
|
|
|
21
|
-
# Or install from source for development
|
|
22
|
-
|
|
21
|
+
# Or install from source for development (uses uv)
|
|
22
|
+
uv sync
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
#### Problem: Specific Class Import Failed
|
|
@@ -276,9 +276,9 @@ class Quaternion:
|
|
|
276
276
|
|
|
277
277
|
For unit q = [cos(θ), v*sin(θ)], log(q) = [0, v*θ]
|
|
278
278
|
"""
|
|
279
|
-
# Clamp s to avoid numerical issues with
|
|
279
|
+
# Clamp s to avoid numerical issues with arccos
|
|
280
280
|
s_clamped = max(-1.0, min(1.0, abs(self.s_)))
|
|
281
|
-
theta = np.
|
|
281
|
+
theta = np.arccos(s_clamped)
|
|
282
282
|
|
|
283
283
|
if theta < self.EPSILON:
|
|
284
284
|
# For small angles, return vector part directly to avoid division by zero
|
|
@@ -506,16 +506,16 @@ class Quaternion:
|
|
|
506
506
|
# Roll (x-axis rotation)
|
|
507
507
|
sinr_cosp = 2 * (s * v1 + v2 * v3)
|
|
508
508
|
cosr_cosp = 1 - 2 * (v1 * v1 + v2 * v2)
|
|
509
|
-
roll = np.
|
|
509
|
+
roll = np.arctan2(sinr_cosp, cosr_cosp)
|
|
510
510
|
|
|
511
511
|
# Pitch (y-axis rotation)
|
|
512
512
|
sinp = 2 * (s * v2 - v3 * v1)
|
|
513
|
-
pitch = np.copysign(np.pi / 2, sinp) if abs(sinp) >= 1 else np.
|
|
513
|
+
pitch = np.copysign(np.pi / 2, sinp) if abs(sinp) >= 1 else np.arcsin(sinp)
|
|
514
514
|
|
|
515
515
|
# Yaw (z-axis rotation)
|
|
516
516
|
siny_cosp = 2 * (s * v3 + v1 * v2)
|
|
517
517
|
cosy_cosp = 1 - 2 * (v2 * v2 + v3 * v3)
|
|
518
|
-
yaw = np.
|
|
518
|
+
yaw = np.arctan2(siny_cosp, cosy_cosp)
|
|
519
519
|
|
|
520
520
|
return roll, pitch, yaw
|
|
521
521
|
|
|
@@ -524,7 +524,7 @@ class Quaternion:
|
|
|
524
524
|
if abs(self.s_) >= 1.0:
|
|
525
525
|
return np.array([1.0, 0.0, 0.0]), 0.0
|
|
526
526
|
|
|
527
|
-
angle = 2.0 * np.
|
|
527
|
+
angle = 2.0 * np.arccos(abs(self.s_))
|
|
528
528
|
sin_half_angle = np.sqrt(1.0 - self.s_**2)
|
|
529
529
|
|
|
530
530
|
axis = np.array([1.0, 0.0, 0.0]) if sin_half_angle < self.EPSILON else self.v_ / sin_half_angle
|
|
@@ -44,14 +44,14 @@ classifiers = [
|
|
|
44
44
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
45
45
|
"Programming Language :: C++",
|
|
46
46
|
]
|
|
47
|
-
dependencies = ["numpy>=
|
|
47
|
+
dependencies = ["numpy>=1.26", "matplotlib>=3.6", "scipy>=1.11"]
|
|
48
48
|
dynamic = ["version"]
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
51
51
|
"Homepage" = "https://github.com/GiorgioMedico/InterpolatePy"
|
|
52
52
|
"Bug Tracker" = "https://github.com/GiorgioMedico/InterpolatePy/issues"
|
|
53
53
|
|
|
54
|
-
[
|
|
54
|
+
[dependency-groups]
|
|
55
55
|
test = [
|
|
56
56
|
"pytest>=8.4.0",
|
|
57
57
|
"pytest-cov>=4.1.0",
|
|
@@ -76,7 +76,9 @@ docs = [
|
|
|
76
76
|
"mkdocstrings-python>=1.7.3",
|
|
77
77
|
"Pygments>=2.16.1",
|
|
78
78
|
]
|
|
79
|
-
|
|
79
|
+
|
|
80
|
+
[tool.uv]
|
|
81
|
+
default-groups = ["dev", "test"]
|
|
80
82
|
|
|
81
83
|
[tool.setuptools]
|
|
82
84
|
platforms = ["unix", "linux", "osx", "cygwin", "win32"]
|