mcli-framework 7.4.0__tar.gz → 7.5.0__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 mcli-framework might be problematic. Click here for more details.

Files changed (400) hide show
  1. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/PKG-INFO +1 -3
  2. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/pyproject.toml +1 -3
  3. mcli_framework-7.5.0/src/mcli/lib/auth/aws_manager.py +30 -0
  4. mcli_framework-7.5.0/src/mcli/lib/auth/azure_manager.py +36 -0
  5. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/credential_manager.py +70 -1
  6. mcli_framework-7.5.0/src/mcli/lib/auth/gcp_manager.py +40 -0
  7. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/app.py +6 -39
  8. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/app_integrated.py +23 -101
  9. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/app_supabase.py +8 -57
  10. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/app_training.py +9 -11
  11. mcli_framework-7.5.0/src/mcli/ml/dashboard/common.py +167 -0
  12. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/cicd.py +4 -4
  13. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/debug_dependencies.py +99 -57
  14. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/gravity_viz.py +265 -47
  15. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +4 -2
  16. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +3 -3
  17. mcli_framework-7.5.0/src/mcli/ml/dashboard/styles.py +55 -0
  18. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/self/self_cmd.py +12 -806
  19. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/PKG-INFO +1 -3
  20. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/SOURCES.txt +3 -71
  21. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/requires.txt +0 -2
  22. mcli_framework-7.4.0/src/mcli/__init__.py +0 -160
  23. mcli_framework-7.4.0/src/mcli/__main__.py +0 -14
  24. mcli_framework-7.4.0/src/mcli/app/__init__.py +0 -23
  25. mcli_framework-7.4.0/src/mcli/app/model/__init__.py +0 -0
  26. mcli_framework-7.4.0/src/mcli/app/video/__init__.py +0 -5
  27. mcli_framework-7.4.0/src/mcli/chat/__init__.py +0 -34
  28. mcli_framework-7.4.0/src/mcli/lib/__init__.py +0 -0
  29. mcli_framework-7.4.0/src/mcli/lib/api/__init__.py +0 -0
  30. mcli_framework-7.4.0/src/mcli/lib/auth/__init__.py +0 -1
  31. mcli_framework-7.4.0/src/mcli/lib/auth/aws_manager.py +0 -85
  32. mcli_framework-7.4.0/src/mcli/lib/auth/azure_manager.py +0 -91
  33. mcli_framework-7.4.0/src/mcli/lib/auth/gcp_manager.py +0 -93
  34. mcli_framework-7.4.0/src/mcli/lib/config/__init__.py +0 -1
  35. mcli_framework-7.4.0/src/mcli/lib/erd/__init__.py +0 -25
  36. mcli_framework-7.4.0/src/mcli/lib/files/__init__.py +0 -0
  37. mcli_framework-7.4.0/src/mcli/lib/fs/__init__.py +0 -1
  38. mcli_framework-7.4.0/src/mcli/lib/logger/__init__.py +0 -3
  39. mcli_framework-7.4.0/src/mcli/lib/performance/__init__.py +0 -17
  40. mcli_framework-7.4.0/src/mcli/lib/pickles/__init__.py +0 -1
  41. mcli_framework-7.4.0/src/mcli/lib/shell/__init__.py +0 -0
  42. mcli_framework-7.4.0/src/mcli/lib/toml/__init__.py +0 -1
  43. mcli_framework-7.4.0/src/mcli/lib/watcher/__init__.py +0 -0
  44. mcli_framework-7.4.0/src/mcli/ml/__init__.py +0 -16
  45. mcli_framework-7.4.0/src/mcli/ml/api/__init__.py +0 -30
  46. mcli_framework-7.4.0/src/mcli/ml/api/routers/__init__.py +0 -27
  47. mcli_framework-7.4.0/src/mcli/ml/auth/__init__.py +0 -45
  48. mcli_framework-7.4.0/src/mcli/ml/backtesting/__init__.py +0 -39
  49. mcli_framework-7.4.0/src/mcli/ml/cli/__init__.py +0 -5
  50. mcli_framework-7.4.0/src/mcli/ml/config/__init__.py +0 -33
  51. mcli_framework-7.4.0/src/mcli/ml/configs/__init__.py +0 -16
  52. mcli_framework-7.4.0/src/mcli/ml/dashboard/__init__.py +0 -12
  53. mcli_framework-7.4.0/src/mcli/ml/dashboard/components/__init__.py +0 -7
  54. mcli_framework-7.4.0/src/mcli/ml/dashboard/pages/__init__.py +0 -6
  55. mcli_framework-7.4.0/src/mcli/ml/data_ingestion/__init__.py +0 -39
  56. mcli_framework-7.4.0/src/mcli/ml/database/__init__.py +0 -47
  57. mcli_framework-7.4.0/src/mcli/ml/experimentation/__init__.py +0 -29
  58. mcli_framework-7.4.0/src/mcli/ml/features/__init__.py +0 -39
  59. mcli_framework-7.4.0/src/mcli/ml/mlops/__init__.py +0 -33
  60. mcli_framework-7.4.0/src/mcli/ml/models/__init__.py +0 -94
  61. mcli_framework-7.4.0/src/mcli/ml/monitoring/__init__.py +0 -25
  62. mcli_framework-7.4.0/src/mcli/ml/optimization/__init__.py +0 -27
  63. mcli_framework-7.4.0/src/mcli/ml/predictions/__init__.py +0 -5
  64. mcli_framework-7.4.0/src/mcli/ml/preprocessing/__init__.py +0 -28
  65. mcli_framework-7.4.0/src/mcli/ml/scripts/__init__.py +0 -1
  66. mcli_framework-7.4.0/src/mcli/ml/trading/__init__.py +0 -66
  67. mcli_framework-7.4.0/src/mcli/ml/training/__init__.py +0 -10
  68. mcli_framework-7.4.0/src/mcli/mygroup/__init__.py +0 -3
  69. mcli_framework-7.4.0/src/mcli/public/__init__.py +0 -1
  70. mcli_framework-7.4.0/src/mcli/public/commands/__init__.py +0 -2
  71. mcli_framework-7.4.0/src/mcli/self/__init__.py +0 -3
  72. mcli_framework-7.4.0/src/mcli/workflow/__init__.py +0 -0
  73. mcli_framework-7.4.0/src/mcli/workflow/daemon/__init__.py +0 -15
  74. mcli_framework-7.4.0/src/mcli/workflow/dashboard/__init__.py +0 -5
  75. mcli_framework-7.4.0/src/mcli/workflow/docker/__init__.py +0 -0
  76. mcli_framework-7.4.0/src/mcli/workflow/file/__init__.py +0 -0
  77. mcli_framework-7.4.0/src/mcli/workflow/gcloud/__init__.py +0 -1
  78. mcli_framework-7.4.0/src/mcli/workflow/git_commit/__init__.py +0 -0
  79. mcli_framework-7.4.0/src/mcli/workflow/interview/__init__.py +0 -0
  80. mcli_framework-7.4.0/src/mcli/workflow/politician_trading/__init__.py +0 -4
  81. mcli_framework-7.4.0/src/mcli/workflow/registry/__init__.py +0 -0
  82. mcli_framework-7.4.0/src/mcli/workflow/repo/__init__.py +0 -0
  83. mcli_framework-7.4.0/src/mcli/workflow/scheduler/__init__.py +0 -25
  84. mcli_framework-7.4.0/src/mcli/workflow/search/__init__.py +0 -0
  85. mcli_framework-7.4.0/src/mcli/workflow/sync/__init__.py +0 -5
  86. mcli_framework-7.4.0/src/mcli/workflow/videos/__init__.py +0 -1
  87. mcli_framework-7.4.0/src/mcli/workflow/wakatime/__init__.py +0 -80
  88. mcli_framework-7.4.0/tests/cli/__init__.py +0 -0
  89. mcli_framework-7.4.0/tests/e2e/__init__.py +0 -0
  90. mcli_framework-7.4.0/tests/fixtures/__init__.py +0 -62
  91. mcli_framework-7.4.0/tests/integration/__init__.py +0 -0
  92. mcli_framework-7.4.0/tests/performance/__init__.py +0 -0
  93. mcli_framework-7.4.0/tests/property/__init__.py +0 -0
  94. mcli_framework-7.4.0/tests/unit/__init__.py +0 -0
  95. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/dependabot.yml +0 -0
  96. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/build.yml +0 -0
  97. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/ci.yml +0 -0
  98. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/ml-pipeline.yml +0 -0
  99. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/publish-self-hosted.yml +0 -0
  100. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/publish.yml +0 -0
  101. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/release.yml +0 -0
  102. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/security.yml +0 -0
  103. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/.github/workflows/test.yml +0 -0
  104. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/LICENSE +0 -0
  105. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/MANIFEST.in +0 -0
  106. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  107. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/README.md +0 -0
  108. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/Cargo.toml +0 -0
  109. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/src/command_parser.rs +0 -0
  110. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/src/file_watcher.rs +0 -0
  111. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/src/lib.rs +0 -0
  112. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/src/process_manager.rs +0 -0
  113. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/mcli_rust/src/tfidf.rs +0 -0
  114. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/setup.cfg +0 -0
  115. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/chat_cmd.py +0 -0
  116. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/commands_cmd.py +0 -0
  117. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/completion_cmd.py +0 -0
  118. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/completion_helpers.py +0 -0
  119. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/cron_test_cmd.py +0 -0
  120. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/logs_cmd.py +0 -0
  121. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/main.py +0 -0
  122. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/model/model.py +0 -0
  123. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/model_cmd.py +0 -0
  124. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/redis_cmd.py +0 -0
  125. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/video/video.py +0 -0
  126. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/app/visual_cmd.py +0 -0
  127. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/chat/chat.py +0 -0
  128. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/chat/command_rag.py +0 -0
  129. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/chat/enhanced_chat.py +0 -0
  130. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/chat/system_controller.py +0 -0
  131. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/chat/system_integration.py +0 -0
  132. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/cli.py +0 -0
  133. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/config.toml +0 -0
  134. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/api/api.py +0 -0
  135. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/api/daemon_client.py +0 -0
  136. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/api/daemon_client_local.py +0 -0
  137. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/api/daemon_decorator.py +0 -0
  138. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/api/mcli_decorators.py +0 -0
  139. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/auth.py +0 -0
  140. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/key_manager.py +0 -0
  141. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/mcli_manager.py +0 -0
  142. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/token_manager.py +0 -0
  143. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/auth/token_util.py +0 -0
  144. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/config/config.py +0 -0
  145. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/custom_commands.py +0 -0
  146. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/discovery/__init__.py +0 -0
  147. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/discovery/command_discovery.py +0 -0
  148. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/erd/erd.py +0 -0
  149. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/erd/generate_graph.py +0 -0
  150. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/files/files.py +0 -0
  151. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/fs/fs.py +0 -0
  152. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/lib.py +0 -0
  153. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/logger/logger.py +0 -0
  154. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/paths.py +0 -0
  155. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/performance/optimizer.py +0 -0
  156. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/performance/rust_bridge.py +0 -0
  157. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/performance/uvloop_config.py +0 -0
  158. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/pickles/pickles.py +0 -0
  159. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  160. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/services/data_pipeline.py +0 -0
  161. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/services/lsh_client.py +0 -0
  162. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/services/redis_service.py +0 -0
  163. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/shell/shell.py +0 -0
  164. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/toml/toml.py +0 -0
  165. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/ui/styling.py +0 -0
  166. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/ui/visual_effects.py +0 -0
  167. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/lib/watcher/watcher.py +0 -0
  168. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/app.py +0 -0
  169. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/middleware.py +0 -0
  170. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/admin_router.py +0 -0
  171. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/auth_router.py +0 -0
  172. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/backtest_router.py +0 -0
  173. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/data_router.py +0 -0
  174. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/model_router.py +0 -0
  175. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
  176. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
  177. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/prediction_router.py +0 -0
  178. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/trade_router.py +0 -0
  179. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/routers/websocket_router.py +0 -0
  180. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/api/schemas.py +0 -0
  181. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/auth/auth_manager.py +0 -0
  182. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/auth/models.py +0 -0
  183. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/auth/permissions.py +0 -0
  184. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
  185. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
  186. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/cache.py +0 -0
  187. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/cli/main.py +0 -0
  188. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/config/settings.py +0 -0
  189. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/configs/dvc_config.py +0 -0
  190. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/configs/mlflow_config.py +0 -0
  191. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/configs/mlops_manager.py +0 -0
  192. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/cli.py +0 -0
  193. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/components/charts.py +0 -0
  194. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/components/metrics.py +0 -0
  195. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/components/tables.py +0 -0
  196. {mcli_framework-7.4.0/src/mcli/ml/dashboard/pages → mcli_framework-7.5.0/src/mcli/ml/dashboard}/overview.py +0 -0
  197. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
  198. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
  199. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/trading.py +0 -0
  200. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
  201. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
  202. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/utils.py +0 -0
  203. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
  204. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
  205. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
  206. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
  207. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/database/migrations/env.py +0 -0
  208. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/database/models.py +0 -0
  209. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/database/session.py +0 -0
  210. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/experimentation/ab_testing.py +0 -0
  211. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/features/ensemble_features.py +0 -0
  212. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/features/political_features.py +0 -0
  213. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/features/recommendation_engine.py +0 -0
  214. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/features/stock_features.py +0 -0
  215. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/features/test_feature_engineering.py +0 -0
  216. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/logging.py +0 -0
  217. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/mlops/data_versioning.py +0 -0
  218. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
  219. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/mlops/model_serving.py +0 -0
  220. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
  221. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/models/base_models.py +0 -0
  222. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/models/ensemble_models.py +0 -0
  223. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/models/recommendation_models.py +0 -0
  224. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/models/test_models.py +0 -0
  225. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/monitoring/drift_detection.py +0 -0
  226. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/monitoring/metrics.py +0 -0
  227. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
  228. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/predictions/monte_carlo.py +0 -0
  229. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/predictions/prediction_engine.py +0 -0
  230. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
  231. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
  232. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
  233. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -0
  234. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
  235. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
  236. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/tasks.py +0 -0
  237. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/tests/test_integration.py +0 -0
  238. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
  239. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/alpaca_client.py +0 -0
  240. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/migrations.py +0 -0
  241. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/models.py +0 -0
  242. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/paper_trading.py +0 -0
  243. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/risk_management.py +0 -0
  244. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/trading/trading_service.py +0 -0
  245. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/ml/training/train_model.py +0 -0
  246. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/mygroup/test_cmd.py +0 -0
  247. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/public/oi/oi.py +0 -0
  248. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/public/public.py +0 -0
  249. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/self/test_cmd.py +0 -0
  250. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  251. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  252. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/client.py +0 -0
  253. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/daemon.py +0 -0
  254. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  255. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  256. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/process_cli.py +0 -0
  257. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/process_manager.py +0 -0
  258. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  259. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/docker/docker.py +0 -0
  260. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/gcloud/config.toml +0 -0
  261. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  262. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  263. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/lsh_integration.py +0 -0
  264. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/client.py +0 -0
  265. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  266. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  267. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  268. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  269. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/model_service.py +0 -0
  270. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  271. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  272. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  273. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/test_example.py +0 -0
  274. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/test_integration.py +0 -0
  275. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  276. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/openai/openai.py +0 -0
  277. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/config.py +0 -0
  278. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/connectivity.py +0 -0
  279. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/data_sources.py +0 -0
  280. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/database.py +0 -0
  281. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/demo.py +0 -0
  282. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/models.py +0 -0
  283. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/monitoring.py +0 -0
  284. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers.py +0 -0
  285. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_california.py +0 -0
  286. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -0
  287. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -0
  288. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -0
  289. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -0
  290. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -0
  291. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -0
  292. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/seed_database.py +0 -0
  293. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/supabase_functions.py +0 -0
  294. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/politician_trading/workflow.py +0 -0
  295. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/registry/registry.py +0 -0
  296. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/repo/repo.py +0 -0
  297. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  298. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/scheduler/job.py +0 -0
  299. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/scheduler/monitor.py +0 -0
  300. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/scheduler/persistence.py +0 -0
  301. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  302. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/sync/test_cmd.py +0 -0
  303. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  304. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli/workflow/workflow.py +0 -0
  305. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  306. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  307. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/src/mcli_framework.egg-info/top_level.txt +0 -0
  308. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_all_commands.py +0 -0
  309. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_app_logs_cmd.py +0 -0
  310. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_app_redis_cmd.py +0 -0
  311. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_chat_cmd.py +0 -0
  312. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_logs_cmd.py +0 -0
  313. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_main_app.py +0 -0
  314. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_model_cmd.py +0 -0
  315. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_self_cmd.py +0 -0
  316. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_self_cmd_commands.py +0 -0
  317. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_self_cmd_plugins.py +0 -0
  318. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_self_cmd_utilities.py +0 -0
  319. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_workflow_file.py +0 -0
  320. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_workflow_gcloud.py +0 -0
  321. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/cli/test_workflow_registry.py +0 -0
  322. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/conftest.py +0 -0
  323. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/demo_generate_graph.py +0 -0
  324. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/demo_hierarchical_transform.py +0 -0
  325. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/e2e/test_complete_workflows.py +0 -0
  326. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/e2e/test_model_workflow.py +0 -0
  327. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/e2e/test_new_user_workflow.py +0 -0
  328. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/e2e/test_update_workflow.py +0 -0
  329. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/fixtures/chat_fixtures.py +0 -0
  330. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/fixtures/cli_fixtures.py +0 -0
  331. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/fixtures/data_fixtures.py +0 -0
  332. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/fixtures/db_fixtures.py +0 -0
  333. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/fixtures/model_fixtures.py +0 -0
  334. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_agent.py +0 -0
  335. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_california_scraper.py +0 -0
  336. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_chat_client.py +0 -0
  337. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_chat_system.py +0 -0
  338. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_congress_scraper.py +0 -0
  339. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_daemon_client.py +0 -0
  340. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_daemon_server.py +0 -0
  341. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
  342. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_flask_webapp.py +0 -0
  343. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_gcloud_services.py +0 -0
  344. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_lsh_client.py +0 -0
  345. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_lsh_service.py +0 -0
  346. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_ml_auth.py +0 -0
  347. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_ml_data_pipeline.py +0 -0
  348. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_ml_models.py +0 -0
  349. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_ml_pipeline.py +0 -0
  350. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_module_imports.py +0 -0
  351. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_oi_service.py +0 -0
  352. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_politician_trading.py +0 -0
  353. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_repo_operations.py +0 -0
  354. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_scheduler_integration.py +0 -0
  355. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_service_registry.py +0 -0
  356. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_supabase_live_connection.py +0 -0
  357. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_uk_scraper.py +0 -0
  358. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_us_states_scraper.py +0 -0
  359. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_video_processing.py +0 -0
  360. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_wakatime_api.py +0 -0
  361. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_webapp_full.py +0 -0
  362. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_workflow.py +0 -0
  363. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/integration/test_workflow_commands.py +0 -0
  364. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/run_tests.py +0 -0
  365. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/test_harness.py +0 -0
  366. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_api_utils.py +0 -0
  367. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_async_process_manager.py +0 -0
  368. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_auth_modules.py +0 -0
  369. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_bug_fixes.py +0 -0
  370. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_config.py +0 -0
  371. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_custom_commands.py +0 -0
  372. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_daemon_api.py +0 -0
  373. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_dashboard_components.py +0 -0
  374. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_dashboard_functions.py +0 -0
  375. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_dashboard_pages.py +0 -0
  376. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_dependencies.py +0 -0
  377. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_erd_generation.py +0 -0
  378. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_erd_generic.py +0 -0
  379. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_erd_imports.py +0 -0
  380. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_git_commit_workflow.py +0 -0
  381. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_lib_auth.py +0 -0
  382. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_lib_files.py +0 -0
  383. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_lib_utils.py +0 -0
  384. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_logger.py +0 -0
  385. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_ml_preprocessing.py +0 -0
  386. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_paths.py +0 -0
  387. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_prediction_engine.py +0 -0
  388. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_regression.py +0 -0
  389. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_scheduler.py +0 -0
  390. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_scheduler_cron_parser.py +0 -0
  391. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_scheduler_job.py +0 -0
  392. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_scheduler_monitor.py +0 -0
  393. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_scheduler_persistence.py +0 -0
  394. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_self_update.py +0 -0
  395. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_supabase_connection.py +0 -0
  396. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_supabase_pagination.py +0 -0
  397. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_toml_utils.py +0 -0
  398. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_trading_imports.py +0 -0
  399. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_ui_rich.py +0 -0
  400. {mcli_framework-7.4.0 → mcli_framework-7.5.0}/tests/unit/test_uv_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.4.0
