mcli-framework 7.0.6__tar.gz → 7.1.0__tar.gz

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

Potentially problematic release.


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

Files changed (281) hide show
  1. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/PKG-INFO +13 -2
  2. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/pyproject.toml +20 -5
  3. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/model_cmd.py +33 -6
  4. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/dashboard/app_integrated.py +77 -34
  5. mcli_framework-7.1.0/src/mcli/mygroup/test_cmd.py +1 -0
  6. mcli_framework-7.1.0/src/mcli/self/test_cmd.py +1 -0
  7. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/PKG-INFO +13 -2
  8. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/SOURCES.txt +59 -52
  9. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/requires.txt +12 -1
  10. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/cli}/test_model_cmd.py +252 -1
  11. mcli_framework-7.1.0/tests/cli/test_self_cmd.py +1061 -0
  12. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/tests/conftest.py +14 -0
  13. mcli_framework-7.1.0/tests/e2e/test_model_workflow.py +145 -0
  14. mcli_framework-7.1.0/tests/e2e/test_new_user_workflow.py +141 -0
  15. mcli_framework-7.1.0/tests/e2e/test_update_workflow.py +194 -0
  16. mcli_framework-7.1.0/tests/fixtures/chat_fixtures.py +84 -0
  17. mcli_framework-7.1.0/tests/fixtures/cli_fixtures.py +91 -0
  18. mcli_framework-7.1.0/tests/fixtures/data_fixtures.py +100 -0
  19. mcli_framework-7.1.0/tests/fixtures/db_fixtures.py +95 -0
  20. mcli_framework-7.1.0/tests/fixtures/model_fixtures.py +69 -0
  21. mcli_framework-7.1.0/tests/integration/test_module_imports.py +160 -0
  22. mcli_framework-7.1.0/tests/unit/test_api_utils.py +116 -0
  23. mcli_framework-7.1.0/tests/unit/test_config.py +129 -0
  24. mcli_framework-7.1.0/tests/unit/test_paths.py +197 -0
  25. mcli_framework-7.0.6/tests/pytest.ini +0 -9
  26. mcli_framework-7.0.6/tests/simple_integration_test.py +0 -163
  27. mcli_framework-7.0.6/tests/test_command_discovery.py +0 -295
  28. mcli_framework-7.0.6/tests/test_enhanced_chat.py +0 -276
  29. mcli_framework-7.0.6/tests/test_main_app_functions.py +0 -144
  30. mcli_framework-7.0.6/tests/test_self.py +0 -469
  31. mcli_framework-7.0.6/tests/test_utility_functions.py +0 -343
  32. mcli_framework-7.0.6/tests/test_utility_functions_simple.py +0 -107
  33. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/dependabot.yml +0 -0
  34. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/build.yml +0 -0
  35. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/ci.yml +0 -0
  36. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/ml-pipeline.yml +0 -0
  37. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/publish-self-hosted.yml +0 -0
  38. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/publish.yml +0 -0
  39. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/release.yml +0 -0
  40. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/security.yml +0 -0
  41. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/.github/workflows/test.yml +0 -0
  42. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/LICENSE +0 -0
  43. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/MANIFEST.in +0 -0
  44. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  45. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/README.md +0 -0
  46. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/Cargo.toml +0 -0
  47. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/src/command_parser.rs +0 -0
  48. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/src/file_watcher.rs +0 -0
  49. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/src/lib.rs +0 -0
  50. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/src/process_manager.rs +0 -0
  51. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/mcli_rust/src/tfidf.rs +0 -0
  52. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/setup.cfg +0 -0
  53. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/chat_cmd.py +0 -0
  54. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/commands_cmd.py +0 -0
  55. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/completion_cmd.py +0 -0
  56. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/completion_helpers.py +0 -0
  57. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/cron_test_cmd.py +0 -0
  58. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/logs_cmd.py +0 -0
  59. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/main.py +0 -0
  60. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/model/model.py +0 -0
  61. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/redis_cmd.py +0 -0
  62. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/video/video.py +0 -0
  63. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/app/visual_cmd.py +0 -0
  64. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/chat/chat.py +0 -0
  65. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/chat/command_rag.py +0 -0
  66. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/chat/enhanced_chat.py +0 -0
  67. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/chat/system_controller.py +0 -0
  68. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/chat/system_integration.py +0 -0
  69. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/cli.py +0 -0
  70. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/config.toml +0 -0
  71. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/api/api.py +0 -0
  72. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/api/daemon_client.py +0 -0
  73. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/api/daemon_client_local.py +0 -0
  74. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/api/daemon_decorator.py +0 -0
  75. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/api/mcli_decorators.py +0 -0
  76. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/auth.py +0 -0
  77. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/aws_manager.py +0 -0
  78. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/azure_manager.py +0 -0
  79. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/credential_manager.py +0 -0
  80. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/gcp_manager.py +0 -0
  81. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/key_manager.py +0 -0
  82. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/mcli_manager.py +0 -0
  83. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/token_manager.py +0 -0
  84. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/auth/token_util.py +0 -0
  85. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/config/config.py +0 -0
  86. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/discovery/__init__.py +0 -0
  87. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/discovery/command_discovery.py +0 -0
  88. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/erd/erd.py +0 -0
  89. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/erd/generate_graph.py +0 -0
  90. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/files/files.py +0 -0
  91. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/fs/fs.py +0 -0
  92. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/lib.py +0 -0
  93. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/logger/logger.py +0 -0
  94. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/paths.py +0 -0
  95. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/performance/optimizer.py +0 -0
  96. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/performance/rust_bridge.py +0 -0
  97. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/performance/uvloop_config.py +0 -0
  98. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/pickles/pickles.py +0 -0
  99. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/search/cached_vectorizer.py +0 -0
  100. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/services/data_pipeline.py +0 -0
  101. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/services/lsh_client.py +0 -0
  102. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/services/redis_service.py +0 -0
  103. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/shell/shell.py +0 -0
  104. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/toml/toml.py +0 -0
  105. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/ui/styling.py +0 -0
  106. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/ui/visual_effects.py +0 -0
  107. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/lib/watcher/watcher.py +0 -0
  108. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/app.py +0 -0
  109. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/middleware.py +0 -0
  110. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/admin_router.py +0 -0
  111. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/auth_router.py +0 -0
  112. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/backtest_router.py +0 -0
  113. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/data_router.py +0 -0
  114. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/model_router.py +0 -0
  115. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
  116. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
  117. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/prediction_router.py +0 -0
  118. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/trade_router.py +0 -0
  119. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/routers/websocket_router.py +0 -0
  120. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/api/schemas.py +0 -0
  121. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/auth/auth_manager.py +0 -0
  122. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/auth/models.py +0 -0
  123. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/auth/permissions.py +0 -0
  124. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
  125. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
  126. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/cache.py +0 -0
  127. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/cli/main.py +0 -0
  128. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/config/settings.py +0 -0
  129. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/configs/dvc_config.py +0 -0
  130. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/configs/mlflow_config.py +0 -0
  131. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/configs/mlops_manager.py +0 -0
  132. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/dashboard/app.py +0 -0
  133. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/dashboard/app_supabase.py +0 -0
  134. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/dashboard/app_training.py +0 -0
  135. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/dashboard/cli.py +0 -0
  136. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
  137. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
  138. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
  139. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/database/migrations/env.py +0 -0
  140. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/database/models.py +0 -0
  141. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/database/session.py +0 -0
  142. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/experimentation/ab_testing.py +0 -0
  143. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/features/ensemble_features.py +0 -0
  144. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/features/political_features.py +0 -0
  145. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/features/recommendation_engine.py +0 -0
  146. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/features/stock_features.py +0 -0
  147. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/features/test_feature_engineering.py +0 -0
  148. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/logging.py +0 -0
  149. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/mlops/data_versioning.py +0 -0
  150. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
  151. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/mlops/model_serving.py +0 -0
  152. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
  153. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/models/base_models.py +0 -0
  154. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/models/ensemble_models.py +0 -0
  155. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/models/recommendation_models.py +0 -0
  156. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/models/test_models.py +0 -0
  157. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/monitoring/drift_detection.py +0 -0
  158. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/monitoring/metrics.py +0 -0
  159. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
  160. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
  161. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
  162. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
  163. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -0
  164. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
  165. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
  166. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/tasks.py +0 -0
  167. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/tests/test_integration.py +0 -0
  168. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
  169. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/public/oi/oi.py +0 -0
  170. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/public/public.py +0 -0
  171. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/self/self_cmd.py +0 -0
  172. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/api_daemon.py +0 -0
  173. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/async_command_database.py +0 -0
  174. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
  175. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/client.py +0 -0
  176. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/commands.py +0 -0
  177. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/daemon.py +0 -0
  178. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/daemon_api.py +0 -0
  179. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
  180. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/process_cli.py +0 -0
  181. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/process_manager.py +0 -0
  182. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/daemon/test_daemon.py +0 -0
  183. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
  184. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/docker/docker.py +0 -0
  185. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/file/file.py +0 -0
  186. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/gcloud/config.toml +0 -0
  187. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/gcloud/gcloud.py +0 -0
  188. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/git_commit/ai_service.py +0 -0
  189. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/git_commit/commands.py +0 -0
  190. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/lsh_integration.py +0 -0
  191. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/client.py +0 -0
  192. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
  193. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
  194. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
  195. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
  196. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/model_service.py +0 -0
  197. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
  198. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
  199. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
  200. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/test_example.py +0 -0
  201. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/test_integration.py +0 -0
  202. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/model_service/test_new_features.py +0 -0
  203. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/openai/openai.py +0 -0
  204. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/commands.py +0 -0
  205. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/config.py +0 -0
  206. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/connectivity.py +0 -0
  207. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/data_sources.py +0 -0
  208. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/database.py +0 -0
  209. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/demo.py +0 -0
  210. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/models.py +0 -0
  211. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/monitoring.py +0 -0
  212. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/scrapers.py +0 -0
  213. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/scrapers_california.py +0 -0
  214. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -0
  215. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -0
  216. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -0
  217. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/supabase_functions.py +0 -0
  218. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/politician_trading/workflow.py +0 -0
  219. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/registry/registry.py +0 -0
  220. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/repo/repo.py +0 -0
  221. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/commands.py +0 -0
  222. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
  223. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/job.py +0 -0
  224. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/monitor.py +0 -0
  225. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/persistence.py +0 -0
  226. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/scheduler/scheduler.py +0 -0
  227. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/sync/sync_cmd.py +0 -0
  228. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/sync/test_cmd.py +0 -0
  229. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/videos/videos.py +0 -0
  230. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/wakatime/wakatime.py +0 -0
  231. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli/workflow/workflow.py +0 -0
  232. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
  233. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/entry_points.txt +0 -0
  234. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/src/mcli_framework.egg-info/top_level.txt +0 -0
  235. /mcli_framework-7.0.6/tests/test_all_cli.py → /mcli_framework-7.1.0/tests/cli/test_all_commands.py +0 -0
  236. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/cli}/test_chat_cmd.py +0 -0
  237. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/cli}/test_main_app.py +0 -0
  238. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/tests/demo_generate_graph.py +0 -0
  239. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/tests/demo_hierarchical_transform.py +0 -0
  240. /mcli_framework-7.0.6/tests/end_to_end_integration_test.py → /mcli_framework-7.1.0/tests/e2e/test_complete_workflows.py +0 -0
  241. /mcli_framework-7.0.6/tests/test_agent_functionality.py → /mcli_framework-7.1.0/tests/integration/test_agent.py +0 -0
  242. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_california_scraper.py +0 -0
  243. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_chat_client.py +0 -0
  244. /mcli_framework-7.0.6/tests/test_chat_system_control.py → /mcli_framework-7.1.0/tests/integration/test_chat_system.py +0 -0
  245. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_congress_scraper.py +0 -0
  246. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_daemon_client.py +0 -0
  247. /mcli_framework-7.0.6/tests/test_daemon.py → /mcli_framework-7.1.0/tests/integration/test_daemon_server.py +0 -0
  248. /mcli_framework-7.0.6/tests/test_webapp.py → /mcli_framework-7.1.0/tests/integration/test_flask_webapp.py +0 -0
  249. /mcli_framework-7.0.6/tests/test_gcloud.py → /mcli_framework-7.1.0/tests/integration/test_gcloud_services.py +0 -0
  250. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_lsh_client.py +0 -0
  251. /mcli_framework-7.0.6/tests/test_lsh_integration.py → /mcli_framework-7.1.0/tests/integration/test_lsh_service.py +0 -0
  252. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_ml_auth.py +0 -0
  253. /mcli_framework-7.0.6/tests/test_data_pipeline.py → /mcli_framework-7.1.0/tests/integration/test_ml_data_pipeline.py +0 -0
  254. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_ml_models.py +0 -0
  255. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_ml_pipeline.py +0 -0
  256. /mcli_framework-7.0.6/tests/test_oi.py → /mcli_framework-7.1.0/tests/integration/test_oi_service.py +0 -0
  257. /mcli_framework-7.0.6/tests/test_politician_trading_integration.py → /mcli_framework-7.1.0/tests/integration/test_politician_trading.py +0 -0
  258. /mcli_framework-7.0.6/tests/test_repo.py → /mcli_framework-7.1.0/tests/integration/test_repo_operations.py +0 -0
  259. /mcli_framework-7.0.6/tests/test_registry.py → /mcli_framework-7.1.0/tests/integration/test_service_registry.py +0 -0
  260. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_uk_scraper.py +0 -0
  261. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_us_states_scraper.py +0 -0
  262. /mcli_framework-7.0.6/tests/test_videos.py → /mcli_framework-7.1.0/tests/integration/test_video_processing.py +0 -0
  263. /mcli_framework-7.0.6/tests/test_wakatime.py → /mcli_framework-7.1.0/tests/integration/test_wakatime_api.py +0 -0
  264. /mcli_framework-7.0.6/tests/test_webapp_comprehensive.py → /mcli_framework-7.1.0/tests/integration/test_webapp_full.py +0 -0
  265. {mcli_framework-7.0.6/tests → mcli_framework-7.1.0/tests/integration}/test_workflow.py +0 -0
  266. /mcli_framework-7.0.6/tests/test_workflow_integration.py → /mcli_framework-7.1.0/tests/integration/test_workflow_commands.py +0 -0
  267. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/tests/run_tests.py +0 -0
  268. {mcli_framework-7.0.6 → mcli_framework-7.1.0}/tests/test_harness.py +0 -0
  269. /mcli_framework-7.0.6/tests/test_fix.py → /mcli_framework-7.1.0/tests/unit/test_bug_fixes.py +0 -0
  270. /mcli_framework-7.0.6/tests/test_optional_dependencies.py → /mcli_framework-7.1.0/tests/unit/test_dependencies.py +0 -0
  271. /mcli_framework-7.0.6/tests/test_erd.py → /mcli_framework-7.1.0/tests/unit/test_erd_generation.py +0 -0
  272. /mcli_framework-7.0.6/tests/test_generic_erd.py → /mcli_framework-7.1.0/tests/unit/test_erd_generic.py +0 -0
  273. /mcli_framework-7.0.6/tests/test_erd_import.py → /mcli_framework-7.1.0/tests/unit/test_erd_imports.py +0 -0
  274. /mcli_framework-7.0.6/tests/test_generate_graph.py → /mcli_framework-7.1.0/tests/unit/test_graph_generation.py +0 -0
  275. /mcli_framework-7.0.6/tests/test_auth.py → /mcli_framework-7.1.0/tests/unit/test_lib_auth.py +0 -0
  276. /mcli_framework-7.0.6/tests/test_file.py → /mcli_framework-7.1.0/tests/unit/test_lib_files.py +0 -0
  277. /mcli_framework-7.0.6/tests/test_lib.py → /mcli_framework-7.1.0/tests/unit/test_lib_utils.py +0 -0
  278. /mcli_framework-7.0.6/tests/test_preprocessing_simple.py → /mcli_framework-7.1.0/tests/unit/test_ml_preprocessing.py +0 -0
  279. /mcli_framework-7.0.6/tests/test_fixed_issues.py → /mcli_framework-7.1.0/tests/unit/test_regression.py +0 -0
  280. /mcli_framework-7.0.6/tests/test_rich.py → /mcli_framework-7.1.0/tests/unit/test_ui_rich.py +0 -0
  281. /mcli_framework-7.0.6/tests/test_uv_compatibility.py → /mcli_framework-7.1.0/tests/unit/test_uv_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.0.6
3
+ Version: 7.1.0
4
4
  Summary: 🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -136,13 +136,24 @@ Requires-Dist: pytest>=8.4.1; extra == "dev"
136
136
  Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
137
137
  Requires-Dist: pytest-mock>=3.14.1; extra == "dev"
138
138
  Requires-Dist: pytest-asyncio>=1.1.0; extra == "dev"
139
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
140
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
141
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
142
+ Requires-Dist: hypothesis>=6.92.0; extra == "dev"
143
+ Requires-Dist: faker>=22.0.0; extra == "dev"
144
+ Requires-Dist: responses>=0.24.0; extra == "dev"
145
+ Requires-Dist: freezegun>=1.4.0; extra == "dev"
146
+ Requires-Dist: pytest-html>=4.1.0; extra == "dev"
147
+ Requires-Dist: pytest-json-report>=1.5.0; extra == "dev"
139
148
  Requires-Dist: black>=23.0.0; extra == "dev"
140
149
  Requires-Dist: isort<6.0.0,>=5.12.0; extra == "dev"
141
150
  Requires-Dist: mypy<2.0.0,>=1.7.1; extra == "dev"
151
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
152
+ Requires-Dist: pre-commit>=3.6.0; extra == "dev"
142
153
  Requires-Dist: build>=1.2.2.post1; extra == "dev"
143
154
  Requires-Dist: maturin>=1.9.3; extra == "dev"
155
+ Requires-Dist: twine>=4.0.0; extra == "dev"
144
156
  Provides-Extra: all
145
- Requires-Dist: mcli[async-extras,chat,dashboard,database,documents,gpu,ml,monitoring,streaming,video,viz,web]; extra == "all"
146
157
  Dynamic: license-file
147
158
 
148
159
  # MCLI
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mcli-framework"
3
- version = "7.0.6"
3
+ version = "7.1.0"
4
4
  description = "🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -177,21 +177,36 @@ web = []
177
177
 
178
178
  # Development tools
179
179
  dev = [
180
+ # Testing framework
180
181
  "pytest>=8.4.1",
181
182
  "pytest-cov>=4.1.0,<5.0.0",
182
183
  "pytest-mock>=3.14.1",
183
184
  "pytest-asyncio>=1.1.0",
185
+ "pytest-benchmark>=4.0.0", # Performance testing
186
+ "pytest-timeout>=2.2.0", # Timeout control
187
+ "pytest-xdist>=3.5.0", # Parallel testing
188
+ "hypothesis>=6.92.0", # Property-based testing
189
+ "faker>=22.0.0", # Test data generation
190
+ "responses>=0.24.0", # HTTP mocking
191
+ "freezegun>=1.4.0", # Time mocking
192
+ "pytest-html>=4.1.0", # HTML reports
193
+ "pytest-json-report>=1.5.0", # JSON reports
194
+
195
+ # Code quality
184
196
  "black>=23.0.0",
185
197
  "isort>=5.12.0,<6.0.0",
186
198
  "mypy>=1.7.1,<2.0.0",
199
+ "ruff>=0.1.0", # Fast linter
200
+ "pre-commit>=3.6.0", # Git hooks
201
+
202
+ # Build tools
187
203
  "build>=1.2.2.post1",
188
204
  "maturin>=1.9.3",
205
+ "twine>=4.0.0", # Package upload
189
206
  ]
190
207
 
191
- # All optional features
192
- all = [
193
- "mcli[chat,async-extras,video,documents,viz,database,ml,gpu,monitoring,streaming,dashboard,web]",
194
- ]
208
+ # All optional features (all features now included by default)
209
+ all = []
195
210
 
196
211
  [tool.black]
197
212
  line-length = 100
@@ -100,15 +100,24 @@ def download(model_name: str):
100
100
 
101
101
  @model.command()
102
102
  @click.option("--model", "-m", help="Specific model to use")
103
- @click.option("--port", "-p", default=8080, help="Port to run server on")
103
+ @click.option("--port", "-p", default=None, help="Port to run server on (default: from config or 51234)")
104
104
  @click.option(
105
105
  "--auto-download",
106
106
  is_flag=True,
107
107
  default=True,
108
108
  help="Automatically download model if not available",
109
109
  )
110
- def start(model: Optional[str], port: int, auto_download: bool):
110
+ def start(model: Optional[str], port: Optional[int], auto_download: bool):
111
111
  """Start the lightweight model server."""
112
+ # Load port from config if not specified
113
+ if port is None:
114
+ try:
115
+ from mcli.lib.config.config import load_config
116
+ config = load_config()
117
+ port = config.get("model", {}).get("server_port", 51234)
118
+ except Exception:
119
+ port = 51234 # Default ephemeral port
120
+
112
121
  server = LightweightModelServer(port=port)
113
122
 
114
123
  # Determine which model to use
@@ -192,9 +201,18 @@ def recommend():
192
201
 
193
202
 
194
203
  @model.command()
195
- @click.option("--port", "-p", default=8080, help="Port where server is running")
196
- def status(port: int):
204
+ @click.option("--port", "-p", default=None, help="Port where server is running (default: from config or 51234)")
205
+ def status(port: Optional[int]):
197
206
  """Check status of the lightweight model server."""
207
+ # Load port from config if not specified
208
+ if port is None:
209
+ try:
210
+ from mcli.lib.config.config import load_config
211
+ config = load_config()
212
+ port = config.get("model", {}).get("server_port", 51234)
213
+ except Exception:
214
+ port = 51234 # Default ephemeral port
215
+
198
216
  import requests
199
217
 
200
218
  try:
@@ -225,9 +243,18 @@ def status(port: int):
225
243
 
226
244
 
227
245
  @model.command()
228
- @click.option("--port", "-p", default=8080, help="Port where server is running")
229
- def stop(port: int):
246
+ @click.option("--port", "-p", default=None, help="Port where server is running (default: from config or 51234)")
247
+ def stop(port: Optional[int]):
230
248
  """Stop the lightweight model server."""
249
+ # Load port from config if not specified
250
+ if port is None:
251
+ try:
252
+ from mcli.lib.config.config import load_config
253
+ config = load_config()
254
+ port = config.get("model", {}).get("server_port", 51234)
255
+ except Exception:
256
+ port = 51234 # Default ephemeral port
257
+
231
258
  import requests
232
259
  import psutil
233
260
 
@@ -15,11 +15,20 @@ import json
15
15
  from pathlib import Path
16
16
  import subprocess
17
17
  import pickle
18
+ from dotenv import load_dotenv
19
+
20
+ # Load environment variables from .env file
21
+ load_dotenv()
18
22
 
19
23
  # Add ML pipeline imports
20
- from mcli.ml.preprocessing.data_preprocessor import DataPreprocessor
21
- from mcli.ml.features.feature_engineering import FeatureEngineering
22
- from mcli.ml.models import get_model_by_id
24
+ try:
25
+ from mcli.ml.preprocessing import PoliticianTradingPreprocessor, MLDataPipeline
26
+ from mcli.ml.models import get_model_by_id
27
+ HAS_ML_PIPELINE = True
28
+ except ImportError:
29
+ HAS_ML_PIPELINE = False
30
+ PoliticianTradingPreprocessor = None
31
+ MLDataPipeline = None
23
32
 
24
33
  # Page config
25
34
  st.set_page_config(
@@ -72,13 +81,17 @@ def get_supabase_client() -> Client:
72
81
  @st.cache_resource
73
82
  def get_preprocessor():
74
83
  """Get data preprocessor instance"""
75
- return DataPreprocessor()
84
+ if HAS_ML_PIPELINE and PoliticianTradingPreprocessor:
85
+ return PoliticianTradingPreprocessor()
86
+ return None
76
87
 
77
88
 
78
89
  @st.cache_resource
79
- def get_feature_engineer():
80
- """Get feature engineering instance"""
81
- return FeatureEngineering()
90
+ def get_ml_pipeline():
91
+ """Get ML data pipeline instance"""
92
+ if HAS_ML_PIPELINE and MLDataPipeline:
93
+ return MLDataPipeline()
94
+ return None
82
95
 
83
96
 
84
97
  def check_lsh_daemon():
@@ -128,11 +141,18 @@ def run_ml_pipeline(df_disclosures):
128
141
  try:
129
142
  # 1. Preprocess data
130
143
  preprocessor = get_preprocessor()
131
- processed_data = preprocessor.preprocess(df_disclosures)
144
+ if preprocessor:
145
+ processed_data = preprocessor.preprocess(df_disclosures)
146
+ else:
147
+ # Use raw data if preprocessor not available
148
+ processed_data = df_disclosures
132
149
 
133
- # 2. Feature engineering
134
- feature_engineer = get_feature_engineer()
135
- features = feature_engineer.create_features(processed_data)
150
+ # 2. Feature engineering (using ML pipeline if available)
151
+ ml_pipeline = get_ml_pipeline()
152
+ if ml_pipeline:
153
+ features = ml_pipeline.transform(processed_data)
154
+ else:
155
+ features = processed_data
136
156
 
137
157
  # 3. Generate predictions (mock for now, replace with actual model)
138
158
  predictions = pd.DataFrame({
@@ -219,15 +239,18 @@ def main():
219
239
  st.sidebar.title("Navigation")
220
240
  page = st.sidebar.selectbox(
221
241
  "Choose a page",
222
- ["Pipeline Overview", "ML Processing", "Model Performance", "Predictions", "LSH Jobs", "System Health"]
242
+ ["Pipeline Overview", "ML Processing", "Model Performance", "Predictions", "LSH Jobs", "System Health"],
243
+ index=0 # Default to Pipeline Overview
223
244
  )
224
245
 
225
- # Auto-refresh toggle
226
- auto_refresh = st.sidebar.checkbox("Auto-refresh (30s)", value=True)
246
+ # Auto-refresh toggle (default off to prevent blocking)
247
+ auto_refresh = st.sidebar.checkbox("Auto-refresh (30s)", value=False)
227
248
  if auto_refresh:
228
- import time
229
- time.sleep(30)
230
- st.rerun()
249
+ try:
250
+ from streamlit_autorefresh import st_autorefresh
251
+ st_autorefresh(interval=30000, key="data_refresh")
252
+ except ImportError:
253
+ st.sidebar.warning("⚠️ Auto-refresh requires streamlit-autorefresh package")
231
254
 
232
255
  # Manual refresh button
233
256
  if st.sidebar.button("🔄 Refresh Now"):
@@ -244,25 +267,42 @@ def main():
244
267
  else:
245
268
  st.sidebar.error("❌ Pipeline failed")
246
269
 
247
- # Main content
248
- if page == "Pipeline Overview":
249
- show_pipeline_overview()
250
- elif page == "ML Processing":
251
- show_ml_processing()
252
- elif page == "Model Performance":
253
- show_model_performance()
254
- elif page == "Predictions":
255
- show_predictions()
256
- elif page == "LSH Jobs":
257
- show_lsh_jobs()
258
- elif page == "System Health":
259
- show_system_health()
270
+ # Main content with error handling
271
+ try:
272
+ if page == "Pipeline Overview":
273
+ show_pipeline_overview()
274
+ elif page == "ML Processing":
275
+ show_ml_processing()
276
+ elif page == "Model Performance":
277
+ show_model_performance()
278
+ elif page == "Predictions":
279
+ show_predictions()
280
+ elif page == "LSH Jobs":
281
+ show_lsh_jobs()
282
+ elif page == "System Health":
283
+ show_system_health()
284
+ except Exception as e:
285
+ st.error(f"❌ Error loading page '{page}': {e}")
286
+ import traceback
287
+ with st.expander("See error details"):
288
+ st.code(traceback.format_exc())
260
289
 
261
290
 
262
291
  def show_pipeline_overview():
263
292
  """Show ML pipeline overview"""
264
293
  st.header("ML Pipeline Overview")
265
294
 
295
+ # Check Supabase connection
296
+ if not get_supabase_client():
297
+ st.warning("⚠️ **Supabase not configured**")
298
+ st.info("""
299
+ To connect to Supabase, set these environment variables:
300
+ - `SUPABASE_URL`: Your Supabase project URL
301
+ - `SUPABASE_KEY`: Your Supabase API key
302
+
303
+ The dashboard will show demo data until configured.
304
+ """)
305
+
266
306
  # Get data
267
307
  politicians = get_politicians_data()
268
308
  disclosures = get_disclosures_data()
@@ -283,17 +323,20 @@ def show_pipeline_overview():
283
323
  if not disclosures.empty:
284
324
  preprocessor = get_preprocessor()
285
325
  try:
286
- processed = preprocessor.preprocess(disclosures.head(100))
287
- feature_count = len(processed.columns)
326
+ if preprocessor:
327
+ processed = preprocessor.preprocess(disclosures.head(100))
328
+ feature_count = len(processed.columns)
329
+ else:
330
+ feature_count = len(disclosures.columns)
288
331
  except:
289
- feature_count = 0
332
+ feature_count = len(disclosures.columns) if not disclosures.empty else 0
290
333
  else:
291
334
  feature_count = 0
292
335
 
293
336
  st.metric(
294
337
  label="Features Extracted",
295
338
  value=feature_count,
296
- delta="After preprocessing"
339
+ delta="Raw data" if not preprocessor else "After preprocessing"
297
340
  )
298
341
 
299
342
  with col3:
@@ -0,0 +1 @@
1
+ def test(): pass
@@ -0,0 +1 @@
1
+ def test(): pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcli-framework
3
- Version: 7.0.6
3
+ Version: 7.1.0
4
4
  Summary: 🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals
5
5
  Author-email: Luis Fernandez de la Vara <luis@lefv.io>
6
6
  Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
@@ -136,13 +136,24 @@ Requires-Dist: pytest>=8.4.1; extra == "dev"
136
136
  Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
137
137
  Requires-Dist: pytest-mock>=3.14.1; extra == "dev"
138
138
  Requires-Dist: pytest-asyncio>=1.1.0; extra == "dev"
139
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
140
+ Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
141
+ Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
142
+ Requires-Dist: hypothesis>=6.92.0; extra == "dev"
143
+ Requires-Dist: faker>=22.0.0; extra == "dev"
144
+ Requires-Dist: responses>=0.24.0; extra == "dev"
145
+ Requires-Dist: freezegun>=1.4.0; extra == "dev"
146
+ Requires-Dist: pytest-html>=4.1.0; extra == "dev"
147
+ Requires-Dist: pytest-json-report>=1.5.0; extra == "dev"
139
148
  Requires-Dist: black>=23.0.0; extra == "dev"
140
149
  Requires-Dist: isort<6.0.0,>=5.12.0; extra == "dev"
141
150
  Requires-Dist: mypy<2.0.0,>=1.7.1; extra == "dev"
151
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
152
+ Requires-Dist: pre-commit>=3.6.0; extra == "dev"
142
153
  Requires-Dist: build>=1.2.2.post1; extra == "dev"
143
154
  Requires-Dist: maturin>=1.9.3; extra == "dev"
155
+ Requires-Dist: twine>=4.0.0; extra == "dev"
144
156
  Provides-Extra: all
145
- Requires-Dist: mcli[async-extras,chat,dashboard,database,documents,gpu,ml,monitoring,streaming,video,viz,web]; extra == "all"
146
157
  Dynamic: license-file
147
158
 
148
159
  # MCLI
@@ -137,9 +137,11 @@ src/mcli/ml/preprocessing/test_preprocessing.py
137
137
  src/mcli/ml/scripts/populate_sample_data.py
138
138
  src/mcli/ml/tests/test_integration.py
139
139
  src/mcli/ml/tests/test_training_dashboard.py
140
+ src/mcli/mygroup/test_cmd.py
140
141
  src/mcli/public/public.py
141
142
  src/mcli/public/oi/oi.py
142
143
  src/mcli/self/self_cmd.py
144
+ src/mcli/self/test_cmd.py
143
145
  src/mcli/workflow/lsh_integration.py
144
146
  src/mcli/workflow/workflow.py
145
147
  src/mcli/workflow/daemon/api_daemon.py
@@ -209,57 +211,62 @@ src/mcli_framework.egg-info/top_level.txt
209
211
  tests/conftest.py
210
212
  tests/demo_generate_graph.py
211
213
  tests/demo_hierarchical_transform.py
212
- tests/end_to_end_integration_test.py
213
- tests/pytest.ini
214
214
  tests/run_tests.py
215
- tests/simple_integration_test.py
216
- tests/test_agent_functionality.py
217
- tests/test_all_cli.py
218
- tests/test_auth.py
219
- tests/test_california_scraper.py
220
- tests/test_chat_client.py
221
- tests/test_chat_cmd.py
222
- tests/test_chat_system_control.py
223
- tests/test_command_discovery.py
224
- tests/test_congress_scraper.py
225
- tests/test_daemon.py
226
- tests/test_daemon_client.py
227
- tests/test_data_pipeline.py
228
- tests/test_enhanced_chat.py
229
- tests/test_erd.py
230
- tests/test_erd_import.py
231
- tests/test_file.py
232
- tests/test_fix.py
233
- tests/test_fixed_issues.py
234
- tests/test_gcloud.py
235
- tests/test_generate_graph.py
236
- tests/test_generic_erd.py
237
215
  tests/test_harness.py
238
- tests/test_lib.py
239
- tests/test_lsh_client.py
240
- tests/test_lsh_integration.py
241
- tests/test_main_app.py
242
- tests/test_main_app_functions.py
243
- tests/test_ml_auth.py
244
- tests/test_ml_models.py
245
- tests/test_ml_pipeline.py
246
- tests/test_model_cmd.py
247
- tests/test_oi.py
248
- tests/test_optional_dependencies.py
249
- tests/test_politician_trading_integration.py
250
- tests/test_preprocessing_simple.py
251
- tests/test_registry.py
252
- tests/test_repo.py
253
- tests/test_rich.py
254
- tests/test_self.py
255
- tests/test_uk_scraper.py
256
- tests/test_us_states_scraper.py
257
- tests/test_utility_functions.py
258
- tests/test_utility_functions_simple.py
259
- tests/test_uv_compatibility.py
260
- tests/test_videos.py
261
- tests/test_wakatime.py
262
- tests/test_webapp.py
263
- tests/test_webapp_comprehensive.py
264
- tests/test_workflow.py
265
- tests/test_workflow_integration.py
216
+ tests/cli/test_all_commands.py
217
+ tests/cli/test_chat_cmd.py
218
+ tests/cli/test_main_app.py
219
+ tests/cli/test_model_cmd.py
220
+ tests/cli/test_self_cmd.py
221
+ tests/e2e/test_complete_workflows.py
222
+ tests/e2e/test_model_workflow.py
223
+ tests/e2e/test_new_user_workflow.py
224
+ tests/e2e/test_update_workflow.py
225
+ tests/fixtures/chat_fixtures.py
226
+ tests/fixtures/cli_fixtures.py
227
+ tests/fixtures/data_fixtures.py
228
+ tests/fixtures/db_fixtures.py
229
+ tests/fixtures/model_fixtures.py
230
+ tests/integration/test_agent.py
231
+ tests/integration/test_california_scraper.py
232
+ tests/integration/test_chat_client.py
233
+ tests/integration/test_chat_system.py
234
+ tests/integration/test_congress_scraper.py
235
+ tests/integration/test_daemon_client.py
236
+ tests/integration/test_daemon_server.py
237
+ tests/integration/test_flask_webapp.py
238
+ tests/integration/test_gcloud_services.py
239
+ tests/integration/test_lsh_client.py
240
+ tests/integration/test_lsh_service.py
241
+ tests/integration/test_ml_auth.py
242
+ tests/integration/test_ml_data_pipeline.py
243
+ tests/integration/test_ml_models.py
244
+ tests/integration/test_ml_pipeline.py
245
+ tests/integration/test_module_imports.py
246
+ tests/integration/test_oi_service.py
247
+ tests/integration/test_politician_trading.py
248
+ tests/integration/test_repo_operations.py
249
+ tests/integration/test_service_registry.py
250
+ tests/integration/test_uk_scraper.py
251
+ tests/integration/test_us_states_scraper.py
252
+ tests/integration/test_video_processing.py
253
+ tests/integration/test_wakatime_api.py
254
+ tests/integration/test_webapp_full.py
255
+ tests/integration/test_workflow.py
256
+ tests/integration/test_workflow_commands.py
257
+ tests/unit/test_api_utils.py
258
+ tests/unit/test_bug_fixes.py
259
+ tests/unit/test_config.py
260
+ tests/unit/test_dependencies.py
261
+ tests/unit/test_erd_generation.py
262
+ tests/unit/test_erd_generic.py
263
+ tests/unit/test_erd_imports.py
264
+ tests/unit/test_graph_generation.py
265
+ tests/unit/test_lib_auth.py
266
+ tests/unit/test_lib_files.py
267
+ tests/unit/test_lib_utils.py
268
+ tests/unit/test_ml_preprocessing.py
269
+ tests/unit/test_paths.py
270
+ tests/unit/test_regression.py
271
+ tests/unit/test_ui_rich.py
272
+ tests/unit/test_uv_compat.py
@@ -80,7 +80,6 @@ typer>=0.9.0
80
80
  flask<3.0.0,>=2.3.0
81
81
 
82
82
  [all]
83
- mcli[async-extras,chat,dashboard,database,documents,gpu,ml,monitoring,streaming,video,viz,web]
84
83
 
85
84
  [async-extras]
86
85
 
@@ -95,11 +94,23 @@ pytest>=8.4.1
95
94
  pytest-cov<5.0.0,>=4.1.0
96
95
  pytest-mock>=3.14.1
97
96
  pytest-asyncio>=1.1.0
97
+ pytest-benchmark>=4.0.0
98
+ pytest-timeout>=2.2.0
99
+ pytest-xdist>=3.5.0
100
+ hypothesis>=6.92.0
101
+ faker>=22.0.0
102
+ responses>=0.24.0
103
+ freezegun>=1.4.0
104
+ pytest-html>=4.1.0
105
+ pytest-json-report>=1.5.0
98
106
  black>=23.0.0
99
107
  isort<6.0.0,>=5.12.0
100
108
  mypy<2.0.0,>=1.7.1
109
+ ruff>=0.1.0
110
+ pre-commit>=3.6.0
101
111
  build>=1.2.2.post1
102
112
  maturin>=1.9.3
113
+ twine>=4.0.0
103
114
 
104
115
  [documents]
105
116