kinemotion 0.47.0__tar.gz → 0.47.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 (515) hide show
  1. {kinemotion-0.47.0 → kinemotion-0.47.1}/CHANGELOG.md +8 -0
  2. {kinemotion-0.47.0 → kinemotion-0.47.1}/PKG-INFO +1 -1
  3. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/pyproject.toml +1 -0
  4. kinemotion-0.47.1/backend/src/kinemotion_backend/telemetry.py +100 -0
  5. {kinemotion-0.47.0 → kinemotion-0.47.1}/pyproject.toml +1 -1
  6. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/timing.py +1 -1
  7. {kinemotion-0.47.0 → kinemotion-0.47.1}/uv.lock +153 -1
  8. kinemotion-0.47.0/backend/src/kinemotion_backend/telemetry.py +0 -66
  9. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/README.md +0 -0
  10. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/api/api-reference-quick-commands.md +0 -0
  11. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/api/cloud-run-cpu-specifications-investigation.md +0 -0
  12. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/api/supabase-authentication-setup-guide.md +0 -0
  13. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/auth-provider-comparison-december-2025.md +0 -0
  14. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/auth-providers-comparison-december-2025.md +0 -0
  15. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-authentication-quick-start.md +0 -0
  16. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-authentication-setup-guide.md +0 -0
  17. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-authentication-technical-guide.md +0 -0
  18. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-google-oauth-setup-guide.md +0 -0
  19. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-production-setup-guide.md +0 -0
  20. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/authentication/supabase-quick-start-guide.md +0 -0
  21. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/camera-angle-empirical-validation-results-45-superior-for-media-pipe.md +0 -0
  22. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +0 -0
  23. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
  24. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +0 -0
  25. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +0 -0
  26. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
  27. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +0 -0
  28. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
  29. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/codebase/validation-architecture-visual-hierarchy-after-refactoring.md +0 -0
  30. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/codebase/validation-code-duplication-evidence.md +0 -0
  31. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/codebase/validation-module-architecture-analysis.md +0 -0
  32. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/codebase/validation-refactoring-complete-architecture-improvement.md +0 -0
  33. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/automated-deployment-setup-git-hub-actions-with-workload-identity-federation.md +0 -0
  34. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/backend-repository-split-migration-guide.md +0 -0
  35. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/backend-repository-split-step-by-step-execution-guide.md +0 -0
  36. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/cloud-run-security-least-privilege-service-account-setup.md +0 -0
  37. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/cors-and-memory-issues-production-debugging-guide.md +0 -0
  38. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/current-kinemotion-architecture-correct-deployment-setup.md +0 -0
  39. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/frontend-repository-split-migration-guide.md +0 -0
  40. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/frontend-repository-split-step-by-step-execution-guide.md +0 -0
  41. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/production-deployment-guide-vercel-google-cloud-run.md +0 -0
  42. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/quick-deployment-commands-vercel-and-cloud-run.md +0 -0
  43. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/deployment/vercel-monorepo-deployment-best-practice.md +0 -0
  44. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/athlete-pose3d-and-cross-platform-determinism-investigation-complete.md +0 -0
  45. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/athlete-pose3d-final-strategy-accuracy-and-robustness.md +0 -0
  46. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/athlete-pose3d-media-pipe-enhancement-plan.md +0 -0
  47. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/athlete-pose3d-phase-1-implementation-complete.md +0 -0
  48. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/backend-authentication-and-logging-status.md +0 -0
  49. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/backend-code-coverage-analysis.md +0 -0
  50. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/backend-code-duplication-analysis.md +0 -0
  51. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/backend-kinemotion-decoupling-strategy.md +0 -0
  52. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/backend-sonar-cloud-integration-status.md +0 -0
  53. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/basic-memory-naming-hook-analysis.md +0 -0
  54. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
  55. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
  56. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/claude-code-hook-configuration.md +0 -0
  57. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +0 -0
  58. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/comprehensive-timing-instrumentation.md +0 -0
  59. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/cross-platform-determinism-analysis-final-results.md +0 -0
  60. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/development-standards-quality-gates.md +0 -0
  61. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/drop-jump-detection-complete-fix-all-metrics-within-target.md +0 -0
  62. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/drop-jump-detection-failure-analysis-per-video-breakdown.md +0 -0
  63. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/drop-jump-fix-drop-start-successful-landing-and-takeoff-remain.md +0 -0
  64. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/frontend-dependencies-analysis-nov-2025.md +0 -0
  65. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/google-oauth-setup-script-final-review-production-ready.md +0 -0
  66. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/google-oauth-setup-script-review-issues-and-recommendations.md +0 -0
  67. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/hook-complete-audit-summary.md +0 -0
  68. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/hook-configuration-audit.md +0 -0
  69. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/hook-quick-reference.md +0 -0
  70. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/keyboard-interrupt-test-suite-failure-analysis.md +0 -0
  71. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/non-deterministic-analysis-root-cause-and-solution.md +0 -0
  72. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/optimal-timing-implementation-summary.md +0 -0
  73. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/p0-p1-p2-test-suite-fixes-final-report.md +0 -0
  74. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/pose-detection-baseline-evaluation-results.md +0 -0
  75. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/pose-detection-optimization-complete-success-summary.md +0 -0
  76. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/pose-detection-parameter-optimization-framework.md +0 -0
  77. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/structured-logging-implementation-complete.md +0 -0
  78. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/structured-logging-implementation.md +0 -0
  79. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/supabase-dashboard-navigation-december-2025.md +0 -0
  80. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-coverage-asymmetry-analysis-cmj-vs-drop-jump.md +0 -0
  81. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-coverage-equivalence-achievement-summary.md +0 -0
  82. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-suite-comprehensive-review-december-2025.md +0 -0
  83. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-suite-comprehensive-review-structure-and-gaps.md +0 -0
  84. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-suite-p0-p1-p2-fixes-complete-report.md +0 -0
  85. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/test-suite-p0-p1-p2-fixes-progress-report.md +0 -0
  86. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/unused-and-experimental-features-strategy.md +0 -0
  87. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/unused-code-detection-prompt-template.md +0 -0
  88. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/unused-code-identification-and-decorator-application-december-2025.md +0 -0
  89. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/unused-code-verification-final-pass-december-2025.md +0 -0
  90. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/using-multiple-mcp-reasoning-servers-simultaneously.md +0 -0
  91. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/velocity-threshold-empirical-validation-study.md +0 -0
  92. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/development/vercel-authentication-options-for-user-id-tracking.md +0 -0
  93. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/documentation-audit-december-2025.md +0 -0
  94. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +0 -0
  95. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +0 -0
  96. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/issue-12-use-real-metrics-now.md +0 -0
  97. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
  98. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/kinemotion-supabase-production-configuration.md +0 -0
  99. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/mcp-sequential-thinking-alternatives-analysis.md +0 -0
  100. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/performance-optimization-pose-tracker-pool-timing-instrumentation-complete.md +0 -0
  101. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/project-state-summary-december-2025.md +0 -0
  102. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/specialized-subagents-routing-guide.md +0 -0
  103. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/supabase-setup-instructions-for-kinemotion.md +0 -0
  104. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/project-management/version-mismatch-analysis-kinemotion-0370-vs-0300.md +0 -0
  105. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +0 -0
  106. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
  107. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
  108. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
  109. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/pose2sim-migration-evaluation-and-strategy.md +0 -0
  110. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
  111. {kinemotion-0.47.0 → kinemotion-0.47.1}/.basic-memory/strategy/third-party-auth-providers-with-free-tiers-december-2025.md +0 -0
  112. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/biomechanics-specialist.md +0 -0
  113. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/computer-vision-engineer.md +0 -0
  114. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/devops-cicd-engineer.md +0 -0
  115. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/frontend-developer.md +0 -0
  116. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/ml-data-scientist.md +0 -0
  117. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/project-manager.md +0 -0
  118. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/python-backend-developer.md +0 -0
  119. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/qa-test-engineer.md +0 -0
  120. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/agents/technical-writer.md +0 -0
  121. {kinemotion-0.47.0 → kinemotion-0.47.1}/.claude/settings.local.json +0 -0
  122. {kinemotion-0.47.0 → kinemotion-0.47.1}/.cursor/mcp.json +0 -0
  123. {kinemotion-0.47.0 → kinemotion-0.47.1}/.dockerignore +0 -0
  124. {kinemotion-0.47.0 → kinemotion-0.47.1}/.envrc +0 -0
  125. {kinemotion-0.47.0 → kinemotion-0.47.1}/.gitattributes +0 -0
  126. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  127. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  128. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  129. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/dependabot.yml +0 -0
  130. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/pull_request_template.md +0 -0
  131. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/workflows/deploy-backend.yml +0 -0
  132. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/workflows/docs.yml +0 -0
  133. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/workflows/release.yml +0 -0
  134. {kinemotion-0.47.0 → kinemotion-0.47.1}/.github/workflows/test.yml +0 -0
  135. {kinemotion-0.47.0 → kinemotion-0.47.1}/.gitignore +0 -0
  136. {kinemotion-0.47.0 → kinemotion-0.47.1}/.mcp.json +0 -0
  137. {kinemotion-0.47.0 → kinemotion-0.47.1}/.pre-commit-config.yaml +0 -0
  138. {kinemotion-0.47.0 → kinemotion-0.47.1}/.readthedocs.yml +0 -0
  139. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/.gitignore +0 -0
  140. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/backend-cors-fastapi-middleware-order.md +0 -0
  141. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/camera-perspective-validation-study.md +0 -0
  142. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/code_style_and_conventions.md +0 -0
  143. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/current-project-architecture.md +0 -0
  144. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/deployment-checklist-and-known-issues.md +0 -0
  145. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/deployment-setup-complete.md +0 -0
  146. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/github-project-setup-summary.md +0 -0
  147. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/mvp-first-strategy.md +0 -0
  148. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/mvp-roadmap-and-priorities.md +0 -0
  149. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/project_overview.md +0 -0
  150. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/specialist-agents-routing.md +0 -0
  151. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/memories/suggested_commands.md +0 -0
  152. {kinemotion-0.47.0 → kinemotion-0.47.1}/.serena/project.yml +0 -0
  153. {kinemotion-0.47.0 → kinemotion-0.47.1}/.tool-versions +0 -0
  154. {kinemotion-0.47.0 → kinemotion-0.47.1}/.vercelignore +0 -0
  155. {kinemotion-0.47.0 → kinemotion-0.47.1}/CLAUDE.md +0 -0
  156. {kinemotion-0.47.0 → kinemotion-0.47.1}/CODE_OF_CONDUCT.md +0 -0
  157. {kinemotion-0.47.0 → kinemotion-0.47.1}/CONTRIBUTING.md +0 -0
  158. {kinemotion-0.47.0 → kinemotion-0.47.1}/Dockerfile +0 -0
  159. {kinemotion-0.47.0 → kinemotion-0.47.1}/GEMINI.md +0 -0
  160. {kinemotion-0.47.0 → kinemotion-0.47.1}/LICENSE +0 -0
  161. {kinemotion-0.47.0 → kinemotion-0.47.1}/README.md +0 -0
  162. {kinemotion-0.47.0 → kinemotion-0.47.1}/SECURITY.md +0 -0
  163. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/.dockerignore +0 -0
  164. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/.env.example +0 -0
  165. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/Dockerfile +0 -0
  166. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/README.md +0 -0
  167. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/docs/fly-deployment.md +0 -0
  168. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/docs/implementation-summary.md +0 -0
  169. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/docs/setup.md +0 -0
  170. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/docs/tests.md +0 -0
  171. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/src/kinemotion_backend/__init__.py +0 -0
  172. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/src/kinemotion_backend/app.py +0 -0
  173. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/src/kinemotion_backend/auth.py +0 -0
  174. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/src/kinemotion_backend/logging_config.py +0 -0
  175. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/src/kinemotion_backend/middleware.py +0 -0
  176. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/README.md +0 -0
  177. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/__init__.py +0 -0
  178. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/conftest.py +0 -0
  179. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/test_api_endpoints.py +0 -0
  180. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/test_error_handling.py +0 -0
  181. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/test_health.py +0 -0
  182. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/test_r2_integration.py +0 -0
  183. {kinemotion-0.47.0 → kinemotion-0.47.1}/backend/tests/test_validation.py +0 -0
  184. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/README.md +0 -0
  185. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/api/cmj.md +0 -0
  186. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/api/core.md +0 -0
  187. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/api/dropjump.md +0 -0
  188. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/api/overview.md +0 -0
  189. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/agents-guide.md +0 -0
  190. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/errors-findings.md +0 -0
  191. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/test-suite-review-december-2025.md +0 -0
  192. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/testing-standards.md +0 -0
  193. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/testing.md +0 -0
  194. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/type-hints.md +0 -0
  195. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/validation-plan.md +0 -0
  196. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/validation-roadmap.md +0 -0
  197. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/development/wallball-norep-detection.md +0 -0
  198. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/bulk-processing.md +0 -0
  199. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/camera-setup.md +0 -0
  200. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/cloud-run-deployment.md +0 -0
  201. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/cmj-guide.md +0 -0
  202. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/cmj-recording-protocol-es.md +0 -0
  203. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/cmj-recording-protocol.md +0 -0
  204. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/deployment-checklist.md +0 -0
  205. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/local-testing.md +0 -0
  206. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/guides/setup-issue-12.md +0 -0
  207. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/index.md +0 -0
  208. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/quick-start.md +0 -0
  209. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/reference/cloud-run-quick-reference.md +0 -0
  210. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/reference/json-output-format.md +0 -0
  211. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/reference/json-structure-comparison.md +0 -0
  212. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/reference/parameters.md +0 -0
  213. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/reference/pose-systems.md +0 -0
  214. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
  215. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/README.md +0 -0
  216. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/dois.txt +0 -0
  217. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/download.py +0 -0
  218. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/pyproject.toml +0 -0
  219. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/paper-downloader/uv.lock +0 -0
  220. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
  221. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
  222. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/README.md +0 -0
  223. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/convert_pdfs.py +0 -0
  224. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
  225. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
  226. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
  227. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
  228. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
  229. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
  230. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
  231. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
  232. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
  233. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
  234. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
  235. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
  236. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
  237. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
  238. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
  239. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
  240. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
  241. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
  242. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
  243. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
  244. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
  245. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
  246. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
  247. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
  248. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
  249. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
  250. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
  251. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
  252. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
  253. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
  254. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
  255. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
  256. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
  257. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
  258. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
  259. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
  260. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
  261. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
  262. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
  263. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
  264. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
  265. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/online-references-for-papers.md +0 -0
  266. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
  267. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
  268. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
  269. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
  270. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
  271. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
  272. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
  273. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
  274. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
  275. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
  276. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
  277. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
  278. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
  279. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
  280. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
  281. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
  282. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
  283. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
  284. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
  285. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
  286. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
  287. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
  288. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
  289. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
  290. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
  291. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
  292. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
  293. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
  294. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
  295. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
  296. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
  297. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
  298. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
  299. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
  300. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
  301. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
  302. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
  303. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
  304. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
  305. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
  306. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
  307. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
  308. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
  309. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
  310. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
  311. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/README.md +0 -0
  312. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/STYLE_GUIDE.md +0 -0
  313. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
  314. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
  315. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
  316. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
  317. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
  318. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
  319. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
  320. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
  321. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
  322. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
  323. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
  324. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
  325. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
  326. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
  327. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
  328. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
  329. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
  330. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
  331. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
  332. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
  333. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
  334. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
  335. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
  336. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
  337. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
  338. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
  339. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
  340. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
  341. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
  342. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
  343. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
  344. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
  345. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
  346. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
  347. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
  348. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/strategy/pose2sim-migration-evaluation.md +0 -0
  349. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/technical/framerate.md +0 -0
  350. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/technical/implementation-details.md +0 -0
  351. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/technical/imu-metadata.md +0 -0
  352. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/technical/real-time-analysis.md +0 -0
  353. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/technical/triple-extension.md +0 -0
  354. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/translations/es/camera-setup.md +0 -0
  355. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/validation/determinism-test.md +0 -0
  356. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/validation/known-height-validation.md +0 -0
  357. {kinemotion-0.47.0 → kinemotion-0.47.1}/docs/validation-status.md +0 -0
  358. {kinemotion-0.47.0 → kinemotion-0.47.1}/examples/bulk/README.md +0 -0
  359. {kinemotion-0.47.0 → kinemotion-0.47.1}/examples/bulk/bulk_processing.py +0 -0
  360. {kinemotion-0.47.0 → kinemotion-0.47.1}/examples/bulk/simple_example.py +0 -0
  361. {kinemotion-0.47.0 → kinemotion-0.47.1}/examples/programmatic_usage.py +0 -0
  362. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.editorconfig +0 -0
  363. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.env.example +0 -0
  364. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.gitattributes +0 -0
  365. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.gitignore +0 -0
  366. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.yarn/releases/yarn-4.12.0.cjs +0 -0
  367. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/.yarnrc.yml +0 -0
  368. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/README.md +0 -0
  369. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/index.html +0 -0
  370. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/package.json +0 -0
  371. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/App.test.tsx +0 -0
  372. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/App.tsx +0 -0
  373. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/Auth.tsx +0 -0
  374. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/ErrorBoundary.tsx +0 -0
  375. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/ErrorDisplay.tsx +0 -0
  376. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/LoadingSpinner.tsx +0 -0
  377. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/RecentUploads.tsx +0 -0
  378. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/ResultsDisplay.test.tsx +0 -0
  379. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/ResultsDisplay.tsx +0 -0
  380. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/ResultsSkeleton.tsx +0 -0
  381. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/UploadForm.test.tsx +0 -0
  382. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/components/UploadForm.tsx +0 -0
  383. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/hooks/useAnalysis.test.ts +0 -0
  384. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/hooks/useAnalysis.ts +0 -0
  385. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/hooks/useAuth.ts +0 -0
  386. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/hooks/useBackendVersion.ts +0 -0
  387. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/hooks/useRecentUploads.ts +0 -0
  388. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/index.css +0 -0
  389. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/lib/supabase.ts +0 -0
  390. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/main.tsx +0 -0
  391. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/test/setup.ts +0 -0
  392. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/types/api.ts +0 -0
  393. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/src/vite-env.d.ts +0 -0
  394. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/vercel.json +0 -0
  395. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/vite.config.ts +0 -0
  396. {kinemotion-0.47.0 → kinemotion-0.47.1}/frontend/yarn.lock +0 -0
  397. {kinemotion-0.47.0 → kinemotion-0.47.1}/justfile +0 -0
  398. {kinemotion-0.47.0 → kinemotion-0.47.1}/local_dev.sh +0 -0
  399. {kinemotion-0.47.0 → kinemotion-0.47.1}/mkdocs.yml +0 -0
  400. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/.gitignore +0 -0
  401. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/README.md +0 -0
  402. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/demos/.gitignore +0 -0
  403. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/demos/README.md +0 -0
  404. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/demos/api_demo.ipynb +0 -0
  405. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/demos/batch_processing_demo.py +0 -0
  406. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/demos/sample_data/.gitkeep +0 -0
  407. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/presentation_guide.md +0 -0
  408. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/revealjs/.gitignore +0 -0
  409. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/revealjs/Makefile +0 -0
  410. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/revealjs/README.md +0 -0
  411. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/revealjs/slides.md +0 -0
  412. {kinemotion-0.47.0 → kinemotion-0.47.1}/presentation/speaker_script.md +0 -0
  413. {kinemotion-0.47.0 → kinemotion-0.47.1}/requirements-docs.txt +0 -0
  414. {kinemotion-0.47.0 → kinemotion-0.47.1}/samples/cmjs/README.md +0 -0
  415. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/README.md +0 -0
  416. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/SCRIPTS_QUICKREF.md +0 -0
  417. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/analyze_determinism_variance.py +0 -0
  418. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/basic-memory-utils.sh +0 -0
  419. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/debug_contact_states.py +0 -0
  420. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/debug_detection.py +0 -0
  421. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/find_unused_features.py +0 -0
  422. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/generate_test_data.py +0 -0
  423. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/optimize_detection_params.py +0 -0
  424. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/plot_cmj_velocities.py +0 -0
  425. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/plot_validation_results.py +0 -0
  426. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/plot_velocities.py +0 -0
  427. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/prepare_ground_truth.py +0 -0
  428. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/README.md +0 -0
  429. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/add-issue.sh +0 -0
  430. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/batch-set-fields.sh +0 -0
  431. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/helpers.sh +0 -0
  432. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/list.sh +0 -0
  433. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/set-field.sh +0 -0
  434. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/set-status.sh +0 -0
  435. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project/summary.sh +0 -0
  436. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/project.sh +0 -0
  437. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/setup-github-deploy.sh +0 -0
  438. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/setup-google-oauth.sh +0 -0
  439. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/setup-supabase-local.sh +0 -0
  440. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/setup-supabase-production.sh +0 -0
  441. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/test_acceleration_standing.py +0 -0
  442. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/test_determinism.sh +0 -0
  443. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/test_drop_start_debug.py +0 -0
  444. {kinemotion-0.47.0 → kinemotion-0.47.1}/scripts/validate_known_heights.py +0 -0
  445. {kinemotion-0.47.0 → kinemotion-0.47.1}/sonar-project.properties +0 -0
  446. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/__init__.py +0 -0
  447. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/api.py +0 -0
  448. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cli.py +0 -0
  449. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/__init__.py +0 -0
  450. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/analysis.py +0 -0
  451. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/cli.py +0 -0
  452. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/debug_overlay.py +0 -0
  453. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/joint_angles.py +0 -0
  454. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/kinematics.py +0 -0
  455. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/metrics_validator.py +0 -0
  456. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/cmj/validation_bounds.py +0 -0
  457. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/__init__.py +0 -0
  458. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/auto_tuning.py +0 -0
  459. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/cli_utils.py +0 -0
  460. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/debug_overlay_utils.py +0 -0
  461. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/determinism.py +0 -0
  462. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/experimental.py +0 -0
  463. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/filtering.py +0 -0
  464. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/formatting.py +0 -0
  465. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/metadata.py +0 -0
  466. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/pipeline_utils.py +0 -0
  467. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/pose.py +0 -0
  468. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/quality.py +0 -0
  469. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/smoothing.py +0 -0
  470. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/validation.py +0 -0
  471. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/core/video_io.py +0 -0
  472. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/__init__.py +0 -0
  473. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/analysis.py +0 -0
  474. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/cli.py +0 -0
  475. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  476. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/kinematics.py +0 -0
  477. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/metrics_validator.py +0 -0
  478. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/dropjump/validation_bounds.py +0 -0
  479. {kinemotion-0.47.0 → kinemotion-0.47.1}/src/kinemotion/py.typed +0 -0
  480. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/__init__.py +0 -0
  481. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cli/__init__.py +0 -0
  482. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cli/test_cmj.py +0 -0
  483. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cli/test_dropjump.py +0 -0
  484. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cli/test_imports.py +0 -0
  485. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/__init__.py +0 -0
  486. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_analysis.py +0 -0
  487. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_api.py +0 -0
  488. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_cli.py +0 -0
  489. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_joint_angles.py +0 -0
  490. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_kinematics.py +0 -0
  491. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/cmj/test_physiological_bounds.py +0 -0
  492. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/conftest.py +0 -0
  493. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/__init__.py +0 -0
  494. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_auto_tuning.py +0 -0
  495. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_cli_utils.py +0 -0
  496. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_filtering.py +0 -0
  497. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_formatting.py +0 -0
  498. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_metadata.py +0 -0
  499. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_otel_timing.py +0 -0
  500. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_pipeline_utils.py +0 -0
  501. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_pose.py +0 -0
  502. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_quality.py +0 -0
  503. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_smoothing.py +0 -0
  504. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_timing.py +0 -0
  505. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_validation.py +0 -0
  506. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/core/test_video_io.py +0 -0
  507. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/__init__.py +0 -0
  508. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_adaptive_threshold.py +0 -0
  509. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_analysis.py +0 -0
  510. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_api.py +0 -0
  511. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_cli.py +0 -0
  512. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_contact_detection.py +0 -0
  513. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_kinematics.py +0 -0
  514. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_physiological_bounds.py +0 -0
  515. {kinemotion-0.47.0 → kinemotion-0.47.1}/tests/dropjump/test_validation_integration.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.47.1 (2025-12-12)
