kinemotion 0.10.7__tar.gz → 0.10.9__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.

Files changed (55) hide show
  1. {kinemotion-0.10.7 → kinemotion-0.10.9}/CHANGELOG.md +19 -0
  2. {kinemotion-0.10.7 → kinemotion-0.10.9}/PKG-INFO +1 -1
  3. {kinemotion-0.10.7 → kinemotion-0.10.9}/pyproject.toml +2 -2
  4. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/dropjump/cli.py +19 -83
  5. {kinemotion-0.10.7 → kinemotion-0.10.9}/uv.lock +1 -1
  6. {kinemotion-0.10.7 → kinemotion-0.10.9}/.dockerignore +0 -0
  7. {kinemotion-0.10.7 → kinemotion-0.10.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  8. {kinemotion-0.10.7 → kinemotion-0.10.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  9. {kinemotion-0.10.7 → kinemotion-0.10.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  10. {kinemotion-0.10.7 → kinemotion-0.10.9}/.github/pull_request_template.md +0 -0
  11. {kinemotion-0.10.7 → kinemotion-0.10.9}/.github/workflows/release.yml +0 -0
  12. {kinemotion-0.10.7 → kinemotion-0.10.9}/.gitignore +0 -0
  13. {kinemotion-0.10.7 → kinemotion-0.10.9}/.pre-commit-config.yaml +0 -0
  14. {kinemotion-0.10.7 → kinemotion-0.10.9}/.tool-versions +0 -0
  15. {kinemotion-0.10.7 → kinemotion-0.10.9}/CLAUDE.md +0 -0
  16. {kinemotion-0.10.7 → kinemotion-0.10.9}/CODE_OF_CONDUCT.md +0 -0
  17. {kinemotion-0.10.7 → kinemotion-0.10.9}/CONTRIBUTING.md +0 -0
  18. {kinemotion-0.10.7 → kinemotion-0.10.9}/Dockerfile +0 -0
  19. {kinemotion-0.10.7 → kinemotion-0.10.9}/GEMINI.md +0 -0
  20. {kinemotion-0.10.7 → kinemotion-0.10.9}/LICENSE +0 -0
  21. {kinemotion-0.10.7 → kinemotion-0.10.9}/README.md +0 -0
  22. {kinemotion-0.10.7 → kinemotion-0.10.9}/SECURITY.md +0 -0
  23. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/BULK_PROCESSING.md +0 -0
  24. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/ERRORS_FINDINGS.md +0 -0
  25. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/FRAMERATE.md +0 -0
  26. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/IMU_METADATA_PRESERVATION.md +0 -0
  27. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/PARAMETERS.md +0 -0
  28. {kinemotion-0.10.7 → kinemotion-0.10.9}/docs/VALIDATION_PLAN.md +0 -0
  29. {kinemotion-0.10.7 → kinemotion-0.10.9}/examples/bulk/README.md +0 -0
  30. {kinemotion-0.10.7 → kinemotion-0.10.9}/examples/bulk/bulk_processing.py +0 -0
  31. {kinemotion-0.10.7 → kinemotion-0.10.9}/examples/bulk/simple_example.py +0 -0
  32. {kinemotion-0.10.7 → kinemotion-0.10.9}/examples/programmatic_usage.py +0 -0
  33. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/__init__.py +0 -0
  34. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/api.py +0 -0
  35. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/cli.py +0 -0
  36. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/__init__.py +0 -0
  37. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/auto_tuning.py +0 -0
  38. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/filtering.py +0 -0
  39. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/pose.py +0 -0
  40. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/smoothing.py +0 -0
  41. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/core/video_io.py +0 -0
  42. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/dropjump/__init__.py +0 -0
  43. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/dropjump/analysis.py +0 -0
  44. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  45. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/dropjump/kinematics.py +0 -0
  46. {kinemotion-0.10.7 → kinemotion-0.10.9}/src/kinemotion/py.typed +0 -0
  47. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/__init__.py +0 -0
  48. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_adaptive_threshold.py +0 -0
  49. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_api.py +0 -0
  50. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_aspect_ratio.py +0 -0
  51. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_com_estimation.py +0 -0
  52. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_contact_detection.py +0 -0
  53. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_filtering.py +0 -0
  54. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_kinematics.py +0 -0
  55. {kinemotion-0.10.7 → kinemotion-0.10.9}/tests/test_polyorder.py +0 -0
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  <!-- version list -->
9
9
 
10
+ ## v0.10.9 (2025-11-03)
11
+
12
+ ### Bug Fixes
13
+
14
+ - **ci**: Update uv.lock during semantic release
15
+ ([`9b7bc0b`](https://github.com/feniix/kinemotion/commit/9b7bc0b5115cd9493eed2b99778ed78fb26fdd34))
16
+
17
+ - **ci**: Update uv.lock during semantic release
18
+ ([`30fb092`](https://github.com/feniix/kinemotion/commit/30fb092575295c2c672bf378a8d2794cc1fe35da))
19
+
20
+
21
+ ## v0.10.8 (2025-11-03)
22
+
23
+ ### Bug Fixes
24
+
25
+ - **cli**: Suppress S107 for Click CLI framework requirement
26
+ ([`17c8335`](https://github.com/feniix/kinemotion/commit/17c83357334ca7d400fe41d802c9e5e61a995fff))
27
+
28
+
10
29
  ## v0.10.7 (2025-11-03)
11
30
 
12
31
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.10.7
3
+ Version: 0.10.9
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kinemotion"
3
- version = "0.10.7"
3
+ version = "0.10.9"
4
4
  description = "Video-based kinematic analysis for athletic performance"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10,<3.13"
@@ -120,7 +120,7 @@ reportDuplicateImport = "warning"
120
120
  version_toml = ["pyproject.toml:project.version"]
121
121
  branch = "main"
122
122
  changelog_file = "CHANGELOG.md"
123
- build_command = "uv build"
123
+ build_command = "uv lock && uv build"
124
124
  dist_path = "dist/"
125
125
  upload_to_vcs_release = true
126
126
  remove_dist = false
@@ -46,25 +46,6 @@ class AnalysisParameters:
46
46
  tracking_confidence: float | None = None
47
47
 
48
48
 
49
- @dataclass
50
- class BatchOptions:
51
- """Batch processing configuration."""
52
-
53
- batch: bool
54
- workers: int
55
- output_dir: str | None
56
- json_output_dir: str | None
57
- csv_summary: str | None
58
-
59
-
60
- @dataclass
61
- class OutputOptions:
62
- """Output configuration for single video processing."""
63
-
64
- output: str | None
65
- json_output: str | None
66
-
67
-
68
49
  @click.command(name="dropjump-analyze")
69
50
  @click.argument("video_path", nargs=-1, type=click.Path(exists=False), required=True)
70
51
  @click.option(
@@ -177,7 +158,7 @@ class OutputOptions:
177
158
  default=None,
178
159
  help="[EXPERT] Override pose tracking confidence",
179
160
  )
180
- def dropjump_analyze(
161
+ def dropjump_analyze( # NOSONAR(S107) - Click CLI requires individual parameters for each option
181
162
  video_path: tuple[str, ...],
182
163
  output: str | None,
183
164
  json_output: str | None,
@@ -221,62 +202,6 @@ def dropjump_analyze(
221
202
  kinemotion dropjump-analyze videos/*.mp4 --batch --drop-height 0.40 \\
222
203
  --json-output-dir results/ --csv-summary summary.csv
223
204
  """
224
- # Group parameters into dataclasses
225
- batch_opts = BatchOptions(
226
- batch=batch,
227
- workers=workers,
228
- output_dir=output_dir,
229
- json_output_dir=json_output_dir,
230
- csv_summary=csv_summary,
231
- )
232
-
233
- output_opts = OutputOptions(
234
- output=output,
235
- json_output=json_output,
236
- )
237
-
238
- expert_params = AnalysisParameters(
239
- drop_start_frame=drop_start_frame,
240
- smoothing_window=smoothing_window,
241
- velocity_threshold=velocity_threshold,
242
- min_contact_frames=min_contact_frames,
243
- visibility_threshold=visibility_threshold,
244
- detection_confidence=detection_confidence,
245
- tracking_confidence=tracking_confidence,
246
- )
247
-
248
- # Execute analysis with grouped parameters
249
- _execute_analysis(
250
- video_path,
251
- drop_height,
252
- quality,
253
- verbose,
254
- batch_opts,
255
- output_opts,
256
- expert_params,
257
- )
258
-
259
-
260
- def _execute_analysis(
261
- video_path: tuple[str, ...],
262
- drop_height: float,
263
- quality: str,
264
- verbose: bool,
265
- batch_opts: BatchOptions,
266
- output_opts: OutputOptions,
267
- expert_params: AnalysisParameters,
268
- ) -> None:
269
- """Execute drop jump analysis with grouped parameters.
270
-
271
- Args:
272
- video_path: Tuple of video path patterns
273
- drop_height: Drop height in meters
274
- quality: Quality preset string
275
- verbose: Verbose output flag
276
- batch_opts: Batch processing options
277
- output_opts: Output file options
278
- expert_params: Expert parameter overrides
279
- """
280
205
  # Expand glob patterns and collect all video files
281
206
  video_files: list[str] = []
282
207
  for pattern in video_path:
@@ -294,25 +219,36 @@ def _execute_analysis(
294
219
  sys.exit(1)
295
220
 
296
221
  # Determine if batch mode should be used
297
- use_batch = batch_opts.batch or len(video_files) > 1
222
+ use_batch = batch or len(video_files) > 1
223
+
224
+ # Group expert parameters
225
+ expert_params = AnalysisParameters(
226
+ drop_start_frame=drop_start_frame,
227
+ smoothing_window=smoothing_window,
228
+ velocity_threshold=velocity_threshold,
229
+ min_contact_frames=min_contact_frames,
230
+ visibility_threshold=visibility_threshold,
231
+ detection_confidence=detection_confidence,
232
+ tracking_confidence=tracking_confidence,
233
+ )
298
234
 
299
235
  if use_batch:
300
236
  _process_batch(
301
237
  video_files,
302
238
  drop_height,
303
239
  quality,
304
- batch_opts.workers,
305
- batch_opts.output_dir,
306
- batch_opts.json_output_dir,
307
- batch_opts.csv_summary,
240
+ workers,
241
+ output_dir,
242
+ json_output_dir,
243
+ csv_summary,
308
244
  expert_params,
309
245
  )
310
246
  else:
311
247
  # Single video mode (original behavior)
312
248
  _process_single(
313
249
  video_files[0],
314
- output_opts.output,
315
- output_opts.json_output,
250
+ output,
251
+ json_output,
316
252
  drop_height,
317
253
  quality,
318
254
  verbose,
@@ -603,7 +603,7 @@ wheels = [
603
603
 
604
604
  [[package]]
605
605
  name = "kinemotion"
606
- version = "0.10.6"
606
+ version = "0.10.9"
607
607
  source = { editable = "." }
608
608
  dependencies = [
609
609
  { name = "click" },
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