mcli-framework 8.0.42__tar.gz → 8.0.44__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 (489) hide show
  1. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/PKG-INFO +1 -98
  2. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/pyproject.toml +4 -158
  3. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/new_cmd.py +33 -17
  4. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/messages.py +7 -1
  5. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pyenv/deps.py +1 -1
  6. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pyenv/manager.py +21 -14
  7. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli_framework.egg-info/PKG-INFO +1 -98
  8. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli_framework.egg-info/SOURCES.txt +0 -130
  9. mcli_framework-8.0.44/src/mcli_framework.egg-info/entry_points.txt +2 -0
  10. mcli_framework-8.0.44/src/mcli_framework.egg-info/requires.txt +51 -0
  11. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_module_imports.py +0 -11
  12. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_new_cmd.py +57 -0
  13. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_pyenv.py +62 -0
  14. mcli_framework-8.0.42/src/mcli/ml/__init__.py +0 -16
  15. mcli_framework-8.0.42/src/mcli/ml/api/__init__.py +0 -30
  16. mcli_framework-8.0.42/src/mcli/ml/api/app.py +0 -202
  17. mcli_framework-8.0.42/src/mcli/ml/api/middleware.py +0 -216
  18. mcli_framework-8.0.42/src/mcli/ml/api/routers/__init__.py +0 -27
  19. mcli_framework-8.0.42/src/mcli/ml/api/routers/admin_router.py +0 -14
  20. mcli_framework-8.0.42/src/mcli/ml/api/routers/auth_router.py +0 -219
  21. mcli_framework-8.0.42/src/mcli/ml/api/routers/backtest_router.py +0 -14
  22. mcli_framework-8.0.42/src/mcli/ml/api/routers/data_router.py +0 -14
  23. mcli_framework-8.0.42/src/mcli/ml/api/routers/model_router.py +0 -262
  24. mcli_framework-8.0.42/src/mcli/ml/api/routers/monitoring_router.py +0 -14
  25. mcli_framework-8.0.42/src/mcli/ml/api/routers/portfolio_router.py +0 -14
  26. mcli_framework-8.0.42/src/mcli/ml/api/routers/prediction_router.py +0 -263
  27. mcli_framework-8.0.42/src/mcli/ml/api/routers/trade_router.py +0 -16
  28. mcli_framework-8.0.42/src/mcli/ml/api/routers/websocket_router.py +0 -78
  29. mcli_framework-8.0.42/src/mcli/ml/api/schemas.py +0 -72
  30. mcli_framework-8.0.42/src/mcli/ml/auth/__init__.py +0 -41
  31. mcli_framework-8.0.42/src/mcli/ml/auth/auth_manager.py +0 -394
  32. mcli_framework-8.0.42/src/mcli/ml/auth/models.py +0 -169
  33. mcli_framework-8.0.42/src/mcli/ml/auth/permissions.py +0 -295
  34. mcli_framework-8.0.42/src/mcli/ml/backtesting/__init__.py +0 -27
  35. mcli_framework-8.0.42/src/mcli/ml/backtesting/backtest_engine.py +0 -522
  36. mcli_framework-8.0.42/src/mcli/ml/backtesting/performance_metrics.py +0 -425
  37. mcli_framework-8.0.42/src/mcli/ml/backtesting/run.py +0 -123
  38. mcli_framework-8.0.42/src/mcli/ml/cache.py +0 -393
  39. mcli_framework-8.0.42/src/mcli/ml/cli/__init__.py +0 -5
  40. mcli_framework-8.0.42/src/mcli/ml/cli/main.py +0 -409
  41. mcli_framework-8.0.42/src/mcli/ml/config/__init__.py +0 -33
  42. mcli_framework-8.0.42/src/mcli/ml/config/settings.py +0 -410
  43. mcli_framework-8.0.42/src/mcli/ml/configs/__init__.py +0 -16
  44. mcli_framework-8.0.42/src/mcli/ml/configs/dvc_config.py +0 -229
  45. mcli_framework-8.0.42/src/mcli/ml/configs/mlflow_config.py +0 -130
  46. mcli_framework-8.0.42/src/mcli/ml/configs/mlops_manager.py +0 -291
  47. mcli_framework-8.0.42/src/mcli/ml/dashboard/__init__.py +0 -12
  48. mcli_framework-8.0.42/src/mcli/ml/dashboard/app.py +0 -481
  49. mcli_framework-8.0.42/src/mcli/ml/dashboard/app_integrated.py +0 -3026
  50. mcli_framework-8.0.42/src/mcli/ml/dashboard/app_supabase.py +0 -651
  51. mcli_framework-8.0.42/src/mcli/ml/dashboard/app_training.py +0 -613
  52. mcli_framework-8.0.42/src/mcli/ml/dashboard/cli.py +0 -60
  53. mcli_framework-8.0.42/src/mcli/ml/dashboard/common.py +0 -166
  54. mcli_framework-8.0.42/src/mcli/ml/dashboard/components/__init__.py +0 -7
  55. mcli_framework-8.0.42/src/mcli/ml/dashboard/components/charts.py +0 -219
  56. mcli_framework-8.0.42/src/mcli/ml/dashboard/components/metrics.py +0 -105
  57. mcli_framework-8.0.42/src/mcli/ml/dashboard/components/tables.py +0 -223
  58. mcli_framework-8.0.42/src/mcli/ml/dashboard/overview.py +0 -402
  59. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/__init__.py +0 -6
  60. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/cicd.py +0 -426
  61. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -413
  62. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -844
  63. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -550
  64. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -1020
  65. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -1100
  66. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -452
  67. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/trading.py +0 -835
  68. mcli_framework-8.0.42/src/mcli/ml/dashboard/pages/workflows.py +0 -568
  69. mcli_framework-8.0.42/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -288
  70. mcli_framework-8.0.42/src/mcli/ml/dashboard/styles.py +0 -55
  71. mcli_framework-8.0.42/src/mcli/ml/dashboard/utils.py +0 -192
  72. mcli_framework-8.0.42/src/mcli/ml/dashboard/warning_suppression.py +0 -36
  73. mcli_framework-8.0.42/src/mcli/ml/data_ingestion/__init__.py +0 -29
  74. mcli_framework-8.0.42/src/mcli/ml/data_ingestion/api_connectors.py +0 -466
  75. mcli_framework-8.0.42/src/mcli/ml/data_ingestion/data_pipeline.py +0 -559
  76. mcli_framework-8.0.42/src/mcli/ml/data_ingestion/stream_processor.py +0 -501
  77. mcli_framework-8.0.42/src/mcli/ml/database/__init__.py +0 -40
  78. mcli_framework-8.0.42/src/mcli/ml/database/migrations/env.py +0 -95
  79. mcli_framework-8.0.42/src/mcli/ml/database/models.py +0 -698
  80. mcli_framework-8.0.42/src/mcli/ml/database/session.py +0 -365
  81. mcli_framework-8.0.42/src/mcli/ml/experimentation/__init__.py +0 -29
  82. mcli_framework-8.0.42/src/mcli/ml/experimentation/ab_testing.py +0 -894
  83. mcli_framework-8.0.42/src/mcli/ml/features/__init__.py +0 -39
  84. mcli_framework-8.0.42/src/mcli/ml/features/ensemble_features.py +0 -603
  85. mcli_framework-8.0.42/src/mcli/ml/features/recommendation_engine.py +0 -810
  86. mcli_framework-8.0.42/src/mcli/ml/features/stock_features.py +0 -571
  87. mcli_framework-8.0.42/src/mcli/ml/features/test_feature_engineering.py +0 -346
  88. mcli_framework-8.0.42/src/mcli/ml/logging.py +0 -80
  89. mcli_framework-8.0.42/src/mcli/ml/mlops/__init__.py +0 -19
  90. mcli_framework-8.0.42/src/mcli/ml/mlops/data_versioning.py +0 -510
  91. mcli_framework-8.0.42/src/mcli/ml/mlops/experiment_tracker.py +0 -385
  92. mcli_framework-8.0.42/src/mcli/ml/mlops/model_serving.py +0 -475
  93. mcli_framework-8.0.42/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -658
  94. mcli_framework-8.0.42/src/mcli/ml/models/__init__.py +0 -89
  95. mcli_framework-8.0.42/src/mcli/ml/models/base_models.py +0 -325
  96. mcli_framework-8.0.42/src/mcli/ml/models/ensemble_models.py +0 -677
  97. mcli_framework-8.0.42/src/mcli/ml/models/recommendation_models.py +0 -475
  98. mcli_framework-8.0.42/src/mcli/ml/models/test_models.py +0 -489
  99. mcli_framework-8.0.42/src/mcli/ml/monitoring/__init__.py +0 -25
  100. mcli_framework-8.0.42/src/mcli/ml/monitoring/drift_detection.py +0 -693
  101. mcli_framework-8.0.42/src/mcli/ml/monitoring/metrics.py +0 -33
  102. mcli_framework-8.0.42/src/mcli/ml/optimization/__init__.py +0 -27
  103. mcli_framework-8.0.42/src/mcli/ml/optimization/optimize.py +0 -52
  104. mcli_framework-8.0.42/src/mcli/ml/optimization/portfolio_optimizer.py +0 -872
  105. mcli_framework-8.0.42/src/mcli/ml/predictions/__init__.py +0 -5
  106. mcli_framework-8.0.42/src/mcli/ml/predictions/monte_carlo.py +0 -414
  107. mcli_framework-8.0.42/src/mcli/ml/predictions/prediction_engine.py +0 -233
  108. mcli_framework-8.0.42/src/mcli/ml/preprocessing/__init__.py +0 -33
  109. mcli_framework-8.0.42/src/mcli/ml/preprocessing/data_cleaners.py +0 -451
  110. mcli_framework-8.0.42/src/mcli/ml/preprocessing/feature_extractors.py +0 -489
  111. mcli_framework-8.0.42/src/mcli/ml/preprocessing/ml_pipeline.py +0 -423
  112. mcli_framework-8.0.42/src/mcli/ml/preprocessing/test_preprocessing.py +0 -293
  113. mcli_framework-8.0.42/src/mcli/ml/scripts/__init__.py +0 -1
  114. mcli_framework-8.0.42/src/mcli/ml/scripts/populate_sample_data.py +0 -216
  115. mcli_framework-8.0.42/src/mcli/ml/serving/__init__.py +0 -1
  116. mcli_framework-8.0.42/src/mcli/ml/serving/serve.py +0 -61
  117. mcli_framework-8.0.42/src/mcli/ml/tasks.py +0 -399
  118. mcli_framework-8.0.42/src/mcli/ml/tests/test_integration.py +0 -438
  119. mcli_framework-8.0.42/src/mcli/ml/tests/test_training_dashboard.py +0 -414
  120. mcli_framework-8.0.42/src/mcli/ml/trading/__init__.py +0 -63
  121. mcli_framework-8.0.42/src/mcli/ml/trading/alpaca_client.py +0 -415
  122. mcli_framework-8.0.42/src/mcli/ml/trading/migrations.py +0 -200
  123. mcli_framework-8.0.42/src/mcli/ml/trading/models.py +0 -434
  124. mcli_framework-8.0.42/src/mcli/ml/trading/paper_trading.py +0 -347
  125. mcli_framework-8.0.42/src/mcli/ml/trading/risk_management.py +0 -390
  126. mcli_framework-8.0.42/src/mcli/ml/trading/trading_service.py +0 -522
  127. mcli_framework-8.0.42/src/mcli/ml/training/__init__.py +0 -7
  128. mcli_framework-8.0.42/src/mcli/ml/training/train.py +0 -79
  129. mcli_framework-8.0.42/src/mcli/ml/training/train_model.py +0 -567
  130. mcli_framework-8.0.42/src/mcli/workflow/dashboard/__init__.py +0 -5
  131. mcli_framework-8.0.42/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -179
  132. mcli_framework-8.0.42/src/mcli_framework.egg-info/entry_points.txt +0 -7
  133. mcli_framework-8.0.42/src/mcli_framework.egg-info/requires.txt +0 -163
  134. mcli_framework-8.0.42/tests/integration/test_ml_auth.py +0 -375
  135. mcli_framework-8.0.42/tests/integration/test_ml_models.py +0 -323
  136. mcli_framework-8.0.42/tests/integration/test_ml_pipeline.py +0 -446
  137. mcli_framework-8.0.42/tests/integration/test_supabase_live_connection.py +0 -216
  138. mcli_framework-8.0.42/tests/unit/test_dashboard_components.py +0 -451
  139. mcli_framework-8.0.42/tests/unit/test_dashboard_functions.py +0 -275
  140. mcli_framework-8.0.42/tests/unit/test_dashboard_pages.py +0 -524
  141. mcli_framework-8.0.42/tests/unit/test_ml_preprocessing.py +0 -165
  142. mcli_framework-8.0.42/tests/unit/test_prediction_engine.py +0 -550
  143. mcli_framework-8.0.42/tests/unit/test_supabase_connection.py +0 -297
  144. mcli_framework-8.0.42/tests/unit/test_supabase_pagination.py +0 -235
  145. mcli_framework-8.0.42/tests/unit/test_trading_imports.py +0 -125
  146. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/dependabot.yml +0 -0
  147. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/dependency-review-config.yml +0 -0
  148. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/build.yml +0 -0
  149. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/ci.yml +0 -0
  150. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/codeql.yml +0 -0
  151. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/docs-links.yml +0 -0
  152. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/publish-self-hosted.yml +0 -0
  153. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/publish.yml +0 -0
  154. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/release.yml +0 -0
  155. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/security.yml +0 -0
  156. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/.github/workflows/test.yml +0 -0
  157. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/LICENSE +0 -0
  158. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/MANIFEST.in +0 -0
  159. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/README.md +0 -0
  160. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/llms-full.txt +0 -0
  161. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/llms.txt +0 -0
  162. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/Cargo.toml +0 -0
  163. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/src/command_parser.rs +0 -0
  164. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/src/file_watcher.rs +0 -0
  165. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/src/lib.rs +0 -0
  166. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/src/process_manager.rs +0 -0
  167. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/mcli_rust/src/tfidf.rs +0 -0
  168. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/setup.cfg +0 -0
  169. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/__init__.py +0 -0
  170. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/__init__.py +0 -0
  171. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/commands_cmd.py +0 -0
  172. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/completion_helpers.py +0 -0
  173. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/context_cmd.py +0 -0
  174. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/create_cmd.py +0 -0
  175. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/delete_cmd.py +0 -0
  176. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/edit_cmd.py +0 -0
  177. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/import_cmd.py +0 -0
  178. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/init_cmd.py +0 -0
  179. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/list_cmd.py +0 -0
  180. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/main.py +0 -0
  181. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/migrate_cmd.py +0 -0
  182. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/model/__init__.py +0 -0
  183. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/model/model.py +0 -0
  184. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/model_cmd.py +0 -0
  185. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/mv_cmd.py +0 -0
  186. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/remove_cmd.py +0 -0
  187. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/rm_cmd.py +0 -0
  188. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/search_cmd.py +0 -0
  189. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/services_cmd.py +0 -0
  190. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/sync_cmd.py +0 -0
  191. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/video/__init__.py +0 -0
  192. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/app/video/video.py +0 -0
  193. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/config.toml +0 -0
  194. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/__init__.py +0 -0
  195. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/__init__.py +0 -0
  196. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/api.py +0 -0
  197. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/daemon_client.py +0 -0
  198. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/daemon_client_local.py +0 -0
  199. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/daemon_decorator.py +0 -0
  200. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/api/mcli_decorators.py +0 -0
  201. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/__init__.py +0 -0
  202. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/auth.py +0 -0
  203. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/aws_manager.py +0 -0
  204. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/azure_manager.py +0 -0
  205. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/credential_manager.py +0 -0
  206. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/gcp_manager.py +0 -0
  207. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/key_manager.py +0 -0
  208. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/mcli_manager.py +0 -0
  209. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/token_manager.py +0 -0
  210. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/auth/token_util.py +0 -0
  211. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/config/__init__.py +0 -0
  212. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/config/config.py +0 -0
  213. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/__init__.py +0 -0
  214. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/commands.py +0 -0
  215. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/defaults.py +0 -0
  216. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/env.py +0 -0
  217. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/paths.py +0 -0
  218. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/scripts.py +0 -0
  219. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/constants/storage.py +0 -0
  220. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/custom_commands.py +0 -0
  221. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/discovery/__init__.py +0 -0
  222. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/discovery/command_discovery.py +0 -0
  223. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/erd/__init__.py +0 -0
  224. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/erd/erd.py +0 -0
  225. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/erd/generate_graph.py +0 -0
  226. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/errors.py +0 -0
  227. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/feature_detection.py +0 -0
  228. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/files/__init__.py +0 -0
  229. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/files/files.py +0 -0
  230. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/folder_workflows.py +0 -0
  231. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/fs/__init__.py +0 -0
  232. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/fs/fs.py +0 -0
  233. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/ipfs_sync.py +0 -0
  234. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/ipfs_utils.py +0 -0
  235. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/lib.py +0 -0
  236. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/logger/__init__.py +0 -0
  237. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/logger/correlation.py +0 -0
  238. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/logger/logger.py +0 -0
  239. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/logger/structured.py +0 -0
  240. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/optional_deps.py +0 -0
  241. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/paths.py +0 -0
  242. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/performance/__init__.py +0 -0
  243. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/performance/optimizer.py +0 -0
  244. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/performance/rust_bridge.py +0 -0
  245. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/performance/uvloop_config.py +0 -0
  246. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pickles/__init__.py +0 -0
  247. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pickles/pickles.py +0 -0
  248. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pyenv/__init__.py +0 -0
  249. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/pyenv/venv.py +0 -0
  250. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/script_loader.py +0 -0
  251. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/script_sync.py +0 -0
  252. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/script_watcher.py +0 -0
  253. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  254. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/secrets/__init__.py +0 -0
  255. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/secrets/commands.py +0 -0
  256. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/secrets/manager.py +0 -0
  257. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/secrets/repl.py +0 -0
  258. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/secrets/store.py +0 -0
  259. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/__init__.py +0 -0
  260. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/config.py +0 -0
  261. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/data_pipeline.py +0 -0
  262. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/health.py +0 -0
  263. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/lsh_client.py +0 -0
  264. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/manager.py +0 -0
  265. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/redis_service.py +0 -0
  266. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/registry.py +0 -0
  267. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/state.py +0 -0
  268. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/services/supervisor.py +0 -0
  269. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/shell/__init__.py +0 -0
  270. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/shell/exceptions.py +0 -0
  271. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/shell/shell.py +0 -0
  272. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/templates/__init__.py +0 -0
  273. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/templates/command_templates.py +0 -0
  274. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/toml/__init__.py +0 -0
  275. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/toml/toml.py +0 -0
  276. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/types.py +0 -0
  277. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/ui/styling.py +0 -0
  278. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/ui/visual_effects.py +0 -0
  279. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/watcher/__init__.py +0 -0
  280. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/watcher/watcher.py +0 -0
  281. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/workflow_models.py +0 -0
  282. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/lib/workspace_registry.py +0 -0
  283. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/mygroup/__init__.py +0 -0
  284. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/mygroup/test_cmd.py +0 -0
  285. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/public/__init__.py +0 -0
  286. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/public/commands/__init__.py +0 -0
  287. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/public/oi/oi.py +0 -0
  288. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/public/public.py +0 -0
  289. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/__init__.py +0 -0
  290. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/completion_cmd.py +0 -0
  291. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/env_cmd.py +0 -0
  292. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/health_cmd.py +0 -0
  293. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/ipfs_cmd.py +0 -0
  294. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/logs_cmd.py +0 -0
  295. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/migrate_cmd.py +0 -0
  296. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/self_cmd.py +0 -0
  297. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/store_cmd.py +0 -0
  298. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/test_cmd.py +0 -0
  299. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/self/workflows_cmd.py +0 -0
  300. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/__init__.py +0 -0
  301. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/backends/__init__.py +0 -0
  302. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/backends/ipfs_backend.py +0 -0
  303. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/base.py +0 -0
  304. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/cache.py +0 -0
  305. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/encryption.py +0 -0
  306. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/factory.py +0 -0
  307. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/registry.py +0 -0
  308. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/storage/storacha_cli.py +0 -0
  309. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/__init__.py +0 -0
  310. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/__init__.py +0 -0
  311. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  312. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  313. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/client.py +0 -0
  314. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/daemon.py +0 -0
  315. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  316. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  317. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/process_cli.py +0 -0
  318. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/process_manager.py +0 -0
  319. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  320. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/doc_convert.py +0 -0
  321. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/docker/__init__.py +0 -0
  322. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/docker/docker.py +0 -0
  323. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/file/__init__.py +0 -0
  324. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/gcloud/__init__.py +0 -0
  325. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/gcloud/config.toml +0 -0
  326. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  327. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/git_commit/__init__.py +0 -0
  328. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  329. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/interview/__init__.py +0 -0
  330. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/lsh_integration.py +0 -0
  331. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/client.py +0 -0
  332. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  333. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  334. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  335. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  336. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/model_service.py +0 -0
  337. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  338. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  339. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  340. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  341. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/test_example.py +0 -0
  342. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/test_integration.py +0 -0
  343. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  344. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/__init__.py +0 -0
  345. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/command_loader.py +0 -0
  346. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/converter.py +0 -0
  347. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/executor.py +0 -0
  348. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
  349. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/schema.py +0 -0
  350. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/notebook/validator.py +0 -0
  351. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/openai/openai.py +0 -0
  352. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/registry/__init__.py +0 -0
  353. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/registry/registry.py +0 -0
  354. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/repo/__init__.py +0 -0
  355. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/repo/repo.py +0 -0
  356. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/__init__.py +0 -0
  357. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  358. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/job.py +0 -0
  359. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/models.py +0 -0
  360. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/monitor.py +0 -0
  361. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/persistence.py +0 -0
  362. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  363. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/scheduler/validation.py +0 -0
  364. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/search/__init__.py +0 -0
  365. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/secrets/__init__.py +0 -0
  366. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
  367. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/storage/__init__.py +0 -0
  368. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/storage/storage_cmd.py +0 -0
  369. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/sync/__init__.py +0 -0
  370. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/sync/test_cmd.py +0 -0
  371. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/videos/__init__.py +0 -0
  372. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/wakatime/__init__.py +0 -0
  373. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  374. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli/workflow/workflow.py +0 -0
  375. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  376. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/src/mcli_framework.egg-info/top_level.txt +0 -0
  377. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/__init__.py +0 -0
  378. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_all_commands.py +0 -0
  379. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_app_logs_cmd.py +0 -0
  380. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_app_redis_cmd.py +0 -0
  381. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_logs_cmd.py +0 -0
  382. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_main_app.py +0 -0
  383. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_model_cmd.py +0 -0
  384. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_self_cmd.py +0 -0
  385. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_self_cmd_plugins.py +0 -0
  386. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_self_cmd_utilities.py +0 -0
  387. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_workflow_creation_commands.py +0 -0
  388. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_workflow_file.py +0 -0
  389. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_workflow_gcloud.py +0 -0
  390. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/cli/test_workflow_registry.py +0 -0
  391. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/conftest.py +0 -0
  392. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/e2e/__init__.py +0 -0
  393. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/e2e/test_complete_workflows.py +0 -0
  394. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/e2e/test_model_workflow.py +0 -0
  395. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/e2e/test_new_user_workflow.py +0 -0
  396. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/e2e/test_update_workflow.py +0 -0
  397. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/__init__.py +0 -0
  398. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/chat_fixtures.py +0 -0
  399. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/cli_fixtures.py +0 -0
  400. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/command_fixtures.py +0 -0
  401. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/data_fixtures.py +0 -0
  402. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/db_fixtures.py +0 -0
  403. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/fixtures/model_fixtures.py +0 -0
  404. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/__init__.py +0 -0
  405. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_all_commands_comprehensive.py +0 -0
  406. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_daemon_server.py +0 -0
  407. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_direct_file_execution.py +0 -0
  408. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
  409. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_flask_webapp.py +0 -0
  410. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_folder_workflows_integration.py +0 -0
  411. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_gcloud_services.py +0 -0
  412. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_ml_data_pipeline.py +0 -0
  413. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_notebook_workflows.py +0 -0
  414. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_oi_service.py +0 -0
  415. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_repo_operations.py +0 -0
  416. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_scheduler_integration.py +0 -0
  417. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_service_registry.py +0 -0
  418. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_video_processing.py +0 -0
  419. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_wakatime_api.py +0 -0
  420. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_webapp_full.py +0 -0
  421. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_workflow.py +0 -0
  422. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/integration/test_workflow_commands.py +0 -0
  423. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/performance/__init__.py +0 -0
  424. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/property/__init__.py +0 -0
  425. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/__init__.py +0 -0
  426. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/storage/__init__.py +0 -0
  427. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/storage/test_cache.py +0 -0
  428. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/storage/test_encryption.py +0 -0
  429. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/storage/test_storacha_cli.py +0 -0
  430. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_api_utils.py +0 -0
  431. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_async_process_manager.py +0 -0
  432. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_auth_modules.py +0 -0
  433. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_bug_fixes.py +0 -0
  434. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_command_fixtures.py +0 -0
  435. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_config.py +0 -0
  436. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_correlation_logging.py +0 -0
  437. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_custom_commands.py +0 -0
  438. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_custom_commands_filtering.py +0 -0
  439. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_daemon_api.py +0 -0
  440. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_dependencies.py +0 -0
  441. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_doc_convert_workflow.py +0 -0
  442. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_emulator_workflow.py +0 -0
  443. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_erd_generation.py +0 -0
  444. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_erd_generic.py +0 -0
  445. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_erd_imports.py +0 -0
  446. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_folder_workflows.py +0 -0
  447. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_git_commit_workflow.py +0 -0
  448. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_health_cmd.py +0 -0
  449. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_import_cmd.py +0 -0
  450. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_init_mv_cmd.py +0 -0
  451. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_ipfs_cmd.py +0 -0
  452. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_ipfs_retry.py +0 -0
  453. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_language_suffix.py +0 -0
  454. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_lib_auth.py +0 -0
  455. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_lib_files.py +0 -0
  456. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_lib_utils.py +0 -0
  457. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_logger.py +0 -0
  458. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_notebook_command_loader.py +0 -0
  459. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_notebook_executor.py +0 -0
  460. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_optional_deps.py +0 -0
  461. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_paths.py +0 -0
  462. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_pdf_compress.py +0 -0
  463. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_regression.py +0 -0
  464. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler.py +0 -0
  465. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_cron_parser.py +0 -0
  466. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_job.py +0 -0
  467. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_models.py +0 -0
  468. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_monitor.py +0 -0
  469. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_persistence.py +0 -0
  470. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_scheduler_validation.py +0 -0
  471. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_script_loader_options.py +0 -0
  472. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_security_command_injection.py +0 -0
  473. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_self_update.py +0 -0
  474. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_service_config.py +0 -0
  475. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_service_health.py +0 -0
  476. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_service_manager.py +0 -0
  477. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_service_state.py +0 -0
  478. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_services_cmd.py +0 -0
  479. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_shell_exceptions.py +0 -0
  480. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_shell_functions.py +0 -0
  481. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_shell_security.py +0 -0
  482. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_store_cmd.py +0 -0
  483. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_sync_cmd.py +0 -0
  484. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_toml_utils.py +0 -0
  485. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_ui_rich.py +0 -0
  486. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_uv_compat.py +0 -0
  487. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_workflow_file_completion.py +0 -0
  488. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/test_workflow_models.py +0 -0
  489. {mcli_framework-8.0.42 → mcli_framework-8.0.44}/tests/unit/workflow/test_notebook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 8.0.42
