InterpolatePy 1.1.0__tar.gz → 2.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.
Files changed (106) hide show
  1. interpolatepy-2.0.1/.github/FUNDING.yml +15 -0
  2. interpolatepy-2.0.1/.github/workflows/docs.yml +74 -0
  3. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.github/workflows/pre-commit.yml +1 -1
  4. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.github/workflows/publish.yml +1 -1
  5. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.github/workflows/test.yml +20 -6
  6. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.gitignore +3 -0
  7. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.pre-commit-config.yaml +4 -13
  8. interpolatepy-2.0.1/ALGORITHMS.md +1092 -0
  9. interpolatepy-2.0.1/InterpolatePy.egg-info/PKG-INFO +375 -0
  10. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/InterpolatePy.egg-info/SOURCES.txt +42 -1
  11. interpolatepy-2.0.1/InterpolatePy.egg-info/requires.txt +21 -0
  12. interpolatepy-2.0.1/PKG-INFO +375 -0
  13. interpolatepy-2.0.1/README.md +319 -0
  14. interpolatepy-2.0.1/codecov.yml +27 -0
  15. interpolatepy-2.0.1/docs/algorithms.md +819 -0
  16. interpolatepy-2.0.1/docs/api-reference.md +642 -0
  17. interpolatepy-2.0.1/docs/assets/extra.css +110 -0
  18. interpolatepy-2.0.1/docs/assets/extra.js +79 -0
  19. interpolatepy-2.0.1/docs/changelog.md +223 -0
  20. interpolatepy-2.0.1/docs/contributing.md +656 -0
  21. interpolatepy-2.0.1/docs/examples.md +1436 -0
  22. interpolatepy-2.0.1/docs/index.md +194 -0
  23. interpolatepy-2.0.1/docs/installation.md +355 -0
  24. interpolatepy-2.0.1/docs/quickstart.md +379 -0
  25. interpolatepy-2.0.1/docs/troubleshooting.md +423 -0
  26. interpolatepy-2.0.1/docs/tutorials/motion-profiles.md +906 -0
  27. interpolatepy-2.0.1/docs/tutorials/spline-interpolation.md +941 -0
  28. interpolatepy-2.0.1/docs/user-guide.md +680 -0
  29. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/b_spline_approx_ex.py +20 -4
  30. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/b_spline_ex.py +6 -1
  31. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/c_s_smoot_search_ex.py +5 -1
  32. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/c_s_smoothing_ex.py +5 -1
  33. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/c_s_with_acc1_ex.py +47 -9
  34. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/c_s_with_acc2_ex.py +3 -0
  35. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/cubic_spline_ex.py +2 -0
  36. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/lin_poly_parabolic_ex.py +2 -1
  37. interpolatepy-2.0.1/examples/log_quat_ex.py +207 -0
  38. interpolatepy-2.0.1/examples/log_quat_new_ex.py +394 -0
  39. interpolatepy-2.0.1/examples/quat_visualization_ex.py +295 -0
  40. interpolatepy-2.0.1/examples/squad_c2_ex.py +225 -0
  41. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/trapezoidal_ex.py +24 -4
  42. interpolatepy-2.0.1/interpolatepy/__init__.py +100 -0
  43. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/b_spline.py +75 -29
  44. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/b_spline_approx.py +17 -5
  45. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/b_spline_cubic.py +12 -17
  46. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/b_spline_interpolate.py +29 -6
  47. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/b_spline_smooth.py +15 -11
  48. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/c_s_smoot_search.py +18 -5
  49. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/c_s_smoothing.py +10 -4
  50. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/c_s_with_acc1.py +5 -3
  51. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/c_s_with_acc2.py +16 -2
  52. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/cubic_spline.py +16 -13
  53. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/double_s.py +57 -50
  54. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/frenet_frame.py +30 -10
  55. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/lin_poly_parabolic.py +16 -4
  56. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/linear.py +8 -0
  57. interpolatepy-2.0.1/interpolatepy/log_quat.py +950 -0
  58. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/polynomials.py +204 -46
  59. interpolatepy-2.0.1/interpolatepy/quat_core.py +682 -0
  60. interpolatepy-2.0.1/interpolatepy/quat_spline.py +348 -0
  61. interpolatepy-2.0.1/interpolatepy/quat_visualization.py +584 -0
  62. interpolatepy-2.0.1/interpolatepy/simple_paths.py +436 -0
  63. interpolatepy-2.0.1/interpolatepy/squad_c2.py +515 -0
  64. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/trapezoidal.py +103 -36
  65. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/tridiagonal_inv.py +8 -0
  66. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/interpolatepy/version.py +1 -1
  67. interpolatepy-2.0.1/mkdocs.yml +159 -0
  68. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/pyproject.toml +49 -85
  69. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/requirements-dev.txt +10 -21
  70. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/tests/inv_test.py +20 -8
  71. interpolatepy-2.0.1/tests/test_b_spline.py +840 -0
  72. interpolatepy-2.0.1/tests/test_b_spline_variants.py +1123 -0
  73. interpolatepy-2.0.1/tests/test_cubic_spline.py +639 -0
  74. interpolatepy-2.0.1/tests/test_lin_poly_parabolic.py +667 -0
  75. interpolatepy-2.0.1/tests/test_linear.py +507 -0
  76. interpolatepy-2.0.1/tests/test_log_quat.py +654 -0
  77. interpolatepy-2.0.1/tests/test_motion_profiles.py +709 -0
  78. interpolatepy-2.0.1/tests/test_path_planning.py +1045 -0
  79. interpolatepy-2.0.1/tests/test_polynomials.py +818 -0
  80. interpolatepy-2.0.1/tests/test_quat_interp.py +1251 -0
  81. interpolatepy-2.0.1/tests/test_quat_visualization.py +767 -0
  82. interpolatepy-2.0.1/tests/test_smoothing.py +1509 -0
  83. interpolatepy-2.0.1/tests/test_squad_c2.py +658 -0
  84. interpolatepy-1.1.0/InterpolatePy.egg-info/PKG-INFO +0 -279
  85. interpolatepy-1.1.0/InterpolatePy.egg-info/requires.txt +0 -23
  86. interpolatepy-1.1.0/PKG-INFO +0 -279
  87. interpolatepy-1.1.0/README.md +0 -220
  88. interpolatepy-1.1.0/interpolatepy/__init__.py +0 -8
  89. interpolatepy-1.1.0/interpolatepy/simple_paths.py +0 -281
  90. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.editorconfig +0 -0
  91. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/.gitattributes +0 -0
  92. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/InterpolatePy.egg-info/dependency_links.txt +0 -0
  93. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/InterpolatePy.egg-info/top_level.txt +0 -0
  94. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/LICENSE +0 -0
  95. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/b_spline_cubic_ex.py +1 -1
  96. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/b_spline_interpolate_ex.py +1 -1
  97. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/b_spline_smooth_ex.py +1 -1
  98. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/double_s_ex.py +0 -0
  99. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/frenet_frame_ex.py +1 -1
  100. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/linear_ex.py +0 -0
  101. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/main.py +0 -0
  102. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/polynomials_ex.py +0 -0
  103. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/examples/simple_paths_ex.py +1 -1
  104. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/requirements.txt +0 -0
  105. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/setup.cfg +0 -0
  106. {interpolatepy-1.1.0 → interpolatepy-2.0.1}/tests/__init__.py +0 -0