3
+ Version: 7.5.0
4
4
  Summary: 🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -118,8 +118,6 @@ Requires-Dist: altair<5.0.0,>=4.2.1
118
118
  Requires-Dist: streamlit-autorefresh>=1.0.1
119
119
  Requires-Dist: typer>=0.9.0
120
120
  Requires-Dist: flask<3.0.0,>=2.3.0
121
- Requires-Dist: alpaca-trade-api>=0.26
122
- Requires-Dist: alpaca>=1.0.0
123
121
  Provides-Extra: gpu
124
122
  Requires-Dist: cupy-cuda12x>=12.3.0; extra == "gpu"
125
123
  Requires-Dist: nvidia-ml-py>=12.535.0; extra == "gpu"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "7.4.0"
3
+ version = "7.5.0"
4
4
  description = "🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -132,8 +132,6 @@ dependencies = [
132
132
  "typer>=0.9.0",
133
133
  # Web framework
134
134
  "flask>=2.3.0,<3.0.0",
135
- "alpaca-trade-api>=0.26",
136
- "alpaca>=1.0.0",
137
135
  ]
138
136
 
139
137
  [project.urls]
@@ -0,0 +1,30 @@
1
+ import json
2
+
3
+ from mcli.lib.config import DEV_SECRETS_ROOT
4
+ from mcli.lib.fs import get_absolute_path
5
+ from mcli.lib.logger.logger import get_logger
6
+
7
+ from .credential_manager import CloudProviderManager
8
+
9
+ logger = get_logger(__name__)
10
+
11
+
12
+ class AwsManager(CloudProviderManager):
13
+ """
14
+ AWS credential manager for handling authentication tokens and storage credentials.
15
+ Inherits common token management from CloudProviderManager.
16
+ """
17
+
18
+ @staticmethod
19
+ def persist_aws_storage_creds(access_key, secret_key):
20
+ """
21
+ Persist AWS storage credentials to file.
22
+
23
+ Args:
24
+ access_key (str): AWS access key.
25
+ secret_key (str): AWS secret key.
26
+ """
27
+ filepath = get_absolute_path(DEV_SECRETS_ROOT + "aws/aws.json")
28
+ with open(filepath, "w") as f:
29
+ json.dump({"access_key": access_key, "secret_key": secret_key}, f)
30
+ logger.info("Aws secrets have been persisted into:", filepath)
@@ -0,0 +1,36 @@
1
+ import json
2
+
3
+ from mcli.lib.config import DEV_SECRETS_ROOT
4
+ from mcli.lib.fs import get_absolute_path
5
+ from mcli.lib.logger.logger import get_logger
6
+
7
+ from .credential_manager import CloudProviderManager
8
+
9
+ logger = get_logger(__name__)
10
+
11
+
12
+ class AzureManager(CloudProviderManager):
13
+ """
14
+ Azure credential manager for handling authentication tokens and storage credentials.
15
+ Inherits common token management from CloudProviderManager.
16
+ """
17
+
18
+ @staticmethod
19
+ def persist_azure_storage_creds(account_name, access_key):
20
+ """
21
+ Persist Azure storage credentials to file.
22
+
23
+ Args:
24
+ account_name (str): Azure storage account name.
25
+ access_key (str): Azure storage access key.
26
+ """
27
+ filepath = get_absolute_path(DEV_SECRETS_ROOT + "azure/azure.json")
28
+ with open(filepath, "w") as f:
29
+ json.dump(
30
+ {
31
+ "storage_account_name": account_name,
32
+ "storage_access_key": access_key,
33
+ },
34
+ f,
35
+ )
36
+ logger.info("Azure secrets have been persisted into:", filepath)
@@ -189,4 +189,73 @@ class CredentialManager:
189
189
  return key_b64