3
+ Version: 8.0.44
4
4
  Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/workflows/, version with lockfile, run as daemon or cron job.
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -64,102 +64,6 @@ Requires-Dist: aiosqlite>=0.20.0
64
64
  Requires-Dist: redis>=5.0.0
65
65
  Requires-Dist: aiohttp-sse-client>=0.2.1
66
66
  Requires-Dist: aiomqtt>=2.0.0
67
- Requires-Dist: opencv-python>=4.11.0.86
68
- Requires-Dist: pillow>=11.2.1
69
- Requires-Dist: numpy<2.0.0,>=1.24.0
70
- Requires-Dist: scikit-image>=0.24.0
71
- Requires-Dist: scipy>=1.10.0
72
- Requires-Dist: pypdf2>=3.0.1
73
- Requires-Dist: pymupdf>=1.26.3
74
- Requires-Dist: pandas>=2.3.1
75
- Requires-Dist: openpyxl>=3.1.5
76
- Requires-Dist: matplotlib>=3.9.4
77
- Requires-Dist: pydot>=4.0.1
78
- Requires-Dist: graphviz>=0.21
79
- Requires-Dist: seaborn>=0.13.0
80
- Requires-Dist: plotly>=5.17.0
81
- Requires-Dist: supabase>=2.8.1
82
- Requires-Dist: sqlalchemy>=2.0.0
83
- Requires-Dist: alembic>=1.12.0
84
- Requires-Dist: psycopg2-binary>=2.9.7
85
- Requires-Dist: asyncpg>=0.29.0
86
- Requires-Dist: torch>=2.0.0
87
- Requires-Dist: torchvision>=0.15.0
88
- Requires-Dist: pytorch-lightning>=2.0.0
89
- Requires-Dist: scikit-learn<2.0.0,>=1.3.0
90
- Requires-Dist: mlflow>=2.9.0
91
- Requires-Dist: dvc>=3.0.0
92
- Requires-Dist: polars>=0.19.0
93
- Requires-Dist: pyarrow>=14.0.0
94
- Requires-Dist: yfinance>=0.2.18
95
- Requires-Dist: alpha-vantage>=2.3.1
96
- Requires-Dist: alpaca-py==0.43.2
97
- Requires-Dist: cvxpy>=1.4.0
98
- Requires-Dist: python-jose[cryptography]>=3.3.0
99
- Requires-Dist: passlib[bcrypt]>=1.7.4
100
- Requires-Dist: pydantic-settings>=2.1.0
101
- Requires-Dist: dynaconf>=3.2.0
102
- Requires-Dist: pandera>=0.17.0
103
- Requires-Dist: pendulum>=2.1.2
104
- Requires-Dist: optuna>=3.4.0
105
- Requires-Dist: PyPortfolioOpt>=1.5.5
106
- Requires-Dist: jupyter>=1.0.0
107
- Requires-Dist: jupyterlab>=4.0.0
108
- Requires-Dist: ipykernel>=6.27.0
109
- Requires-Dist: prometheus-client>=0.19.0
110
- Requires-Dist: structlog>=23.2.0
111
- Requires-Dist: gunicorn>=21.2.0
112
- Requires-Dist: newrelic>=9.2.0
113
- Requires-Dist: datadog>=0.49.0
114
- Requires-Dist: orjson>=3.9.0
115
- Requires-Dist: kafka-python>=2.0.2
116
- Requires-Dist: streamlit>=1.50.0
117
- Requires-Dist: altair<5.0.0,>=4.2.1
118
- Requires-Dist: streamlit-autorefresh>=1.0.1
119
- Requires-Dist: typer>=0.9.0
120
- Requires-Dist: flask<3.0.0,>=2.3.0
121
- Provides-Extra: gpu
122
- Requires-Dist: cupy-cuda12x>=12.3.0; extra == "gpu"
123
- Requires-Dist: nvidia-ml-py>=12.535.0; extra == "gpu"
124
- Provides-Extra: ml-plugin
125
- Requires-Dist: torch>=2.0.0; extra == "ml-plugin"
126
- Requires-Dist: torchvision>=0.15.0; extra == "ml-plugin"
127
- Requires-Dist: pytorch-lightning>=2.0.0; extra == "ml-plugin"
128
- Requires-Dist: scikit-learn<2.0.0,>=1.3.0; extra == "ml-plugin"
129
- Requires-Dist: mlflow>=2.9.0; extra == "ml-plugin"
130
- Requires-Dist: dvc>=3.0.0; extra == "ml-plugin"
131
- Requires-Dist: optuna>=3.4.0; extra == "ml-plugin"
132
- Requires-Dist: streamlit>=1.50.0; extra == "ml-plugin"
133
- Requires-Dist: altair<5.0.0,>=4.2.1; extra == "ml-plugin"
134
- Requires-Dist: streamlit-autorefresh>=1.0.1; extra == "ml-plugin"
135
- Requires-Dist: pandas>=2.3.1; extra == "ml-plugin"
136
- Requires-Dist: numpy<2.0.0,>=1.24.0; extra == "ml-plugin"
137
- Requires-Dist: polars>=0.19.0; extra == "ml-plugin"
138
- Requires-Dist: pyarrow>=14.0.0; extra == "ml-plugin"
139
- Provides-Extra: video-plugin
140
- Requires-Dist: opencv-python>=4.11.0.86; extra == "video-plugin"
141
- Requires-Dist: pillow>=11.2.1; extra == "video-plugin"
142
- Requires-Dist: numpy<2.0.0,>=1.24.0; extra == "video-plugin"
143
- Requires-Dist: scikit-image>=0.24.0; extra == "video-plugin"
144
- Requires-Dist: scipy>=1.10.0; extra == "video-plugin"
145
- Provides-Extra: trading-plugin
146
- Requires-Dist: yfinance>=0.2.18; extra == "trading-plugin"
147
- Requires-Dist: alpha-vantage>=2.3.1; extra == "trading-plugin"
148
- Requires-Dist: alpaca-py==0.43.2; extra == "trading-plugin"
149
- Requires-Dist: cvxpy>=1.4.0; extra == "trading-plugin"
150
- Requires-Dist: PyPortfolioOpt>=1.5.5; extra == "trading-plugin"
151
- Requires-Dist: pandas>=2.3.1; extra == "trading-plugin"
152
- Requires-Dist: numpy<2.0.0,>=1.24.0; extra == "trading-plugin"
153
- Provides-Extra: async-extras
154
- Provides-Extra: video
155
- Provides-Extra: documents
156
- Provides-Extra: viz
157
- Provides-Extra: database
158
- Provides-Extra: ml
159
- Provides-Extra: monitoring
160
- Provides-Extra: streaming
161
- Provides-Extra: dashboard
162
- Provides-Extra: web
163
67
  Provides-Extra: dev
164
68
  Requires-Dist: pytest>=8.4.1; extra == "dev"
165
69
  Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
@@ -182,7 +86,6 @@ Requires-Dist: pre-commit>=4.5.1; extra == "dev"
182
86
  Requires-Dist: build>=1.2.2.post1; extra == "dev"
183
87
  Requires-Dist: maturin>=1.9.3; extra == "dev"
184
88
  Requires-Dist: twine>=4.0.0; extra == "dev"
185
- Provides-Extra: all
186
89
  Dynamic: license-file
187
90
 
188
91
  # MCLI - Universal Script Runner & Workflow Framework
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "8.0.42"
3
+ version = "8.0.44"
4
4
  description = "Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/workflows/, version with lockfile, run as daemon or cron job."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -69,69 +69,6 @@ dependencies = [
69
69
  "redis>=5.0.0",
70
70
  "aiohttp-sse-client>=0.2.1",
71
71
  "aiomqtt>=2.0.0",
72
- # Video processing
73
- "opencv-python>=4.11.0.86",
74
- "pillow>=11.2.1",
75
- "numpy>=1.24.0,<2.0.0",
76
- "scikit-image>=0.24.0",
77
- "scipy>=1.10.0",
78
- # Document processing
79
- "pypdf2>=3.0.1",
80
- "pymupdf>=1.26.3",
81
- "pandas>=2.3.1",
82
- "openpyxl>=3.1.5",
83
- # Visualization
84
- "matplotlib>=3.9.4",
85
- "pydot>=4.0.1",
86
- "graphviz>=0.21",
87
- "seaborn>=0.13.0",
88
- "plotly>=5.17.0",
89
- # Database support
90
- "supabase>=2.8.1",
91
- "sqlalchemy>=2.0.0",
92
- "alembic>=1.12.0",
93
- "psycopg2-binary>=2.9.7",
94
- "asyncpg>=0.29.0",
95
- # ML/Trading features
96
- "torch>=2.0.0",
97
- "torchvision>=0.15.0",
98
- "pytorch-lightning>=2.0.0",
99
- "scikit-learn>=1.3.0,<2.0.0",
100
- "mlflow>=2.9.0",
101
- "dvc>=3.0.0",
102
- "polars>=0.19.0",
103
- "pyarrow>=14.0.0",
104
- "yfinance>=0.2.18",
105
- "alpha-vantage>=2.3.1",
106
- "alpaca-py==0.43.2",
107
- "cvxpy>=1.4.0",
108
- "python-jose[cryptography]>=3.3.0",
109
- "passlib[bcrypt]>=1.7.4",
110
- "pydantic-settings>=2.1.0",
111
- "dynaconf>=3.2.0",
112
- "pandera>=0.17.0",
113
- "pendulum>=2.1.2",
114
- "optuna>=3.4.0",
115
- "PyPortfolioOpt>=1.5.5",
116
- "jupyter>=1.0.0",
117
- "jupyterlab>=4.0.0",
118
- "ipykernel>=6.27.0",
119
- # Production monitoring
120
- "prometheus-client>=0.19.0",
121
- "structlog>=23.2.0",
122
- "gunicorn>=21.2.0",
123
- "newrelic>=9.2.0",
124
- "datadog>=0.49.0",
125
- "orjson>=3.9.0",
126
- # Streaming/messaging
127
- "kafka-python>=2.0.2",
128
- # Dashboard
129
- "streamlit>=1.50.0",
130
- "altair>=4.2.1,<5.0.0",
131
- "streamlit-autorefresh>=1.0.1",
132
- "typer>=0.9.0",
133
- # Web framework
134
- "flask>=2.3.0,<3.0.0",
135
72
  ]