@@ -0,0 +1,15 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
+ patreon: # Replace with a single Patreon username
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: giorgio23
7
+ tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: # Replace with a single Liberapay username
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12
+ polar: # Replace with a single Polar username
13
+ buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14
+ thanks_dev: # Replace with a single thanks.dev username
15
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -0,0 +1,74 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, dev ]
6
+ paths:
7
+ - 'docs/**'
8
+ - 'mkdocs.yml'
9
+ - 'interpolatepy/**/*.py' # Only Python files for API docs
10
+ - '.github/workflows/docs.yml'
11
+ pull_request:
12
+ branches: [ main ]
13
+ paths:
14
+ - 'docs/**'
15
+ - 'mkdocs.yml'
16
+ - 'interpolatepy/**/*.py'
17
+ workflow_dispatch: # Allow manual triggering
18
+
19
+ permissions:
20
+ contents: read
21
+ pages: write
22
+ id-token: write
23
+
24
+ concurrency:
25
+ group: "pages"
26
+ cancel-in-progress: false
27
+
28
+ jobs:
29
+ build:
30
+ runs-on: ubuntu-latest
31
+
32
+ steps:
33
+ - name: Checkout repository
34
+ uses: actions/checkout@v4
35
+
36
+ - name: Set up Python
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: '3.12'
40
+ cache: 'pip'
41
+
42
+ - name: Install dependencies
43
+ run: |
44
+ python -m pip install --upgrade pip
45
+ pip install -r requirements-dev.txt
46
+ pip install -e .
47
+
48
+ - name: Build documentation
49
+ run: |
50
+ mkdocs build --clean --strict
51
+
52
+ - name: Setup Pages
53
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
54
+ uses: actions/configure-pages@v4
55
+
56
+ - name: Upload artifact
57
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
58
+ uses: actions/upload-pages-artifact@v3
59
+ with:
60
+ path: ./site
61
+
62
+ deploy:
63
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
64
+ environment:
65
+ name: github-pages
66
+ url: ${{ steps.deployment.outputs.page_url }}
67
+ runs-on: ubuntu-latest
68
+ needs: build
69
+
70
+ steps:
71
+ - name: Deploy to GitHub Pages
72
+ id: deployment
73
+ uses: actions/deploy-pages@v4
74
+
@@ -13,5 +13,5 @@ jobs:
13
13
  - name: Set up Python
