mcli-framework 7.19.8__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 (355) hide show
  1. mcli_framework-7.19.8/.github/dependabot.yml +49 -0
  2. mcli_framework-7.19.8/.github/dependency-review-config.yml +17 -0
  3. mcli_framework-7.19.8/.github/workflows/build.yml +102 -0
  4. mcli_framework-7.19.8/.github/workflows/ci.yml +309 -0
  5. mcli_framework-7.19.8/.github/workflows/codeql.yml +43 -0
  6. mcli_framework-7.19.8/.github/workflows/main_mcli.yml +76 -0
  7. mcli_framework-7.19.8/.github/workflows/publish-self-hosted.yml +244 -0
  8. mcli_framework-7.19.8/.github/workflows/publish.yml +189 -0
  9. mcli_framework-7.19.8/.github/workflows/release.yml +91 -0
  10. mcli_framework-7.19.8/.github/workflows/security.yml +115 -0
  11. mcli_framework-7.19.8/.github/workflows/test.yml +154 -0
  12. mcli_framework-7.19.8/LICENSE +21 -0
  13. mcli_framework-7.19.8/MANIFEST.in +41 -0
  14. mcli_framework-7.19.8/PKG-INFO +853 -0
  15. mcli_framework-7.19.8/README.md +662 -0
  16. mcli_framework-7.19.8/mcli_rust/Cargo.toml +27 -0
  17. mcli_framework-7.19.8/mcli_rust/src/command_parser.rs +463 -0
  18. mcli_framework-7.19.8/mcli_rust/src/file_watcher.rs +312 -0
  19. mcli_framework-7.19.8/mcli_rust/src/lib.rs +20 -0
  20. mcli_framework-7.19.8/mcli_rust/src/process_manager.rs +464 -0
  21. mcli_framework-7.19.8/mcli_rust/src/tfidf.rs +271 -0
  22. mcli_framework-7.19.8/pyproject.toml +475 -0
  23. mcli_framework-7.19.8/setup.cfg +150 -0
  24. mcli_framework-7.19.8/src/mcli/app/commands_cmd.py +1805 -0
  25. mcli_framework-7.19.8/src/mcli/app/completion_helpers.py +205 -0
  26. mcli_framework-7.19.8/src/mcli/app/create_cmd.py +438 -0
  27. mcli_framework-7.19.8/src/mcli/app/edit_cmd.py +118 -0
  28. mcli_framework-7.19.8/src/mcli/app/init_cmd.py +391 -0
  29. mcli_framework-7.19.8/src/mcli/app/lock_cmd.py +428 -0
  30. mcli_framework-7.19.8/src/mcli/app/main.py +576 -0
  31. mcli_framework-7.19.8/src/mcli/app/model/model.py +1055 -0
  32. mcli_framework-7.19.8/src/mcli/app/model_cmd.py +67 -0
  33. mcli_framework-7.19.8/src/mcli/app/new_cmd.py +438 -0
  34. mcli_framework-7.19.8/src/mcli/app/remove_cmd.py +60 -0
  35. mcli_framework-7.19.8/src/mcli/app/rm_cmd.py +57 -0
  36. mcli_framework-7.19.8/src/mcli/app/sync_cmd.py +87 -0
  37. mcli_framework-7.19.8/src/mcli/app/video/video.py +1101 -0
  38. mcli_framework-7.19.8/src/mcli/chat/chat.py +2392 -0
  39. mcli_framework-7.19.8/src/mcli/chat/command_rag.py +510 -0
  40. mcli_framework-7.19.8/src/mcli/chat/enhanced_chat.py +643 -0
  41. mcli_framework-7.19.8/src/mcli/chat/system_controller.py +1010 -0
  42. mcli_framework-7.19.8/src/mcli/chat/system_integration.py +1015 -0
  43. mcli_framework-7.19.8/src/mcli/cli.py +24 -0
  44. mcli_framework-7.19.8/src/mcli/config.toml +20 -0
  45. mcli_framework-7.19.8/src/mcli/lib/api/api.py +581 -0
  46. mcli_framework-7.19.8/src/mcli/lib/api/daemon_client.py +202 -0
  47. mcli_framework-7.19.8/src/mcli/lib/api/daemon_client_local.py +42 -0
  48. mcli_framework-7.19.8/src/mcli/lib/api/daemon_decorator.py +217 -0
  49. mcli_framework-7.19.8/src/mcli/lib/api/mcli_decorators.py +1028 -0
  50. mcli_framework-7.19.8/src/mcli/lib/auth/auth.py +84 -0
  51. mcli_framework-7.19.8/src/mcli/lib/auth/aws_manager.py +30 -0
  52. mcli_framework-7.19.8/src/mcli/lib/auth/azure_manager.py +36 -0
  53. mcli_framework-7.19.8/src/mcli/lib/auth/credential_manager.py +261 -0
  54. mcli_framework-7.19.8/src/mcli/lib/auth/gcp_manager.py +40 -0
  55. mcli_framework-7.19.8/src/mcli/lib/auth/key_manager.py +117 -0
  56. mcli_framework-7.19.8/src/mcli/lib/auth/mcli_manager.py +88 -0
  57. mcli_framework-7.19.8/src/mcli/lib/auth/token_manager.py +75 -0
  58. mcli_framework-7.19.8/src/mcli/lib/auth/token_util.py +1011 -0
  59. mcli_framework-7.19.8/src/mcli/lib/config/config.py +46 -0
  60. mcli_framework-7.19.8/src/mcli/lib/constants/__init__.py +72 -0
  61. mcli_framework-7.19.8/src/mcli/lib/constants/commands.py +136 -0
  62. mcli_framework-7.19.8/src/mcli/lib/constants/defaults.py +124 -0
  63. mcli_framework-7.19.8/src/mcli/lib/constants/env.py +66 -0
  64. mcli_framework-7.19.8/src/mcli/lib/constants/messages.py +96 -0
  65. mcli_framework-7.19.8/src/mcli/lib/constants/paths.py +78 -0
  66. mcli_framework-7.19.8/src/mcli/lib/custom_commands.py +698 -0
  67. mcli_framework-7.19.8/src/mcli/lib/discovery/__init__.py +1 -0
  68. mcli_framework-7.19.8/src/mcli/lib/discovery/command_discovery.py +274 -0
  69. mcli_framework-7.19.8/src/mcli/lib/erd/erd.py +1345 -0
  70. mcli_framework-7.19.8/src/mcli/lib/erd/generate_graph.py +453 -0
  71. mcli_framework-7.19.8/src/mcli/lib/files/files.py +76 -0
  72. mcli_framework-7.19.8/src/mcli/lib/folder_workflows.py +538 -0
  73. mcli_framework-7.19.8/src/mcli/lib/fs/fs.py +108 -0
  74. mcli_framework-7.19.8/src/mcli/lib/ipfs_sync.py +315 -0
  75. mcli_framework-7.19.8/src/mcli/lib/lib.py +35 -0
  76. mcli_framework-7.19.8/src/mcli/lib/logger/logger.py +606 -0
  77. mcli_framework-7.19.8/src/mcli/lib/makefile_workflows.py +249 -0
  78. mcli_framework-7.19.8/src/mcli/lib/optional_deps.py +238 -0
  79. mcli_framework-7.19.8/src/mcli/lib/packagejson_workflows.py +206 -0
  80. mcli_framework-7.19.8/src/mcli/lib/paths.py +222 -0
  81. mcli_framework-7.19.8/src/mcli/lib/performance/optimizer.py +407 -0
  82. mcli_framework-7.19.8/src/mcli/lib/performance/rust_bridge.py +497 -0
  83. mcli_framework-7.19.8/src/mcli/lib/performance/uvloop_config.py +153 -0
  84. mcli_framework-7.19.8/src/mcli/lib/pickles/pickles.py +48 -0
  85. mcli_framework-7.19.8/src/mcli/lib/script_sync.py +500 -0
  86. mcli_framework-7.19.8/src/mcli/lib/script_watcher.py +257 -0
  87. mcli_framework-7.19.8/src/mcli/lib/search/cached_vectorizer.py +480 -0
  88. mcli_framework-7.19.8/src/mcli/lib/secrets/commands.py +183 -0
  89. mcli_framework-7.19.8/src/mcli/lib/secrets/manager.py +212 -0
  90. mcli_framework-7.19.8/src/mcli/lib/secrets/repl.py +296 -0
  91. mcli_framework-7.19.8/src/mcli/lib/secrets/store.py +245 -0
  92. mcli_framework-7.19.8/src/mcli/lib/services/data_pipeline.py +467 -0
  93. mcli_framework-7.19.8/src/mcli/lib/services/lsh_client.py +450 -0
  94. mcli_framework-7.19.8/src/mcli/lib/services/redis_service.py +387 -0
  95. mcli_framework-7.19.8/src/mcli/lib/shell/shell.py +137 -0
  96. mcli_framework-7.19.8/src/mcli/lib/toml/toml.py +33 -0
  97. mcli_framework-7.19.8/src/mcli/lib/ui/styling.py +46 -0
  98. mcli_framework-7.19.8/src/mcli/lib/ui/visual_effects.py +626 -0
  99. mcli_framework-7.19.8/src/mcli/lib/watcher/watcher.py +184 -0
  100. mcli_framework-7.19.8/src/mcli/ml/api/app.py +202 -0
  101. mcli_framework-7.19.8/src/mcli/ml/api/middleware.py +216 -0
  102. mcli_framework-7.19.8/src/mcli/ml/api/routers/admin_router.py +14 -0
  103. mcli_framework-7.19.8/src/mcli/ml/api/routers/auth_router.py +219 -0
  104. mcli_framework-7.19.8/src/mcli/ml/api/routers/backtest_router.py +14 -0
  105. mcli_framework-7.19.8/src/mcli/ml/api/routers/data_router.py +14 -0
  106. mcli_framework-7.19.8/src/mcli/ml/api/routers/model_router.py +262 -0
  107. mcli_framework-7.19.8/src/mcli/ml/api/routers/monitoring_router.py +14 -0
  108. mcli_framework-7.19.8/src/mcli/ml/api/routers/portfolio_router.py +14 -0
  109. mcli_framework-7.19.8/src/mcli/ml/api/routers/prediction_router.py +263 -0
  110. mcli_framework-7.19.8/src/mcli/ml/api/routers/trade_router.py +16 -0
  111. mcli_framework-7.19.8/src/mcli/ml/api/routers/websocket_router.py +78 -0
  112. mcli_framework-7.19.8/src/mcli/ml/api/schemas.py +72 -0
  113. mcli_framework-7.19.8/src/mcli/ml/auth/auth_manager.py +394 -0
  114. mcli_framework-7.19.8/src/mcli/ml/auth/models.py +169 -0
  115. mcli_framework-7.19.8/src/mcli/ml/auth/permissions.py +295 -0
  116. mcli_framework-7.19.8/src/mcli/ml/backtesting/backtest_engine.py +522 -0
  117. mcli_framework-7.19.8/src/mcli/ml/backtesting/performance_metrics.py +425 -0
  118. mcli_framework-7.19.8/src/mcli/ml/backtesting/run.py +55 -0
  119. mcli_framework-7.19.8/src/mcli/ml/cache.py +393 -0
  120. mcli_framework-7.19.8/src/mcli/ml/cli/main.py +409 -0
  121. mcli_framework-7.19.8/src/mcli/ml/config/settings.py +410 -0
  122. mcli_framework-7.19.8/src/mcli/ml/configs/dvc_config.py +229 -0
  123. mcli_framework-7.19.8/src/mcli/ml/configs/mlflow_config.py +130 -0
  124. mcli_framework-7.19.8/src/mcli/ml/configs/mlops_manager.py +291 -0
  125. mcli_framework-7.19.8/src/mcli/ml/dashboard/app.py +481 -0
  126. mcli_framework-7.19.8/src/mcli/ml/dashboard/app_integrated.py +3031 -0
  127. mcli_framework-7.19.8/src/mcli/ml/dashboard/app_supabase.py +651 -0
  128. mcli_framework-7.19.8/src/mcli/ml/dashboard/app_training.py +613 -0
  129. mcli_framework-7.19.8/src/mcli/ml/dashboard/cli.py +60 -0
  130. mcli_framework-7.19.8/src/mcli/ml/dashboard/common.py +166 -0
  131. mcli_framework-7.19.8/src/mcli/ml/dashboard/components/charts.py +219 -0
  132. mcli_framework-7.19.8/src/mcli/ml/dashboard/components/metrics.py +105 -0
  133. mcli_framework-7.19.8/src/mcli/ml/dashboard/components/tables.py +223 -0
  134. mcli_framework-7.19.8/src/mcli/ml/dashboard/overview.py +402 -0
  135. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/cicd.py +426 -0
  136. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/debug_dependencies.py +413 -0
  137. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/gravity_viz.py +844 -0
  138. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +550 -0
  139. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/predictions_enhanced.py +1020 -0
  140. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +1100 -0
  141. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/test_portfolio.py +452 -0
  142. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/trading.py +835 -0
  143. mcli_framework-7.19.8/src/mcli/ml/dashboard/pages/workflows.py +568 -0
  144. mcli_framework-7.19.8/src/mcli/ml/dashboard/streamlit_extras_utils.py +288 -0
  145. mcli_framework-7.19.8/src/mcli/ml/dashboard/styles.py +55 -0
  146. mcli_framework-7.19.8/src/mcli/ml/dashboard/utils.py +192 -0
  147. mcli_framework-7.19.8/src/mcli/ml/dashboard/warning_suppression.py +36 -0
  148. mcli_framework-7.19.8/src/mcli/ml/data_ingestion/api_connectors.py +466 -0
  149. mcli_framework-7.19.8/src/mcli/ml/data_ingestion/data_pipeline.py +559 -0
  150. mcli_framework-7.19.8/src/mcli/ml/data_ingestion/stream_processor.py +501 -0
  151. mcli_framework-7.19.8/src/mcli/ml/database/migrations/env.py +95 -0
  152. mcli_framework-7.19.8/src/mcli/ml/database/models.py +698 -0
  153. mcli_framework-7.19.8/src/mcli/ml/database/session.py +365 -0
  154. mcli_framework-7.19.8/src/mcli/ml/experimentation/ab_testing.py +894 -0
  155. mcli_framework-7.19.8/src/mcli/ml/features/ensemble_features.py +603 -0
  156. mcli_framework-7.19.8/src/mcli/ml/features/recommendation_engine.py +810 -0
  157. mcli_framework-7.19.8/src/mcli/ml/features/stock_features.py +571 -0
  158. mcli_framework-7.19.8/src/mcli/ml/features/test_feature_engineering.py +346 -0
  159. mcli_framework-7.19.8/src/mcli/ml/logging.py +80 -0
  160. mcli_framework-7.19.8/src/mcli/ml/mlops/data_versioning.py +510 -0
  161. mcli_framework-7.19.8/src/mcli/ml/mlops/experiment_tracker.py +385 -0
  162. mcli_framework-7.19.8/src/mcli/ml/mlops/model_serving.py +475 -0
  163. mcli_framework-7.19.8/src/mcli/ml/mlops/pipeline_orchestrator.py +658 -0
  164. mcli_framework-7.19.8/src/mcli/ml/models/base_models.py +325 -0
  165. mcli_framework-7.19.8/src/mcli/ml/models/ensemble_models.py +677 -0
  166. mcli_framework-7.19.8/src/mcli/ml/models/recommendation_models.py +475 -0
  167. mcli_framework-7.19.8/src/mcli/ml/models/test_models.py +489 -0
  168. mcli_framework-7.19.8/src/mcli/ml/monitoring/drift_detection.py +693 -0
  169. mcli_framework-7.19.8/src/mcli/ml/monitoring/metrics.py +33 -0
  170. mcli_framework-7.19.8/src/mcli/ml/optimization/optimize.py +52 -0
  171. mcli_framework-7.19.8/src/mcli/ml/optimization/portfolio_optimizer.py +872 -0
  172. mcli_framework-7.19.8/src/mcli/ml/predictions/monte_carlo.py +416 -0
  173. mcli_framework-7.19.8/src/mcli/ml/predictions/prediction_engine.py +235 -0
  174. mcli_framework-7.19.8/src/mcli/ml/preprocessing/data_cleaners.py +451 -0
  175. mcli_framework-7.19.8/src/mcli/ml/preprocessing/feature_extractors.py +489 -0
  176. mcli_framework-7.19.8/src/mcli/ml/preprocessing/ml_pipeline.py +383 -0
  177. mcli_framework-7.19.8/src/mcli/ml/preprocessing/test_preprocessing.py +293 -0
  178. mcli_framework-7.19.8/src/mcli/ml/scripts/populate_sample_data.py +216 -0
  179. mcli_framework-7.19.8/src/mcli/ml/serving/serve.py +49 -0
  180. mcli_framework-7.19.8/src/mcli/ml/tasks.py +399 -0
  181. mcli_framework-7.19.8/src/mcli/ml/tests/test_integration.py +438 -0
  182. mcli_framework-7.19.8/src/mcli/ml/tests/test_training_dashboard.py +414 -0
  183. mcli_framework-7.19.8/src/mcli/ml/trading/alpaca_client.py +416 -0
  184. mcli_framework-7.19.8/src/mcli/ml/trading/migrations.py +200 -0
  185. mcli_framework-7.19.8/src/mcli/ml/trading/models.py +434 -0
  186. mcli_framework-7.19.8/src/mcli/ml/trading/paper_trading.py +347 -0
  187. mcli_framework-7.19.8/src/mcli/ml/trading/risk_management.py +390 -0
  188. mcli_framework-7.19.8/src/mcli/ml/trading/trading_service.py +522 -0
  189. mcli_framework-7.19.8/src/mcli/ml/training/train.py +79 -0
  190. mcli_framework-7.19.8/src/mcli/ml/training/train_model.py +567 -0
  191. mcli_framework-7.19.8/src/mcli/mygroup/test_cmd.py +2 -0
  192. mcli_framework-7.19.8/src/mcli/public/oi/oi.py +14 -0
  193. mcli_framework-7.19.8/src/mcli/public/public.py +4 -0
  194. mcli_framework-7.19.8/src/mcli/self/completion_cmd.py +222 -0
  195. mcli_framework-7.19.8/src/mcli/self/logs_cmd.py +446 -0
  196. mcli_framework-7.19.8/src/mcli/self/migrate_cmd.py +466 -0
  197. mcli_framework-7.19.8/src/mcli/self/redis_cmd.py +268 -0
  198. mcli_framework-7.19.8/src/mcli/self/self_cmd.py +1104 -0
  199. mcli_framework-7.19.8/src/mcli/self/store_cmd.py +422 -0
  200. mcli_framework-7.19.8/src/mcli/self/test_cmd.py +2 -0
  201. mcli_framework-7.19.8/src/mcli/self/visual_cmd.py +298 -0
  202. mcli_framework-7.19.8/src/mcli/self/zsh_cmd.py +257 -0
  203. mcli_framework-7.19.8/src/mcli/workflow/daemon/async_command_database.py +680 -0
  204. mcli_framework-7.19.8/src/mcli/workflow/daemon/async_process_manager.py +589 -0
  205. mcli_framework-7.19.8/src/mcli/workflow/daemon/client.py +524 -0
  206. mcli_framework-7.19.8/src/mcli/workflow/daemon/daemon.py +921 -0
  207. mcli_framework-7.19.8/src/mcli/workflow/daemon/daemon_api.py +59 -0
  208. mcli_framework-7.19.8/src/mcli/workflow/daemon/enhanced_daemon.py +562 -0
  209. mcli_framework-7.19.8/src/mcli/workflow/daemon/process_cli.py +243 -0
  210. mcli_framework-7.19.8/src/mcli/workflow/daemon/process_manager.py +436 -0
  211. mcli_framework-7.19.8/src/mcli/workflow/daemon/test_daemon.py +274 -0
  212. mcli_framework-7.19.8/src/mcli/workflow/dashboard/dashboard_cmd.py +179 -0
  213. mcli_framework-7.19.8/src/mcli/workflow/doc_convert.py +762 -0
  214. mcli_framework-7.19.8/src/mcli/workflow/docker/docker.py +0 -0
  215. mcli_framework-7.19.8/src/mcli/workflow/gcloud/config.toml +21 -0
  216. mcli_framework-7.19.8/src/mcli/workflow/gcloud/gcloud.py +61 -0
  217. mcli_framework-7.19.8/src/mcli/workflow/git_commit/ai_service.py +338 -0
  218. mcli_framework-7.19.8/src/mcli/workflow/lsh_integration.py +341 -0
  219. mcli_framework-7.19.8/src/mcli/workflow/model_service/client.py +589 -0
  220. mcli_framework-7.19.8/src/mcli/workflow/model_service/download_and_run_efficient_models.py +284 -0
  221. mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_embedder.py +387 -0
  222. mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_model_server.py +745 -0
  223. mcli_framework-7.19.8/src/mcli/workflow/model_service/lightweight_test.py +238 -0
  224. mcli_framework-7.19.8/src/mcli/workflow/model_service/model_service.py +1944 -0
  225. mcli_framework-7.19.8/src/mcli/workflow/model_service/ollama_efficient_runner.py +421 -0
  226. mcli_framework-7.19.8/src/mcli/workflow/model_service/openai_adapter.py +347 -0
  227. mcli_framework-7.19.8/src/mcli/workflow/model_service/pdf_processor.py +381 -0
  228. mcli_framework-7.19.8/src/mcli/workflow/model_service/test_efficient_runner.py +230 -0
  229. mcli_framework-7.19.8/src/mcli/workflow/model_service/test_example.py +313 -0
  230. mcli_framework-7.19.8/src/mcli/workflow/model_service/test_integration.py +129 -0
  231. mcli_framework-7.19.8/src/mcli/workflow/model_service/test_new_features.py +148 -0
  232. mcli_framework-7.19.8/src/mcli/workflow/notebook/command_loader.py +248 -0
  233. mcli_framework-7.19.8/src/mcli/workflow/notebook/converter.py +375 -0
  234. mcli_framework-7.19.8/src/mcli/workflow/notebook/executor.py +277 -0
  235. mcli_framework-7.19.8/src/mcli/workflow/notebook/notebook_cmd.py +522 -0
  236. mcli_framework-7.19.8/src/mcli/workflow/notebook/schema.py +411 -0
  237. mcli_framework-7.19.8/src/mcli/workflow/notebook/validator.py +317 -0
  238. mcli_framework-7.19.8/src/mcli/workflow/openai/openai.py +98 -0
  239. mcli_framework-7.19.8/src/mcli/workflow/registry/registry.py +183 -0
  240. mcli_framework-7.19.8/src/mcli/workflow/repo/repo.py +222 -0
  241. mcli_framework-7.19.8/src/mcli/workflow/scheduler/cron_parser.py +235 -0
  242. mcli_framework-7.19.8/src/mcli/workflow/scheduler/job.py +182 -0
  243. mcli_framework-7.19.8/src/mcli/workflow/scheduler/monitor.py +139 -0
  244. mcli_framework-7.19.8/src/mcli/workflow/scheduler/persistence.py +323 -0
  245. mcli_framework-7.19.8/src/mcli/workflow/scheduler/scheduler.py +678 -0
  246. mcli_framework-7.19.8/src/mcli/workflow/secrets/secrets_cmd.py +191 -0
  247. mcli_framework-7.19.8/src/mcli/workflow/sync/test_cmd.py +313 -0
  248. mcli_framework-7.19.8/src/mcli/workflow/sync_cmd.py +446 -0
  249. mcli_framework-7.19.8/src/mcli/workflow/wakatime/wakatime.py +10 -0
  250. mcli_framework-7.19.8/src/mcli/workflow/workflow.py +473 -0
  251. mcli_framework-7.19.8/src/mcli_framework.egg-info/PKG-INFO +853 -0
  252. mcli_framework-7.19.8/src/mcli_framework.egg-info/SOURCES.txt +354 -0
  253. mcli_framework-7.19.8/src/mcli_framework.egg-info/dependency_links.txt +1 -0
  254. mcli_framework-7.19.8/src/mcli_framework.egg-info/entry_points.txt +7 -0
  255. mcli_framework-7.19.8/src/mcli_framework.egg-info/requires.txt +167 -0
  256. mcli_framework-7.19.8/src/mcli_framework.egg-info/top_level.txt +1 -0
  257. mcli_framework-7.19.8/tests/cli/test_all_commands.py +7 -0
  258. mcli_framework-7.19.8/tests/cli/test_app_logs_cmd.py +208 -0
  259. mcli_framework-7.19.8/tests/cli/test_app_redis_cmd.py +272 -0
  260. mcli_framework-7.19.8/tests/cli/test_logs_cmd.py +287 -0
  261. mcli_framework-7.19.8/tests/cli/test_main_app.py +36 -0
  262. mcli_framework-7.19.8/tests/cli/test_model_cmd.py +621 -0
  263. mcli_framework-7.19.8/tests/cli/test_self_cmd.py +778 -0
  264. mcli_framework-7.19.8/tests/cli/test_self_cmd_plugins.py +267 -0
  265. mcli_framework-7.19.8/tests/cli/test_self_cmd_utilities.py +227 -0
  266. mcli_framework-7.19.8/tests/cli/test_workflow_creation_commands.py +133 -0
  267. mcli_framework-7.19.8/tests/cli/test_workflow_file.py +139 -0
  268. mcli_framework-7.19.8/tests/cli/test_workflow_gcloud.py +122 -0
  269. mcli_framework-7.19.8/tests/cli/test_workflow_registry.py +233 -0
  270. mcli_framework-7.19.8/tests/conftest.py +148 -0
  271. mcli_framework-7.19.8/tests/demo_generate_graph.py +79 -0
  272. mcli_framework-7.19.8/tests/demo_hierarchical_transform.py +412 -0
  273. mcli_framework-7.19.8/tests/e2e/test_complete_workflows.py +420 -0
  274. mcli_framework-7.19.8/tests/e2e/test_model_workflow.py +155 -0
  275. mcli_framework-7.19.8/tests/e2e/test_new_user_workflow.py +144 -0
  276. mcli_framework-7.19.8/tests/e2e/test_update_workflow.py +195 -0
  277. mcli_framework-7.19.8/tests/fixtures/chat_fixtures.py +83 -0
  278. mcli_framework-7.19.8/tests/fixtures/cli_fixtures.py +93 -0
  279. mcli_framework-7.19.8/tests/fixtures/data_fixtures.py +97 -0
  280. mcli_framework-7.19.8/tests/fixtures/db_fixtures.py +100 -0
  281. mcli_framework-7.19.8/tests/fixtures/model_fixtures.py +66 -0
  282. mcli_framework-7.19.8/tests/integration/test_agent.py +113 -0
  283. mcli_framework-7.19.8/tests/integration/test_chat_client.py +310 -0
  284. mcli_framework-7.19.8/tests/integration/test_chat_system.py +144 -0
  285. mcli_framework-7.19.8/tests/integration/test_daemon_server.py +754 -0
  286. mcli_framework-7.19.8/tests/integration/test_direct_file_execution.py +250 -0
  287. mcli_framework-7.19.8/tests/integration/test_e2e_dashboard_lsh_supabase.py +694 -0
  288. mcli_framework-7.19.8/tests/integration/test_flask_webapp.py +7 -0
  289. mcli_framework-7.19.8/tests/integration/test_folder_workflows_integration.py +436 -0
  290. mcli_framework-7.19.8/tests/integration/test_gcloud_services.py +58 -0
  291. mcli_framework-7.19.8/tests/integration/test_ml_auth.py +374 -0
  292. mcli_framework-7.19.8/tests/integration/test_ml_data_pipeline.py +642 -0
  293. mcli_framework-7.19.8/tests/integration/test_ml_models.py +323 -0
  294. mcli_framework-7.19.8/tests/integration/test_ml_pipeline.py +446 -0
  295. mcli_framework-7.19.8/tests/integration/test_module_imports.py +145 -0
  296. mcli_framework-7.19.8/tests/integration/test_notebook_workflows.py +500 -0
  297. mcli_framework-7.19.8/tests/integration/test_oi_service.py +10 -0
  298. mcli_framework-7.19.8/tests/integration/test_repo_operations.py +77 -0
  299. mcli_framework-7.19.8/tests/integration/test_scheduler_integration.py +484 -0
  300. mcli_framework-7.19.8/tests/integration/test_service_registry.py +141 -0
  301. mcli_framework-7.19.8/tests/integration/test_supabase_live_connection.py +216 -0
  302. mcli_framework-7.19.8/tests/integration/test_video_processing.py +60 -0
  303. mcli_framework-7.19.8/tests/integration/test_wakatime_api.py +10 -0
  304. mcli_framework-7.19.8/tests/integration/test_webapp_full.py +7 -0
  305. mcli_framework-7.19.8/tests/integration/test_workflow.py +7 -0
  306. mcli_framework-7.19.8/tests/integration/test_workflow_commands.py +7 -0
  307. mcli_framework-7.19.8/tests/run_tests.py +84 -0
  308. mcli_framework-7.19.8/tests/test_harness.py +186 -0
  309. mcli_framework-7.19.8/tests/test_openai_adapter.py +242 -0
  310. mcli_framework-7.19.8/tests/unit/test_api_utils.py +100 -0
  311. mcli_framework-7.19.8/tests/unit/test_async_process_manager.py +575 -0
  312. mcli_framework-7.19.8/tests/unit/test_auth_modules.py +326 -0
  313. mcli_framework-7.19.8/tests/unit/test_bug_fixes.py +38 -0
  314. mcli_framework-7.19.8/tests/unit/test_config.py +100 -0
  315. mcli_framework-7.19.8/tests/unit/test_custom_commands.py +338 -0
  316. mcli_framework-7.19.8/tests/unit/test_custom_commands_filtering.py +164 -0
  317. mcli_framework-7.19.8/tests/unit/test_daemon_api.py +268 -0
  318. mcli_framework-7.19.8/tests/unit/test_dashboard_components.py +451 -0
  319. mcli_framework-7.19.8/tests/unit/test_dashboard_functions.py +275 -0
  320. mcli_framework-7.19.8/tests/unit/test_dashboard_pages.py +524 -0
  321. mcli_framework-7.19.8/tests/unit/test_dependencies.py +108 -0
  322. mcli_framework-7.19.8/tests/unit/test_doc_convert_workflow.py +261 -0
  323. mcli_framework-7.19.8/tests/unit/test_emulator_workflow.py +619 -0
  324. mcli_framework-7.19.8/tests/unit/test_erd_generation.py +1365 -0
  325. mcli_framework-7.19.8/tests/unit/test_erd_generic.py +254 -0
  326. mcli_framework-7.19.8/tests/unit/test_erd_imports.py +21 -0
  327. mcli_framework-7.19.8/tests/unit/test_folder_workflows.py +403 -0
  328. mcli_framework-7.19.8/tests/unit/test_git_commit_workflow.py +328 -0
  329. mcli_framework-7.19.8/tests/unit/test_lib_auth.py +10 -0
  330. mcli_framework-7.19.8/tests/unit/test_lib_files.py +46 -0
  331. mcli_framework-7.19.8/tests/unit/test_lib_utils.py +9 -0
  332. mcli_framework-7.19.8/tests/unit/test_logger.py +216 -0
  333. mcli_framework-7.19.8/tests/unit/test_ml_preprocessing.py +167 -0
  334. mcli_framework-7.19.8/tests/unit/test_notebook_command_loader.py +379 -0
  335. mcli_framework-7.19.8/tests/unit/test_notebook_executor.py +239 -0
  336. mcli_framework-7.19.8/tests/unit/test_optional_deps.py +211 -0
  337. mcli_framework-7.19.8/tests/unit/test_paths.py +202 -0
  338. mcli_framework-7.19.8/tests/unit/test_pdf_compress.py +259 -0
  339. mcli_framework-7.19.8/tests/unit/test_prediction_engine.py +550 -0
  340. mcli_framework-7.19.8/tests/unit/test_regression.py +129 -0
  341. mcli_framework-7.19.8/tests/unit/test_scheduler.py +441 -0
  342. mcli_framework-7.19.8/tests/unit/test_scheduler_cron_parser.py +511 -0
  343. mcli_framework-7.19.8/tests/unit/test_scheduler_job.py +507 -0
  344. mcli_framework-7.19.8/tests/unit/test_scheduler_monitor.py +511 -0
  345. mcli_framework-7.19.8/tests/unit/test_scheduler_persistence.py +711 -0
  346. mcli_framework-7.19.8/tests/unit/test_self_update.py +200 -0
  347. mcli_framework-7.19.8/tests/unit/test_store_cmd.py +445 -0
  348. mcli_framework-7.19.8/tests/unit/test_supabase_connection.py +287 -0
  349. mcli_framework-7.19.8/tests/unit/test_supabase_pagination.py +235 -0
  350. mcli_framework-7.19.8/tests/unit/test_toml_utils.py +194 -0
  351. mcli_framework-7.19.8/tests/unit/test_trading_imports.py +125 -0
  352. mcli_framework-7.19.8/tests/unit/test_ui_rich.py +22 -0
  353. mcli_framework-7.19.8/tests/unit/test_uv_compat.py +217 -0
  354. mcli_framework-7.19.8/tests/unit/test_workflow_file_completion.py +222 -0
  355. mcli_framework-7.19.8/tests/unit/workflow/test_notebook.py +443 -0
