kinemotion 0.18.2__py3-none-any.whl → 0.20.0__py3-none-any.whl

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.

@@ -2,6 +2,7 @@
2
2
 
3
3
  import json
4
4
  import subprocess
5
+ import warnings
5
6
 
6
7
  import cv2
7
8
  import numpy as np
@@ -147,8 +148,17 @@ class VideoProcessor:
147
148
  # Extract rotation from side_data_list (common for iPhone videos)
148
149
  self.rotation = self._extract_rotation_from_stream(stream)
149
150
 
150
- except (subprocess.TimeoutExpired, FileNotFoundError, json.JSONDecodeError):
151
- # If ffprobe fails, keep original dimensions (square pixels)
151
+ except FileNotFoundError:
152
+ # ffprobe not found - warn user about reduced functionality
153
+ warnings.warn(
154
+ "ffprobe not found. Video rotation and aspect ratio metadata will be "
155
+ "ignored. This may cause issues with mobile/rotated videos. "
156
+ "Install FFmpeg for full video support: https://ffmpeg.org/download.html",
157
+ UserWarning,
158
+ stacklevel=2,
159
+ )
160
+ except (subprocess.TimeoutExpired, json.JSONDecodeError):
161
+ # If ffprobe fails for other reasons, silently continue with defaults
152
162
  pass
153
163
 
154
164
  def read_frame(self) -> np.ndarray | None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.18.2
3
+ Version: 0.20.0
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
@@ -30,13 +30,18 @@ Description-Content-Type: text/markdown
30
30
  # Kinemotion
31
31
 
32
32
  [![PyPI version](https://img.shields.io/pypi/v/kinemotion.svg)](https://pypi.org/project/kinemotion/)
33
+ [![Python Version](https://img.shields.io/pypi/pyversions/kinemotion.svg)](https://pypi.org/project/kinemotion/)
33
34
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
34
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
35
- [![Type checked with pyright](https://img.shields.io/badge/type%20checked-pyright-blue.svg)](https://github.com/microsoft/pyright)
35
+
36
+ [![Tests](https://github.com/feniix/kinemotion/workflows/Test%20%26%20Quality/badge.svg)](https://github.com/feniix/kinemotion/actions)
37
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=feniix_kinemotion&metric=alert_status)](https://sonarcloud.io/summary/overall?id=feniix_kinemotion)
38
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=feniix_kinemotion&metric=coverage)](https://sonarcloud.io/summary/overall?id=feniix_kinemotion)
39
+
36
40
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
37
- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=feniix_kinemotion&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=feniix_kinemotion)
41
+ [![Type checked with pyright](https://img.shields.io/badge/type%20checked-pyright-blue.svg)](https://github.com/microsoft/pyright)
42
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
38
43
 
39
- A video-based kinematic analysis tool for athletic performance. Analyzes vertical jump videos to estimate key performance metrics using MediaPipe pose tracking and advanced kinematics.
44
+ > A video-based kinematic analysis tool for athletic performance. Analyzes vertical jump videos to estimate key performance metrics using MediaPipe pose tracking and advanced kinematics.
40
45
 
41
46
  **Supported jump types:**
42
47
 
@@ -88,27 +93,70 @@ For clinical, research, or performance assessment requiring validated accuracy,
88
93
 
89
94
  ## Setup
90
95
 
91
- ### Prerequisites
96
+ ### System Requirements
97
+
98
+ **All Platforms:**
99
+
100
+ - Python 3.10, 3.11, or 3.12
101
+
102
+ **Platform-Specific:**
103
+
104
+ #### Windows
92
105
 
93
- - [asdf](https://asdf-vm.com/) version manager
94
- - asdf plugins for Python and uv
106
+ No additional system dependencies required.
95
107
 
96
- ### Installation
108
+ **Recommended for mobile video support:**
97
109
 
98
- 1. **Install asdf plugins** (if not already installed):
110
+ - [FFmpeg](https://ffmpeg.org/download.html) - Download and add to PATH
111
+
112
+ #### macOS
113
+
114
+ No additional system dependencies required.
115
+
116
+ **Recommended for mobile video support:**
117
+
118
+ ```bash
119
+ brew install ffmpeg
120
+ ```
121
+
122
+ #### Linux (Ubuntu/Debian)
123
+
124
+ **Recommended system libraries:**
125
+
126
+ ```bash
127
+ sudo apt-get update
128
+ sudo apt-get install -y \
129
+ libgl1-mesa-glx \
130
+ libglib2.0-0 \
131
+ ffmpeg
132
+ ```
133
+
134
+ **Note:** `ffmpeg` provides the `ffprobe` tool for video metadata extraction (rotation, aspect ratio). Kinemotion works without it, but mobile/rotated videos may not process correctly. A warning will be shown if `ffprobe` is not available.
135
+
136
+ ### Installation Methods
137
+
138
+ #### From PyPI (Recommended)
139
+
140
+ ```bash
141
+ pip install kinemotion
142
+ ```
143
+
144
+ #### From Source (Development)
145
+
146
+ **Step 1:** Install asdf plugins (if not already installed):
99
147
 
100
148
  ```bash
101
149
  asdf plugin add python
102
150
  asdf plugin add uv
103
151
  ```
104
152
 
105
- 1. **Install versions specified in `.tool-versions`**:
153
+ **Step 2:** Install versions specified in `.tool-versions`:
106
154
 
107
155
  ```bash
108
156
  asdf install
109
157
  ```
110
158
 
111
- 1. **Install project dependencies using uv**:
159
+ **Step 3:** Install project dependencies using uv:
112
160
 
113
161
  ```bash
114
162
  uv sync
@@ -120,7 +168,7 @@ This will install all dependencies and make the `kinemotion` command available.
120
168
 
121
169
  Kinemotion supports two jump types with intelligent auto-tuning that automatically optimizes parameters based on video characteristics.
122
170
 
123
- ### Drop Jump Analysis
171
+ ### Analyzing Drop Jumps
124
172
 
125
173
  Analyzes reactive strength and ground contact time:
126
174
 
@@ -129,7 +177,7 @@ Analyzes reactive strength and ground contact time:
129
177
  kinemotion dropjump-analyze video.mp4
130
178
  ```
131
179
 
132
- ### Counter Movement Jump (CMJ) Analysis
180
+ ### Analyzing CMJ
133
181
 
134
182
  Analyzes jump height and biomechanics:
135
183
 
@@ -14,15 +14,15 @@ kinemotion/core/debug_overlay_utils.py,sha256=TyUb5okv5qw8oeaX3jsUO_kpwf1NnaHEAO
14
14
  kinemotion/core/filtering.py,sha256=f-m-aA59e4WqE6u-9MA51wssu7rI-Y_7n1cG8IWdeRQ,11241
15
15
  kinemotion/core/pose.py,sha256=ztemdZ_ysVVK3gbXabm8qS_dr1VfJX9KZjmcO-Z-iNE,8532
16
16
  kinemotion/core/smoothing.py,sha256=C9GK3PAN16RpqJw2UWeVslSTJZEvALeVADjtnJnSF88,14240
17
- kinemotion/core/video_io.py,sha256=kH5FYPx3y3lFZ3ybdgxaZfKPdHJ37eqxSeAaZjyQnJk,6817
17
+ kinemotion/core/video_io.py,sha256=0bJTheYidEqxGP5Y2dSO2x6sbOrnBDBu2TEiV8gT23A,7285
18
18
  kinemotion/dropjump/__init__.py,sha256=yc1XiZ9vfo5h_n7PKVSiX2TTgaIfGL7Y7SkQtiDZj_E,838
19
19
  kinemotion/dropjump/analysis.py,sha256=xx5NWy6s0eb9BEyO_FByY1Ahunaoh3TyaTAxjlPrvxg,27153
20
20
  kinemotion/dropjump/cli.py,sha256=J2F8ij-UcybY7YjK_bncQZiHNzrgS3Y7uTBkNo7y_L4,21328
21
21
  kinemotion/dropjump/debug_overlay.py,sha256=LkPw6ucb7beoYWS4L-Lvjs1KLCm5wAWDAfiznUeV2IQ,5668
22
22
  kinemotion/dropjump/kinematics.py,sha256=txDxpDti3VJVctWGbe3aIrlIx83UY8-ynzlX01TOvTA,15577
23
23
  kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- kinemotion-0.18.2.dist-info/METADATA,sha256=BfM1zCiT2AJ-wThyR7WDL1RwFO6t4Lj71K7C_tSLiIA,18986
25
- kinemotion-0.18.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
- kinemotion-0.18.2.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
27
- kinemotion-0.18.2.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
28
- kinemotion-0.18.2.dist-info/RECORD,,
24
+ kinemotion-0.20.0.dist-info/METADATA,sha256=z3hxeml55ljQHkty3vxiahTkMA9pnN1CgwMefmJWBp0,20249
25
+ kinemotion-0.20.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
+ kinemotion-0.20.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
27
+ kinemotion-0.20.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
28
+ kinemotion-0.20.0.dist-info/RECORD,,