190
190
 
191
191
 
192
- __all__ = ["CredentialManager"]
192
+ class CloudProviderManager(CredentialManager):
193
+ """
194
+ Abstract base class for cloud provider credential managers.
195
+ Provides common token and URL management functionality for AWS, GCP, and Azure.
196
+ """
197
+
198
+ def __init__(self, app_name: str = "mcli"):
199
+ """
200
+ Initialize CloudProviderManager with token configuration filename.
201
+
202
+ Args:
203
+ app_name (str, optional): Name of the application. Defaults to "mcli".
204
+ """
205
+ super().__init__(app_name, config_filename="mcli.token.config.json")
206
+
207
+ def save_token(self, token: str):
208
+ """
209
+ Save authentication token to configuration.
210
+
211
+ Args:
212
+ token (str): Authentication token to save.
213
+
214
+ Raises:
215
+ ValueError: If token is empty or not a string.
216
+ """
217
+ if not token or not isinstance(token, str):
218
+ raise ValueError("Token must be a non-empty string")
219
+
220
+ try:
221
+ self.update_config("auth_token", token)
222
+ except Exception as e:
223
+ raise Exception(f"Failed to save token: {str(e)}")
224
+
225
+ def get_token(self) -> Optional[str]:
226
+ """
227
+ Retrieve the stored authentication token.
228
+
229
+ Returns:
230
+ Optional[str]: Stored authentication token or None if not found.
231
+ """
232
+ try:
233
+ logger.info("getting token")
234
+ return self.get_config_value("auth_token")
235
+ except Exception as e:
236
+ logger.info(f"Warning: Error retrieving token: {str(e)}")
237
+ return None
238
+
239
+ def clear_token(self):
240
+ """
241
+ Clear the stored authentication token.
242
+ Uses the base class clear_config method.
243
+ """
244
+ self.clear_config()
245
+
246
+ def get_url(self) -> Optional[str]:
247
+ """
248
+ Retrieve environment URL from configuration.
249
+
250
+ Returns:
251
+ Optional[str]: Stored environment URL or None if not found.
252
+ """
253
+ try:
254
+ logger.info("getting url")
255
+ return self.get_config_value("env_url")
256
+ except Exception as e:
257
+ logger.info(f"Warning: Error retrieving environment URL: {str(e)}")
258
+ return None
259
+
260
+
261
+ __all__ = ["CredentialManager", "CloudProviderManager"]
@@ -0,0 +1,40 @@
1
+ import json
2
+
3
+ from mcli.lib.config import DEV_SECRETS_ROOT
4
+ from mcli.lib.fs import get_absolute_path
5
+ from mcli.lib.logger.logger import get_logger
6
+
7
+ from .credential_manager import CloudProviderManager
8
+
9
+ logger = get_logger(__name__)
10
+
11
+
12
+ class GcpManager(CloudProviderManager):
13
+ """
14
+ GCP credential manager for handling authentication tokens and storage credentials.
15
+ Inherits common token management from CloudProviderManager.
16
+ """
17
+
18
+ @staticmethod
19
+ def persist_gcp_storage_creds(account_id, account_email, access_key, secret_key):
20
+ """
21
+ Persist GCP storage credentials to file.
22
+
23
+ Args:
24
+ account_id (str): GCP account ID.
25
+ account_email (str): GCP account email.
26
+ access_key (str): GCP access key.
27
+ secret_key (str): GCP secret key.
28
+ """
29
+ filepath = get_absolute_path(DEV_SECRETS_ROOT + "gcp/gcp.json")
30
+ with open(filepath, "w") as f:
31
+ json.dump(
32
+ {
33
+ "accountId": account_id,
34
+ "accountEmail": account_email,
35
+ "accessKey": access_key,
36
+ "secretKey": secret_key,
37
+ },
38
+ f,
39
+ )
40
+ logger.info("Gcp secrets have been persisted into:", filepath)
@@ -25,47 +25,14 @@ from mcli.ml.database.models import (
25
25
  User,
26
26
  )