14
14
  uses: actions/setup-python@v5
15
15
  with:
16
- python-version: '3.10'
16
+ python-version: '3.11'
17
17
  - uses: pre-commit/action@v3.0.1
@@ -12,7 +12,7 @@ jobs:
12
12
  - name: Set up Python
13
13
  uses: actions/setup-python@v5
14
14
  with:
15
- python-version: '3.10'
15
+ python-version: '3.12'
16
16
  - name: Install dependencies
17
17
  run: |
18
18
  python -m pip install --upgrade pip
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- python-version: ['3.10', '3.11', '3.12']
15
+ python-version: ['3.11', '3.12', '3.13']
16
16
  steps:
17
17
  - uses: actions/checkout@v4
18
18
  - name: Set up Python ${{ matrix.python-version }}
@@ -24,15 +24,22 @@ jobs:
24
24
  python -m pip install --upgrade pip
25
25
  pip install -r requirements-dev.txt
26
26
  pip install -e .
27
- - name: Testing
27
+ - name: Testing with coverage
28
28
  run: |
29
- python -m pytest tests
29
+ python -m pytest tests --cov=interpolatepy --cov-report=xml --cov-report=term-missing
30
+ - name: Upload coverage to Codecov
31
+ uses: codecov/codecov-action@v5
32
+ with:
33
+ file: ./coverage.xml
34
+ flags: unittests
35
+ name: codecov-umbrella
36
+ fail_ci_if_error: false
30
37
 
31
38
  build-macos:
32
39
  runs-on: macos-latest
33
40
  strategy:
34
41
  matrix:
35
- python-version: ['3.10', '3.11', '3.12']
42
+ python-version: ['3.11', '3.12', '3.13']
36
43
  steps:
37
44
  - uses: actions/checkout@v4
38
45
  - name: Set up Python ${{ matrix.python-version }}
@@ -44,6 +51,13 @@ jobs:
44
51
  python -m pip install --upgrade pip
45
52
  pip install -r requirements-dev.txt
46
53
  pip install -e .
47
- - name: Testing
54
+ - name: Testing with coverage
48
55
  run: |
49
- python -m pytest tests
56
+ python -m pytest tests --cov=interpolatepy --cov-report=xml --cov-report=term-missing
57
+ - name: Upload coverage to Codecov
58
+ uses: codecov/codecov-action@v5
59
+ with:
60
+ file: ./coverage.xml
61
+ flags: unittests
62
+ name: codecov-umbrella
63
+ fail_ci_if_error: false
@@ -19,6 +19,7 @@ data/*.h5
19
19
  venv/
20
20
  .venv/
21
21
  .conda/
22
+ .claude/
22
23
 
23
24
  ################################
24
25
  ########### PYTHON #############
@@ -138,3 +139,5 @@ venv.bak/
138
139
  .vscode
139
140
  *.code-workspace
140
141
  .history
142
+
143
+ CLAUDE.md
@@ -2,33 +2,24 @@ default_language_version:
2
2
  python: python3
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v5.0.0
5
+ rev: v6.0.0
6
6
  hooks:
7
7
  - id: check-ast
8
8
  - id: check-builtin-literals
9
9
  - id: check-merge-conflict
10
10
  - id: check-yaml
11
+ exclude: ^mkdocs\.yml$
11
12
  - id: check-toml
12
13
 
13
- - repo: https://github.com/PyCQA/isort
14
- rev: 6.0.1
15
- hooks:
16
- - id: isort
17
-
18
- - repo: https://github.com/psf/black
19
- rev: 25.1.0
20
- hooks:
21
- - id: black
22
-
23
14
  - repo: https://github.com/astral-sh/ruff-pre-commit
24
- rev: 'v0.11.10'
15
+ rev: 'v0.12.8'
25
16
  hooks:
26
17
  - id: ruff
27
18
  types_or: [python, pyi, jupyter]
28
19
  args: [ --fix, --exit-non-zero-on-fix, --preview ]
29
20
 
30
21
  - repo: https://github.com/pre-commit/mirrors-mypy
31
- rev: v1.15.0
22
+ rev: v1.17.1
32
23
  hooks:
33
24
  - id: mypy
34
25
  args: [--ignore-missing-imports]