11
+
12
+ ### Bug Fixes
13
+
14
+ - **core**: Ensure correct timing.py linting and type safety
15
+ ([`84ea7cf`](https://github.com/feniix/kinemotion/commit/84ea7cf269c81299cf0939b0c28f83c51910a523))
16
+
17
+
10
18
  ## v0.47.0 (2025-12-12)
11
19
 
12
20
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.47.0
3
+ Version: 0.47.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
@@ -33,6 +33,7 @@ dependencies = [
33
33
  "opentelemetry-api>=1.20.0",
34
34
  "opentelemetry-sdk>=1.20.0",
35
35
  "opentelemetry-exporter-otlp>=1.20.0",
36
+ "opentelemetry-exporter-gcp-trace>=1.6.0",
36
37
  "opentelemetry-instrumentation-fastapi>=0.40b0",
37
38
  "opentelemetry-instrumentation-logging>=0.40b0",
38
39
  # Local development: use editable install via `uv sync`
@@ -0,0 +1,100 @@
1
+ """Telemetry configuration for Kinemotion Backend.
2
+
3
+ Enables OpenTelemetry tracing and logging if OTEL_EXPORTER_OTLP_ENDPOINT is set.
4
+ """
5
+
6
+ import logging
7
+ import os
8
+
9
+ from fastapi import FastAPI
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ def setup_telemetry(app: FastAPI) -> bool:
15
+ """Initialize OpenTelemetry if configured.
16
+
17
+ Args:
18
+ app: FastAPI application instance to instrument
19
+
20
+ Returns:
21
+ True if telemetry was enabled, False otherwise.
22
+ """
23
+ otlp_endpoint = os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
24
+ enable_gcp = os.getenv("ENABLE_GCP_TRACE", "").lower() == "true"
25
+
26
+ if not otlp_endpoint and not enable_gcp:
27
+ logger.info("telemetry_disabled_no_endpoint")
28
+ return False
29
+
30
+ try:
31
+ from opentelemetry import trace
32
+ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
33
+ OTLPSpanExporter,
34
+ )
35
+ from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
36
+ from opentelemetry.instrumentation.logging import LoggingInstrumentor
37
+ from opentelemetry.sdk.resources import Resource
38
+ from opentelemetry.sdk.trace import TracerProvider
39
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor
40
+ except ImportError as e:
41
+ logger.warning(
42
+ "telemetry_dependencies_missing",
43
+ error=str(e),
44
+ message="Install opentelemetry dependencies to enable tracing",
45
+ )
46
+ return False
47
+
48
+ try:
49
+ logger.info("telemetry_initializing")
50
+
51
+ # resource = Resource.create(attributes={
52
+ # "service.name": "kinemotion-backend",
53
+ # "service.instance.id": f"kinemotion-{os.getpid()}",
54
+ # })
55
+ # Use default resource detection (env vars like OTEL_SERVICE_NAME)
56
+ resource = Resource.create()
57
+
58
+ # Configure Tracer
59
+ tracer_provider = TracerProvider(resource=resource)
60
+
61
+ span_processor = None
62
+
63
+ if enable_gcp:
64
+ try:
65
+ from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
66
+
67
+ gcp_exporter = CloudTraceSpanExporter()
68
+ span_processor = BatchSpanProcessor(gcp_exporter)
69
+ logger.info("telemetry_gcp_exporter_configured")
70
+ except ImportError:
71
+ logger.error(
72
+ "telemetry_gcp_dependency_missing",
73
+ message="Install opentelemetry-exporter-gcp-trace",
74
+ )
75
+ return False
76
+ elif otlp_endpoint:
77
+ # OTLP Exporter (defaults to gRPC)
78
+ otlp_exporter = OTLPSpanExporter()
79
+ span_processor = BatchSpanProcessor(otlp_exporter)
80
+ logger.info("telemetry_otlp_exporter_configured", endpoint=otlp_endpoint)
81
+
82
+ if span_processor:
83
+ tracer_provider.add_span_processor(span_processor)
84
+ trace.set_tracer_provider(tracer_provider)
85
+
86
+ # Instrument FastAPI
87
+ FastAPIInstrumentor.instrument_app(app, tracer_provider=tracer_provider)
88
+
89
+ # Instrument Logging
90
+ LoggingInstrumentor().instrument(set_logging_format=True)
91
+
92
+ logger.info("telemetry_enabled")
93
+ return True
94
+ else:
95
+ logger.warning("telemetry_no_exporter_configured")
96
+ return False
97
+
98
+ except Exception as e:
99
+ logger.error("telemetry_initialization_failed", error=str(e), exc_info=True)
100
+ return False
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kinemotion"
3
- version = "0.47.0"
3
+ version = "0.47.1"
4
4
  description = "Video-based kinematic analysis for athletic performance"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10,<3.13"
@@ -55,7 +55,7 @@ class Tracer: # Dummy for type hints if actual Tracer is not available
55
55
 
56
56
 
57
57
  if _otel_tracer_class:
58
- Tracer = _otel_tracer_class # Override dummy if actual Tracer is available
58
+ Tracer = _otel_tracer_class # type: ignore # Override dummy if actual Tracer is available
59
59
 
60
60
  # This _OPENTELEMETRY_AVAILABLE variable is assigned only once,
61
61
  # after the try-except block
@@ -139,6 +139,15 @@ wheels = [
139
139
  { url = "https://files.pythonhosted.org/packages/8b/9a/da5e6cabf4da855d182fcdacf3573b69f30899e0e6c3e0d91ce6ad92ce74/botocore-1.42.5-py3-none-any.whl", hash = "sha256:6aa487f1876c881e2143f6a186b7d8faaf042fc05e0ba7421d821f145356a0c9", size = 14525346, upload-time = "2025-12-08T20:28:24.06Z" },
140
140
  ]
141
141
 
142
+ [[package]]
143
+ name = "cachetools"
144
+ version = "6.2.2"
145
+ source = { registry = "https://pypi.org/simple" }
146
+ sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" }
147
+ wheels = [
148
+ { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" },
149
+ ]
150
+
142
151
  [[package]]
143
152
  name = "certifi"
144
153
  version = "2025.11.12"
@@ -660,6 +669,58 @@ wheels = [
660
669
  { url = "https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl", hash = "sha256:8908cb2e02fb3b93b7eb0f2827125cb699869470432cc885f019b8fd0fccff77", size = 208168, upload-time = "2025-07-24T03:45:52.517Z" },
661
670
  ]
662
671
 
672
+ [[package]]
673
+ name = "google-api-core"
674
+ version = "2.28.1"
675
+ source = { registry = "https://pypi.org/simple" }
676
+ dependencies = [
677
+ { name = "google-auth" },
678
+ { name = "googleapis-common-protos" },
679
+ { name = "proto-plus" },
680
+ { name = "protobuf" },
681
+ { name = "requests" },
682
+ ]
683
+ sdist = { url = "https://files.pythonhosted.org/packages/61/da/83d7043169ac2c8c7469f0e375610d78ae2160134bf1b80634c482fa079c/google_api_core-2.28.1.tar.gz", hash = "sha256:2b405df02d68e68ce0fbc138559e6036559e685159d148ae5861013dc201baf8", size = 176759, upload-time = "2025-10-28T21:34:51.529Z" }
684
+ wheels = [
685
+ { url = "https://files.pythonhosted.org/packages/ed/d4/90197b416cb61cefd316964fd9e7bd8324bcbafabf40eef14a9f20b81974/google_api_core-2.28.1-py3-none-any.whl", hash = "sha256:4021b0f8ceb77a6fb4de6fde4502cecab45062e66ff4f2895169e0b35bc9466c", size = 173706, upload-time = "2025-10-28T21:34:50.151Z" },
686
+ ]
687
+
688
+ [package.optional-dependencies]
689
+ grpc = [
690
+ { name = "grpcio" },
691
+ { name = "grpcio-status" },
692
+ ]
693
+
694
+ [[package]]
695
+ name = "google-auth"
696
+ version = "2.43.0"
697
+ source = { registry = "https://pypi.org/simple" }
698
+ dependencies = [
699
+ { name = "cachetools" },
700
+ { name = "pyasn1-modules" },
701
+ { name = "rsa" },
702
+ ]
703
+ sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359, upload-time = "2025-11-06T00:13:36.587Z" }
704
+ wheels = [
705
+ { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" },
706
+ ]
707
+
708
+ [[package]]
709
+ name = "google-cloud-trace"
710
+ version = "1.17.0"
711
+ source = { registry = "https://pypi.org/simple" }
712
+ dependencies = [
713
+ { name = "google-api-core", extra = ["grpc"] },
714
+ { name = "google-auth" },
715
+ { name = "grpcio" },
716
+ { name = "proto-plus" },
717
+ { name = "protobuf" },
718
+ ]
719
+ sdist = { url = "https://files.pythonhosted.org/packages/5e/89/5ecbcf7d2d37ead01fc84e774bc758638855c630b32720fa58edcf9667ae/google_cloud_trace-1.17.0.tar.gz", hash = "sha256:68703bfc93718083f061d9130a3852e3181ec1b6b796b76856997c28f51b9595", size = 97995, upload-time = "2025-10-20T14:57:28.662Z" }
720
+ wheels = [
721
+ { url = "https://files.pythonhosted.org/packages/c9/84/e6b776f0b5d68451be68d3d43efe8eacc677182709dd7e84c960668a9909/google_cloud_trace-1.17.0-py3-none-any.whl", hash = "sha256:975dc0c2a9b1d7644bca45d78a2c5011ab5c73e94bd6537203deda374f88f7b3", size = 104118, upload-time = "2025-10-20T14:55:23.108Z" },
722
+ ]
723
+
663
724
  [[package]]
664
725
  name = "googleapis-common-protos"
665
726
  version = "1.72.0"
@@ -725,6 +786,20 @@ wheels = [
725
786
  { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003, upload-time = "2025-10-21T16:21:46.244Z" },
726
787
  ]
727
788
 
789
+ [[package]]
790
+ name = "grpcio-status"
791
+ version = "1.62.3"
792
+ source = { registry = "https://pypi.org/simple" }
793
+ dependencies = [
794
+ { name = "googleapis-common-protos" },
795
+ { name = "grpcio" },
796
+ { name = "protobuf" },
797
+ ]
798
+ sdist = { url = "https://files.pythonhosted.org/packages/7c/d7/013ef01c5a1c2fd0932c27c904934162f69f41ca0f28396d3ffe4d386123/grpcio-status-1.62.3.tar.gz", hash = "sha256:289bdd7b2459794a12cf95dc0cb727bd4a1742c37bd823f760236c937e53a485", size = 13063, upload-time = "2024-08-06T00:37:08.003Z" }
799
+ wheels = [
800
+ { url = "https://files.pythonhosted.org/packages/90/40/972271de05f9315c0d69f9f7ebbcadd83bc85322f538637d11bb8c67803d/grpcio_status-1.62.3-py3-none-any.whl", hash = "sha256:f9049b762ba8de6b1086789d8315846e094edac2c50beaf462338b301a8fd4b8", size = 14448, upload-time = "2024-08-06T00:30:15.702Z" },
801
+ ]
802
+
728
803
  [[package]]
729
804
  name = "h11"
730
805
  version = "0.16.0"
@@ -971,7 +1046,7 @@ wheels = [
971
1046
 
972
1047
  [[package]]
973
1048
  name = "kinemotion"
974
- version = "0.47.0"
1049
+ version = "0.47.1"
975
1050
  source = { editable = "." }
976
1051
  dependencies = [
977
1052
  { name = "click" },
@@ -1028,6 +1103,7 @@ dependencies = [
1028
1103
  { name = "httpx" },
1029
1104
  { name = "kinemotion" },
1030
1105
  { name = "opentelemetry-api" },
1106
+ { name = "opentelemetry-exporter-gcp-trace" },
1031
1107
  { name = "opentelemetry-exporter-otlp" },
1032
1108
  { name = "opentelemetry-instrumentation-fastapi" },
1033
1109
  { name = "opentelemetry-instrumentation-logging" },
@@ -1058,6 +1134,7 @@ requires-dist = [
1058
1134
  { name = "httpx", specifier = ">=0.27.0" },
1059
1135
  { name = "kinemotion", editable = "." },
1060
1136
  { name = "opentelemetry-api", specifier = ">=1.20.0" },
1137
+ { name = "opentelemetry-exporter-gcp-trace", specifier = ">=1.6.0" },
1061
1138
  { name = "opentelemetry-exporter-otlp", specifier = ">=1.20.0" },
1062
1139
  { name = "opentelemetry-instrumentation-fastapi", specifier = ">=0.40b0" },
1063
1140
  { name = "opentelemetry-instrumentation-logging", specifier = ">=0.40b0" },
@@ -1678,6 +1755,21 @@ wheels = [
1678
1755
  { url = "https://files.pythonhosted.org/packages/fb/1f/737dcdbc9fea2fa96c1b392ae47275165a7c641663fbb08a8d252968eed2/opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7", size = 63970, upload-time = "2024-08-28T21:35:00.598Z" },
1679
1756
  ]
1680
1757
 
1758
+ [[package]]
1759
+ name = "opentelemetry-exporter-gcp-trace"
1760
+ version = "1.9.0"
1761
+ source = { registry = "https://pypi.org/simple" }
1762
+ dependencies = [
1763
+ { name = "google-cloud-trace" },
1764
+ { name = "opentelemetry-api" },
1765
+ { name = "opentelemetry-resourcedetector-gcp" },
1766
+ { name = "opentelemetry-sdk" },
1767
+ ]
1768
+ sdist = { url = "https://files.pythonhosted.org/packages/c3/15/7556d54b01fb894497f69a98d57faa9caa45ffa59896e0bba6847a7f0d15/opentelemetry_exporter_gcp_trace-1.9.0.tar.gz", hash = "sha256:c3fc090342f6ee32a0cc41a5716a6bb716b4422d19facefcb22dc4c6b683ece8", size = 18568, upload-time = "2025-02-04T19:45:08.185Z" }
1769
+ wheels = [
1770
+ { url = "https://files.pythonhosted.org/packages/c0/cd/6d7fbad05771eb3c2bace20f6360ce5dac5ca751c6f2122853e43830c32e/opentelemetry_exporter_gcp_trace-1.9.0-py3-none-any.whl", hash = "sha256:0a8396e8b39f636eeddc3f0ae08ddb40c40f288bc8c5544727c3581545e77254", size = 13973, upload-time = "2025-02-04T19:44:59.148Z" },
1771
+ ]
1772
+
1681
1773
  [[package]]
1682
1774
  name = "opentelemetry-exporter-otlp"
1683
1775
  version = "1.27.0"
@@ -1810,6 +1902,21 @@ wheels = [
1810
1902
  { url = "https://files.pythonhosted.org/packages/94/56/3d2d826834209b19a5141eed717f7922150224d1a982385d19a9444cbf8d/opentelemetry_proto-1.27.0-py3-none-any.whl", hash = "sha256:b133873de5581a50063e1e4b29cdcf0c5e253a8c2d8dc1229add20a4c3830ace", size = 52464, upload-time = "2024-08-28T21:35:21.434Z" },
1811
1903
  ]
1812
1904
 
1905
+ [[package]]
1906
+ name = "opentelemetry-resourcedetector-gcp"
1907
+ version = "1.9.0a0"
1908
+ source = { registry = "https://pypi.org/simple" }
1909
+ dependencies = [
1910
+ { name = "opentelemetry-api" },
1911
+ { name = "opentelemetry-sdk" },
1912
+ { name = "requests" },
1913
+ { name = "typing-extensions" },
1914
+ ]
1915
+ sdist = { url = "https://files.pythonhosted.org/packages/e1/86/f0693998817779802525a5bcc885a3cdb68d05b636bc6faae5c9ade4bee4/opentelemetry_resourcedetector_gcp-1.9.0a0.tar.gz", hash = "sha256:6860a6649d1e3b9b7b7f09f3918cc16b72aa0c0c590d2a72ea6e42b67c9a42e7", size = 20730, upload-time = "2025-02-04T19:45:10.693Z" }
1916
+ wheels = [
1917
+ { url = "https://files.pythonhosted.org/packages/12/04/7e33228c88422a5518e1774a836c9ec68f10f51bde0f1d5dd5f3054e612a/opentelemetry_resourcedetector_gcp-1.9.0a0-py3-none-any.whl", hash = "sha256:4e5a0822b0f0d7647b7ceb282d7aa921dd7f45466540bd0a24f954f90db8fde8", size = 20378, upload-time = "2025-02-04T19:45:03.898Z" },
1918
+ ]
1919
+
1813
1920
  [[package]]
1814
1921
  name = "opentelemetry-sdk"
1815
1922
  version = "1.27.0"
@@ -2034,6 +2141,18 @@ wheels = [
2034
2141
  { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" },
2035
2142
  ]
2036
2143
 
2144
+ [[package]]
2145
+ name = "proto-plus"
2146
+ version = "1.26.1"
2147
+ source = { registry = "https://pypi.org/simple" }
2148
+ dependencies = [
2149
+ { name = "protobuf" },
2150
+ ]
2151
+ sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" }
2152
+ wheels = [
2153
+ { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" },
2154
+ ]
2155
+
2037
2156
  [[package]]
2038
2157
  name = "protobuf"
2039
2158
  version = "4.25.8"
@@ -2048,6 +2167,27 @@ wheels = [
2048
2167
  { url = "https://files.pythonhosted.org/packages/0c/c1/6aece0ab5209981a70cd186f164c133fdba2f51e124ff92b73de7fd24d78/protobuf-4.25.8-py3-none-any.whl", hash = "sha256:15a0af558aa3b13efef102ae6e4f3efac06f1eea11afb3a57db2901447d9fb59", size = 156757, upload-time = "2025-05-28T14:22:24.135Z" },
2049
2168
  ]
2050
2169
 
2170
+ [[package]]
2171
+ name = "pyasn1"
2172
+ version = "0.6.1"
2173
+ source = { registry = "https://pypi.org/simple" }
2174
+ sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" }
2175
+ wheels = [
2176
+ { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" },
2177
+ ]
2178
+
2179
+ [[package]]
2180
+ name = "pyasn1-modules"
2181
+ version = "0.4.2"
2182
+ source = { registry = "https://pypi.org/simple" }
2183
+ dependencies = [
2184
+ { name = "pyasn1" },
2185
+ ]
2186
+ sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" }
2187
+ wheels = [
2188
+ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" },
2189
+ ]
2190
+
2051
2191
  [[package]]
2052
2192
  name = "pycparser"
2053
2193
  version = "2.23"
@@ -2412,6 +2552,18 @@ wheels = [
2412
2552
  { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" },
2413
2553
  ]
2414
2554
 
2555
+ [[package]]
2556
+ name = "rsa"
2557
+ version = "4.9.1"
2558
+ source = { registry = "https://pypi.org/simple" }
2559
+ dependencies = [
2560
+ { name = "pyasn1" },
2561
+ ]
2562
+ sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" }
2563
+ wheels = [
2564
+ { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" },
2565
+ ]
2566
+
2415
2567
  [[package]]
2416
2568
  name = "ruff"
2417
2569
  version = "0.14.8"
@@ -1,66 +0,0 @@
1
- """Telemetry configuration for Kinemotion Backend.
2
-
3
- Enables OpenTelemetry tracing and logging if OTEL_EXPORTER_OTLP_ENDPOINT is set.
4
- """
5
-
6
- import logging
7
- import os
8
-
9
- from fastapi import FastAPI
10
- from opentelemetry import trace
11
- from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
12
- from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
13
- from opentelemetry.instrumentation.logging import LoggingInstrumentor
14
- from opentelemetry.sdk.resources import Resource
15
- from opentelemetry.sdk.trace import TracerProvider
16
- from opentelemetry.sdk.trace.export import BatchSpanProcessor
17
-
18
- logger = logging.getLogger(__name__)
19
-
20
-
21
- def setup_telemetry(app: FastAPI) -> bool:
22
- """Initialize OpenTelemetry if configured.
23
-
24
- Args:
25
- app: FastAPI application instance to instrument
26
-
27
- Returns:
28
- True if telemetry was enabled, False otherwise.
29
- """
30
- otlp_endpoint = os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
31
-
32
- if not otlp_endpoint:
33
- logger.info("telemetry_disabled_no_endpoint")
34
- return False
35
-
36
- logger.info("telemetry_initializing", endpoint=otlp_endpoint)
37
-
38
- # resource = Resource.create(attributes={
39
- # "service.name": "kinemotion-backend",
40
- # "service.instance.id": f"kinemotion-{os.getpid()}",
41
- # })
42
- # Use default resource detection (env vars like OTEL_SERVICE_NAME)
43
- resource = Resource.create()
44
-
45
- # Configure Tracer
46
- tracer_provider = TracerProvider(resource=resource)
47
-
48
- # OTLP Exporter (defaults to gRPC)
49
- # The endpoint env var is handled automatically by the exporter if not passed,
50
- # but since we check it manually, we can trust the SDK standard env vars too.
51
- # We just instantiate it.
52
- otlp_exporter = OTLPSpanExporter()
53
-
54
- span_processor = BatchSpanProcessor(otlp_exporter)
55
- tracer_provider.add_span_processor(span_processor)
56
-
57
- trace.set_tracer_provider(tracer_provider)
58
-
59
- # Instrument FastAPI
60
- FastAPIInstrumentor.instrument_app(app, tracer_provider=tracer_provider)
61
-
62
- # Instrument Logging
63
- LoggingInstrumentor().instrument(set_logging_format=True)
64
-
65
- logger.info("telemetry_enabled")
66
- return True