mcli-framework 7.10.0__tar.gz → 7.10.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mcli-framework might be problematic. Click here for more details.

Files changed (341) hide show
  1. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/PKG-INFO +2 -2
  2. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/README.md +1 -1
  3. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/pyproject.toml +1 -1
  4. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/backtesting/run.py +5 -3
  5. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/models/ensemble_models.py +1 -0
  6. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/models/recommendation_models.py +1 -0
  7. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/optimization/optimize.py +6 -4
  8. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/serving/serve.py +2 -2
  9. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/training/train.py +14 -7
  10. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/completion_cmd.py +2 -2
  11. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/doc_convert.py +82 -112
  12. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/PKG-INFO +2 -2
  13. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_doc_convert_workflow.py +1 -3
  14. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/dependabot.yml +0 -0
  15. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/build.yml +0 -0
  16. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/ci.yml +0 -0
  17. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/ml-pipeline.yml +0 -0
  18. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/publish-self-hosted.yml +0 -0
  19. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/publish.yml +0 -0
  20. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/release.yml +0 -0
  21. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/security.yml +0 -0
  22. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/.github/workflows/test.yml +0 -0
  23. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/LICENSE +0 -0
  24. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/MANIFEST.in +0 -0
  25. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/Cargo.toml +0 -0
  26. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/src/command_parser.rs +0 -0
  27. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/src/file_watcher.rs +0 -0
  28. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/src/lib.rs +0 -0
  29. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/src/process_manager.rs +0 -0
  30. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/mcli_rust/src/tfidf.rs +0 -0
  31. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/setup.cfg +0 -0
  32. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/commands_cmd.py +0 -0
  33. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/completion_helpers.py +0 -0
  34. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/main.py +0 -0
  35. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/model/model.py +0 -0
  36. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/model_cmd.py +0 -0
  37. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/app/video/video.py +0 -0
  38. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/chat/chat.py +0 -0
  39. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/chat/command_rag.py +0 -0
  40. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/chat/enhanced_chat.py +0 -0
  41. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/chat/system_controller.py +0 -0
  42. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/chat/system_integration.py +0 -0
  43. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/cli.py +0 -0
  44. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/config.toml +0 -0
  45. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/api/api.py +0 -0
  46. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/api/daemon_client.py +0 -0
  47. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/api/daemon_client_local.py +0 -0
  48. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/api/daemon_decorator.py +0 -0
  49. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/api/mcli_decorators.py +0 -0
  50. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/auth.py +0 -0
  51. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/aws_manager.py +0 -0
  52. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/azure_manager.py +0 -0
  53. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/credential_manager.py +0 -0
  54. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/gcp_manager.py +0 -0
  55. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/key_manager.py +0 -0
  56. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/mcli_manager.py +0 -0
  57. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/token_manager.py +0 -0
  58. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/auth/token_util.py +0 -0
  59. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/config/config.py +0 -0
  60. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/custom_commands.py +0 -0
  61. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/discovery/__init__.py +0 -0
  62. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/discovery/command_discovery.py +0 -0
  63. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/erd/erd.py +0 -0
  64. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/erd/generate_graph.py +0 -0
  65. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/files/files.py +0 -0
  66. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/fs/fs.py +0 -0
  67. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/lib.py +0 -0
  68. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/logger/logger.py +0 -0
  69. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/paths.py +0 -0
  70. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/performance/optimizer.py +0 -0
  71. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/performance/rust_bridge.py +0 -0
  72. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/performance/uvloop_config.py +0 -0
  73. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/pickles/pickles.py +0 -0
  74. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  75. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/secrets/commands.py +0 -0
  76. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/secrets/manager.py +0 -0
  77. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/secrets/repl.py +0 -0
  78. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/secrets/store.py +0 -0
  79. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/services/data_pipeline.py +0 -0
  80. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/services/lsh_client.py +0 -0
  81. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/services/redis_service.py +0 -0
  82. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/shell/shell.py +0 -0
  83. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/toml/toml.py +0 -0
  84. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/ui/styling.py +0 -0
  85. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/ui/visual_effects.py +0 -0
  86. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/lib/watcher/watcher.py +0 -0
  87. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/app.py +0 -0
  88. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/middleware.py +0 -0
  89. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/admin_router.py +0 -0
  90. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/auth_router.py +0 -0
  91. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/backtest_router.py +0 -0
  92. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/data_router.py +0 -0
  93. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/model_router.py +0 -0
  94. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
  95. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
  96. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/prediction_router.py +0 -0
  97. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/trade_router.py +0 -0
  98. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/routers/websocket_router.py +0 -0
  99. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/api/schemas.py +0 -0
  100. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/auth/auth_manager.py +0 -0
  101. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/auth/models.py +0 -0
  102. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/auth/permissions.py +0 -0
  103. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
  104. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
  105. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/cache.py +0 -0
  106. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/cli/main.py +0 -0
  107. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/config/settings.py +0 -0
  108. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/configs/dvc_config.py +0 -0
  109. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/configs/mlflow_config.py +0 -0
  110. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/configs/mlops_manager.py +0 -0
  111. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/app.py +0 -0
  112. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/app_integrated.py +0 -0
  113. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/app_supabase.py +0 -0
  114. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/app_training.py +0 -0
  115. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/cli.py +0 -0
  116. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/common.py +0 -0
  117. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/components/charts.py +0 -0
  118. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/components/metrics.py +0 -0
  119. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/components/tables.py +0 -0
  120. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/overview.py +0 -0
  121. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
  122. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
  123. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
  124. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
  125. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
  126. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
  127. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
  128. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/trading.py +0 -0
  129. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
  130. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
  131. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/styles.py +0 -0
  132. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/utils.py +0 -0
  133. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
  134. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
  135. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
  136. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
  137. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/database/migrations/env.py +0 -0
  138. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/database/models.py +0 -0
  139. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/database/session.py +0 -0
  140. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/experimentation/ab_testing.py +0 -0
  141. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/features/ensemble_features.py +0 -0
  142. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/features/political_features.py +0 -0
  143. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/features/recommendation_engine.py +0 -0
  144. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/features/stock_features.py +0 -0
  145. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/features/test_feature_engineering.py +0 -0
  146. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/logging.py +0 -0
  147. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/mlops/data_versioning.py +0 -0
  148. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
  149. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/mlops/model_serving.py +0 -0
  150. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
  151. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/models/base_models.py +0 -0
  152. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/models/test_models.py +0 -0
  153. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/monitoring/drift_detection.py +0 -0
  154. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/monitoring/metrics.py +0 -0
  155. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
  156. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/predictions/monte_carlo.py +0 -0
  157. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/predictions/prediction_engine.py +0 -0
  158. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
  159. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
  160. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
  161. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -0
  162. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
  163. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
  164. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/tasks.py +0 -0
  165. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/tests/test_integration.py +0 -0
  166. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
  167. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/alpaca_client.py +0 -0
  168. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/migrations.py +0 -0
  169. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/models.py +0 -0
  170. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/paper_trading.py +0 -0
  171. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/risk_management.py +0 -0
  172. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/trading/trading_service.py +0 -0
  173. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/ml/training/train_model.py +0 -0
  174. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/mygroup/test_cmd.py +0 -0
  175. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/public/oi/oi.py +0 -0
  176. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/public/public.py +0 -0
  177. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/logs_cmd.py +0 -0
  178. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/redis_cmd.py +0 -0
  179. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/self_cmd.py +0 -0
  180. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/store_cmd.py +0 -0
  181. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/test_cmd.py +0 -0
  182. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/visual_cmd.py +0 -0
  183. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/self/zsh_cmd.py +0 -0
  184. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  185. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  186. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/client.py +0 -0
  187. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/daemon.py +0 -0
  188. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  189. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  190. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/process_cli.py +0 -0
  191. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/process_manager.py +0 -0
  192. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  193. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
  194. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/docker/docker.py +0 -0
  195. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/gcloud/config.toml +0 -0
  196. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  197. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  198. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/lsh_integration.py +0 -0
  199. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/client.py +0 -0
  200. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  201. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  202. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  203. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  204. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/model_service.py +0 -0
  205. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  206. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
  207. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  208. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  209. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/test_example.py +0 -0
  210. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/test_integration.py +0 -0
  211. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  212. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/openai/openai.py +0 -0
  213. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/config.py +0 -0
  214. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/connectivity.py +0 -0
  215. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/data_sources.py +0 -0
  216. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/database.py +0 -0
  217. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/demo.py +0 -0
  218. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/models.py +0 -0
  219. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/monitoring.py +0 -0
  220. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers.py +0 -0
  221. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_california.py +0 -0
  222. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -0
  223. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -0
  224. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -0
  225. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -0
  226. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -0
  227. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -0
  228. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/seed_database.py +0 -0
  229. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/supabase_functions.py +0 -0
  230. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/politician_trading/workflow.py +0 -0
  231. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/registry/registry.py +0 -0
  232. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/repo/repo.py +0 -0
  233. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  234. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/scheduler/job.py +0 -0
  235. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/scheduler/monitor.py +0 -0
  236. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/scheduler/persistence.py +0 -0
  237. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  238. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/sync/test_cmd.py +0 -0
  239. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  240. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli/workflow/workflow.py +0 -0
  241. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/SOURCES.txt +0 -0
  242. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  243. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  244. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/requires.txt +0 -0
  245. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/src/mcli_framework.egg-info/top_level.txt +0 -0
  246. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_all_commands.py +0 -0
  247. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_app_logs_cmd.py +0 -0
  248. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_app_redis_cmd.py +0 -0
  249. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_logs_cmd.py +0 -0
  250. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_main_app.py +0 -0
  251. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_model_cmd.py +0 -0
  252. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_self_cmd.py +0 -0
  253. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_self_cmd_commands.py +0 -0
  254. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_self_cmd_plugins.py +0 -0
  255. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_self_cmd_utilities.py +0 -0
  256. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_workflow_file.py +0 -0
  257. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_workflow_gcloud.py +0 -0
  258. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/cli/test_workflow_registry.py +0 -0
  259. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/conftest.py +0 -0
  260. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/demo_generate_graph.py +0 -0
  261. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/demo_hierarchical_transform.py +0 -0
  262. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/e2e/test_complete_workflows.py +0 -0
  263. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/e2e/test_model_workflow.py +0 -0
  264. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/e2e/test_new_user_workflow.py +0 -0
  265. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/e2e/test_update_workflow.py +0 -0
  266. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/fixtures/chat_fixtures.py +0 -0
  267. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/fixtures/cli_fixtures.py +0 -0
  268. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/fixtures/data_fixtures.py +0 -0
  269. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/fixtures/db_fixtures.py +0 -0
  270. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/fixtures/model_fixtures.py +0 -0
  271. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_agent.py +0 -0
  272. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_california_scraper.py +0 -0
  273. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_chat_client.py +0 -0
  274. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_chat_system.py +0 -0
  275. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_congress_scraper.py +0 -0
  276. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_daemon_client.py +0 -0
  277. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_daemon_server.py +0 -0
  278. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
  279. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_flask_webapp.py +0 -0
  280. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_gcloud_services.py +0 -0
  281. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_lsh_client.py +0 -0
  282. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_lsh_service.py +0 -0
  283. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_ml_auth.py +0 -0
  284. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_ml_data_pipeline.py +0 -0
  285. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_ml_models.py +0 -0
  286. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_ml_pipeline.py +0 -0
  287. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_module_imports.py +0 -0
  288. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_oi_service.py +0 -0
  289. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_politician_trading.py +0 -0
  290. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_repo_operations.py +0 -0
  291. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_scheduler_integration.py +0 -0
  292. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_service_registry.py +0 -0
  293. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_supabase_live_connection.py +0 -0
  294. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_uk_scraper.py +0 -0
  295. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_us_states_scraper.py +0 -0
  296. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_video_processing.py +0 -0
  297. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_wakatime_api.py +0 -0
  298. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_webapp_full.py +0 -0
  299. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_workflow.py +0 -0
  300. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/integration/test_workflow_commands.py +0 -0
  301. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/run_tests.py +0 -0
  302. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/test_harness.py +0 -0
  303. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/test_openai_adapter.py +0 -0
  304. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_api_utils.py +0 -0
  305. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_async_process_manager.py +0 -0
  306. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_auth_modules.py +0 -0
  307. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_bug_fixes.py +0 -0
  308. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_config.py +0 -0
  309. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_custom_commands.py +0 -0
  310. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_daemon_api.py +0 -0
  311. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_dashboard_components.py +0 -0
  312. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_dashboard_functions.py +0 -0
  313. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_dashboard_pages.py +0 -0
  314. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_dependencies.py +0 -0
  315. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_emulator_workflow.py +0 -0
  316. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_erd_generation.py +0 -0
  317. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_erd_generic.py +0 -0
  318. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_erd_imports.py +0 -0
  319. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_git_commit_workflow.py +0 -0
  320. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_lib_auth.py +0 -0
  321. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_lib_files.py +0 -0
  322. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_lib_utils.py +0 -0
  323. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_logger.py +0 -0
  324. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_ml_preprocessing.py +0 -0
  325. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_paths.py +0 -0
  326. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_pdf_compress.py +0 -0
  327. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_prediction_engine.py +0 -0
  328. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_regression.py +0 -0
  329. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_scheduler.py +0 -0
  330. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_scheduler_cron_parser.py +0 -0
  331. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_scheduler_job.py +0 -0
  332. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_scheduler_monitor.py +0 -0
  333. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_scheduler_persistence.py +0 -0
  334. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_self_update.py +0 -0
  335. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_store_cmd.py +0 -0
  336. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_supabase_connection.py +0 -0
  337. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_supabase_pagination.py +0 -0
  338. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_toml_utils.py +0 -0
  339. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_trading_imports.py +0 -0
  340. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_ui_rich.py +0 -0
  341. {mcli_framework-7.10.0 → mcli_framework-7.10.1}/tests/unit/test_uv_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.10.0