27
27
  from mcli.ml.database.session import SessionLocal
28
+ from mcli.ml.dashboard.common import setup_page_config
29
+ from mcli.ml.dashboard.styles import apply_dashboard_styles
28
30
 
29
- # Page config
30
- st.set_page_config(
31
- page_title="MCLI ML Dashboard", page_icon="📊", layout="wide", initial_sidebar_state="expanded"
32
- )
31
+ # Page config - must be first
32
+ setup_page_config(page_title="MCLI ML Dashboard")
33
33
 
34
- # Custom CSS
35
- st.markdown(
36
- """
37
- <style>
38
- .metric-card {
39
- background-color: #f0f2f6;
40
- padding: 1rem;
41
- border-radius: 0.5rem;
42
- border-left: 4px solid #1f77b4;
43
- }
44
- .alert-success {
45
- background-color: #d4edda;
46
- border: 1px solid #c3e6cb;
47
- color: #155724;
48
- padding: 0.75rem;
49
- border-radius: 0.25rem;
50
- }
51
- .alert-warning {
52
- background-color: #fff3cd;
53
- border: 1px solid #ffeaa7;
54
- color: #856404;
55
- padding: 0.75rem;
56
- border-radius: 0.25rem;
57
- }
58
- .alert-danger {
59
- background-color: #f8d7da;
60
- border: 1px solid #f5c6cb;
61
- color: #721c24;
62
- padding: 0.75rem;
63
- border-radius: 0.25rem;
64
- }
65
- </style>
66
- """,
67
- unsafe_allow_html=True,
68
- )
34
+ # Apply standard dashboard styles
35
+ apply_dashboard_styles()
69
36
 
70
37
 
71
38
  @st.cache_data(ttl=30)
@@ -6,48 +6,37 @@ import logging
6
6
  import os
7
7
  import pickle
8
8
  import subprocess
9
- import warnings
10
9
  from datetime import datetime, timedelta
11
10
  from pathlib import Path
12
11
  from typing import List
13
12
 
14
13
  import numpy as np
15
14
 
16
- # Suppress Streamlit warnings when used outside runtime context
17
- warnings.filterwarnings("ignore", message=".*missing ScriptRunContext.*")
18
- warnings.filterwarnings("ignore", message=".*No runtime found.*")
19
- warnings.filterwarnings("ignore", message=".*Session state does not function.*")
20
- warnings.filterwarnings("ignore", message=".*to view this Streamlit app.*")
15
+ # Suppress warnings before other imports
16
+ from mcli.ml.dashboard.common import suppress_streamlit_warnings
21
17
 
22
- # Suppress Plotly deprecation warnings
23
- warnings.filterwarnings("ignore", message=".*keyword arguments have been deprecated.*")
24
- warnings.filterwarnings("ignore", message=".*Use `config` instead.*")
25
-
26
- # Suppress media file errors
27
- warnings.filterwarnings("ignore", message=".*MediaFileHandler.*")
28
- warnings.filterwarnings("ignore", message=".*Missing file.*")
29
- warnings.filterwarnings("ignore", message=".*Bad filename.*")
30
-
31
- # Suppress additional warnings
32
- warnings.filterwarnings("ignore", category=UserWarning)
33
- warnings.filterwarnings("ignore", category=FutureWarning)
18
+ suppress_streamlit_warnings()
34
19
 
