kinemotion 0.10.11__py3-none-any.whl → 0.11.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.
- kinemotion/__init__.py +18 -1
- kinemotion/api.py +335 -0
- kinemotion/cli.py +2 -0
- kinemotion/cmj/__init__.py +5 -0
- kinemotion/cmj/analysis.py +548 -0
- kinemotion/cmj/cli.py +626 -0
- kinemotion/cmj/debug_overlay.py +514 -0
- kinemotion/cmj/joint_angles.py +290 -0
- kinemotion/cmj/kinematics.py +191 -0
- {kinemotion-0.10.11.dist-info → kinemotion-0.11.0.dist-info}/METADATA +93 -124
- kinemotion-0.11.0.dist-info/RECORD +26 -0
- kinemotion-0.10.11.dist-info/RECORD +0 -20
- {kinemotion-0.10.11.dist-info → kinemotion-0.11.0.dist-info}/WHEEL +0 -0
- {kinemotion-0.10.11.dist-info → kinemotion-0.11.0.dist-info}/entry_points.txt +0 -0
- {kinemotion-0.10.11.dist-info → kinemotion-0.11.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.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
|
|
@@ -34,30 +34,45 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
[](https://github.com/psf/black)
|
|
35
35
|
[](https://github.com/microsoft/pyright)
|
|
36
36
|
[](https://github.com/astral-sh/ruff)
|
|
37
|
+
[](https://sonarcloud.io/summary/new_code?id=feniix_kinemotion)
|
|
37
38
|
|
|
38
|
-
A video-based kinematic analysis tool for athletic performance. Analyzes
|
|
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.
|
|
40
|
+
|
|
41
|
+
**Supported jump types:**
|
|
42
|
+
|
|
43
|
+
- **Drop Jump**: Ground contact time, flight time, reactive strength index
|
|
44
|
+
- **Counter Movement Jump (CMJ)**: Jump height, flight time, countermovement depth, triple extension biomechanics
|
|
39
45
|
|
|
40
46
|
## Features
|
|
41
47
|
|
|
48
|
+
### Core Features
|
|
49
|
+
|
|
42
50
|
- **Automatic pose tracking** using MediaPipe Pose landmarks
|
|
43
|
-
- **Ground contact detection** based on foot velocity and position
|
|
44
51
|
- **Derivative-based velocity** - smooth velocity calculation from position trajectory
|
|
45
52
|
- **Trajectory curvature analysis** - acceleration patterns for refined event detection
|
|
46
|
-
- **Sub-frame interpolation** - precise timing beyond frame boundaries
|
|
47
|
-
- **
|
|
48
|
-
- **Kinematic calculations** for jump metrics:
|
|
49
|
-
- Ground contact time (ms)
|
|
50
|
-
- Flight time (ms)
|
|
51
|
-
- Jump height (m) - with optional calibration using drop box height
|
|
52
|
-
- **Calibrated measurements** - use known drop height for theoretically improved accuracy (⚠️ accuracy claims unvalidated)
|
|
53
|
+
- **Sub-frame interpolation** - precise timing beyond frame boundaries
|
|
54
|
+
- **Intelligent auto-tuning** - automatic parameter optimization based on video characteristics
|
|
53
55
|
- **JSON output** for easy integration with other tools
|
|
54
|
-
- **
|
|
55
|
-
- **Batch processing** - CLI and Python API for parallel processing
|
|
56
|
-
- **Python library API** - use kinemotion programmatically
|
|
57
|
-
- **CSV export** - aggregated results for research
|
|
58
|
-
- **Configurable parameters** for smoothing, thresholds, and detection
|
|
56
|
+
- **Debug video overlays** with visual analysis
|
|
57
|
+
- **Batch processing** - CLI and Python API for parallel processing
|
|
58
|
+
- **Python library API** - use kinemotion programmatically
|
|
59
|
+
- **CSV export** - aggregated results for research
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
### Drop Jump Analysis
|
|
62
|
+
|
|
63
|
+
- **Ground contact detection** based on foot velocity and position
|
|
64
|
+
- **Automatic drop jump detection** - identifies box → drop → landing → jump phases
|
|
65
|
+
- **Metrics**: Ground contact time, flight time, jump height (with drop height calibration)
|
|
66
|
+
- **Reactive strength index** calculations
|
|
67
|
+
|
|
68
|
+
### Counter Movement Jump (CMJ) Analysis
|
|
69
|
+
|
|
70
|
+
- **Backward search algorithm** - robust phase detection from peak height
|
|
71
|
+
- **Flight time method** - force plate standard (h = g×t²/8)
|
|
72
|
+
- **Triple extension tracking** - ankle, knee, hip joint angles
|
|
73
|
+
- **Skeleton overlay** - biomechanical visualization
|
|
74
|
+
- **Metrics**: Jump height, flight time, countermovement depth, eccentric/concentric durations
|
|
75
|
+
- **Validated accuracy**: 50.6cm jump (±1 frame precision)
|
|
61
76
|
|
|
62
77
|
## Validation Status
|
|
63
78
|
|
|
@@ -103,133 +118,77 @@ This will install all dependencies and make the `kinemotion` command available.
|
|
|
103
118
|
|
|
104
119
|
## Usage
|
|
105
120
|
|
|
106
|
-
|
|
121
|
+
Kinemotion supports two jump types with intelligent auto-tuning that automatically optimizes parameters based on video characteristics.
|
|
107
122
|
|
|
108
|
-
###
|
|
123
|
+
### Drop Jump Analysis
|
|
109
124
|
|
|
110
|
-
|
|
125
|
+
Analyzes reactive strength and ground contact time:
|
|
111
126
|
|
|
112
127
|
```bash
|
|
113
128
|
# Drop-height is REQUIRED for accurate calibration
|
|
114
129
|
kinemotion dropjump-analyze video.mp4 --drop-height 0.40
|
|
115
130
|
```
|
|
116
131
|
|
|
117
|
-
###
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --json-output metrics.json
|
|
121
|
-
```
|
|
132
|
+
### Counter Movement Jump (CMJ) Analysis
|
|
122
133
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
Create an annotated video showing pose tracking and contact detection:
|
|
134
|
+
Analyzes jump height and biomechanics:
|
|
126
135
|
|
|
127
136
|
```bash
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### Complete Analysis
|
|
137
|
+
# No drop height needed (floor level)
|
|
138
|
+
kinemotion cmj-analyze video.mp4
|
|
132
139
|
|
|
133
|
-
With
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
kinemotion dropjump-analyze video.mp4 \
|
|
137
|
-
--drop-height 0.40 \
|
|
138
|
-
--output debug.mp4 \
|
|
139
|
-
--json-output results.json
|
|
140
|
+
# With triple extension visualization
|
|
141
|
+
kinemotion cmj-analyze video.mp4 --output debug.mp4
|
|
140
142
|
```
|
|
141
143
|
|
|
142
|
-
###
|
|
143
|
-
|
|
144
|
-
Choose analysis quality (automatically adjusts all parameters):
|
|
144
|
+
### Common Options (Both Jump Types)
|
|
145
145
|
|
|
146
146
|
```bash
|
|
147
|
-
#
|
|
148
|
-
kinemotion
|
|
147
|
+
# Save metrics to JSON
|
|
148
|
+
kinemotion cmj-analyze video.mp4 --json-output results.json
|
|
149
149
|
|
|
150
|
-
#
|
|
151
|
-
kinemotion
|
|
150
|
+
# Generate debug video
|
|
151
|
+
kinemotion cmj-analyze video.mp4 --output debug.mp4
|
|
152
152
|
|
|
153
|
-
#
|
|
154
|
-
kinemotion
|
|
153
|
+
# Complete analysis with all outputs
|
|
154
|
+
kinemotion cmj-analyze video.mp4 \
|
|
155
|
+
--output debug.mp4 \
|
|
156
|
+
--json-output results.json \
|
|
157
|
+
--verbose
|
|
155
158
|
```
|
|
156
159
|
|
|
157
|
-
###
|
|
158
|
-
|
|
159
|
-
View what parameters were automatically selected:
|
|
160
|
+
### Quality Presets
|
|
160
161
|
|
|
161
162
|
```bash
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
# Fast (50% faster, good for batch)
|
|
164
|
+
kinemotion cmj-analyze video.mp4 --quality fast
|
|
164
165
|
|
|
165
|
-
|
|
166
|
+
# Balanced (default)
|
|
167
|
+
kinemotion cmj-analyze video.mp4 --quality balanced
|
|
166
168
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
# Manual parameter override (rarely needed)
|
|
171
|
-
kinemotion dropjump-analyze video.mp4 \
|
|
172
|
-
--drop-height 0.40 \
|
|
173
|
-
--expert \
|
|
174
|
-
--smoothing-window 7 \
|
|
175
|
-
--velocity-threshold 0.015
|
|
169
|
+
# Accurate (research-grade)
|
|
170
|
+
kinemotion cmj-analyze video.mp4 --quality accurate --verbose
|
|
176
171
|
```
|
|
177
172
|
|
|
178
173
|
### Batch Processing
|
|
179
174
|
|
|
180
|
-
Process multiple videos in parallel
|
|
175
|
+
Process multiple videos in parallel:
|
|
181
176
|
|
|
182
177
|
```bash
|
|
183
|
-
#
|
|
178
|
+
# Drop jumps
|
|
184
179
|
kinemotion dropjump-analyze videos/*.mp4 --batch --drop-height 0.40 --workers 4
|
|
185
180
|
|
|
186
|
-
#
|
|
187
|
-
kinemotion
|
|
181
|
+
# CMJ (no drop height needed)
|
|
182
|
+
kinemotion cmj-analyze videos/*.mp4 --batch --workers 4 \
|
|
188
183
|
--json-output-dir results/ \
|
|
189
|
-
--output-dir debug_videos/ \
|
|
190
184
|
--csv-summary summary.csv
|
|
191
|
-
|
|
192
|
-
# Multiple explicit paths (batch mode auto-enabled)
|
|
193
|
-
kinemotion dropjump-analyze video1.mp4 video2.mp4 video3.mp4 --drop-height 0.40
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Batch options:**
|
|
197
|
-
|
|
198
|
-
- `--batch`: Explicitly enable batch mode
|
|
199
|
-
- `--workers <int>`: Number of parallel workers (default: 4)
|
|
200
|
-
- `--output-dir <path>`: Directory for debug videos (auto-named per video)
|
|
201
|
-
- `--json-output-dir <path>`: Directory for JSON metrics (auto-named per video)
|
|
202
|
-
- `--csv-summary <path>`: Export aggregated results to CSV
|
|
203
|
-
|
|
204
|
-
**Output example:**
|
|
205
|
-
|
|
206
|
-
```text
|
|
207
|
-
Batch processing 10 videos with 4 workers
|
|
208
|
-
======================================================================
|
|
209
|
-
|
|
210
|
-
Processing videos...
|
|
211
|
-
[1/10] ✓ athlete1.mp4 (2.3s)
|
|
212
|
-
[2/10] ✓ athlete2.mp4 (2.1s)
|
|
213
|
-
[3/10] ✗ athlete3.mp4 (0.5s)
|
|
214
|
-
Error: No frames could be processed
|
|
215
|
-
|
|
216
|
-
======================================================================
|
|
217
|
-
BATCH PROCESSING SUMMARY
|
|
218
|
-
======================================================================
|
|
219
|
-
Total videos: 10
|
|
220
|
-
Successful: 9
|
|
221
|
-
Failed: 1
|
|
222
|
-
|
|
223
|
-
Average ground contact time: 245.3 ms
|
|
224
|
-
Average flight time: 523.7 ms
|
|
225
|
-
Average jump height: 0.352 m (35.2 cm)
|
|
226
185
|
```
|
|
227
186
|
|
|
228
187
|
## Python API
|
|
229
188
|
|
|
230
|
-
Use kinemotion as a library
|
|
189
|
+
Use kinemotion as a library for automated pipelines and custom analysis.
|
|
231
190
|
|
|
232
|
-
###
|
|
191
|
+
### Drop Jump API
|
|
233
192
|
|
|
234
193
|
```python
|
|
235
194
|
from kinemotion import process_video
|
|
@@ -251,43 +210,53 @@ print(f"Flight time: {metrics.flight_time * 1000:.1f} ms")
|
|
|
251
210
|
### Bulk Video Processing
|
|
252
211
|
|
|
253
212
|
```python
|
|
213
|
+
# Drop jump bulk processing
|
|
254
214
|
from kinemotion import VideoConfig, process_videos_bulk
|
|
255
215
|
|
|
256
|
-
# Configure multiple videos
|
|
257
216
|
configs = [
|
|
258
217
|
VideoConfig("video1.mp4", drop_height=0.40),
|
|
259
218
|
VideoConfig("video2.mp4", drop_height=0.30, quality="accurate"),
|
|
260
|
-
VideoConfig("video3.mp4", drop_height=0.50, output_video="debug3.mp4"),
|
|
261
219
|
]
|
|
262
220
|
|
|
263
|
-
# Process in parallel with 4 workers
|
|
264
221
|
results = process_videos_bulk(configs, max_workers=4)
|
|
265
222
|
|
|
266
|
-
#
|
|
267
|
-
|
|
223
|
+
# CMJ bulk processing
|
|
224
|
+
from kinemotion import CMJVideoConfig, process_cmj_videos_bulk
|
|
225
|
+
|
|
226
|
+
cmj_configs = [
|
|
227
|
+
CMJVideoConfig("cmj1.mp4"),
|
|
228
|
+
CMJVideoConfig("cmj2.mp4", quality="accurate"),
|
|
229
|
+
]
|
|
230
|
+
|
|
231
|
+
cmj_results = process_cmj_videos_bulk(cmj_configs, max_workers=4)
|
|
232
|
+
|
|
233
|
+
for result in cmj_results:
|
|
268
234
|
if result.success:
|
|
269
|
-
print(f"
|
|
270
|
-
else:
|
|
271
|
-
print(f"✗ {result.video_path}: {result.error}")
|
|
235
|
+
print(f"{result.video_path}: {result.metrics.jump_height*100:.1f}cm")
|
|
272
236
|
```
|
|
273
237
|
|
|
274
|
-
|
|
238
|
+
See `examples/bulk/README.md` for comprehensive API documentation.
|
|
239
|
+
|
|
240
|
+
### CMJ-Specific Features
|
|
275
241
|
|
|
276
242
|
```python
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
from kinemotion import VideoConfig, process_videos_bulk
|
|
243
|
+
# Triple extension angles available in metrics
|
|
244
|
+
metrics = process_cmj_video("video.mp4", output_video="debug.mp4")
|
|
280
245
|
|
|
281
|
-
#
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
]
|
|
246
|
+
# Debug video shows:
|
|
247
|
+
# - Skeleton overlay (foot→shin→femur→trunk)
|
|
248
|
+
# - Joint angles (ankle, knee, hip, trunk)
|
|
249
|
+
# - Phase-coded visualization
|
|
250
|
+
```
|
|
287
251
|
|
|
288
|
-
|
|
252
|
+
### CSV Export Example
|
|
253
|
+
|
|
254
|
+
```python
|
|
255
|
+
# See examples/bulk/ for complete CSV export examples
|
|
256
|
+
from kinemotion import process_cmj_video
|
|
257
|
+
import csv
|
|
289
258
|
|
|
290
|
-
#
|
|
259
|
+
# ... process videos ...
|
|
291
260
|
with open("results.csv", "w", newline="") as f:
|
|
292
261
|
writer = csv.writer(f)
|
|
293
262
|
writer.writerow(["Video", "GCT (ms)", "Flight (ms)", "Jump (m)"])
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
kinemotion/__init__.py,sha256=REBC9wrwYC_grvCS00qEOyign65Zc1sc-5buLpyqQxA,654
|
|
2
|
+
kinemotion/api.py,sha256=HYd8OnCZ9eJq7wn38dFVta5llTjqB9P0wKEwXPAXu6M,31666
|
|
3
|
+
kinemotion/cli.py,sha256=cqYV_7URH0JUDy1VQ_EDLv63FmNO4Ns20m6s1XAjiP4,464
|
|
4
|
+
kinemotion/cmj/__init__.py,sha256=Ynv0-Oco4I3Y1Ubj25m3h9h2XFqeNwpAewXmAYOmwfU,127
|
|
5
|
+
kinemotion/cmj/analysis.py,sha256=uzUouxeCE3H5dad_AQ8PhtpgVC8DfPE32AMDqihD82o,19887
|
|
6
|
+
kinemotion/cmj/cli.py,sha256=kyPJpxvLZGfzdqv4FGzQVNmR2uUSOg3a6_I0d1VszVw,20874
|
|
7
|
+
kinemotion/cmj/debug_overlay.py,sha256=TVDrZ16TJClftM_zhkrCzBLMs87SfYDa8H-eqfzQJ4c,17976
|
|
8
|
+
kinemotion/cmj/joint_angles.py,sha256=8ucpDGPvbt4iX3tx9eVxJEUv0laTm2Y58_--VzJCogE,9113
|
|
9
|
+
kinemotion/cmj/kinematics.py,sha256=Xl_PlC2OqMoA-zOc3SRB_GqI0AgLlJol5FTPe5J_qLc,7573
|
|
10
|
+
kinemotion/core/__init__.py,sha256=3yzDhb5PekDNjydqrs8aWGneUGJBt-lB0SoB_Y2FXqU,1010
|
|
11
|
+
kinemotion/core/auto_tuning.py,sha256=cvmxUI-CbahpOJQtR2r5jOx4Q6yKPe3DO1o15hOQIdw,10508
|
|
12
|
+
kinemotion/core/filtering.py,sha256=f-m-aA59e4WqE6u-9MA51wssu7rI-Y_7n1cG8IWdeRQ,11241
|
|
13
|
+
kinemotion/core/pose.py,sha256=Wfd1RR-2ZznYpWeQUbySwcV3mvReqn8n3XO6S7pGq4M,8390
|
|
14
|
+
kinemotion/core/smoothing.py,sha256=FON4qKtsSp1-03GnJrDkEUAePaACn4QPMJF0eTIYqR0,12925
|
|
15
|
+
kinemotion/core/video_io.py,sha256=z8Z0qbNaKbcdB40KnbNOBMzab3BbgnhBxp-mUBYeXgM,6577
|
|
16
|
+
kinemotion/dropjump/__init__.py,sha256=yc1XiZ9vfo5h_n7PKVSiX2TTgaIfGL7Y7SkQtiDZj_E,838
|
|
17
|
+
kinemotion/dropjump/analysis.py,sha256=HfJt2t9IsMBiBUz7apIzdxbRH9QqzlFnDVVWcKhU3ow,23291
|
|
18
|
+
kinemotion/dropjump/cli.py,sha256=zo23qoYSpC_2BcScy-JOilcGcWGM0j3Xv0lpO0_n0wk,27975
|
|
19
|
+
kinemotion/dropjump/debug_overlay.py,sha256=GMo-jCl5OPIv82uPxDbBVI7CsAMwATTvxZMeWfs8k8M,8701
|
|
20
|
+
kinemotion/dropjump/kinematics.py,sha256=RM_O8Kdc6aEiPIu_99N4cu-4EhYSQxtBGASJF_dmQaU,19081
|
|
21
|
+
kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
kinemotion-0.11.0.dist-info/METADATA,sha256=JaV-num_wEFgMB_tl3sxOJmUGl0FddtS5bkfQmGH3Gc,18990
|
|
23
|
+
kinemotion-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
24
|
+
kinemotion-0.11.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
|
|
25
|
+
kinemotion-0.11.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
|
|
26
|
+
kinemotion-0.11.0.dist-info/RECORD,,
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
kinemotion/__init__.py,sha256=Z85xg29NA-r4IjrSbAkJpMFigyxACFGUb-37AiMp6YY,350
|
|
2
|
-
kinemotion/api.py,sha256=2MsiHsmmxfpvhHIbDXcZpvsCLROKi4MV8LQpKu2r_a8,20078
|
|
3
|
-
kinemotion/cli.py,sha256=2IFA2_TE9a5zBtmGVzv5SnX39w7yPuBlw42dL7ca25U,402
|
|
4
|
-
kinemotion/core/__init__.py,sha256=3yzDhb5PekDNjydqrs8aWGneUGJBt-lB0SoB_Y2FXqU,1010
|
|
5
|
-
kinemotion/core/auto_tuning.py,sha256=cvmxUI-CbahpOJQtR2r5jOx4Q6yKPe3DO1o15hOQIdw,10508
|
|
6
|
-
kinemotion/core/filtering.py,sha256=f-m-aA59e4WqE6u-9MA51wssu7rI-Y_7n1cG8IWdeRQ,11241
|
|
7
|
-
kinemotion/core/pose.py,sha256=Wfd1RR-2ZznYpWeQUbySwcV3mvReqn8n3XO6S7pGq4M,8390
|
|
8
|
-
kinemotion/core/smoothing.py,sha256=FON4qKtsSp1-03GnJrDkEUAePaACn4QPMJF0eTIYqR0,12925
|
|
9
|
-
kinemotion/core/video_io.py,sha256=z8Z0qbNaKbcdB40KnbNOBMzab3BbgnhBxp-mUBYeXgM,6577
|
|
10
|
-
kinemotion/dropjump/__init__.py,sha256=yc1XiZ9vfo5h_n7PKVSiX2TTgaIfGL7Y7SkQtiDZj_E,838
|
|
11
|
-
kinemotion/dropjump/analysis.py,sha256=HfJt2t9IsMBiBUz7apIzdxbRH9QqzlFnDVVWcKhU3ow,23291
|
|
12
|
-
kinemotion/dropjump/cli.py,sha256=zo23qoYSpC_2BcScy-JOilcGcWGM0j3Xv0lpO0_n0wk,27975
|
|
13
|
-
kinemotion/dropjump/debug_overlay.py,sha256=GMo-jCl5OPIv82uPxDbBVI7CsAMwATTvxZMeWfs8k8M,8701
|
|
14
|
-
kinemotion/dropjump/kinematics.py,sha256=RM_O8Kdc6aEiPIu_99N4cu-4EhYSQxtBGASJF_dmQaU,19081
|
|
15
|
-
kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
kinemotion-0.10.11.dist-info/METADATA,sha256=9HZYBmm4SP6ty8z4CXqWj4J9uEPRcVS9kdnVmZwXRc4,20363
|
|
17
|
-
kinemotion-0.10.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
18
|
-
kinemotion-0.10.11.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
|
|
19
|
-
kinemotion-0.10.11.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
|
|
20
|
-
kinemotion-0.10.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|