3
+ Version: 7.10.1
4
4
  Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, 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>
@@ -478,7 +478,7 @@ You write scripts. They work. Then:
478
478
 
479
479
  ```bash
480
480
  # Install completion for your shell
481
- mcli completion install
481
+ mcli self completion install
482
482
 
483
483
  # Now use tab completion
484
484
  mcli workflow <TAB> # Shows all workflows
@@ -318,7 +318,7 @@ You write scripts. They work. Then:
318
318
 
319
319
  ```bash
320
320
  # Install completion for your shell
321
- mcli completion install
321
+ mcli self completion install
322
322
 
323
323
  # Now use tab completion
324
324
  mcli workflow <TAB> # Shows all workflows
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "7.10.0"
3
+ version = "7.10.1"
4
4
  description = "Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, version with lockfile, run as daemon or cron job."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -18,12 +18,14 @@ def cli():
18
18
  @click.option("--end-date", required=True, help="End date (YYYY-MM-DD)")
19
19
  @click.option("--initial-capital", default=100000, help="Initial capital")
20
20
  @click.option("--output", help="Output file for results")
21
- def run_backtest(strategy: str, start_date: str, end_date: str, initial_capital: float, output: str):
21
+ def run_backtest(
22
+ strategy: str, start_date: str, end_date: str, initial_capital: float, output: str
23
+ ):
22
24
  """Run a backtest with the specified parameters."""
23
25
  info(f"Running backtest for strategy: {strategy}")
24
26
  info(f"Period: {start_date} to {end_date}")
25
27
  info(f"Initial capital: ${initial_capital:,.2f}")
26
-
28
+
27
29
  # TODO: Implement actual backtesting logic
28
30
  error("Backtesting functionality not yet implemented")
29
31
 
@@ -51,4 +53,4 @@ def main():
51
53
 
52
54
 
53
55
  if __name__ == "__main__":
54
- main()
56
+ main()
@@ -9,6 +9,7 @@ import pandas as pd
9
9
  import torch
10
10
  import torch.nn as nn
11
11
  import torch.nn.functional as F
12
+
12
13
  from mcli.ml.models.base_models import BaseStockModel, ModelMetrics, ValidationResult
13
14
 
14
15
  logger = logging.getLogger(__name__)
@@ -10,6 +10,7 @@ import pandas as pd
10
10
  import torch
11
11
  import torch.nn as nn
12
12
  import torch.nn.functional as F
13
+
13
14
  from mcli.ml.models.base_models import BaseStockModel, ModelMetrics, ValidationResult
14
15
  from mcli.ml.models.ensemble_models import DeepEnsembleModel, EnsembleConfig, ModelConfig
15
16
 
@@ -18,13 +18,15 @@ def cli():
18
18
  @click.option("--end-date", required=True, help="End date (YYYY-MM-DD)")
19
19
  @click.option("--risk-free-rate", default=0.02, help="Risk-free rate")
20
20
  @click.option("--output", help="Output file for results")
21
- def optimize_portfolio(symbols: str, start_date: str, end_date: str, risk_free_rate: float, output: str):
21
+ def optimize_portfolio(
22
+ symbols: str, start_date: str, end_date: str, risk_free_rate: float, output: str
23
+ ):
22
24
  """Optimize portfolio allocation for given symbols."""
23
25
  symbol_list = [s.strip() for s in symbols.split(",")]
24
26
  info(f"Optimizing portfolio for: {', '.join(symbol_list)}")
25
27
  info(f"Period: {start_date} to {end_date}")
26
28
  info(f"Risk-free rate: {risk_free_rate:.2%}")
27
-
29
+
28
30
  # TODO: Implement actual optimization
29
31
  error("Portfolio optimization not yet implemented")
30
32
 
@@ -37,7 +39,7 @@ def efficient_frontier(symbols: str, points: int):
37
39
  symbol_list = [s.strip() for s in symbols.split(",")]
38
40
  info(f"Generating efficient frontier for: {', '.join(symbol_list)}")
39
41
  info(f"Points: {points}")
40
-
42
+
41
43
  # TODO: Implement efficient frontier generation
42
44
  error("Efficient frontier generation not yet implemented")
43
45
 
@@ -48,4 +50,4 @@ def main():
48
50
 
49
51
 
50
52
  if __name__ == "__main__":
51
- main()
53
+ main()
@@ -20,7 +20,7 @@ def start_server(model: str, port: int, host: str):
20
20
  """Start the model serving server."""
21
21
  info(f"Starting model server for: {model}")
22
22
  info(f"Serving on {host}:{port}")
23
-
23
+
24
24
  # TODO: Implement actual model serving
25
25
  error("Model serving functionality not yet implemented")
26
26
 
@@ -47,4 +47,4 @@ def main():
47
47
 
48
48
 
49
49
  if __name__ == "__main__":
50
- main()
50
+ main()
@@ -19,12 +19,19 @@ def cli():
19
19
  @click.option("--batch-size", default=32, help="Batch size for training")
20
20
  @click.option("--learning-rate", default=0.001, help="Learning rate")
21
21
  @click.option("--output-dir", help="Directory to save trained model")
22
- def train_model(model_type: str, dataset: str, epochs: int, batch_size: int, learning_rate: float, output_dir: str):
22
+ def train_model(
23
+ model_type: str,
24
+ dataset: str,
25
+ epochs: int,
26
+ batch_size: int,
27
+ learning_rate: float,
28
+ output_dir: str,
29
+ ):
23
30
  """Train a model with the specified parameters."""
24
31
  info(f"Training {model_type} model")
25
32
  info(f"Dataset: {dataset}")
26
33
  info(f"Epochs: {epochs}, Batch size: {batch_size}, Learning rate: {learning_rate}")
27
-
34
+
28
35
  # TODO: Implement actual training logic
29
36
  error("Model training functionality not yet implemented")
30
37
 
@@ -36,7 +43,7 @@ def resume_training(checkpoint: str, epochs: int):
36
43
  """Resume training from a checkpoint."""
37
44
  info(f"Resuming training from: {checkpoint}")
38
45
  info(f"Additional epochs: {epochs}")
39
-
46
+
40
47
  # TODO: Implement resume functionality
41
48
  error("Resume training not yet implemented")
42
49
 
@@ -46,14 +53,14 @@ def resume_training(checkpoint: str, epochs: int):
46
53
  def train_politician_trading(output_dir: str):
47
54
  """Train the politician trading prediction model."""
48
55
  info("Training politician trading prediction model...")
49
-
56
+
50
57
  try:
51
58
  # Import the actual training function
52
59
  from mcli.ml.training.train_model import train_politician_trading_model
53
-
60
+
54
61
  # Run the training
55
62
  metrics = train_politician_trading_model(output_dir)
56
-
63
+
57
64
  if metrics:
58
65
  success(f"Training completed! Final loss: {metrics.get('final_loss', 'N/A')}")
59
66
  else:
@@ -70,4 +77,4 @@ def main():
70
77
 
71
78
 
72
79
  if __name__ == "__main__":
73
- main()
80
+ main()
@@ -216,10 +216,10 @@ def completion_status():
216
216
 
217
217
  click.echo()
218
218
  click.echo("💡 To install completion for your shell:")
219
- click.echo(" mcli completion install")
219
+ click.echo(" mcli self completion install")
220
220
  click.echo()
221
221
  click.echo("💡 To generate completion script manually:")
222
- click.echo(f" mcli completion {shell_name}")
222
+ click.echo(f" mcli self completion {shell_name}")
223
223
 
224
224
 
225
225
  # Export the CLI group for registration
@@ -65,6 +65,7 @@ FORMAT_ALIASES = {
65
65
 
66
66
  class ConversionMethod(Enum):
67
67
  """Available conversion methods"""
68
+
68
69
  PANDOC = "pandoc"
69
70
  NBCONVERT = "nbconvert"
70
71
  PANDOC_LATEX = "pandoc_latex"
@@ -74,6 +75,7 @@ class ConversionMethod(Enum):
74
75
  @dataclass
75
76
  class ConversionStrategy:
76
77
  """Represents a conversion strategy with command and description"""
78
+
77
79
  method: ConversionMethod
78
80
  description: str
79
81
  check_command: Optional[str] = None
@@ -136,11 +138,7 @@ def cleanup_temp_conversion(temp_dir: Path, preserve_output: Optional[Path] = No
136
138
 
137
139
 
138
140
  def get_conversion_strategies(
139
- input_path: Path,
140
- output_path: Path,
141
- from_format: str,
142
- to_format: str,
143
- pandoc_args: str = ""
141
+ input_path: Path, output_path: Path, from_format: str, to_format: str, pandoc_args: str = ""
144
142
  ) -> List[ConversionStrategy]:
145
143
  """
146
144
  Get ordered list of conversion strategies to try based on input/output formats.
@@ -152,60 +150,60 @@ def get_conversion_strategies(
152
150
  # Special handling for Jupyter notebook to PDF (notoriously problematic)
153
151
  if from_format == "ipynb" and to_format == "pdf":
154
152
  # Strategy 1: nbconvert (most reliable for notebooks)
155
- strategies.append(ConversionStrategy(
156
- method=ConversionMethod.NBCONVERT,
157
- description="jupyter nbconvert (best for notebooks)",
158
- check_command="jupyter-nbconvert"
159
- ))
153
+ strategies.append(
154
+ ConversionStrategy(
155
+ method=ConversionMethod.NBCONVERT,
156
+ description="jupyter nbconvert (best for notebooks)",
157
+ check_command="jupyter-nbconvert",
158
+ )
159
+ )
160
160
 
161
161
  # Strategy 2: pandoc with pdflatex
162
- strategies.append(ConversionStrategy(
163
- method=ConversionMethod.PANDOC_LATEX,
164
- description="pandoc with pdflatex engine"
165
- ))
162
+ strategies.append(
163
+ ConversionStrategy(
164
+ method=ConversionMethod.PANDOC_LATEX, description="pandoc with pdflatex engine"
165
+ )
166
+ )
166
167
 
167
168
  # Strategy 3: pandoc via HTML intermediate
168
- strategies.append(ConversionStrategy(
169
- method=ConversionMethod.PANDOC_HTML_INTERMEDIATE,
170
- description="pandoc via HTML intermediate (wkhtmltopdf)"
171
- ))
169
+ strategies.append(
170
+ ConversionStrategy(
171
+ method=ConversionMethod.PANDOC_HTML_INTERMEDIATE,
172
+ description="pandoc via HTML intermediate (wkhtmltopdf)",
173
+ )
174
+ )
172
175
 
173
176
  # Strategy 4: standard pandoc
174
- strategies.append(ConversionStrategy(
175
- method=ConversionMethod.PANDOC,
176
- description="pandoc default method"
177
- ))
177
+ strategies.append(
178
+ ConversionStrategy(method=ConversionMethod.PANDOC, description="pandoc default method")
179
+ )
178
180
 
179
181
  # Jupyter to other formats
180
182
  elif from_format == "ipynb":
181
183
  # Try nbconvert first for notebooks
182
- strategies.append(ConversionStrategy(
183
- method=ConversionMethod.NBCONVERT,
184
- description="jupyter nbconvert",
185
- check_command="jupyter-nbconvert"
186
- ))
187
- strategies.append(ConversionStrategy(
188
- method=ConversionMethod.PANDOC,
189
- description="pandoc"
190
- ))
184
+ strategies.append(
185
+ ConversionStrategy(
186
+ method=ConversionMethod.NBCONVERT,
187
+ description="jupyter nbconvert",
188
+ check_command="jupyter-nbconvert",
189
+ )
190
+ )
191
+ strategies.append(ConversionStrategy(method=ConversionMethod.PANDOC, description="pandoc"))
191
192
 
192
193
  # PDF output (general)
193
194
  elif to_format == "pdf":
194
- strategies.append(ConversionStrategy(
195
- method=ConversionMethod.PANDOC_LATEX,
196
- description="pandoc with LaTeX"
197
- ))
198
- strategies.append(ConversionStrategy(
199
- method=ConversionMethod.PANDOC,
200
- description="pandoc default"
201
- ))
195
+ strategies.append(
196
+ ConversionStrategy(
197
+ method=ConversionMethod.PANDOC_LATEX, description="pandoc with LaTeX"
198
+ )
199
+ )
200
+ strategies.append(
201
+ ConversionStrategy(method=ConversionMethod.PANDOC, description="pandoc default")
202
+ )
202
203
 
203
204
  # Default: just use pandoc
204
205
  else:
205
- strategies.append(ConversionStrategy(
206
- method=ConversionMethod.PANDOC,
207
- description="pandoc"
208
- ))
206
+ strategies.append(ConversionStrategy(method=ConversionMethod.PANDOC, description="pandoc"))
209
207
 
210
208
  return strategies
211
209
 
@@ -216,7 +214,7 @@ def execute_conversion_strategy(
216
214
  output_path: Path,
217
215
  from_format: str,
218
216
  to_format: str,
219
- pandoc_args: str = ""
217
+ pandoc_args: str = "",
220
218
  ) -> Tuple[bool, str]:
221
219
  """
222
220
  Execute a specific conversion strategy in a temp directory.
@@ -231,29 +229,25 @@ def execute_conversion_strategy(
231
229
  if strategy.method == ConversionMethod.NBCONVERT:
232
230
  # Check if nbconvert is available
233
231
  check = subprocess.run(
234
- ["jupyter", "nbconvert", "--version"],
235
- capture_output=True,
236
- timeout=5
232
+ ["jupyter", "nbconvert", "--version"], capture_output=True, timeout=5
237
233
  )
238
234
  if check.returncode != 0:
239
235
  return False, "jupyter nbconvert not available"
240
236
 
241
237
  # Build nbconvert command (run in temp directory)
242
238
  cmd = [
243
- "jupyter", "nbconvert",
244
- "--to", to_format,
245
- "--output", str(temp_output),
246
- str(temp_input)
239
+ "jupyter",
240
+ "nbconvert",
241
+ "--to",
242
+ to_format,
243
+ "--output",
244
+ str(temp_output),
245
+ str(temp_input),
247
246
  ]
248
247
 
249
248
  # Run in temp directory
250
249
  result = subprocess.run(
251
- cmd,
252
- capture_output=True,
253
- text=True,
254
- check=True,
255
- timeout=120,
256
- cwd=str(temp_dir)
250
+ cmd, capture_output=True, text=True, check=True, timeout=120, cwd=str(temp_dir)
257
251
  )
258
252
 
259
253
  elif strategy.method == ConversionMethod.PANDOC_LATEX:
@@ -261,20 +255,17 @@ def execute_conversion_strategy(
261
255
  cmd = [
262
256
  "pandoc",
263
257
  str(temp_input),
264
- "-f", from_format,
265
- "-o", str(temp_output),
266
- "--pdf-engine=xelatex"
258
+ "-f",
259
+ from_format,
260
+ "-o",
261
+ str(temp_output),
262
+ "--pdf-engine=xelatex",
267
263
  ]
268
264
  if pandoc_args:
269
265
  cmd.extend(pandoc_args.split())
270
266
 
271
267
  result = subprocess.run(
272
- cmd,
273
- capture_output=True,
274
- text=True,
275
- check=True,
276
- timeout=120,
277
- cwd=str(temp_dir)
268
+ cmd, capture_output=True, text=True, check=True, timeout=120, cwd=str(temp_dir)
278
269
  )
279
270
 
280
271
  elif strategy.method == ConversionMethod.PANDOC_HTML_INTERMEDIATE:
@@ -285,47 +276,30 @@ def execute_conversion_strategy(
285
276
  cmd_html = [
286
277
  "pandoc",
287
278
  str(temp_input),
288
- "-f", from_format,
289
- "-t", "html",
290
- "-o", str(html_temp),
291
- "--standalone"
279
+ "-f",
280
+ from_format,
281
+ "-t",
282
+ "html",
283
+ "-o",
284
+ str(html_temp),
285
+ "--standalone",
292
286
  ]
293
287
  result = subprocess.run(
294
- cmd_html,
295
- capture_output=True,
296
- text=True,
297
- timeout=120,
298
- cwd=str(temp_dir)
288
+ cmd_html, capture_output=True, text=True, timeout=120, cwd=str(temp_dir)
299
289
  )
300
290
  if result.returncode != 0:
301
291
  return False, f"HTML intermediate failed: {result.stderr}"
302
292
 
303
293
  # Step 2: Convert HTML to PDF
304
- cmd = [
305
- "pandoc",
306
- str(html_temp),
307
- "-f", "html",
308
- "-t", "pdf",
309
- "-o", str(temp_output)
310
- ]
294
+ cmd = ["pandoc", str(html_temp), "-f", "html", "-t", "pdf", "-o", str(temp_output)]
311
295
 
312
296
  result = subprocess.run(
313
- cmd,
314
- capture_output=True,
315
- text=True,
316
- check=True,
317
- timeout=120,
318
- cwd=str(temp_dir)
297
+ cmd, capture_output=True, text=True, check=True, timeout=120, cwd=str(temp_dir)
319
298
  )
320
299
 
321
300
  else: # PANDOC
322
301
  # Standard pandoc conversion
323
- cmd = [
324
- "pandoc",
325
- str(temp_input),
326
- "-f", from_format,
327
- "-o", str(temp_output)
328
- ]
302
+ cmd = ["pandoc", str(temp_input), "-f", from_format, "-o", str(temp_output)]
329
303
  # Use xelatex for PDF conversions (better Unicode support)
330
304
  if to_format == "pdf":
331
305
  cmd.append("--pdf-engine=xelatex")
@@ -333,12 +307,7 @@ def execute_conversion_strategy(
333
307
  cmd.extend(pandoc_args.split())
334
308
 
335
309
  result = subprocess.run(
336
- cmd,
337
- capture_output=True,
338
- text=True,
339
- check=True,
340
- timeout=120,
341
- cwd=str(temp_dir)
310
+ cmd, capture_output=True, text=True, check=True, timeout=120, cwd=str(temp_dir)
342
311
  )
343
312
 
344
313
  # Copy output file to final destination
@@ -417,9 +386,7 @@ def init():
417
386
  else:
418
387
  # Try installing via pip
419
388
  result = subprocess.run(
420
- ["pip3", "install", "jupyter", "nbconvert"],
421
- capture_output=True,
422
- text=True
389
+ ["pip3", "install", "jupyter", "nbconvert"], capture_output=True, text=True
423
390
  )
424
391
  if result.returncode == 0:
425
392
  success(" ✅ jupyter & nbconvert installed successfully")
@@ -437,13 +404,13 @@ def init():
437
404
  info(" ℹ️ This is a large download (~100MB) and may take a few minutes")
438
405
  try:
439
406
  result = subprocess.run(
440
- ["brew", "install", "--cask", "basictex"],
441
- capture_output=True,
442
- text=True
407
+ ["brew", "install", "--cask", "basictex"], capture_output=True, text=True
443
408
  )
444
409
  if result.returncode == 0:
445
410
  success(" ✅ BasicTeX installed successfully")
446
- info(" ℹ️ You may need to restart your terminal or run: eval $(/usr/libexec/path_helper)")
411
+ info(
412
+ " ℹ️ You may need to restart your terminal or run: eval $(/usr/libexec/path_helper)"
413
+ )
447
414
  info("")
448
415
  info(" 📦 Installing LaTeX packages for document conversion...")
449
416
  info(" ℹ️ This requires sudo access and may take a few minutes")
@@ -512,7 +479,9 @@ def init():
512
479
  @click.argument("path")
513
480
  @click.option("--output-dir", "-o", help="Output directory (defaults to same directory as input)")
514
481
  @click.option("--pandoc-args", "-a", help="Additional pandoc arguments", default="")
515
- @click.option("--no-fallback", is_flag=True, help="Disable fallback strategies (use only primary method)")
482
+ @click.option(
483
+ "--no-fallback", is_flag=True, help="Disable fallback strategies (use only primary method)"
484
+ )
516
485
  def convert(from_format, to_format, path, output_dir, pandoc_args, no_fallback):
517
486
  """
518
487
  Convert documents with automatic fallback strategies.
@@ -626,14 +595,15 @@ def convert(from_format, to_format, path, output_dir, pandoc_args, no_fallback):
626
595
  info(f" ⚙️ Using: {strategy.description}")
627
596
 
628
597
  success_flag, error_msg = execute_conversion_strategy(
629
- strategy, input_path, output_path,
630
- from_format_mapped, to_format_mapped, pandoc_args
598
+ strategy, input_path, output_path, from_format_mapped, to_format_mapped, pandoc_args
631
599
  )
632
600
 
633
601
  if success_flag:
634
602
  conversion_succeeded = True
635
603
  method_name = strategy.description
636
- conversion_methods_used[method_name] = conversion_methods_used.get(method_name, 0) + 1
604
+ conversion_methods_used[method_name] = (
605
+ conversion_methods_used.get(method_name, 0) + 1
606
+ )
637
607
  success(f" ✅ Created: {output_path}")
638
608
  if i > 0:
639
609
  info(f" ℹ️ Succeeded with fallback method #{i + 1}")
@@ -770,7 +740,7 @@ echo ""
770
740
  commands_dir = get_custom_commands_dir()
771
741
  cleanup_path = commands_dir / "doc-convert-cleanup.sh"
772
742
 
773
- with open(cleanup_path, 'w') as f:
743
+ with open(cleanup_path, "w") as f:
774
744
  f.write(cleanup_script)
775
745
 
776
746
  # Make it executable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.10.0
3
+ Version: 7.10.1
4
4
  Summary: Portable workflow framework - transform any script into a versioned, schedulable command. Store in ~/.mcli/commands/, 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>
@@ -478,7 +478,7 @@ You write scripts. They work. Then:
478
478
 
479
479
  ```bash
480
480
  # Install completion for your shell
481
- mcli completion install
481
+ mcli self completion install
482
482
 
483
483
  # Now use tab completion
484
484
  mcli workflow <TAB> # Shows all workflows
@@ -202,9 +202,7 @@ class TestConvertCommand:
202
202
  ]
203
203
 
204
204
  runner = CliRunner()
205
- result = runner.invoke(
206
- convert, ["md", "html", str(test_file), "-o", str(output_dir)]
207
- )
205
+ result = runner.invoke(convert, ["md", "html", str(test_file), "-o", str(output_dir)])
208
206
 
209
207
  assert result.exit_code == 0
210
208
  # Output directory should be created
File without changes