35
20
  logger = logging.getLogger(__name__)
36
21
 
37
- # Suppress specific Streamlit media file errors in logging
38
- logging.getLogger("streamlit.runtime.media_file_storage").setLevel(logging.ERROR)
39
- logging.getLogger("streamlit.web.server.media_file_handler").setLevel(logging.ERROR)
40
22
  import pandas as pd
41
23
  import plotly.express as px
42
24
  import plotly.graph_objects as go
43
25
  import requests
44
26
  import streamlit as st
45
- from dotenv import load_dotenv
46
27
  from plotly.subplots import make_subplots
47
- from supabase import Client, create_client
28
+ from supabase import Client
29
+
30
+ # Import common dashboard utilities
31
+ from mcli.ml.dashboard.common import (
32
+ get_supabase_client,
33
+ load_environment_variables,
34
+ setup_page_config,
35
+ )
36
+ from mcli.ml.dashboard.styles import apply_dashboard_styles
48
37
 
49
- # Load environment variables from .env file
50
- load_dotenv()
38
+ # Load environment variables
39
+ load_environment_variables()
51
40
 
52
41
  # Import streamlit-extras utilities
53
42
  try:
@@ -111,7 +100,7 @@ show_debug_dependencies = None
111
100
 
112
101
  # Import Overview page
113
102
  try:
114
- from mcli.ml.dashboard.pages.overview import show_overview
103
+ from mcli.ml.dashboard.overview import show_overview
115
104
  HAS_OVERVIEW_PAGE = True
116
105
  except (ImportError, KeyError, ModuleNotFoundError) as e:
117
106
  st.warning(f"Overview page not available: {e}")
@@ -217,24 +206,19 @@ try:
217
206
  except (ImportError, KeyError, ModuleNotFoundError) as e:
218
207
  st.warning(f"Debug Dependencies page not available: {e}")
219
208
 
220
- # Page config
221
- st.set_page_config(
209
+ # Page config - must be before other st commands
210
+ setup_page_config(
222
211
  page_title="Politician Trading Tracker - MCLI",
223
- page_icon="📊",
224
- layout="wide",
225
- initial_sidebar_state="expanded",
212
+ page_icon="📊"
226
213
  )
227
214
 
228
- # Custom CSS
215
+ # Apply standard dashboard styles (includes metric-card, alert boxes)
216
+ apply_dashboard_styles()
217
+
218
+ # Add integrated dashboard-specific CSS
229
219
  st.markdown(
230
220
  """
231
221
  <style>
232
- .metric-card {
233
- background-color: #f0f2f6;
234
- padding: 1rem;
235
- border-radius: 0.5rem;
236
- border-left: 4px solid #1f77b4;
237
- }
238
222
  .success-box {
239
223
  background-color: #d4edda;
240
224
  border: 1px solid #c3e6cb;
@@ -254,69 +238,7 @@ st.markdown(
254
238
  unsafe_allow_html=True,
255
239
  )
256
240
 
257
-
258
- @st.cache_resource
259
- def get_supabase_client() -> Client:
260
- """Get Supabase client with Streamlit Cloud secrets support"""
261
- # Try Streamlit secrets first (for Streamlit Cloud), then fall back to environment variables (for local dev)
262
- try:
263
- url = st.secrets.get("SUPABASE_URL", "")
264
- key = st.secrets.get("SUPABASE_KEY", "") or st.secrets.get("SUPABASE_SERVICE_ROLE_KEY", "")
265
- except (AttributeError, FileNotFoundError):
266
- # Secrets not available, try environment variables
267
- url = os.getenv("SUPABASE_URL", "")
268
- key = os.getenv("SUPABASE_KEY", "") or os.getenv("SUPABASE_SERVICE_ROLE_KEY", "")
269
-
270
- if not url or not key:
271
- st.error(
272
- "❌ Supabase credentials not configured"
273
- )
274
- with st.expander("🔧 Configuration Required"):
275
- st.markdown("""
276
- **Missing Supabase credentials:**
277
- - `SUPABASE_URL`: {}
278
- - `SUPABASE_KEY`: {}
279
-
280
- **For Streamlit Cloud:**
281
- 1. Go to https://share.streamlit.io
282
- 2. Select your app → Settings → Secrets
283
- 3. Add:
284
- ```toml
285
- SUPABASE_URL = "https://your-project.supabase.co"
286
- SUPABASE_KEY = "your-anon-key"
287
- ```
288
-
289
- **For local development:**
290
- 1. Create `.streamlit/secrets.toml` file
291
- 2. Add the same credentials as above
292
- 3. Restart the dashboard
293
-
294
- **Using demo data** until configured.
295
- """.format(
296
- "✅ Set" if url else "❌ Missing",
297
- "✅ Set" if key else "❌ Missing"
298
- ))
299
- return None
300
-
301
- try:
302
- client = create_client(url, key)
303
- # Test connection with a simple query
304
- try:
305
- test_result = client.table("politicians").select("id").limit(1).execute()
306
- logger.info(f"✅ Supabase connection successful (URL: {url[:30]}...)")
307
- return client
308
- except Exception as conn_error:
309
- st.error(f"❌ Supabase connection failed: {conn_error}")
310
- with st.expander("🔍 Connection Details"):
311
- st.write(f"**URL:** {url[:30]}...")
312
- st.write(f"**Error:** {str(conn_error)}")
313
- st.write("**Using demo data** until connection is restored.")
314
- logger.error(f"Supabase connection test failed: {conn_error}")
315
- return None
316
- except Exception as e:
317
- st.error(f"❌ Failed to create Supabase client: {e}")
318
- logger.error(f"Failed to create Supabase client: {e}")
319
- return None
241
+ # Note: get_supabase_client is now imported from common.py
320
242
 
321
243
 
322
244
  @st.cache_data(ttl=300) # Cache for 5 minutes
@@ -1,75 +1,26 @@
1
1
  """Streamlit dashboard for ML system monitoring - Supabase version"""
2
2
 
3
3
  import asyncio
4
- import os
5
4
  from datetime import datetime, timedelta
6
- from pathlib import Path
7
5
 
8
6
  import numpy as np
9
7
  import pandas as pd
10
8
  import plotly.express as px
11
9
  import plotly.graph_objects as go
12
10
  import streamlit as st
13
- from dotenv import load_dotenv
14
11
  from plotly.subplots import make_subplots
15
- from supabase import Client, create_client
12
+
13
+ from mcli.ml.dashboard.common import get_supabase_client, load_environment_variables, setup_page_config
14
+ from mcli.ml.dashboard.styles import apply_dashboard_styles
16
15
 
17
16
  # Page config must come first
18
- st.set_page_config(
19
- page_title="MCLI ML Dashboard", page_icon="📊", layout="wide", initial_sidebar_state="expanded"
20
- )
21
-
22
- # Load environment variables from supabase/.env.local
23
- env_path = Path(__file__).parent.parent.parent.parent.parent / "supabase" / ".env.local"
24
- if env_path.exists():
25
- load_dotenv(env_path)
26
-
27
- # Custom CSS
28
- st.markdown(
29
- """
30
- <style>
31
- .metric-card {
32
- background-color: #f0f2f6;
33
- padding: 1rem;
34
- border-radius: 0.5rem;
35
- border-left: 4px solid #1f77b4;
36
- }
37
- </style>
38
- """,
39
- unsafe_allow_html=True,
40
- )
17
+ setup_page_config(page_title="MCLI ML Dashboard")
41
18
 
19
+ # Load environment variables
20
+ load_environment_variables()
42
21
 
43
- @st.cache_resource
44
- def get_supabase_client() -> Client:
45
- """Get Supabase client with Streamlit Cloud secrets support"""
46
- # Try Streamlit secrets first (for Streamlit Cloud), then fall back to environment variables (for local dev)
47
- try:
48
- url = st.secrets.get("SUPABASE_URL", "")
49
- key = st.secrets.get("SUPABASE_KEY", "") or st.secrets.get("SUPABASE_SERVICE_ROLE_KEY", "")
50
- except (AttributeError, FileNotFoundError):
51
- # Secrets not available, try environment variables
52
- url = os.getenv("SUPABASE_URL", "")
53
- key = os.getenv("SUPABASE_KEY", "") or os.getenv("SUPABASE_SERVICE_ROLE_KEY", "")
54
-
55
- if not url or not key:
56
- st.warning(
57
- "⚠️ Supabase credentials not found. Configure SUPABASE_URL and SUPABASE_KEY in Streamlit Cloud secrets or environment variables."
58
- )
59
- return None
60
-
61
- try:
62
- client = create_client(url, key)
63
- # Test connection
64
- try:
65
- client.table("politicians").select("id").limit(1).execute()
66
- return client
67
- except Exception as e:
68
- st.error(f"❌ Supabase connection test failed: {e}")
69
- return None
70
- except Exception as e:
71
- st.error(f"❌ Failed to create Supabase client: {e}")
72
- return None
22
+ # Apply standard dashboard styles
23
+ apply_dashboard_styles()
73
24
 
74
25
 
75
26
  @st.cache_data(ttl=30)
@@ -12,24 +12,22 @@ from scipy import stats
12
12
 
13
13
  from mcli.ml.database.models import Experiment, Model, ModelStatus
14
14
  from mcli.ml.database.session import SessionLocal
15
+ from mcli.ml.dashboard.common import setup_page_config
16
+ from mcli.ml.dashboard.styles import apply_dashboard_styles
15
17
 
16
- st.set_page_config(
18
+ # Page config - must be first
19
+ setup_page_config(
17
20
  page_title="MCLI Training Dashboard",
18
- page_icon="🔬",
19
- layout="wide",
20
- initial_sidebar_state="expanded",
21
+ page_icon="🔬"
21
22
  )
22
23
 
23
- # Custom CSS
24
+ # Apply standard dashboard styles (includes metric-card)
25
+ apply_dashboard_styles()
26
+
27
+ # Add training-specific CSS
24
28
  st.markdown(
25
29
  """
26
30
  <style>
27
- .metric-card {
28
- background-color: #f0f2f6;
29
- padding: 1rem;
30
- border-radius: 0.5rem;
31
- border-left: 4px solid #1f77b4;
32
- }
33
31
  .model-card {
34
32
  background-color: #ffffff;
35
33
  padding: 1.5rem;