kinemotion 0.20.0__tar.gz → 0.20.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.
Potentially problematic release.
This version of kinemotion might be problematic. Click here for more details.
- {kinemotion-0.20.0 → kinemotion-0.20.1}/CHANGELOG.md +8 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/PKG-INFO +1 -1
- {kinemotion-0.20.0 → kinemotion-0.20.1}/pyproject.toml +1 -1
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_aspect_ratio.py +21 -2
- {kinemotion-0.20.0 → kinemotion-0.20.1}/uv.lock +1 -1
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.dockerignore +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/pull_request_template.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/workflows/docs.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/workflows/release.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.github/workflows/test.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.gitignore +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.readthedocs.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/.tool-versions +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/CLAUDE.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/CODE_OF_CONDUCT.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/CONTRIBUTING.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/Dockerfile +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/GEMINI.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/LICENSE +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/README.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/SECURITY.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/README.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/api/cmj.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/api/core.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/api/dropjump.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/api/overview.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/development/errors-findings.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/development/validation-plan.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/development/wallball-norep-detection.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/guides/bulk-processing.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/guides/camera-setup.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/guides/cmj-guide.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/index.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/reference/parameters.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/reference/pose-systems.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/technical/framerate.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/technical/imu-metadata.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/technical/real-time-analysis.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/technical/triple-extension.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/docs/translations/es/camera-setup.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/examples/bulk/README.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/examples/bulk/bulk_processing.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/examples/bulk/simple_example.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/mkdocs.yml +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/requirements-docs.txt +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/samples/cmjs/README.md +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/sonar-project.properties +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/api.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/__init__.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/analysis.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/cli.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/debug_overlay.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/joint_angles.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/cmj/kinematics.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/cli_utils.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/debug_overlay_utils.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/dropjump/cli.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/src/kinemotion/py.typed +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/__init__.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_adaptive_threshold.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_api.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_cli_imports.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_cmj_analysis.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_cmj_kinematics.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_com_estimation.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_contact_detection.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_filtering.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_joint_angles.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_kinematics.py +0 -0
- {kinemotion-0.20.0 → kinemotion-0.20.1}/tests/test_polyorder.py +0 -0
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
<!-- version list -->
|
|
9
9
|
|
|
10
|
+
## v0.20.1 (2025-11-10)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- Add test coverage for ffprobe warning path
|
|
15
|
+
([`8ae3e55`](https://github.com/feniix/kinemotion/commit/8ae3e552a3bfb749d4e9bad10c634093db5eddee))
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
## v0.20.0 (2025-11-10)
|
|
11
19
|
|
|
12
20
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.1
|
|
4
4
|
Summary: Video-based kinematic analysis for athletic performance
|
|
5
5
|
Project-URL: Homepage, https://github.com/feniix/kinemotion
|
|
6
6
|
Project-URL: Repository, https://github.com/feniix/kinemotion
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import tempfile
|
|
4
4
|
from pathlib import Path
|
|
5
|
+
from unittest.mock import patch
|
|
5
6
|
|
|
6
7
|
import cv2
|
|
7
8
|
import numpy as np
|
|
9
|
+
import pytest
|
|
8
10
|
|
|
9
11
|
from kinemotion.core.video_io import VideoProcessor
|
|
10
12
|
from kinemotion.dropjump.debug_overlay import DebugOverlayRenderer
|
|
@@ -98,8 +100,6 @@ def test_aspect_ratio_9_16_portrait():
|
|
|
98
100
|
|
|
99
101
|
def test_frame_dimension_validation():
|
|
100
102
|
"""Test that mismatched frame dimensions raise an error."""
|
|
101
|
-
import pytest
|
|
102
|
-
|
|
103
103
|
output_path = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False).name
|
|
104
104
|
|
|
105
105
|
try:
|
|
@@ -117,3 +117,22 @@ def test_frame_dimension_validation():
|
|
|
117
117
|
|
|
118
118
|
finally:
|
|
119
119
|
Path(output_path).unlink(missing_ok=True)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def test_ffprobe_not_found_warning():
|
|
123
|
+
"""Test that warning is shown when ffprobe is not available."""
|
|
124
|
+
test_video = create_test_video(640, 480)
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
# Mock subprocess.run to raise FileNotFoundError (ffprobe not found)
|
|
128
|
+
with patch(
|
|
129
|
+
"subprocess.run", side_effect=FileNotFoundError("ffprobe not found")
|
|
130
|
+
):
|
|
131
|
+
with pytest.warns(
|
|
132
|
+
UserWarning, match="ffprobe not found.*rotation and aspect ratio"
|
|
133
|
+
):
|
|
134
|
+
video = VideoProcessor(test_video)
|
|
135
|
+
video.close()
|
|
136
|
+
|
|
137
|
+
finally:
|
|
138
|
+
Path(test_video).unlink()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kinemotion-0.20.0 → kinemotion-0.20.1}/docs/research/sports-biomechanics-pose-estimation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|