@@ -0,0 +1,49 @@
1
+ version: 2
2
+ updates:
3
+ # Python dependencies
4
+ - package-ecosystem: "pip"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ day: "monday"
9
+ open-pull-requests-limit: 10
10
+ reviewers:
11
+ - "gwicho38"
12
+ labels:
13
+ - "dependencies"
14
+ - "python"
15
+ commit-message:
16
+ prefix: "chore"
17
+ include: "scope"
18
+
19
+ # GitHub Actions
20
+ - package-ecosystem: "github-actions"
21
+ directory: "/"
22
+ schedule:
23
+ interval: "weekly"
24
+ day: "monday"
25
+ open-pull-requests-limit: 5
26
+ reviewers:
27
+ - "gwicho38"
28
+ labels:
29
+ - "dependencies"
30
+ - "github-actions"
31
+ commit-message:
32
+ prefix: "chore"
33
+ include: "scope"
34
+
35
+ # Docker
36
+ - package-ecosystem: "docker"
37
+ directory: "/"
38
+ schedule:
39
+ interval: "weekly"
40
+ day: "monday"
41
+ open-pull-requests-limit: 5
42
+ reviewers:
43
+ - "gwicho38"
44
+ labels:
45
+ - "dependencies"
46
+ - "docker"
47
+ commit-message:
48
+ prefix: "chore"
49
+ include: "scope"
@@ -0,0 +1,17 @@
1
+ # Dependency Review configuration
2
+ # https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review
3
+
4
+ # Fail only on high/critical vulnerabilities
5
+ fail-on-severity: high
6
+
7
+ # Allow specific licenses commonly used in npm packages
8
+ allow-licenses:
9
+ - MIT
10
+ - Apache-2.0
11
+ - BSD-2-Clause
12
+ - BSD-3-Clause
13
+ - ISC
14
+ - 0BSD
15
+
16
+ # Comment on PRs with dependency changes
17
+ comment-summary-in-pr: on-failure
@@ -0,0 +1,102 @@
1
+ name: Build and Package
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ workflow_dispatch:
9
+ inputs:
10
+ debug:
11
+ description: 'Enable debug mode'
12
+ required: false
13
+ default: false
14
+ type: boolean
15
+
16
+ env:
17
+ PYTHON_VERSION: '3.11'
18
+ UV_VERSION: 'latest'
19
+
20
+ jobs:
21
+ build:
22
+ name: Build Package
23
+ strategy:
24
+ matrix:
25
+ platform: [ubuntu-latest, macos-latest]
26
+
27
+ runs-on: ${{ matrix.platform }}
28
+
29
+ steps:
30
+ - name: Checkout code
31
+ uses: actions/checkout@v4
32
+
33
+ - name: Set up Python
34
+ uses: actions/setup-python@v4
35
+ with:
36
+ python-version: ${{ env.PYTHON_VERSION }}
37
+
38
+ - name: Install UV
39
+ run: |
40
+ if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then
41
+ curl -LsSf https://astral.sh/uv/install.sh | sh
42
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
43
+ elif [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
44
+ curl -LsSf https://astral.sh/uv/install.sh | sh
45
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
46
+ fi
47
+
48
+ - name: Set up environment
49
+ run: |
50
+ if command -v uv >/dev/null 2>&1; then
51
+ make setup
52
+ else
53
+ python -m pip install --upgrade pip build
54
+ pip install -e .
55
+ fi
56
+
57
+ - name: Build wheel
58
+ run: |
59
+ if command -v uv >/dev/null 2>&1; then
60
+ make wheel
61
+ else
62
+ python -m build --wheel
63
+ fi
64
+
65
+ - name: Test basic functionality
66
+ run: |
67
+ if command -v uv >/dev/null 2>&1; then
68
+ make test
69
+ else
70
+ python -c "import mcli; print('✅ Package imports successfully')"
71
+ python -m mcli --help
72
+ fi
73
+
74
+ - name: Upload wheel artifact
75
+ uses: actions/upload-artifact@v4
76
+ with:
77
+ name: mcli-wheel-${{ matrix.platform }}
78
+ path: dist/*.whl
79
+ retention-days: 30
80
+
81
+
82
+ build-summary:
83
+ name: Build Summary
84
+ needs: build
85
+ runs-on: ubuntu-latest
86
+ if: always()
87
+
88
+ steps:
89
+ - name: Build Status Summary
90
+ run: |
91
+ echo "## Build Results" >> $GITHUB_STEP_SUMMARY
92
+ echo "| Platform | Status |" >> $GITHUB_STEP_SUMMARY
93
+ echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
94
+ echo "| Ubuntu | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
95
+ echo "| macOS | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
96
+ echo "| Windows | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
97
+
98
+ if [ "${{ needs.build.result }}" = "success" ]; then
99
+ echo "✅ All builds completed successfully!" >> $GITHUB_STEP_SUMMARY
100
+ else
101
+ echo "❌ Some builds failed. Check the logs for details." >> $GITHUB_STEP_SUMMARY
102
+ fi
@@ -0,0 +1,309 @@
1
+ name: CI/CD Pipeline
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ PYTHON_VERSION: "3.11"
12
+
13
+ jobs:
14
+ lint-and-format:
15
+ name: Lint and Format Check
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v4
24
+ with:
25
+ python-version: ${{ env.PYTHON_VERSION }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install black isort mypy
31
+ pip install -e .[dev]
32
+
33
+ - name: Check code formatting with Black
34
+ run: black --check --diff src/
35
+
36
+ - name: Check import sorting with isort
37
+ run: isort --check-only --diff src/
38
+
39
+ - name: Check for hardcoded strings
40
+ run: python tools/lint_hardcoded_strings.py --check-all --json
41
+ continue-on-error: true # Non-blocking until codebase refactoring is complete (13k+ violations)
42
+
43
+ - name: Type checking with mypy
44
+ run: mypy src/ --ignore-missing-imports
45
+ continue-on-error: true # Non-blocking due to type errors in notebook schema
46
+
47
+ test-rust:
48
+ name: Test Rust Extensions
49
+ runs-on: ${{ matrix.os }}
50
+ continue-on-error: true # Non-blocking: macOS has LLVM version mismatch, tests pass on Ubuntu
51
+ strategy:
52
+ fail-fast: false
53
+ matrix:
54
+ os: [ubuntu-latest, macos-latest]
55
+
56
+ steps:
57
+ - name: Checkout code
58
+ uses: actions/checkout@v4
59
+
60
+ - name: Set up Rust
61
+ uses: dtolnay/rust-toolchain@stable
62
+ with:
63
+ components: rustfmt, clippy
64
+
65
+ - name: Rust format check
66
+ run: |
67
+ cd mcli_rust
68
+ cargo fmt --all -- --check
69
+
70
+ - name: Rust clippy
71
+ run: |
72
+ cd mcli_rust
73
+ cargo clippy -- -D warnings || cargo clippy || echo "Warning: Clippy found issues, continuing"
74
+ continue-on-error: ${{ matrix.os == 'macos-latest' }}
75
+
76
+ - name: Rust tests
77
+ run: |
78
+ cd mcli_rust
79
+ cargo test
80
+
81
+ test-python:
82
+ name: Test Python Package
83
+ runs-on: ${{ matrix.os }}
84
+ continue-on-error: true # Non-blocking: Some tests have import errors (email-validator) - fixing in progress
85
+ strategy:
86
+ fail-fast: false
87
+ matrix:
88
+ os: [ubuntu-latest, macos-latest]
89
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
90
+
91
+ steps:
92
+ - name: Checkout code
93
+ uses: actions/checkout@v4
94
+
95
+ - name: Set up Python
96
+ uses: actions/setup-python@v4
97
+ with:
98
+ python-version: ${{ matrix.python-version }}
99
+
100
+ - name: Install system dependencies (Ubuntu)
101
+ if: matrix.os == 'ubuntu-latest'
102
+ run: |
103
+ sudo apt-get update
104
+ sudo apt-get install -y build-essential libpq-dev
105
+
106
+ - name: Install system dependencies (macOS)
107
+ if: matrix.os == 'macos-latest'
108
+ run: |
109
+ brew install postgresql@16
110
+
111
+ - name: Set up Rust (for building extensions)
112
+ uses: dtolnay/rust-toolchain@stable
113
+
114
+ - name: Install Python dependencies
115
+ run: |
116
+ python -m pip install --upgrade pip
117
+ pip install maturin
118
+ pip install -e .[dev]
119
+
120
+ - name: Build Rust extensions
121
+ run: |
122
+ cd mcli_rust
123
+ maturin develop --release || maturin develop || echo "Warning: Rust extension build failed, continuing without extensions"
124
+ continue-on-error: ${{ matrix.python-version == '3.12' || matrix.python-version == '3.9' }}
125
+
126
+ - name: Run Python tests with coverage
127
+ run: |
128
+ pytest tests/ -v --tb=short --cov=src/mcli --cov-report=xml --cov-report=term-missing
129
+
130
+ - name: Upload coverage to Codecov
131
+ uses: codecov/codecov-action@v4
132
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
133
+ with:
134
+ file: ./coverage.xml
135
+ flags: unittests
136
+ name: codecov-umbrella
137
+ fail_ci_if_error: false
138
+
139
+ - name: Test CLI functionality
140
+ run: |
141
+ mcli version
142
+ mcli --help
143
+ mcli self --help
144
+ mcli visual --help
145
+
146
+ integration-test:
147
+ name: Integration Tests
148
+ runs-on: ubuntu-latest
149
+ continue-on-error: true # Non-blocking: Rust-Python integration has known issues on CI
150
+ if: always() # Run even if test-python or test-rust fail
151
+ needs: [test-python, test-rust]
152
+
153
+ steps:
154
+ - name: Checkout code
155
+ uses: actions/checkout@v4
156
+
157
+ - name: Set up Python
158
+ uses: actions/setup-python@v4
159
+ with:
160
+ python-version: ${{ env.PYTHON_VERSION }}
161
+
162
+ - name: Set up Rust
163
+ uses: dtolnay/rust-toolchain@stable
164
+
165
+ - name: Install dependencies
166
+ run: |
167
+ python -m pip install --upgrade pip
168
+ pip install maturin
169
+ pip install -e .[dev]
170
+
171
+ - name: Build Rust extensions
172
+ run: |
173
+ cd mcli_rust
174
+ maturin develop --release || maturin develop || echo "Warning: Rust extension build failed"
175
+ continue-on-error: true
176
+
177
+ - name: Test Rust-Python integration
178
+ run: |
179
+ python -c "
180
+ import mcli_rust
181
+ print('✅ Rust extensions imported successfully')
182
+
183
+ # Test TF-IDF
184
+ vectorizer = mcli_rust.TfIdfVectorizer()
185
+ docs = ['hello world', 'rust is fast', 'python integration']
186
+ vectors = vectorizer.fit_transform(docs)
187
+ print(f'✅ TF-IDF: Generated {len(vectors)} vectors')
188
+
189
+ # Test File Watcher
190
+ watcher = mcli_rust.FileWatcher()
191
+ print('✅ File Watcher: Created successfully')
192
+
193
+ # Test Command Matcher
194
+ matcher = mcli_rust.CommandMatcher()
195
+ print('✅ Command Matcher: Created successfully')
196
+
197
+ # Test Process Manager
198
+ manager = mcli_rust.ProcessManager()
199
+ print('✅ Process Manager: Created successfully')
200
+
201
+ print('🎉 All Rust extensions working!')
202
+ "
203
+
204
+ - name: Test performance monitoring
205
+ run: |
206
+ mcli self performance --detailed
207
+
208
+ - name: Test visual effects
209
+ run: |
210
+ mcli visual message --style success "Integration tests passed!"
211
+ mcli visual spinner --spinner-type rust --duration 2 --message "Testing spinner..."
212
+
213
+ security-scan:
214
+ name: Security Scan
215
+ runs-on: ubuntu-latest
216
+ continue-on-error: true # Non-blocking due to occasional GitHub Actions infrastructure issues
217
+
218
+ steps:
219
+ - name: Checkout code
220
+ uses: actions/checkout@v4
221
+
222
+ - name: Set up Python
223
+ uses: actions/setup-python@v4
224
+ with:
225
+ python-version: ${{ env.PYTHON_VERSION }}
226
+
227
+ - name: Install security tools
228
+ run: |
229
+ python -m pip install --upgrade pip
230
+ pip install bandit safety
231
+
232
+ - name: Run Bandit security linter
233
+ run: |
234
+ bandit -r src/ -f json -o bandit-report.json || true
235
+ bandit -r src/ -ll
236
+ continue-on-error: true
237
+
238
+ - name: Run Safety dependency check
239
+ run: |
240
+ safety check --json > safety-report.json || true
241
+ safety check
242
+ continue-on-error: true
243
+
244
+ - name: Run Trivy vulnerability scanner
245
+ uses: aquasecurity/trivy-action@master
246
+ with:
247
+ scan-type: 'fs'
248
+ scan-ref: '.'
249
+ format: 'sarif'
250
+ output: 'trivy-results.sarif'
251
+ severity: 'CRITICAL,HIGH'
252
+
253
+ - name: Upload Trivy scan results
254
+ uses: github/codeql-action/upload-sarif@v3
255
+ if: always()
256
+ continue-on-error: true
257
+ with:
258
+ sarif_file: 'trivy-results.sarif'
259
+
260
+ - name: Upload security reports
261
+ uses: actions/upload-artifact@v4
262
+ if: always()
263
+ with:
264
+ name: security-reports
265
+ path: |
266
+ bandit-report.json
267
+ safety-report.json
268
+ retention-days: 30
269
+
270
+ build-package:
271
+ name: Build Distribution Package
272
+ runs-on: ubuntu-latest
273
+ if: always() # Run even if tests fail
274
+ needs: [lint-and-format, test-python, test-rust, integration-test]
275
+
276
+ steps:
277
+ - name: Checkout code
278
+ uses: actions/checkout@v4
279
+
280
+ - name: Set up Python
281
+ uses: actions/setup-python@v4
282
+ with:
283
+ python-version: ${{ env.PYTHON_VERSION }}
284
+
285
+ - name: Set up Rust
286
+ uses: dtolnay/rust-toolchain@stable
287
+
288
+ - name: Install build dependencies
289
+ run: |
290
+ python -m pip install --upgrade pip
291
+ pip install build maturin
292
+
293
+ - name: Build Rust extensions
294
+ run: |
295
+ cd mcli_rust
296
+ maturin build --release
297
+
298
+ - name: Build Python package
299
+ run: |
300
+ python -m build
301
+
302
+ - name: Upload build artifacts
303
+ uses: actions/upload-artifact@v4
304
+ with:
305
+ name: dist-packages
306
+ path: |
307
+ dist/
308
+ mcli_rust/target/wheels/
309
+ retention-days: 7
@@ -0,0 +1,43 @@
1
+ name: CodeQL Security Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ schedule:
9
+ # Run at 00:00 every Sunday
10
+ - cron: '0 0 * * 0'
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ analyze:
15
+ name: Analyze Code with CodeQL
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ actions: read
19
+ contents: read
20
+ security-events: write
21
+
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ language: [ 'python' ]
26
+
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Initialize CodeQL
32
+ uses: github/codeql-action/init@v3
33
+ with:
34
+ languages: ${{ matrix.language }}
35
+ queries: +security-and-quality
36
+
37
+ - name: Autobuild
38
+ uses: github/codeql-action/autobuild@v3
39
+
40
+ - name: Perform CodeQL Analysis
41
+ uses: github/codeql-action/analyze@v3
42
+ with:
43
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,76 @@
1
+ # Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
2
+ # More GitHub Actions for Azure: https://github.com/Azure/actions
3
+ # More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions
4
+
5
+ name: Build and deploy Python app to Azure Web App - mcli
6
+
7
+ on:
8
+ push:
9
+ branches:
10
+ - main
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ build:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read #This is required for actions/checkout
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python version
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: '3.13'
26
+
27
+ # 🛠️ Local Build Section (Optional)
28
+ # The following section in your workflow is designed to catch build issues early on the client side, before deployment. This can be helpful for debugging and validation. However, if this step significantly increases deployment time and early detection is not critical for your workflow, you may remove this section to streamline the deployment process.
29
+ - name: Create and Start virtual environment and Install dependencies
30
+ run: |
31
+ python -m venv antenv
32
+ source antenv/bin/activate
33
+ pip install -r requirements.txt
34
+
35
+ # By default, when you enable GitHub CI/CD integration through the Azure portal, the platform automatically sets the SCM_DO_BUILD_DURING_DEPLOYMENT application setting to true. This triggers the use of Oryx, a build engine that handles application compilation and dependency installation (e.g., pip install) directly on the platform during deployment. Hence, we exclude the antenv virtual environment directory from the deployment artifact to reduce the payload size.
36
+ - name: Upload artifact for deployment jobs
37
+ uses: actions/upload-artifact@v4
38
+ with:
39
+ name: python-app
40
+ path: |
41
+ .
42
+ !antenv/
43
+
44
+ # 🚫 Opting Out of Oryx Build
45
+ # If you prefer to disable the Oryx build process during deployment, follow these steps:
46
+ # 1. Remove the SCM_DO_BUILD_DURING_DEPLOYMENT app setting from your Azure App Service Environment variables.
47
+ # 2. Refer to sample workflows for alternative deployment strategies: https://github.com/Azure/actions-workflow-samples/tree/master/AppService
48
+
49
+
50
+ deploy:
51
+ runs-on: ubuntu-latest
52
+ needs: build
53
+ permissions:
54
+ id-token: write #This is required for requesting the JWT
55
+ contents: read #This is required for actions/checkout
56
+
57
+ steps:
58
+ - name: Download artifact from build job
59
+ uses: actions/download-artifact@v4
60
+ with:
61
+ name: python-app
62
+
63
+ - name: Login to Azure
64
+ uses: azure/login@v2
65
+ with:
66
+ client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_83BA9E673F8446BE82F742FB6394A06F }}
67
+ tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_6D1336E8E2224AF899A4E08410F7A172 }}
68
+ subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_921B80061CBE4DF0B9BCF8E87DA28876 }}
69
+
70
+ - name: 'Deploy to Azure Web App'
71
+ uses: azure/webapps-deploy@v3
72
+ id: deploy-to-webapp
73
+ with:
74
+ app-name: 'mcli'
75
+ slot-name: 'Production'
76
+