136
73
 
137
74
  [project.urls]
@@ -143,68 +80,6 @@ dependencies = [
143
80
  "Source" = "https://github.com/gwicho38/mcli"
144
81
 
145
82
  [project.optional-dependencies]
146
- # GPU support (optional - system specific)
147
- gpu = [
148
- "cupy-cuda12x>=12.3.0",
149
- "nvidia-ml-py>=12.535.0",
150
- ]
151
-
152
- # Plugin-style optional dependencies (for migrated features)
153
- # These will be required ONLY if using the corresponding workflows from mcli-commands repo
154
-
155
- ml-plugin = [
156
- # ML/Training dependencies
157
- "torch>=2.0.0",
158
- "torchvision>=0.15.0",
159
- "pytorch-lightning>=2.0.0",
160
- "scikit-learn>=1.3.0,<2.0.0",
161
- "mlflow>=2.9.0",
162
- "dvc>=3.0.0",
163
- "optuna>=3.4.0",
164
- # Dashboard dependencies
165
- "streamlit>=1.50.0",
166
- "altair>=4.2.1,<5.0.0",
167
- "streamlit-autorefresh>=1.0.1",
168
- # Data science
169
- "pandas>=2.3.1",
170
- "numpy>=1.24.0,<2.0.0",
171
- "polars>=0.19.0",
172
- "pyarrow>=14.0.0",
173
- ]
174
-
175
- video-plugin = [
176
- # Video processing dependencies
177
- "opencv-python>=4.11.0.86",
178
- "pillow>=11.2.1",
179
- "numpy>=1.24.0,<2.0.0",
180
- "scikit-image>=0.24.0",
181
- "scipy>=1.10.0",
182
- ]
183
-
184
- trading-plugin = [
185
- # Trading/Finance dependencies
186
- "yfinance>=0.2.18",
187
- "alpha-vantage>=2.3.1",
188
- "alpaca-py==0.43.2",
189
- "cvxpy>=1.4.0",
190
- "PyPortfolioOpt>=1.5.5",
191
- "pandas>=2.3.1",
192
- "numpy>=1.24.0,<2.0.0",
193
- ]
194
-
195
- # Legacy extras for backward compatibility (all features now included by default)
196
- # TODO: Remove in v8.0.0
197
- async-extras = []
198
- video = []
199
- documents = []
200
- viz = []
201
- database = []
202
- ml = []
203
- monitoring = []
204
- streaming = []
205
- dashboard = []
206
- web = []
207
-
208
83
  # Development tools
209
84
  dev = [
210
85
  # Testing framework
@@ -235,9 +110,6 @@ dev = [
235
110
  "twine>=4.0.0", # Package upload
236
111
  ]
237
112
 
238
- # All optional features (all features now included by default)
239
- all = []
240
-
241
113
  [tool.black]
242
114
  line-length = 100
243
115
  include = '\.pyi?$'
@@ -263,11 +135,9 @@ known_first_party = ["mcli"]
263
135
  known_third_party = [
264
136
  "click", "rich", "requests", "tomli", "openai", "anthropic",
265
137
  "fastapi", "uvicorn", "uvloop", "aiosqlite", "redis", "watchdog",
266
- "tqdm", "humanize", "psutil", "ipython", "inquirerpy", "flask",
267
- "gitpython", "maturin", "scikit-learn", "numpy", "pillow",
268
- "opencv", "scikit-image", "pypdf2", "pymupdf", "pydot", "graphviz",
269
- "fuzzywuzzy", "pandas", "openpyxl", "ollama", "pytest", "supabase",
270
- "httpx", "aiohttp", "beautifulsoup4", "python-dotenv", "matplotlib"
138
+ "tqdm", "humanize", "psutil", "ipython", "inquirerpy",
139
+ "gitpython", "maturin", "fuzzywuzzy", "ollama", "pytest",
140
+ "httpx", "aiohttp", "beautifulsoup4", "python-dotenv"
271
141
  ]
272
142
  sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
273
143
  force_grid_wrap = 0
@@ -374,19 +244,6 @@ module = [
374
244
  warn_return_any = false
375
245
  ignore_errors = false
376
246
 
377
- # Ignore missing imports for optional dependencies
378
- [[tool.mypy.overrides]]
379
- module = [
380
- "ollama.*",
381
- "streamlit.*",
382
- "torch.*",
383
- "transformers.*",
384
- "plotly.*",
385
- "supabase.*",
386
- ]
387
- warn_return_any = false
388
- ignore_missing_imports = true
389
-
390
247
  # Core modules - enable stricter type checking
391
248
  [[tool.mypy.overrides]]
392
249
  module = [
@@ -397,12 +254,6 @@ disallow_untyped_defs = true
397
254
  check_untyped_defs = true
398
255
  strict_optional = true
399
256
 
400
- # Skip mlflow entirely due to Python version syntax issues
401
- [[tool.mypy.overrides]]
402
- module = ["mlflow", "mlflow.*"]
403
- ignore_errors = true
404
- follow_imports = "skip"
405
-
406
257
  [build-system]
407
258
  requires = ["setuptools>=65.0.0", "wheel>=0.40.0"]
408
259
  build-backend = "setuptools.build_meta"
@@ -512,11 +363,6 @@ filterwarnings = [
512
363
 
513
364
  [project.scripts]
514
365
  mcli = "mcli.app.main:main"
515
- mcli-train = "mcli.ml.training.train:main"
516
- mcli-serve = "mcli.ml.serving.serve:main"
517
- mcli-backtest = "mcli.ml.backtesting.run:main"
518
- mcli-optimize = "mcli.ml.optimization.optimize:main"
519
- mcli-dashboard = "mcli.ml.dashboard:main"
520
366
 
521
367
  [tool.bandit]
522
368
  # Skip these test IDs - acceptable in this CLI tool context
@@ -12,8 +12,9 @@ Example:
12
12
  import json
13
13
  import os
14
14
  import re
15
+ import shutil
15
16
  import stat
16
- import subprocess
17
+ import subprocess # nosec B404
17
18
  import sys
18
19
  import tempfile
19
20
  from pathlib import Path
@@ -269,7 +270,7 @@ def restructure_file_as_command(
269
270
  click.ClickException: If file cannot be read
270
271
  """
271
272
  try:
272
- with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
273
+ with open(file_path, encoding="utf-8", errors="ignore") as f:
273
274
  content = f.read()
274
275
  except OSError as e:
275
276
  logger.error(f"Failed to read file {file_path}: {e}")
@@ -329,9 +330,12 @@ def _get_python_template(t: ScriptTemplate) -> str:
329
330
  import click
330
331
  from typing import Optional, List
331
332
  from pathlib import Path
332
- from mcli.lib.logger.logger import get_logger
333
333
 
334
- logger = get_logger()
334
+ try:
335
+ from mcli.lib.logger.logger import get_logger
336
+ logger = get_logger()
337
+ except ImportError:
338
+ logger = None
335
339
 
336
340
 
337
341
  @click.group(name="{t.name}")
@@ -346,8 +350,13 @@ def app():
346
350
  @click.argument("name", default="World")
347
351
  def hello(name: str):
348
352
  """Example subcommand."""
349
- logger.info(f"Hello, {{name}}!")
353
+ if logger:
354
+ logger.info(f"Hello, {{name}}!")
350
355
  click.echo(f"Hello, {{name}}!")
356
+
357
+
358
+ if __name__ == "__main__":
359
+ app()
351
360
  '''
352
361
  else:
353
362
  return f'''#!/usr/bin/env python3
@@ -361,9 +370,12 @@ def hello(name: str):
361
370
  import click
362
371
  from typing import Optional, List
363
372
  from pathlib import Path
364
- from mcli.lib.logger.logger import get_logger
365
373
 
366
- logger = get_logger()
374
+ try:
375
+ from mcli.lib.logger.logger import get_logger
376
+ logger = get_logger()
377
+ except ImportError:
378
+ logger = None
367
379
 
368
380
 
369
381
  @click.command(name="{t.name}")
@@ -372,8 +384,13 @@ def {t.name}_command(name: str):
372
384
  """
373
385
  {t.description}
374
386
  """
375
- logger.info(f"Hello, {{name}}! This is the {t.name} command.")
387
+ if logger:
388
+ logger.info(f"Hello, {{name}}! This is the {t.name} command.")
376
389
  click.echo(f"Hello, {{name}}! This is the {t.name} command.")
390
+
391
+
392
+ if __name__ == "__main__":
393
+ {t.name}_command()
377
394
  '''
378
395
 
379
396
 
@@ -505,7 +522,7 @@ if (args.length > 0) {{
505
522
 
506
523
  def _get_ipynb_template(t: ScriptTemplate) -> str:
507
524
  """Generate Jupyter notebook template."""
508
- notebook: Dict[str, Any] = {
525
+ notebook: dict[str, Any] = {
509
526
  "cells": [
510
527
  {
511
528
  "cell_type": "markdown",
@@ -609,13 +626,13 @@ def open_editor_for_script(
609
626
  click.echo("Write your code and save the file to continue.")
610
627
  click.echo("Press Ctrl+C to cancel.")
611
628
 
612
- result = subprocess.run([editor, temp_file_path], check=False)
629
+ result = subprocess.run([editor, temp_file_path], check=False) # nosec B603
613
630
 
614
631
  if result.returncode != 0:
615
632
  click.echo("Editor exited with error. Command creation cancelled.")
616
633
  return None
617
634
 
618
- with open(temp_file_path, "r") as f:
635
+ with open(temp_file_path) as f:
619
636
  edited_code = f.read()
620
637
 
621
638
  if not edited_code.strip():
@@ -642,8 +659,7 @@ def _find_editor() -> Optional[str]:
642
659
  return editor
643
660
 
644
661
  for common_editor in ["vim", "nano", "code", "subl", "atom", "emacs"]:
645
- result = subprocess.run(["which", common_editor], capture_output=True)
646
- if result.returncode == 0:
662
+ if shutil.which(common_editor):
647
663
  return common_editor
648
664
 
649
665
  return None
@@ -783,7 +799,7 @@ def new(
783
799
  description=description,
784
800
  cmd_version=cmd_version,
785
801
  template=template,
786
- shell=shell,
802
+ shell=shell, # nosec B604
787
803
  is_global=is_global,
788
804
  source_file=source_file,
789
805
  )
@@ -892,7 +908,7 @@ def _execute_new_command(
892
908
  cmd_version=cmd_version,
893
909
  language=language,
894
910
  command_type=command_type,
895
- shell=shell,
911
+ shell=shell, # nosec B604
896
912
  template=template,
897
913
  script_path=script_path,
898
914
  )
@@ -913,7 +929,7 @@ def _execute_new_command(
913
929
  _display_success_message(
914
930
  command_name=command_name,
915
931
  language=language,
916
- shell=shell,
932
+ shell=shell, # nosec B604
917
933
  saved_path=saved_path,
918
934
  command_group=command_group,
919
935
  is_global=is_global,
@@ -948,7 +964,7 @@ def _generate_or_edit_code(
948
964
  version=cmd_version,
949
965
  language=language,
950
966
  command_type=command_type,
951
- shell=shell,
967
+ shell=shell, # nosec B604
952
968
  )
953
969
 
954
970
  try:
@@ -1095,19 +1095,25 @@ class VenvMessages:
1095
1095
 
1096
1096
  # Info
1097
1097
  DETECTING_VENV = "Detecting Python environment..."
1098
+ USING_OVERRIDE_VENV = "Using override venv: {path}"
1098
1099
  USING_LOCAL_VENV = "Using local venv: {path}"
1099
- USING_GLOBAL_VENV = "Using global MCLI venv: {path}"
1100
+ USING_GLOBAL_VENV = "Using global venv: {path}"
1100
1101
  USING_SYSTEM_PYTHON = "Using system Python: {path}"
1102
+ USING_SYSTEM_PYTHON_ENV_SET = "Using system Python (MCLI_USE_SYSTEM_PYTHON set)"
1101
1103
  CREATING_GLOBAL_VENV = "Creating global MCLI venv at {path}..."
1102
1104
  GLOBAL_VENV_CREATED = "Created global MCLI venv at {path}"
1103
1105
 
1104
1106
  # Dependency messages
1107
+ NO_DEPS_SPECIFIED = "No dependencies specified"
1105
1108
  CHECKING_DEPS = "Checking dependencies for {script}..."
1106
1109
  DEPS_SATISFIED = "All dependencies satisfied"
1107
1110
  MISSING_DEPS = "Missing dependencies: {packages}"
1108
1111
  INSTALLING_DEPS = "Installing dependencies: {packages}"
1109
1112
  DEPS_INSTALLED = "Dependencies installed successfully"
1110
1113
 
1114
+ # Non-interactive
1115
+ NON_INTERACTIVE_AUTO_INSTALL = "Non-interactive mode detected, auto-installing dependencies"
1116
+
1111
1117
  # Prompts
1112
1118
  PROMPT_INSTALL_DEPS = "Install missing dependencies to {venv}? [{packages}]"
1113
1119
 
@@ -122,7 +122,7 @@ class DependencyChecker:
122
122
  """
123
123
  try:
124
124
  result = subprocess.run(
125
- [str(self.python_executable), "-m", "pip", "list", "--format=freeze"],
125
+ ["uv", "pip", "list", "--format=freeze", "--python", str(self.python_executable)],
126
126
  capture_output=True,
127
127
  text=True,
128
128
  timeout=30,
@@ -5,7 +5,7 @@ including environment detection, dependency checking, and script execution.
5
5
  """
6
6
 
7
7
  import os
8
- import subprocess
8
+ import subprocess # nosec B404
9
9
  import sys
10
10
  from pathlib import Path
11
11
  from typing import Dict, List, Optional, Tuple
@@ -42,7 +42,7 @@ class PyEnvManager:
42
42
  self._resolved_venv: Optional[Path] = None
43
43
  self._resolved_source: Optional[str] = None
44
44
 
45
- def resolve_environment(self) -> Tuple[Optional[Path], str]:
45
+ def resolve_environment(self) -> tuple[Optional[Path], str]:
46
46
  """Resolve which virtual environment to use.
47
47
 
48
48
  Resolution order:
@@ -65,14 +65,14 @@ class PyEnvManager:
65
65
  if venv_path.is_dir():
66
66
  self._resolved_venv = venv_path
67
67
  self._resolved_source = "override"
68
- logger.debug(f"Using override venv: {venv_path}")
68
+ logger.debug(VenvMessages.USING_OVERRIDE_VENV.format(path=venv_path))
69
69
  return venv_path, "override"
70
70
 
71
71
  # Check if user wants system Python
72
72
  if os.getenv(EnvVars.MCLI_USE_SYSTEM_PYTHON, "").lower() in ("true", "1", "yes"):
73
73
  self._resolved_venv = None
74
74
  self._resolved_source = "system"
75
- logger.debug("Using system Python (MCLI_USE_SYSTEM_PYTHON set)")
75
+ logger.debug(VenvMessages.USING_SYSTEM_PYTHON_ENV_SET)
76
76
  return None, "system"
77
77
 
78
78
  # Try to find local venv
@@ -80,14 +80,14 @@ class PyEnvManager:
80
80
  if local_venv:
81
81
  self._resolved_venv = local_venv
82
82
  self._resolved_source = "local"
83
- logger.debug(f"Using local venv: {local_venv}")
83
+ logger.debug(VenvMessages.USING_LOCAL_VENV.format(path=local_venv))
84
84
  return local_venv, "local"
85
85
 
86
86
  # Fall back to global venv
87
87
  global_venv = self.venv_manager.get_global_venv_path()
88
88
  self._resolved_venv = global_venv
89
89
  self._resolved_source = "global"
90
- logger.debug(f"Using global venv: {global_venv}")
90
+ logger.debug(VenvMessages.USING_GLOBAL_VENV.format(path=global_venv))
91
91
  return global_venv, "global"
92
92
 
93
93
  def get_python_executable(self) -> Path:
@@ -105,7 +105,7 @@ class PyEnvManager:
105
105
 
106
106
  def check_and_install_deps(
107
107
  self,
108
- requires: List[str],
108
+ requires: list[str],
109
109
  script_name: str,
110
110
  auto_install: bool = False,
111
111
  ) -> bool:
@@ -120,7 +120,7 @@ class PyEnvManager:
120
120
  True if all dependencies are satisfied or installed.
121
121
  """
122
122
  if not requires:
123
- logger.debug("No dependencies specified")
123
+ logger.debug(VenvMessages.NO_DEPS_SPECIFIED)
124
124
  return True
125
125
 
126
126
  venv_path, source = self.resolve_environment()
@@ -155,6 +155,10 @@ class PyEnvManager:
155
155
 
156
156
  if auto_install or env_auto_install:
157
157
  should_install = True
158
+ elif not sys.stdin.isatty():
159
+ # Non-interactive context (piped input, CI, subprocess) — auto-install
160
+ logger.info(VenvMessages.NON_INTERACTIVE_AUTO_INSTALL)
161
+ should_install = True
158
162
  else:
159
163
  # Prompt user
160
164
  venv_display = str(venv_path) if venv_path else "system"
@@ -177,8 +181,8 @@ class PyEnvManager:
177
181
  def execute_in_venv(
178
182
  self,
179
183
  script_path: Path,
180
- args: List[str],
181
- env: Optional[Dict[str, str]] = None,
184
+ args: list[str],
185
+ env: Optional[dict[str, str]] = None,
182
186
  ) -> subprocess.CompletedProcess:
183
187
  """Execute a Python script in the resolved virtual environment.
184
188
 
@@ -210,14 +214,17 @@ class PyEnvManager:
210
214
 
211
215
  if sys.stdout.isatty():
212
216
  # Interactive: inherit stdio so TUI frameworks work
213
- return subprocess.run(cmd, env=exec_env)
217
+ return subprocess.run(cmd, env=exec_env) # nosec B603
214
218
  else:
215
219
  # Non-interactive: capture output for piping
216
- return subprocess.run(
217
- cmd, env=exec_env, capture_output=True, text=True,
220
+ return subprocess.run( # nosec B603
221
+ cmd,
222
+ env=exec_env,
223
+ capture_output=True,
224
+ text=True,
218
225
  )
219
226
 
220
- def get_status(self) -> Dict[str, str]:
227
+ def get_status(self) -> dict[str, str]:
221
228
  """Get the current environment status for display.
222
229
 
223
230
  Returns: