mcli-framework 8.0.43__tar.gz → 8.0.45__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 (495) hide show
  1. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/MANIFEST.in +2 -6
  2. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/PKG-INFO +20 -115
  3. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/pyproject.toml +27 -182
  4. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/commands_cmd.py +47 -20
  5. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/main.py +24 -0
  6. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/model_cmd.py +10 -34
  7. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/new_cmd.py +2 -2
  8. mcli_framework-8.0.45/src/mcli/app/setup_cmd.py +187 -0
  9. mcli_framework-8.0.45/src/mcli/app/source_sync_cmd.py +335 -0
  10. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/sync_cmd.py +76 -36
  11. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/api.py +3 -3
  12. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/daemon_client.py +9 -0
  13. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/config/__init__.py +17 -1
  14. mcli_framework-8.0.45/src/mcli/lib/config/settings.py +192 -0
  15. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/defaults.py +10 -0
  16. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/env.py +1 -0
  17. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/messages.py +21 -0
  18. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/ipfs_sync.py +62 -0
  19. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/ipfs_utils.py +87 -0
  20. mcli_framework-8.0.45/src/mcli/lib/ipns_manager.py +206 -0
  21. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pickles/pickles.py +15 -1
  22. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pyenv/deps.py +1 -1
  23. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/script_loader.py +18 -2
  24. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/secrets/manager.py +12 -3
  25. mcli_framework-8.0.45/src/mcli/self/release_notes_cmd.py +304 -0
  26. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/self_cmd.py +8 -0
  27. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/daemon_api.py +14 -2
  28. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli_framework.egg-info/PKG-INFO +20 -115
  29. mcli_framework-8.0.45/src/mcli_framework.egg-info/SOURCES.txt +234 -0
  30. mcli_framework-8.0.45/src/mcli_framework.egg-info/entry_points.txt +2 -0
  31. mcli_framework-8.0.45/src/mcli_framework.egg-info/requires.txt +53 -0
  32. mcli_framework-8.0.43/.github/dependabot.yml +0 -49
  33. mcli_framework-8.0.43/.github/dependency-review-config.yml +0 -17
  34. mcli_framework-8.0.43/.github/workflows/build.yml +0 -102
  35. mcli_framework-8.0.43/.github/workflows/ci.yml +0 -275
  36. mcli_framework-8.0.43/.github/workflows/codeql.yml +0 -43
  37. mcli_framework-8.0.43/.github/workflows/docs-links.yml +0 -48
  38. mcli_framework-8.0.43/.github/workflows/publish-self-hosted.yml +0 -244
  39. mcli_framework-8.0.43/.github/workflows/publish.yml +0 -225
  40. mcli_framework-8.0.43/.github/workflows/release.yml +0 -91
  41. mcli_framework-8.0.43/.github/workflows/security.yml +0 -128
  42. mcli_framework-8.0.43/.github/workflows/test.yml +0 -154
  43. mcli_framework-8.0.43/src/mcli/ml/__init__.py +0 -16
  44. mcli_framework-8.0.43/src/mcli/ml/api/__init__.py +0 -30
  45. mcli_framework-8.0.43/src/mcli/ml/api/app.py +0 -202
  46. mcli_framework-8.0.43/src/mcli/ml/api/middleware.py +0 -216
  47. mcli_framework-8.0.43/src/mcli/ml/api/routers/__init__.py +0 -27
  48. mcli_framework-8.0.43/src/mcli/ml/api/routers/admin_router.py +0 -14
  49. mcli_framework-8.0.43/src/mcli/ml/api/routers/auth_router.py +0 -219
  50. mcli_framework-8.0.43/src/mcli/ml/api/routers/backtest_router.py +0 -14
  51. mcli_framework-8.0.43/src/mcli/ml/api/routers/data_router.py +0 -14
  52. mcli_framework-8.0.43/src/mcli/ml/api/routers/model_router.py +0 -262
  53. mcli_framework-8.0.43/src/mcli/ml/api/routers/monitoring_router.py +0 -14
  54. mcli_framework-8.0.43/src/mcli/ml/api/routers/portfolio_router.py +0 -14
  55. mcli_framework-8.0.43/src/mcli/ml/api/routers/prediction_router.py +0 -263
  56. mcli_framework-8.0.43/src/mcli/ml/api/routers/trade_router.py +0 -16
  57. mcli_framework-8.0.43/src/mcli/ml/api/routers/websocket_router.py +0 -78
  58. mcli_framework-8.0.43/src/mcli/ml/api/schemas.py +0 -72
  59. mcli_framework-8.0.43/src/mcli/ml/auth/__init__.py +0 -41
  60. mcli_framework-8.0.43/src/mcli/ml/auth/auth_manager.py +0 -394
  61. mcli_framework-8.0.43/src/mcli/ml/auth/models.py +0 -169
  62. mcli_framework-8.0.43/src/mcli/ml/auth/permissions.py +0 -295
  63. mcli_framework-8.0.43/src/mcli/ml/backtesting/__init__.py +0 -27
  64. mcli_framework-8.0.43/src/mcli/ml/backtesting/backtest_engine.py +0 -522
  65. mcli_framework-8.0.43/src/mcli/ml/backtesting/performance_metrics.py +0 -425
  66. mcli_framework-8.0.43/src/mcli/ml/backtesting/run.py +0 -123
  67. mcli_framework-8.0.43/src/mcli/ml/cache.py +0 -393
  68. mcli_framework-8.0.43/src/mcli/ml/cli/__init__.py +0 -5
  69. mcli_framework-8.0.43/src/mcli/ml/cli/main.py +0 -409
  70. mcli_framework-8.0.43/src/mcli/ml/config/__init__.py +0 -33
  71. mcli_framework-8.0.43/src/mcli/ml/config/settings.py +0 -410
  72. mcli_framework-8.0.43/src/mcli/ml/configs/__init__.py +0 -16
  73. mcli_framework-8.0.43/src/mcli/ml/configs/dvc_config.py +0 -229
  74. mcli_framework-8.0.43/src/mcli/ml/configs/mlflow_config.py +0 -130
  75. mcli_framework-8.0.43/src/mcli/ml/configs/mlops_manager.py +0 -291
  76. mcli_framework-8.0.43/src/mcli/ml/dashboard/__init__.py +0 -12
  77. mcli_framework-8.0.43/src/mcli/ml/dashboard/app.py +0 -481
  78. mcli_framework-8.0.43/src/mcli/ml/dashboard/app_integrated.py +0 -3026
  79. mcli_framework-8.0.43/src/mcli/ml/dashboard/app_supabase.py +0 -651
  80. mcli_framework-8.0.43/src/mcli/ml/dashboard/app_training.py +0 -613
  81. mcli_framework-8.0.43/src/mcli/ml/dashboard/cli.py +0 -60
  82. mcli_framework-8.0.43/src/mcli/ml/dashboard/common.py +0 -166
  83. mcli_framework-8.0.43/src/mcli/ml/dashboard/components/__init__.py +0 -7
  84. mcli_framework-8.0.43/src/mcli/ml/dashboard/components/charts.py +0 -219
  85. mcli_framework-8.0.43/src/mcli/ml/dashboard/components/metrics.py +0 -105
  86. mcli_framework-8.0.43/src/mcli/ml/dashboard/components/tables.py +0 -223
  87. mcli_framework-8.0.43/src/mcli/ml/dashboard/overview.py +0 -402
  88. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/__init__.py +0 -6
  89. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/cicd.py +0 -426
  90. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -413
  91. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -844
  92. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -550
  93. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -1020
  94. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -1100
  95. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -452
  96. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/trading.py +0 -835
  97. mcli_framework-8.0.43/src/mcli/ml/dashboard/pages/workflows.py +0 -568
  98. mcli_framework-8.0.43/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -288
  99. mcli_framework-8.0.43/src/mcli/ml/dashboard/styles.py +0 -55
  100. mcli_framework-8.0.43/src/mcli/ml/dashboard/utils.py +0 -192
  101. mcli_framework-8.0.43/src/mcli/ml/dashboard/warning_suppression.py +0 -36
  102. mcli_framework-8.0.43/src/mcli/ml/data_ingestion/__init__.py +0 -29
  103. mcli_framework-8.0.43/src/mcli/ml/data_ingestion/api_connectors.py +0 -466
  104. mcli_framework-8.0.43/src/mcli/ml/data_ingestion/data_pipeline.py +0 -559
  105. mcli_framework-8.0.43/src/mcli/ml/data_ingestion/stream_processor.py +0 -501
  106. mcli_framework-8.0.43/src/mcli/ml/database/__init__.py +0 -40
  107. mcli_framework-8.0.43/src/mcli/ml/database/migrations/env.py +0 -95
  108. mcli_framework-8.0.43/src/mcli/ml/database/models.py +0 -698
  109. mcli_framework-8.0.43/src/mcli/ml/database/session.py +0 -365
  110. mcli_framework-8.0.43/src/mcli/ml/experimentation/__init__.py +0 -29
  111. mcli_framework-8.0.43/src/mcli/ml/experimentation/ab_testing.py +0 -894
  112. mcli_framework-8.0.43/src/mcli/ml/features/__init__.py +0 -39
  113. mcli_framework-8.0.43/src/mcli/ml/features/ensemble_features.py +0 -603
  114. mcli_framework-8.0.43/src/mcli/ml/features/recommendation_engine.py +0 -810
  115. mcli_framework-8.0.43/src/mcli/ml/features/stock_features.py +0 -571
  116. mcli_framework-8.0.43/src/mcli/ml/features/test_feature_engineering.py +0 -346
  117. mcli_framework-8.0.43/src/mcli/ml/logging.py +0 -80
  118. mcli_framework-8.0.43/src/mcli/ml/mlops/__init__.py +0 -19
  119. mcli_framework-8.0.43/src/mcli/ml/mlops/data_versioning.py +0 -510
  120. mcli_framework-8.0.43/src/mcli/ml/mlops/experiment_tracker.py +0 -385
  121. mcli_framework-8.0.43/src/mcli/ml/mlops/model_serving.py +0 -475
  122. mcli_framework-8.0.43/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -658
  123. mcli_framework-8.0.43/src/mcli/ml/models/__init__.py +0 -89
  124. mcli_framework-8.0.43/src/mcli/ml/models/base_models.py +0 -325
  125. mcli_framework-8.0.43/src/mcli/ml/models/ensemble_models.py +0 -677
  126. mcli_framework-8.0.43/src/mcli/ml/models/recommendation_models.py +0 -475
  127. mcli_framework-8.0.43/src/mcli/ml/models/test_models.py +0 -489
  128. mcli_framework-8.0.43/src/mcli/ml/monitoring/__init__.py +0 -25
  129. mcli_framework-8.0.43/src/mcli/ml/monitoring/drift_detection.py +0 -693
  130. mcli_framework-8.0.43/src/mcli/ml/monitoring/metrics.py +0 -33
  131. mcli_framework-8.0.43/src/mcli/ml/optimization/__init__.py +0 -27
  132. mcli_framework-8.0.43/src/mcli/ml/optimization/optimize.py +0 -52
  133. mcli_framework-8.0.43/src/mcli/ml/optimization/portfolio_optimizer.py +0 -872
  134. mcli_framework-8.0.43/src/mcli/ml/predictions/__init__.py +0 -5
  135. mcli_framework-8.0.43/src/mcli/ml/predictions/monte_carlo.py +0 -414
  136. mcli_framework-8.0.43/src/mcli/ml/predictions/prediction_engine.py +0 -233
  137. mcli_framework-8.0.43/src/mcli/ml/preprocessing/__init__.py +0 -33
  138. mcli_framework-8.0.43/src/mcli/ml/preprocessing/data_cleaners.py +0 -451
  139. mcli_framework-8.0.43/src/mcli/ml/preprocessing/feature_extractors.py +0 -489
  140. mcli_framework-8.0.43/src/mcli/ml/preprocessing/ml_pipeline.py +0 -423
  141. mcli_framework-8.0.43/src/mcli/ml/preprocessing/test_preprocessing.py +0 -293
  142. mcli_framework-8.0.43/src/mcli/ml/scripts/__init__.py +0 -1
  143. mcli_framework-8.0.43/src/mcli/ml/scripts/populate_sample_data.py +0 -216
  144. mcli_framework-8.0.43/src/mcli/ml/serving/__init__.py +0 -1
  145. mcli_framework-8.0.43/src/mcli/ml/serving/serve.py +0 -61
  146. mcli_framework-8.0.43/src/mcli/ml/tasks.py +0 -399
  147. mcli_framework-8.0.43/src/mcli/ml/tests/test_integration.py +0 -438
  148. mcli_framework-8.0.43/src/mcli/ml/tests/test_training_dashboard.py +0 -414
  149. mcli_framework-8.0.43/src/mcli/ml/trading/__init__.py +0 -63
  150. mcli_framework-8.0.43/src/mcli/ml/trading/alpaca_client.py +0 -415
  151. mcli_framework-8.0.43/src/mcli/ml/trading/migrations.py +0 -200
  152. mcli_framework-8.0.43/src/mcli/ml/trading/models.py +0 -434
  153. mcli_framework-8.0.43/src/mcli/ml/trading/paper_trading.py +0 -347
  154. mcli_framework-8.0.43/src/mcli/ml/trading/risk_management.py +0 -390
  155. mcli_framework-8.0.43/src/mcli/ml/trading/trading_service.py +0 -522
  156. mcli_framework-8.0.43/src/mcli/ml/training/__init__.py +0 -7
  157. mcli_framework-8.0.43/src/mcli/ml/training/train.py +0 -79
  158. mcli_framework-8.0.43/src/mcli/ml/training/train_model.py +0 -567
  159. mcli_framework-8.0.43/src/mcli/workflow/dashboard/__init__.py +0 -5
  160. mcli_framework-8.0.43/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -179
  161. mcli_framework-8.0.43/src/mcli_framework.egg-info/SOURCES.txt +0 -486
  162. mcli_framework-8.0.43/src/mcli_framework.egg-info/entry_points.txt +0 -7
  163. mcli_framework-8.0.43/src/mcli_framework.egg-info/requires.txt +0 -163
  164. mcli_framework-8.0.43/tests/cli/__init__.py +0 -0
  165. mcli_framework-8.0.43/tests/cli/test_all_commands.py +0 -7
  166. mcli_framework-8.0.43/tests/cli/test_app_logs_cmd.py +0 -206
  167. mcli_framework-8.0.43/tests/cli/test_app_redis_cmd.py +0 -276
  168. mcli_framework-8.0.43/tests/cli/test_logs_cmd.py +0 -287
  169. mcli_framework-8.0.43/tests/cli/test_main_app.py +0 -36
  170. mcli_framework-8.0.43/tests/cli/test_model_cmd.py +0 -619
  171. mcli_framework-8.0.43/tests/cli/test_self_cmd.py +0 -788
  172. mcli_framework-8.0.43/tests/cli/test_self_cmd_plugins.py +0 -273
  173. mcli_framework-8.0.43/tests/cli/test_self_cmd_utilities.py +0 -225
  174. mcli_framework-8.0.43/tests/cli/test_workflow_creation_commands.py +0 -109
  175. mcli_framework-8.0.43/tests/cli/test_workflow_file.py +0 -137
  176. mcli_framework-8.0.43/tests/cli/test_workflow_gcloud.py +0 -120
  177. mcli_framework-8.0.43/tests/cli/test_workflow_registry.py +0 -231
  178. mcli_framework-8.0.43/tests/conftest.py +0 -149
  179. mcli_framework-8.0.43/tests/e2e/__init__.py +0 -0
  180. mcli_framework-8.0.43/tests/e2e/test_complete_workflows.py +0 -422
  181. mcli_framework-8.0.43/tests/e2e/test_model_workflow.py +0 -155
  182. mcli_framework-8.0.43/tests/e2e/test_new_user_workflow.py +0 -144
  183. mcli_framework-8.0.43/tests/e2e/test_update_workflow.py +0 -195
  184. mcli_framework-8.0.43/tests/fixtures/__init__.py +0 -75
  185. mcli_framework-8.0.43/tests/fixtures/chat_fixtures.py +0 -82
  186. mcli_framework-8.0.43/tests/fixtures/cli_fixtures.py +0 -93
  187. mcli_framework-8.0.43/tests/fixtures/command_fixtures.py +0 -325
  188. mcli_framework-8.0.43/tests/fixtures/data_fixtures.py +0 -97
  189. mcli_framework-8.0.43/tests/fixtures/db_fixtures.py +0 -100
  190. mcli_framework-8.0.43/tests/fixtures/model_fixtures.py +0 -66
  191. mcli_framework-8.0.43/tests/integration/__init__.py +0 -0
  192. mcli_framework-8.0.43/tests/integration/test_all_commands_comprehensive.py +0 -878
  193. mcli_framework-8.0.43/tests/integration/test_daemon_server.py +0 -824
  194. mcli_framework-8.0.43/tests/integration/test_direct_file_execution.py +0 -257
  195. mcli_framework-8.0.43/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -695
  196. mcli_framework-8.0.43/tests/integration/test_flask_webapp.py +0 -7
  197. mcli_framework-8.0.43/tests/integration/test_folder_workflows_integration.py +0 -382
  198. mcli_framework-8.0.43/tests/integration/test_gcloud_services.py +0 -58
  199. mcli_framework-8.0.43/tests/integration/test_ml_auth.py +0 -375
  200. mcli_framework-8.0.43/tests/integration/test_ml_data_pipeline.py +0 -642
  201. mcli_framework-8.0.43/tests/integration/test_ml_models.py +0 -323
  202. mcli_framework-8.0.43/tests/integration/test_ml_pipeline.py +0 -446
  203. mcli_framework-8.0.43/tests/integration/test_module_imports.py +0 -143
  204. mcli_framework-8.0.43/tests/integration/test_notebook_workflows.py +0 -503
  205. mcli_framework-8.0.43/tests/integration/test_oi_service.py +0 -10
  206. mcli_framework-8.0.43/tests/integration/test_repo_operations.py +0 -77
  207. mcli_framework-8.0.43/tests/integration/test_scheduler_integration.py +0 -482
  208. mcli_framework-8.0.43/tests/integration/test_service_registry.py +0 -141
  209. mcli_framework-8.0.43/tests/integration/test_supabase_live_connection.py +0 -216
  210. mcli_framework-8.0.43/tests/integration/test_video_processing.py +0 -69
  211. mcli_framework-8.0.43/tests/integration/test_wakatime_api.py +0 -10
  212. mcli_framework-8.0.43/tests/integration/test_webapp_full.py +0 -7
  213. mcli_framework-8.0.43/tests/integration/test_workflow.py +0 -7
  214. mcli_framework-8.0.43/tests/integration/test_workflow_commands.py +0 -7
  215. mcli_framework-8.0.43/tests/performance/__init__.py +0 -0
  216. mcli_framework-8.0.43/tests/property/__init__.py +0 -0
  217. mcli_framework-8.0.43/tests/unit/__init__.py +0 -0
  218. mcli_framework-8.0.43/tests/unit/storage/__init__.py +0 -1
  219. mcli_framework-8.0.43/tests/unit/storage/test_cache.py +0 -244
  220. mcli_framework-8.0.43/tests/unit/storage/test_encryption.py +0 -118
  221. mcli_framework-8.0.43/tests/unit/storage/test_storacha_cli.py +0 -285
  222. mcli_framework-8.0.43/tests/unit/test_api_utils.py +0 -98
  223. mcli_framework-8.0.43/tests/unit/test_async_process_manager.py +0 -571
  224. mcli_framework-8.0.43/tests/unit/test_auth_modules.py +0 -324
  225. mcli_framework-8.0.43/tests/unit/test_bug_fixes.py +0 -41
  226. mcli_framework-8.0.43/tests/unit/test_command_fixtures.py +0 -240
  227. mcli_framework-8.0.43/tests/unit/test_config.py +0 -98
  228. mcli_framework-8.0.43/tests/unit/test_correlation_logging.py +0 -698
  229. mcli_framework-8.0.43/tests/unit/test_custom_commands.py +0 -338
  230. mcli_framework-8.0.43/tests/unit/test_custom_commands_filtering.py +0 -164
  231. mcli_framework-8.0.43/tests/unit/test_daemon_api.py +0 -266
  232. mcli_framework-8.0.43/tests/unit/test_dashboard_components.py +0 -451
  233. mcli_framework-8.0.43/tests/unit/test_dashboard_functions.py +0 -275
  234. mcli_framework-8.0.43/tests/unit/test_dashboard_pages.py +0 -524
  235. mcli_framework-8.0.43/tests/unit/test_dependencies.py +0 -60
  236. mcli_framework-8.0.43/tests/unit/test_doc_convert_workflow.py +0 -259
  237. mcli_framework-8.0.43/tests/unit/test_emulator_workflow.py +0 -618
  238. mcli_framework-8.0.43/tests/unit/test_erd_generation.py +0 -1365
  239. mcli_framework-8.0.43/tests/unit/test_erd_generic.py +0 -254
  240. mcli_framework-8.0.43/tests/unit/test_erd_imports.py +0 -21
  241. mcli_framework-8.0.43/tests/unit/test_folder_workflows.py +0 -401
  242. mcli_framework-8.0.43/tests/unit/test_git_commit_workflow.py +0 -343
  243. mcli_framework-8.0.43/tests/unit/test_health_cmd.py +0 -589
  244. mcli_framework-8.0.43/tests/unit/test_import_cmd.py +0 -866
  245. mcli_framework-8.0.43/tests/unit/test_init_mv_cmd.py +0 -293
  246. mcli_framework-8.0.43/tests/unit/test_ipfs_cmd.py +0 -320
  247. mcli_framework-8.0.43/tests/unit/test_ipfs_retry.py +0 -233
  248. mcli_framework-8.0.43/tests/unit/test_language_suffix.py +0 -467
  249. mcli_framework-8.0.43/tests/unit/test_lib_auth.py +0 -10
  250. mcli_framework-8.0.43/tests/unit/test_lib_files.py +0 -55
  251. mcli_framework-8.0.43/tests/unit/test_lib_utils.py +0 -9
  252. mcli_framework-8.0.43/tests/unit/test_logger.py +0 -214
  253. mcli_framework-8.0.43/tests/unit/test_ml_preprocessing.py +0 -165
  254. mcli_framework-8.0.43/tests/unit/test_new_cmd.py +0 -819
  255. mcli_framework-8.0.43/tests/unit/test_notebook_command_loader.py +0 -525
  256. mcli_framework-8.0.43/tests/unit/test_notebook_executor.py +0 -233
  257. mcli_framework-8.0.43/tests/unit/test_optional_deps.py +0 -211
  258. mcli_framework-8.0.43/tests/unit/test_paths.py +0 -202
  259. mcli_framework-8.0.43/tests/unit/test_pdf_compress.py +0 -257
  260. mcli_framework-8.0.43/tests/unit/test_prediction_engine.py +0 -550
  261. mcli_framework-8.0.43/tests/unit/test_pyenv.py +0 -427
  262. mcli_framework-8.0.43/tests/unit/test_regression.py +0 -129
  263. mcli_framework-8.0.43/tests/unit/test_scheduler.py +0 -439
  264. mcli_framework-8.0.43/tests/unit/test_scheduler_cron_parser.py +0 -509
  265. mcli_framework-8.0.43/tests/unit/test_scheduler_job.py +0 -505
  266. mcli_framework-8.0.43/tests/unit/test_scheduler_models.py +0 -419
  267. mcli_framework-8.0.43/tests/unit/test_scheduler_monitor.py +0 -509
  268. mcli_framework-8.0.43/tests/unit/test_scheduler_persistence.py +0 -709
  269. mcli_framework-8.0.43/tests/unit/test_scheduler_validation.py +0 -390
  270. mcli_framework-8.0.43/tests/unit/test_script_loader_options.py +0 -210
  271. mcli_framework-8.0.43/tests/unit/test_security_command_injection.py +0 -225
  272. mcli_framework-8.0.43/tests/unit/test_self_update.py +0 -200
  273. mcli_framework-8.0.43/tests/unit/test_service_config.py +0 -82
  274. mcli_framework-8.0.43/tests/unit/test_service_health.py +0 -88
  275. mcli_framework-8.0.43/tests/unit/test_service_manager.py +0 -150
  276. mcli_framework-8.0.43/tests/unit/test_service_state.py +0 -93
  277. mcli_framework-8.0.43/tests/unit/test_services_cmd.py +0 -162
  278. mcli_framework-8.0.43/tests/unit/test_shell_exceptions.py +0 -428
  279. mcli_framework-8.0.43/tests/unit/test_shell_functions.py +0 -329
  280. mcli_framework-8.0.43/tests/unit/test_shell_security.py +0 -215
  281. mcli_framework-8.0.43/tests/unit/test_store_cmd.py +0 -445
  282. mcli_framework-8.0.43/tests/unit/test_supabase_connection.py +0 -297
  283. mcli_framework-8.0.43/tests/unit/test_supabase_pagination.py +0 -235
  284. mcli_framework-8.0.43/tests/unit/test_sync_cmd.py +0 -266
  285. mcli_framework-8.0.43/tests/unit/test_toml_utils.py +0 -192
  286. mcli_framework-8.0.43/tests/unit/test_trading_imports.py +0 -125
  287. mcli_framework-8.0.43/tests/unit/test_ui_rich.py +0 -22
  288. mcli_framework-8.0.43/tests/unit/test_uv_compat.py +0 -224
  289. mcli_framework-8.0.43/tests/unit/test_workflow_file_completion.py +0 -219
  290. mcli_framework-8.0.43/tests/unit/test_workflow_models.py +0 -337
  291. mcli_framework-8.0.43/tests/unit/workflow/test_notebook.py +0 -443
  292. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/LICENSE +0 -0
  293. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/README.md +0 -0
  294. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/llms-full.txt +0 -0
  295. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/llms.txt +0 -0
  296. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/Cargo.toml +0 -0
  297. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/src/command_parser.rs +0 -0
  298. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/src/file_watcher.rs +0 -0
  299. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/src/lib.rs +0 -0
  300. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/src/process_manager.rs +0 -0
  301. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/mcli_rust/src/tfidf.rs +0 -0
  302. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/setup.cfg +0 -0
  303. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/__init__.py +0 -0
  304. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/__init__.py +0 -0
  305. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/completion_helpers.py +0 -0
  306. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/context_cmd.py +0 -0
  307. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/create_cmd.py +0 -0
  308. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/delete_cmd.py +0 -0
  309. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/edit_cmd.py +0 -0
  310. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/import_cmd.py +0 -0
  311. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/init_cmd.py +0 -0
  312. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/list_cmd.py +0 -0
  313. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/migrate_cmd.py +0 -0
  314. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/model/__init__.py +0 -0
  315. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/model/model.py +0 -0
  316. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/mv_cmd.py +0 -0
  317. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/remove_cmd.py +0 -0
  318. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/rm_cmd.py +0 -0
  319. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/search_cmd.py +0 -0
  320. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/services_cmd.py +0 -0
  321. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/video/__init__.py +0 -0
  322. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/app/video/video.py +0 -0
  323. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/config.toml +0 -0
  324. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/__init__.py +0 -0
  325. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/__init__.py +0 -0
  326. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/daemon_client_local.py +0 -0
  327. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/daemon_decorator.py +0 -0
  328. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/api/mcli_decorators.py +0 -0
  329. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/__init__.py +0 -0
  330. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/auth.py +0 -0
  331. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/aws_manager.py +0 -0
  332. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/azure_manager.py +0 -0
  333. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/credential_manager.py +0 -0
  334. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/gcp_manager.py +0 -0
  335. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/key_manager.py +0 -0
  336. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/mcli_manager.py +0 -0
  337. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/token_manager.py +0 -0
  338. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/auth/token_util.py +0 -0
  339. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/config/config.py +0 -0
  340. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/__init__.py +0 -0
  341. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/commands.py +0 -0
  342. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/paths.py +0 -0
  343. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/scripts.py +0 -0
  344. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/constants/storage.py +0 -0
  345. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/custom_commands.py +0 -0
  346. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/discovery/__init__.py +0 -0
  347. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/discovery/command_discovery.py +0 -0
  348. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/erd/__init__.py +0 -0
  349. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/erd/erd.py +0 -0
  350. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/erd/generate_graph.py +0 -0
  351. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/errors.py +0 -0
  352. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/feature_detection.py +0 -0
  353. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/files/__init__.py +0 -0
  354. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/files/files.py +0 -0
  355. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/folder_workflows.py +0 -0
  356. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/fs/__init__.py +0 -0
  357. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/fs/fs.py +0 -0
  358. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/lib.py +0 -0
  359. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/logger/__init__.py +0 -0
  360. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/logger/correlation.py +0 -0
  361. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/logger/logger.py +0 -0
  362. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/logger/structured.py +0 -0
  363. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/optional_deps.py +0 -0
  364. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/paths.py +0 -0
  365. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/performance/__init__.py +0 -0
  366. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/performance/optimizer.py +0 -0
  367. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/performance/rust_bridge.py +0 -0
  368. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/performance/uvloop_config.py +0 -0
  369. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pickles/__init__.py +0 -0
  370. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pyenv/__init__.py +0 -0
  371. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pyenv/manager.py +0 -0
  372. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/pyenv/venv.py +0 -0
  373. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/script_sync.py +0 -0
  374. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/script_watcher.py +0 -0
  375. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  376. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/secrets/__init__.py +0 -0
  377. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/secrets/commands.py +0 -0
  378. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/secrets/repl.py +0 -0
  379. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/secrets/store.py +0 -0
  380. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/__init__.py +0 -0
  381. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/config.py +0 -0
  382. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/data_pipeline.py +0 -0
  383. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/health.py +0 -0
  384. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/lsh_client.py +0 -0
  385. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/manager.py +0 -0
  386. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/redis_service.py +0 -0
  387. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/registry.py +0 -0
  388. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/state.py +0 -0
  389. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/services/supervisor.py +0 -0
  390. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/shell/__init__.py +0 -0
  391. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/shell/exceptions.py +0 -0
  392. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/shell/shell.py +0 -0
  393. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/templates/__init__.py +0 -0
  394. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/templates/command_templates.py +0 -0
  395. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/toml/__init__.py +0 -0
  396. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/toml/toml.py +0 -0
  397. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/types.py +0 -0
  398. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/ui/styling.py +0 -0
  399. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/ui/visual_effects.py +0 -0
  400. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/watcher/__init__.py +0 -0
  401. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/watcher/watcher.py +0 -0
  402. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/workflow_models.py +0 -0
  403. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/lib/workspace_registry.py +0 -0
  404. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/mygroup/__init__.py +0 -0
  405. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/mygroup/test_cmd.py +0 -0
  406. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/public/__init__.py +0 -0
  407. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/public/commands/__init__.py +0 -0
  408. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/public/oi/oi.py +0 -0
  409. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/public/public.py +0 -0
  410. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/__init__.py +0 -0
  411. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/completion_cmd.py +0 -0
  412. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/env_cmd.py +0 -0
  413. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/health_cmd.py +0 -0
  414. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/ipfs_cmd.py +0 -0
  415. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/logs_cmd.py +0 -0
  416. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/migrate_cmd.py +0 -0
  417. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/store_cmd.py +0 -0
  418. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/test_cmd.py +0 -0
  419. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/self/workflows_cmd.py +0 -0
  420. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/__init__.py +0 -0
  421. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/backends/__init__.py +0 -0
  422. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/backends/ipfs_backend.py +0 -0
  423. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/base.py +0 -0
  424. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/cache.py +0 -0
  425. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/encryption.py +0 -0
  426. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/factory.py +0 -0
  427. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/registry.py +0 -0
  428. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/storage/storacha_cli.py +0 -0
  429. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/__init__.py +0 -0
  430. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/__init__.py +0 -0
  431. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  432. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  433. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/client.py +0 -0
  434. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/daemon.py +0 -0
  435. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  436. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/process_cli.py +0 -0
  437. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/process_manager.py +0 -0
  438. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  439. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/doc_convert.py +0 -0
  440. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/docker/__init__.py +0 -0
  441. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/docker/docker.py +0 -0
  442. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/file/__init__.py +0 -0
  443. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/gcloud/__init__.py +0 -0
  444. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/gcloud/config.toml +0 -0
  445. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  446. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/git_commit/__init__.py +0 -0
  447. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  448. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/interview/__init__.py +0 -0
  449. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/lsh_integration.py +0 -0
  450. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/client.py +0 -0
  451. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  452. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  453. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  454. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  455. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/model_service.py +0 -0
  456. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  457. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  458. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  459. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  460. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/test_example.py +0 -0
  461. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/test_integration.py +0 -0
  462. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  463. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/__init__.py +0 -0
  464. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/command_loader.py +0 -0
  465. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/converter.py +0 -0
  466. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/executor.py +0 -0
  467. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/notebook_cmd.py +0 -0
  468. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/schema.py +0 -0
  469. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/notebook/validator.py +0 -0
  470. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/openai/openai.py +0 -0
  471. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/registry/__init__.py +0 -0
  472. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/registry/registry.py +0 -0
  473. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/repo/__init__.py +0 -0
  474. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/repo/repo.py +0 -0
  475. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/__init__.py +0 -0
  476. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  477. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/job.py +0 -0
  478. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/models.py +0 -0
  479. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/monitor.py +0 -0
  480. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/persistence.py +0 -0
  481. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  482. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/scheduler/validation.py +0 -0
  483. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/search/__init__.py +0 -0
  484. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/secrets/__init__.py +0 -0
  485. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/secrets/secrets_cmd.py +0 -0
  486. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/storage/__init__.py +0 -0
  487. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/storage/storage_cmd.py +0 -0
  488. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/sync/__init__.py +0 -0
  489. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/sync/test_cmd.py +0 -0
  490. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/videos/__init__.py +0 -0
  491. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/wakatime/__init__.py +0 -0
  492. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  493. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli/workflow/workflow.py +0 -0
  494. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  495. {mcli_framework-8.0.43 → mcli_framework-8.0.45}/src/mcli_framework.egg-info/top_level.txt +0 -0
@@ -17,12 +17,8 @@ recursive-include src/mcli *.toml
17
17
  graft mcli_rust/src
18
18
  include mcli_rust/Cargo.toml
19
19
 
20
- # Include GitHub workflows and configuration
21
- recursive-include .github *.yml *.yaml
22
-
23
- # Include tests (optional, for development)
24
- recursive-include tests *.py
25
- include tests/*.ini
20
+ # Exclude CI/test files from distribution (not needed for end users)
21
+ # GitHub workflows and test files are available in the source repository
26
22
 
27
23
  # Exclude build artifacts
28
24
  prune build/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 8.0.43
3
+ Version: 8.0.45
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>
@@ -37,10 +37,12 @@ Requires-Python: >=3.10
37
37
  Description-Content-Type: text/markdown
38
38
  License-File: LICENSE
39
39
  Requires-Dist: click<9.0.0,>=8.1.7
40
- Requires-Dist: rich>=14.0.0
40
+ Requires-Dist: rich<15.0.0,>=14.0.0
41
41
  Requires-Dist: requests<3.0.0,>=2.31.0
42
- Requires-Dist: tomli>=2.2.1
43
- Requires-Dist: python-dotenv>=1.1.1
42
+ Requires-Dist: tomli<3.0.0,>=2.2.1
43
+ Requires-Dist: python-dotenv<2.0.0,>=1.1.1
44
+ Requires-Dist: pydantic<3.0.0,>=2.0.0
45
+ Requires-Dist: pydantic-settings<3.0.0,>=2.0.0
44
46
  Requires-Dist: watchdog<4.0.0,>=3.0.0
45
47
  Requires-Dist: tqdm<5.0.0,>=4.66.1
46
48
  Requires-Dist: humanize<5.0.0,>=4.9.0
@@ -48,118 +50,22 @@ Requires-Dist: psutil<6.0.0,>=5.9.0
48
50
  Requires-Dist: inquirerpy<0.4.0,>=0.3.4
49
51
  Requires-Dist: gitpython<4.0.0,>=3.1.40
50
52
  Requires-Dist: prompt-toolkit<4.0.0,>=3.0.0
51
- Requires-Dist: aiohttp>=3.13.3
52
- Requires-Dist: httpx>=0.28.1
53
- Requires-Dist: websockets>=12.0
54
- Requires-Dist: beautifulsoup4>=4.13.5
55
- Requires-Dist: fuzzywuzzy>=0.18.0
53
+ Requires-Dist: aiohttp<4.0.0,>=3.13.3
54
+ Requires-Dist: httpx<1.0.0,>=0.28.1
55
+ Requires-Dist: websockets<14.0.0,>=12.0
56
+ Requires-Dist: beautifulsoup4<5.0.0,>=4.13.5
57
+ Requires-Dist: fuzzywuzzy<1.0.0,>=0.18.0
56
58
  Requires-Dist: openai<2.0.0,>=1.3.0
57
- Requires-Dist: anthropic>=0.60.0
58
- Requires-Dist: ollama>=0.5.3
59
+ Requires-Dist: anthropic<1.0.0,>=0.60.0
60
+ Requires-Dist: ollama<1.0.0,>=0.5.3
59
61
  Requires-Dist: ipython<9.0.0,>=8.12.0
60
- Requires-Dist: fastapi>=0.110.0
61
- Requires-Dist: uvicorn>=0.27.0
62
- Requires-Dist: uvloop>=0.19.0
63
- Requires-Dist: aiosqlite>=0.20.0
64
- Requires-Dist: redis>=5.0.0
65
- Requires-Dist: aiohttp-sse-client>=0.2.1
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
62
+ Requires-Dist: fastapi<1.0.0,>=0.110.0
63
+ Requires-Dist: uvicorn<1.0.0,>=0.27.0
64
+ Requires-Dist: uvloop<1.0.0,>=0.19.0
65
+ Requires-Dist: aiosqlite<1.0.0,>=0.20.0
66
+ Requires-Dist: redis<6.0.0,>=5.0.0
67
+ Requires-Dist: aiohttp-sse-client<1.0.0,>=0.2.1
68
+ Requires-Dist: aiomqtt<3.0.0,>=2.0.0
163
69
  Provides-Extra: dev
164
70
  Requires-Dist: pytest>=8.4.1; extra == "dev"
165
71
  Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
@@ -182,7 +88,6 @@ Requires-Dist: pre-commit>=4.5.1; extra == "dev"
182
88
  Requires-Dist: build>=1.2.2.post1; extra == "dev"
183
89
  Requires-Dist: maturin>=1.9.3; extra == "dev"
184
90
  Requires-Dist: twine>=4.0.0; extra == "dev"
185
- Provides-Extra: all
186
91
  Dynamic: license-file
187
92
 
188
93
  # MCLI - Universal Script Runner & Workflow Framework
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "8.0.43"
3
+ version = "8.0.45"
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"
@@ -37,10 +37,12 @@ classifiers = [
37
37
  dependencies = [
38
38
  # Core CLI dependencies
39
39
  "click>=8.1.7,<9.0.0",
40
- "rich>=14.0.0",
40
+ "rich>=14.0.0,<15.0.0",
41
41
  "requests>=2.31.0,<3.0.0",
42
- "tomli>=2.2.1",
43
- "python-dotenv>=1.1.1",
42
+ "tomli>=2.2.1,<3.0.0",
43
+ "python-dotenv>=1.1.1,<2.0.0",
44
+ "pydantic>=2.0.0,<3.0.0",
45
+ "pydantic-settings>=2.0.0,<3.0.0",
44
46
  # Core utilities
45
47
  "watchdog>=3.0.0,<4.0.0",
46
48
  "tqdm>=4.66.1,<5.0.0",
@@ -50,88 +52,25 @@ dependencies = [
50
52
  "gitpython>=3.1.40,<4.0.0",
51
53
  "prompt-toolkit>=3.0.0,<4.0.0",
52
54
  # Basic HTTP/async support
53
- "aiohttp>=3.13.3", # CVE-2025-69223 through CVE-2025-69230 fixes
54
- "httpx>=0.28.1",
55
- "websockets>=12.0",
55
+ "aiohttp>=3.13.3,<4.0.0", # CVE-2025-69223 through CVE-2025-69230 fixes
56
+ "httpx>=0.28.1,<1.0.0",
57
+ "websockets>=12.0,<14.0.0",
56
58
  # Data parsing
57
- "beautifulsoup4>=4.13.5",
58
- "fuzzywuzzy>=0.18.0",
59
+ "beautifulsoup4>=4.13.5,<5.0.0",
60
+ "fuzzywuzzy>=0.18.0,<1.0.0",
59
61
  # Chat and AI capabilities
60
62
  "openai>=1.3.0,<2.0.0",
61
- "anthropic>=0.60.0",
62
- "ollama>=0.5.3",
63
+ "anthropic>=0.60.0,<1.0.0",
64
+ "ollama>=0.5.3,<1.0.0",
63
65
  "ipython>=8.12.0,<9.0.0",
64
66
  # Enhanced async/performance features
65
- "fastapi>=0.110.0",
66
- "uvicorn>=0.27.0",
67
- "uvloop>=0.19.0",
68
- "aiosqlite>=0.20.0",
69
- "redis>=5.0.0",
70
- "aiohttp-sse-client>=0.2.1",
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",
67
+ "fastapi>=0.110.0,<1.0.0",
68
+ "uvicorn>=0.27.0,<1.0.0",
69
+ "uvloop>=0.19.0,<1.0.0",
70
+ "aiosqlite>=0.20.0,<1.0.0",
71
+ "redis>=5.0.0,<6.0.0",
72
+ "aiohttp-sse-client>=0.2.1,<1.0.0",
73
+ "aiomqtt>=2.0.0,<3.0.0",
135
74
  ]
136
75
 
137
76
  [project.urls]
@@ -143,68 +82,6 @@ dependencies = [
143
82
  "Source" = "https://github.com/gwicho38/mcli"
144
83
 
145
84
  [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
85
  # Development tools
209
86
  dev = [
210
87
  # Testing framework
@@ -235,9 +112,6 @@ dev = [
235
112
  "twine>=4.0.0", # Package upload
236
113
  ]
237
114
 
238
- # All optional features (all features now included by default)
239
- all = []
240
-
241
115
  [tool.black]
242
116
  line-length = 100
243
117
  include = '\.pyi?$'
@@ -263,11 +137,9 @@ known_first_party = ["mcli"]
263
137
  known_third_party = [
264
138
  "click", "rich", "requests", "tomli", "openai", "anthropic",
265
139
  "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"
140
+ "tqdm", "humanize", "psutil", "ipython", "inquirerpy",
141
+ "gitpython", "maturin", "fuzzywuzzy", "ollama", "pytest",
142
+ "httpx", "aiohttp", "beautifulsoup4", "python-dotenv"
271
143
  ]
272
144
  sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
273
145
  force_grid_wrap = 0
@@ -307,20 +179,15 @@ disable_error_code = [
307
179
  "index",
308
180
  "type-arg",
309
181
  "override",
310
- "comparison-overlap",
311
- "redundant-expr",
312
182
  "no-any-return",
313
183
  "has-type",
314
184
  "valid-type",
315
185
  "type-var",
316
186
  "dict-item",
317
187
  "call-overload",
318
- "empty-body",
319
188
  "no-redef",
320
189
  "abstract",
321
190
  "list-item",
322
- "str-bytes-safe",
323
- "func-returns-value",
324
191
  ]
325
192
 
326
193
  # Module discovery
@@ -374,19 +241,6 @@ module = [
374
241
  warn_return_any = false
375
242
  ignore_errors = false
376
243
 
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
244
  # Core modules - enable stricter type checking
391
245
  [[tool.mypy.overrides]]
392
246
  module = [
@@ -397,17 +251,13 @@ disallow_untyped_defs = true
397
251
  check_untyped_defs = true
398
252
  strict_optional = true
399
253
 
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
254
  [build-system]
407
255
  requires = ["setuptools>=65.0.0", "wheel>=0.40.0"]
408
256
  build-backend = "setuptools.build_meta"
409
257
 
410
258
  [dependency-groups]
259
+ # NOTE: This is the primary dev dependency specification (PEP 735).
260
+ # [project.optional-dependencies] dev is kept for pip compatibility.
411
261
  dev = [
412
262
  "black>=25.0.0,<26.0.0", # Pin to 25.x to match lockfile
413
263
  "isort>=5.13.2",
@@ -469,7 +319,7 @@ precision = 2
469
319
  skip_covered = false
470
320
  skip_empty = false
471
321
  # Fail if coverage is below threshold
472
- fail_under = 25.0
322
+ fail_under = 50.0
473
323
 
474
324
  [tool.coverage.html]
475
325
  directory = "htmlcov"
@@ -487,7 +337,7 @@ addopts = [
487
337
  "--cov-report=html",
488
338
  "--cov-report=xml",
489
339
  "--cov-branch",
490
- "--cov-fail-under=80",
340
+ "--cov-fail-under=50",
491
341
  ]
492
342
  testpaths = ["tests"]
493
343
  python_files = ["test_*.py", "*_test.py"]
@@ -512,11 +362,6 @@ filterwarnings = [
512
362
 
513
363
  [project.scripts]
514
364
  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
365
 
521
366
  [tool.bandit]
522
367
  # Skip these test IDs - acceptable in this CLI tool context
@@ -353,7 +353,9 @@ def init_store(path, remote):
353
353
  # Initialize git if not already initialized
354
354
  git_dir = store_path / ".git"
355
355
  if not git_dir.exists():
356
- subprocess.run(["git", "init"], cwd=store_path, check=True, capture_output=True)
356
+ subprocess.run(
357
+ ["git", "init"], cwd=store_path, check=True, capture_output=True, timeout=60
358
+ )
357
359
  success(f"Initialized git repository at {store_path}")
358
360
 
359
361
  # Create .gitignore
@@ -395,7 +397,10 @@ Last updated: {datetime.now().isoformat()}
395
397
  # Add remote if provided
396
398
  if remote:
397
399
  subprocess.run(
398
- ["git", "remote", "add", "origin", remote], cwd=store_path, check=True
400
+ ["git", "remote", "add", "origin", remote],
401
+ cwd=store_path,
402
+ check=True,
403
+ timeout=60,
399
404
  )
400
405
  success(f"Added remote: {remote}")
401
406
  else:
@@ -455,11 +460,15 @@ def push_commands(message, all, is_global):
455
460
  success(f"Copied {copied_count} items to store")
456
461
 
457
462
  # Git add, commit, push
458
- subprocess.run(["git", "add", "."], cwd=store_path, check=True)
463
+ subprocess.run(["git", "add", "."], cwd=store_path, check=True, timeout=60)
459
464
 
460
465
  # Check if there are changes
461
466
  result = subprocess.run(
462
- ["git", "status", "--porcelain"], cwd=store_path, capture_output=True, text=True
467
+ ["git", "status", "--porcelain"],
468
+ cwd=store_path,
469
+ capture_output=True,
470
+ text=True,
471
+ timeout=60,
463
472
  )
464
473
 
465
474
  if not result.stdout.strip():
@@ -468,12 +477,14 @@ def push_commands(message, all, is_global):
468
477
 
469
478
  # Commit with message
470
479
  commit_msg = message or f"Update commands {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
471
- subprocess.run(["git", "commit", "-m", commit_msg], cwd=store_path, check=True)
480
+ subprocess.run(["git", "commit", "-m", commit_msg], cwd=store_path, check=True, timeout=60)
472
481
  success(f"Committed changes: {commit_msg}")
473
482
 
474
483
  # Push to remote if configured
475
484
  try:
476
- subprocess.run(["git", "push"], cwd=store_path, check=True, capture_output=True)
485
+ subprocess.run(
486
+ ["git", "push"], cwd=store_path, check=True, capture_output=True, timeout=60
487
+ )
477
488
  success("Pushed to remote")
478
489
  except subprocess.CalledProcessError:
479
490
  warning("No remote configured or push failed. Commands committed locally.")
@@ -502,7 +513,7 @@ def pull_commands(force, is_global):
502
513
 
503
514
  # Pull from remote
504
515
  try:
505
- subprocess.run(["git", "pull"], cwd=store_path, check=True)
516
+ subprocess.run(["git", "pull"], cwd=store_path, check=True, timeout=60)
506
517
  success("Pulled latest changes from remote")
507
518
  except subprocess.CalledProcessError:
508
519
  warning("No remote configured or pull failed. Using local store.")
@@ -561,7 +572,9 @@ def sync_commands(message, is_global):
561
572
  # First pull
562
573
  info("Pulling latest changes...")
563
574
  try:
564
- subprocess.run(["git", "pull"], cwd=store_path, check=True, capture_output=True)
575
+ subprocess.run(
576
+ ["git", "pull"], cwd=store_path, check=True, capture_output=True, timeout=60
577
+ )
565
578
  success("Pulled from remote")
566
579
  except subprocess.CalledProcessError:
567
580
  warning("No remote or pull failed")
@@ -581,7 +594,11 @@ def sync_commands(message, is_global):
581
594
 
582
595
  # Check for changes
583
596
  result = subprocess.run(
584
- ["git", "status", "--porcelain"], cwd=store_path, capture_output=True, text=True
597
+ ["git", "status", "--porcelain"],
598
+ cwd=store_path,
599
+ capture_output=True,
600
+ text=True,
601
+ timeout=60,
585
602
  )
586
603
 
587
604
  if not result.stdout.strip():
@@ -589,12 +606,14 @@ def sync_commands(message, is_global):
589
606
  return
590
607
 
591
608
  # Commit and push
592
- subprocess.run(["git", "add", "."], cwd=store_path, check=True)
609
+ subprocess.run(["git", "add", "."], cwd=store_path, check=True, timeout=60)
593
610
  commit_msg = message or f"Sync commands {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
594
- subprocess.run(["git", "commit", "-m", commit_msg], cwd=store_path, check=True)
611
+ subprocess.run(["git", "commit", "-m", commit_msg], cwd=store_path, check=True, timeout=60)
595
612
 
596
613
  try:
597
- subprocess.run(["git", "push"], cwd=store_path, check=True, capture_output=True)
614
+ subprocess.run(
615
+ ["git", "push"], cwd=store_path, check=True, capture_output=True, timeout=60
616
+ )
598
617
  success("Synced and pushed to remote")
599
618
  except subprocess.CalledProcessError:
600
619
  success("Synced locally (no remote configured)")
@@ -614,7 +633,11 @@ def store_status():
614
633
 
615
634
  # Git status
616
635
  result = subprocess.run(
617
- ["git", "status", "--short", "--branch"], cwd=store_path, capture_output=True, text=True
636
+ ["git", "status", "--short", "--branch"],
637
+ cwd=store_path,
638
+ capture_output=True,
639
+ text=True,
640
+ timeout=60,
618
641
  )
619
642
 
620
643
  if result.stdout:
@@ -622,7 +645,7 @@ def store_status():
622
645
 
623
646
  # Show remote
624
647
  result = subprocess.run(
625
- ["git", "remote", "-v"], cwd=store_path, capture_output=True, text=True
648
+ ["git", "remote", "-v"], cwd=store_path, capture_output=True, text=True, timeout=60
626
649
  )
627
650
 
628
651
  if result.stdout:
@@ -656,17 +679,23 @@ def configure_store(remote, path):
656
679
  if remote:
657
680
  # Check if remote exists
658
681
  result = subprocess.run(
659
- ["git", "remote"], cwd=store_path, capture_output=True, text=True
682
+ ["git", "remote"], cwd=store_path, capture_output=True, text=True, timeout=60
660
683
  )
661
684
 
662
685
  if "origin" in result.stdout:
663
686
  subprocess.run(
664
- ["git", "remote", "set-url", "origin", remote], cwd=store_path, check=True
687
+ ["git", "remote", "set-url", "origin", remote],
688
+ cwd=store_path,
689
+ check=True,
690
+ timeout=60,
665
691
  )
666
692
  success(f"Updated remote URL: {remote}")
667
693
  else:
668
694
  subprocess.run(
669
- ["git", "remote", "add", "origin", remote], cwd=store_path, check=True
695
+ ["git", "remote", "add", "origin", remote],
696
+ cwd=store_path,
697
+ check=True,
698
+ timeout=60,
670
699
  )
671
700
  success(f"Added remote URL: {remote}")
672
701
 
@@ -1391,9 +1420,7 @@ def add_command(command_name, group, description, template, language, shell, is_
1391
1420
  if language != "ipynb":
1392
1421
  import stat
1393
1422
 
1394
- script_path.chmod(
1395
- script_path.stat().st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
1396
- )
1423
+ script_path.chmod(script_path.stat().st_mode | stat.S_IXUSR | stat.S_IXGRP)
1397
1424
 
1398
1425
  logger.info(f"Created script: {script_path}")
1399
1426
  except Exception as e: