mcli-framework 7.10.1__tar.gz → 7.10.2__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.
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/dependabot.yml +20 -22
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/ci.yml +48 -6
- mcli_framework-7.10.2/.github/workflows/codeql.yml +43 -0
- mcli_framework-7.10.2/.github/workflows/main_mcli.yml +76 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/PKG-INFO +36 -2
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/README.md +35 -1
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/pyproject.toml +37 -1
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/custom_commands.py +10 -0
- mcli_framework-7.10.2/src/mcli/lib/optional_deps.py +240 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/git_commit/ai_service.py +13 -2
- mcli_framework-7.10.2/src/mcli/workflow/notebook/converter.py +375 -0
- mcli_framework-7.10.2/src/mcli/workflow/notebook/notebook_cmd.py +441 -0
- mcli_framework-7.10.2/src/mcli/workflow/notebook/schema.py +402 -0
- mcli_framework-7.10.2/src/mcli/workflow/notebook/validator.py +313 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/workflow.py +14 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/PKG-INFO +36 -2
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/SOURCES.txt +11 -27
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_app_redis_cmd.py +1 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_model_cmd.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_workflow_file.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_workflow_registry.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/e2e/test_model_workflow.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/e2e/test_new_user_workflow.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_chat_client.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_lsh_client.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_ml_auth.py +3 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_ml_models.py +4 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_module_imports.py +3 -3
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_async_process_manager.py +5 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_custom_commands.py +6 -0
- mcli_framework-7.10.2/tests/unit/test_custom_commands_filtering.py +164 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_dashboard_functions.py +5 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_dashboard_pages.py +1 -0
- mcli_framework-7.10.2/tests/unit/test_optional_deps.py +211 -0
- mcli_framework-7.10.2/tests/unit/workflow/test_notebook.py +443 -0
- mcli_framework-7.10.1/src/mcli/ml/features/political_features.py +0 -677
- mcli_framework-7.10.1/src/mcli/ml/preprocessing/politician_trading_preprocessor.py +0 -570
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/config.py +0 -134
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/connectivity.py +0 -492
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/data_sources.py +0 -654
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/database.py +0 -412
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/demo.py +0 -249
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/models.py +0 -327
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/monitoring.py +0 -413
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers.py +0 -1074
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_california.py +0 -434
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_corporate_registry.py +0 -797
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_eu.py +0 -376
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_free_sources.py +0 -509
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_third_party.py +0 -373
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_uk.py +0 -378
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/scrapers_us_states.py +0 -471
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/seed_database.py +0 -520
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/supabase_functions.py +0 -354
- mcli_framework-7.10.1/src/mcli/workflow/politician_trading/workflow.py +0 -879
- mcli_framework-7.10.1/tests/integration/test_california_scraper.py +0 -86
- mcli_framework-7.10.1/tests/integration/test_congress_scraper.py +0 -90
- mcli_framework-7.10.1/tests/integration/test_daemon_client.py +0 -356
- mcli_framework-7.10.1/tests/integration/test_politician_trading.py +0 -358
- mcli_framework-7.10.1/tests/integration/test_uk_scraper.py +0 -86
- mcli_framework-7.10.1/tests/integration/test_us_states_scraper.py +0 -95
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/build.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/ml-pipeline.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/publish-self-hosted.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/publish.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/release.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/security.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/.github/workflows/test.yml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/LICENSE +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/MANIFEST.in +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/Cargo.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/src/command_parser.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/src/file_watcher.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/src/lib.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/src/process_manager.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/mcli_rust/src/tfidf.rs +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/setup.cfg +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/commands_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/completion_helpers.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/main.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/model/model.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/model_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/app/video/video.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/chat/chat.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/chat/command_rag.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/chat/enhanced_chat.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/chat/system_controller.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/chat/system_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/config.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/api/api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_client_local.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/api/daemon_decorator.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/api/mcli_decorators.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/auth.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/aws_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/azure_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/credential_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/gcp_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/key_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/mcli_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/token_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/auth/token_util.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/config/config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/discovery/__init__.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/discovery/command_discovery.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/erd/erd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/erd/generate_graph.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/files/files.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/fs/fs.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/lib.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/logger/logger.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/paths.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/performance/optimizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/performance/rust_bridge.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/performance/uvloop_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/pickles/pickles.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/search/cached_vectorizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/secrets/commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/secrets/manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/secrets/repl.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/secrets/store.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/services/data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/services/lsh_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/services/redis_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/shell/shell.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/toml/toml.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/ui/styling.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/ui/visual_effects.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/lib/watcher/watcher.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/middleware.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/admin_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/auth_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/backtest_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/data_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/model_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/monitoring_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/portfolio_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/prediction_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/trade_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/routers/websocket_router.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/api/schemas.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/auth/auth_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/auth/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/auth/permissions.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/backtest_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/performance_metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/backtesting/run.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/cache.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/cli/main.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/config/settings.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/configs/dvc_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/configs/mlflow_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/configs/mlops_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_integrated.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_supabase.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/app_training.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/common.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/charts.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/components/tables.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/overview.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/cicd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/debug_dependencies.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/gravity_viz.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/monte_carlo_predictions.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/predictions_enhanced.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/scrapers_and_logs.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/test_portfolio.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/trading.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/pages/workflows.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/streamlit_extras_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/styles.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/dashboard/warning_suppression.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/api_connectors.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/data_ingestion/stream_processor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/database/migrations/env.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/database/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/database/session.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/experimentation/ab_testing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/features/ensemble_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/features/recommendation_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/features/stock_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/features/test_feature_engineering.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/logging.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/mlops/data_versioning.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/mlops/experiment_tracker.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/mlops/model_serving.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/mlops/pipeline_orchestrator.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/models/base_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/models/ensemble_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/models/recommendation_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/models/test_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/monitoring/drift_detection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/monitoring/metrics.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/optimization/optimize.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/optimization/portfolio_optimizer.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/predictions/monte_carlo.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/predictions/prediction_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/data_cleaners.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/feature_extractors.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/ml_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/preprocessing/test_preprocessing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/scripts/populate_sample_data.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/serving/serve.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/tasks.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/tests/test_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/tests/test_training_dashboard.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/alpaca_client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/migrations.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/paper_trading.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/risk_management.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/trading/trading_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/training/train.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/ml/training/train_model.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/mygroup/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/public/oi/oi.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/public/public.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/completion_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/redis_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/self_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/store_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/visual_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/self/zsh_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/async_command_database.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/async_process_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/daemon_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/enhanced_daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/process_cli.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/process_manager.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/daemon/test_daemon.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/dashboard/dashboard_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/doc_convert.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/docker/docker.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/gcloud/config.toml +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/gcloud/gcloud.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/lsh_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/client.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/download_and_run_efficient_models.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_embedder.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_model_server.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/lightweight_test.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/model_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/ollama_efficient_runner.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/openai_adapter.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/pdf_processor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_efficient_runner.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_example.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/model_service/test_new_features.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/openai/openai.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/registry/registry.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/repo/repo.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/cron_parser.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/job.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/monitor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/persistence.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/scheduler/scheduler.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/sync/test_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli/workflow/wakatime/wakatime.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/dependency_links.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/entry_points.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/requires.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/src/mcli_framework.egg-info/top_level.txt +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_all_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_app_logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_logs_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_main_app.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_self_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_plugins.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_self_cmd_utilities.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/cli/test_workflow_gcloud.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/conftest.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/demo_generate_graph.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/demo_hierarchical_transform.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/e2e/test_complete_workflows.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/e2e/test_update_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/fixtures/chat_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/fixtures/cli_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/fixtures/data_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/fixtures/db_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/fixtures/model_fixtures.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_agent.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_chat_system.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_daemon_server.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_e2e_dashboard_lsh_supabase.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_flask_webapp.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_gcloud_services.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_lsh_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_ml_data_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_ml_pipeline.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_oi_service.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_repo_operations.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_scheduler_integration.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_service_registry.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_supabase_live_connection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_video_processing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_wakatime_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_webapp_full.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/integration/test_workflow_commands.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/run_tests.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/test_harness.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/test_openai_adapter.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_api_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_auth_modules.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_bug_fixes.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_config.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_daemon_api.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_dashboard_components.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_dependencies.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_doc_convert_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_emulator_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_erd_generation.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_erd_generic.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_erd_imports.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_git_commit_workflow.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_lib_auth.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_lib_files.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_lib_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_logger.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_ml_preprocessing.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_paths.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_pdf_compress.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_prediction_engine.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_regression.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_scheduler.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_scheduler_cron_parser.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_scheduler_job.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_scheduler_monitor.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_scheduler_persistence.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_self_update.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_store_cmd.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_supabase_connection.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_supabase_pagination.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_toml_utils.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_trading_imports.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_ui_rich.py +0 -0
- {mcli_framework-7.10.1 → mcli_framework-7.10.2}/tests/unit/test_uv_compat.py +0 -0
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
# Dependabot configuration for automated dependency updates
|
|
2
|
-
# https://docs.github.com/en/code-security/dependabot
|
|
3
|
-
|
|
4
1
|
version: 2
|
|
5
2
|
updates:
|
|
6
3
|
# Python dependencies
|
|
@@ -16,31 +13,15 @@ updates:
|
|
|
16
13
|
- "dependencies"
|
|
17
14
|
- "python"
|
|
18
15
|
commit-message:
|
|
19
|
-
prefix: "chore
|
|
16
|
+
prefix: "chore"
|
|
20
17
|
include: "scope"
|
|
21
|
-
# Group minor and patch updates
|
|
22
|
-
groups:
|
|
23
|
-
development-dependencies:
|
|
24
|
-
patterns:
|
|
25
|
-
- "pytest*"
|
|
26
|
-
- "black"
|
|
27
|
-
- "isort"
|
|
28
|
-
- "mypy"
|
|
29
|
-
- "flake8*"
|
|
30
|
-
update-types:
|
|
31
|
-
- "minor"
|
|
32
|
-
- "patch"
|
|
33
|
-
production-dependencies:
|
|
34
|
-
patterns:
|
|
35
|
-
- "*"
|
|
36
|
-
update-types:
|
|
37
|
-
- "patch"
|
|
38
18
|
|
|
39
19
|
# GitHub Actions
|
|
40
20
|
- package-ecosystem: "github-actions"
|
|
41
21
|
directory: "/"
|
|
42
22
|
schedule:
|
|
43
23
|
interval: "weekly"
|
|
24
|
+
day: "monday"
|
|
44
25
|
open-pull-requests-limit: 5
|
|
45
26
|
reviewers:
|
|
46
27
|
- "gwicho38"
|
|
@@ -48,4 +29,21 @@ updates:
|
|
|
48
29
|
- "dependencies"
|
|
49
30
|
- "github-actions"
|
|
50
31
|
commit-message:
|
|
51
|
-
prefix: "chore
|
|
32
|
+
prefix: "chore"
|
|
33
|
+
include: "scope"
|
|
34
|
+
|
|
35
|
+
# Docker
|
|
36
|
+
- package-ecosystem: "docker"
|
|
37
|
+
directory: "/"
|
|
38
|
+
schedule:
|
|
39
|
+
interval: "weekly"
|
|
40
|
+
day: "monday"
|
|
41
|
+
open-pull-requests-limit: 5
|
|
42
|
+
reviewers:
|
|
43
|
+
- "gwicho38"
|
|
44
|
+
labels:
|
|
45
|
+
- "dependencies"
|
|
46
|
+
- "docker"
|
|
47
|
+
commit-message:
|
|
48
|
+
prefix: "chore"
|
|
49
|
+
include: "scope"
|
|
@@ -113,10 +113,19 @@ jobs:
|
|
|
113
113
|
cd mcli_rust
|
|
114
114
|
maturin develop
|
|
115
115
|
|
|
116
|
-
- name: Run Python tests
|
|
116
|
+
- name: Run Python tests with coverage
|
|
117
117
|
run: |
|
|
118
|
-
pytest tests/ -v --tb=short
|
|
119
|
-
|
|
118
|
+
pytest tests/ -v --tb=short --cov=src/mcli --cov-report=xml --cov-report=term-missing
|
|
119
|
+
|
|
120
|
+
- name: Upload coverage to Codecov
|
|
121
|
+
uses: codecov/codecov-action@v4
|
|
122
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
|
|
123
|
+
with:
|
|
124
|
+
file: ./coverage.xml
|
|
125
|
+
flags: unittests
|
|
126
|
+
name: codecov-umbrella
|
|
127
|
+
fail_ci_if_error: false
|
|
128
|
+
|
|
120
129
|
- name: Test CLI functionality
|
|
121
130
|
run: |
|
|
122
131
|
mcli version
|
|
@@ -191,11 +200,33 @@ jobs:
|
|
|
191
200
|
security-scan:
|
|
192
201
|
name: Security Scan
|
|
193
202
|
runs-on: ubuntu-latest
|
|
194
|
-
|
|
203
|
+
|
|
195
204
|
steps:
|
|
196
205
|
- name: Checkout code
|
|
197
206
|
uses: actions/checkout@v4
|
|
198
|
-
|
|
207
|
+
|
|
208
|
+
- name: Set up Python
|
|
209
|
+
uses: actions/setup-python@v4
|
|
210
|
+
with:
|
|
211
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
212
|
+
|
|
213
|
+
- name: Install security tools
|
|
214
|
+
run: |
|
|
215
|
+
python -m pip install --upgrade pip
|
|
216
|
+
pip install bandit safety
|
|
217
|
+
|
|
218
|
+
- name: Run Bandit security linter
|
|
219
|
+
run: |
|
|
220
|
+
bandit -r src/ -f json -o bandit-report.json || true
|
|
221
|
+
bandit -r src/ -ll
|
|
222
|
+
continue-on-error: true
|
|
223
|
+
|
|
224
|
+
- name: Run Safety dependency check
|
|
225
|
+
run: |
|
|
226
|
+
safety check --json > safety-report.json || true
|
|
227
|
+
safety check
|
|
228
|
+
continue-on-error: true
|
|
229
|
+
|
|
199
230
|
- name: Run Trivy vulnerability scanner
|
|
200
231
|
uses: aquasecurity/trivy-action@master
|
|
201
232
|
with:
|
|
@@ -203,7 +234,8 @@ jobs:
|
|
|
203
234
|
scan-ref: '.'
|
|
204
235
|
format: 'sarif'
|
|
205
236
|
output: 'trivy-results.sarif'
|
|
206
|
-
|
|
237
|
+
severity: 'CRITICAL,HIGH'
|
|
238
|
+
|
|
207
239
|
- name: Upload Trivy scan results
|
|
208
240
|
uses: github/codeql-action/upload-sarif@v3
|
|
209
241
|
if: always()
|
|
@@ -211,6 +243,16 @@ jobs:
|
|
|
211
243
|
with:
|
|
212
244
|
sarif_file: 'trivy-results.sarif'
|
|
213
245
|
|
|
246
|
+
- name: Upload security reports
|
|
247
|
+
uses: actions/upload-artifact@v3
|
|
248
|
+
if: always()
|
|
249
|
+
with:
|
|
250
|
+
name: security-reports
|
|
251
|
+
path: |
|
|
252
|
+
bandit-report.json
|
|
253
|
+
safety-report.json
|
|
254
|
+
retention-days: 30
|
|
255
|
+
|
|
214
256
|
build-package:
|
|
215
257
|
name: Build Distribution Package
|
|
216
258
|
runs-on: ubuntu-latest
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: CodeQL Security Analysis
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
schedule:
|
|
9
|
+
# Run at 00:00 every Sunday
|
|
10
|
+
- cron: '0 0 * * 0'
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
analyze:
|
|
15
|
+
name: Analyze Code with CodeQL
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
actions: read
|
|
19
|
+
contents: read
|
|
20
|
+
security-events: write
|
|
21
|
+
|
|
22
|
+
strategy:
|
|
23
|
+
fail-fast: false
|
|
24
|
+
matrix:
|
|
25
|
+
language: [ 'python' ]
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
|
|
31
|
+
- name: Initialize CodeQL
|
|
32
|
+
uses: github/codeql-action/init@v3
|
|
33
|
+
with:
|
|
34
|
+
languages: ${{ matrix.language }}
|
|
35
|
+
queries: +security-and-quality
|
|
36
|
+
|
|
37
|
+
- name: Autobuild
|
|
38
|
+
uses: github/codeql-action/autobuild@v3
|
|
39
|
+
|
|
40
|
+
- name: Perform CodeQL Analysis
|
|
41
|
+
uses: github/codeql-action/analyze@v3
|
|
42
|
+
with:
|
|
43
|
+
category: "/language:${{ matrix.language }}"
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
|
|
2
|
+
# More GitHub Actions for Azure: https://github.com/Azure/actions
|
|
3
|
+
# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions
|
|
4
|
+
|
|
5
|
+
name: Build and deploy Python app to Azure Web App - mcli
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
build:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read #This is required for actions/checkout
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python version
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: '3.x'
|
|
26
|
+
|
|
27
|
+
# 🛠️ Local Build Section (Optional)
|
|
28
|
+
# The following section in your workflow is designed to catch build issues early on the client side, before deployment. This can be helpful for debugging and validation. However, if this step significantly increases deployment time and early detection is not critical for your workflow, you may remove this section to streamline the deployment process.
|
|
29
|
+
- name: Create and Start virtual environment and Install dependencies
|
|
30
|
+
run: |
|
|
31
|
+
python -m venv antenv
|
|
32
|
+
source antenv/bin/activate
|
|
33
|
+
pip install -r requirements.txt
|
|
34
|
+
|
|
35
|
+
# By default, when you enable GitHub CI/CD integration through the Azure portal, the platform automatically sets the SCM_DO_BUILD_DURING_DEPLOYMENT application setting to true. This triggers the use of Oryx, a build engine that handles application compilation and dependency installation (e.g., pip install) directly on the platform during deployment. Hence, we exclude the antenv virtual environment directory from the deployment artifact to reduce the payload size.
|
|
36
|
+
- name: Upload artifact for deployment jobs
|
|
37
|
+
uses: actions/upload-artifact@v4
|
|
38
|
+
with:
|
|
39
|
+
name: python-app
|
|
40
|
+
path: |
|
|
41
|
+
.
|
|
42
|
+
!antenv/
|
|
43
|
+
|
|
44
|
+
# 🚫 Opting Out of Oryx Build
|
|
45
|
+
# If you prefer to disable the Oryx build process during deployment, follow these steps:
|
|
46
|
+
# 1. Remove the SCM_DO_BUILD_DURING_DEPLOYMENT app setting from your Azure App Service Environment variables.
|
|
47
|
+
# 2. Refer to sample workflows for alternative deployment strategies: https://github.com/Azure/actions-workflow-samples/tree/master/AppService
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
deploy:
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
needs: build
|
|
53
|
+
permissions:
|
|
54
|
+
id-token: write #This is required for requesting the JWT
|
|
55
|
+
contents: read #This is required for actions/checkout
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- name: Download artifact from build job
|
|
59
|
+
uses: actions/download-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
name: python-app
|
|
62
|
+
|
|
63
|
+
- name: Login to Azure
|
|
64
|
+
uses: azure/login@v2
|
|
65
|
+
with:
|
|
66
|
+
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_83BA9E673F8446BE82F742FB6394A06F }}
|
|
67
|
+
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_6D1336E8E2224AF899A4E08410F7A172 }}
|
|
68
|
+
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_921B80061CBE4DF0B9BCF8E87DA28876 }}
|
|
69
|
+
|
|
70
|
+
- name: 'Deploy to Azure Web App'
|
|
71
|
+
uses: azure/webapps-deploy@v3
|
|
72
|
+
id: deploy-to-webapp
|
|
73
|
+
with:
|
|
74
|
+
app-name: 'mcli'
|
|
75
|
+
slot-name: 'Production'
|
|
76
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcli-framework
|
|
3
|
-
Version: 7.10.
|
|
3
|
+
Version: 7.10.2
|
|
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>
|
|
@@ -160,6 +160,11 @@ Dynamic: license-file
|
|
|
160
160
|
|
|
161
161
|
# MCLI - Portable Workflow Framework
|
|
162
162
|
|
|
163
|
+
[](https://codecov.io/gh/gwicho38/mcli)
|
|
164
|
+
[](https://github.com/gwicho38/mcli/actions)
|
|
165
|
+
[](https://www.python.org/downloads/)
|
|
166
|
+
[](LICENSE)
|
|
167
|
+
|
|
163
168
|
**Transform any script into a versioned, portable, schedulable workflow command.**
|
|
164
169
|
|
|
165
170
|
MCLI is a modular CLI framework that lets you write scripts once and run them anywhere - as interactive commands, scheduled jobs, or background daemons. Your workflows live in `~/.mcli/commands/`, are versioned via lockfile, and completely decoupled from the engine source code.
|
|
@@ -170,6 +175,35 @@ Write a script. Store it. Version it. Run it anywhere. Schedule it. Share it.
|
|
|
170
175
|
|
|
171
176
|
No coupling to the engine. No vendor lock-in. Just portable workflows that work.
|
|
172
177
|
|
|
178
|
+
## 🚀 Visual Workflow Editing
|
|
179
|
+
|
|
180
|
+
Edit your workflow JSON files like Jupyter notebooks with our VSCode extension!
|
|
181
|
+
|
|
182
|
+
[](vscode-extension/)
|
|
183
|
+
[](vscode-extension/)
|
|
184
|
+
|
|
185
|
+
**Features:**
|
|
186
|
+
- 📝 Cell-based editing (Jupyter-like interface)
|
|
187
|
+
- ⚡ Live code execution (Python, Shell, Bash, Zsh, Fish)
|
|
188
|
+
- 🎯 Monaco editor with IntelliSense
|
|
189
|
+
- 📊 Rich markdown documentation cells
|
|
190
|
+
- 💾 Files stay as `.json` (git-friendly)
|
|
191
|
+
|
|
192
|
+
**Quick Install:**
|
|
193
|
+
```bash
|
|
194
|
+
# From VSCode Marketplace (pending publication)
|
|
195
|
+
code --install-extension gwicho38.mcli-framework
|
|
196
|
+
|
|
197
|
+
# Or install from VSIX
|
|
198
|
+
code --install-extension vscode-extension/mcli-framework-1.0.0.vsix
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Learn More:**
|
|
202
|
+
- [Extension README](vscode-extension/README.md) - Features and usage
|
|
203
|
+
- [Visual Editing Guide](README-VISUAL-EDITING.md) - Quick start
|
|
204
|
+
- [Installation Guide](vscode-extension/INSTALL.md) - Detailed setup
|
|
205
|
+
- [Workflow Notebooks Docs](docs/workflow-notebooks.md) - Complete guide
|
|
206
|
+
|
|
173
207
|
## ⚡ Quick Start
|
|
174
208
|
|
|
175
209
|
### Installation
|
|
@@ -450,7 +484,7 @@ Available workflows:
|
|
|
450
484
|
- **redis** - Redis cache management
|
|
451
485
|
- **videos** - Video processing and overlay removal
|
|
452
486
|
- **sync** - Multi-cloud synchronization
|
|
453
|
-
- **politician-trading** -
|
|
487
|
+
- **politician-trading** - Now available as standalone package: [politician-trading-tracker](https://github.com/gwicho38/politician-trading-tracker)
|
|
454
488
|
|
|
455
489
|
## 💡 Why MCLI?
|
|
456
490
|
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# MCLI - Portable Workflow Framework
|
|
2
2
|
|
|
3
|
+
[](https://codecov.io/gh/gwicho38/mcli)
|
|
4
|
+
[](https://github.com/gwicho38/mcli/actions)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
3
8
|
**Transform any script into a versioned, portable, schedulable workflow command.**
|
|
4
9
|
|
|
5
10
|
MCLI is a modular CLI framework that lets you write scripts once and run them anywhere - as interactive commands, scheduled jobs, or background daemons. Your workflows live in `~/.mcli/commands/`, are versioned via lockfile, and completely decoupled from the engine source code.
|
|
@@ -10,6 +15,35 @@ Write a script. Store it. Version it. Run it anywhere. Schedule it. Share it.
|
|
|
10
15
|
|
|
11
16
|
No coupling to the engine. No vendor lock-in. Just portable workflows that work.
|
|
12
17
|
|
|
18
|
+
## 🚀 Visual Workflow Editing
|
|
19
|
+
|
|
20
|
+
Edit your workflow JSON files like Jupyter notebooks with our VSCode extension!
|
|
21
|
+
|
|
22
|
+
[](vscode-extension/)
|
|
23
|
+
[](vscode-extension/)
|
|
24
|
+
|
|
25
|
+
**Features:**
|
|
26
|
+
- 📝 Cell-based editing (Jupyter-like interface)
|
|
27
|
+
- ⚡ Live code execution (Python, Shell, Bash, Zsh, Fish)
|
|
28
|
+
- 🎯 Monaco editor with IntelliSense
|
|
29
|
+
- 📊 Rich markdown documentation cells
|
|
30
|
+
- 💾 Files stay as `.json` (git-friendly)
|
|
31
|
+
|
|
32
|
+
**Quick Install:**
|
|
33
|
+
```bash
|
|
34
|
+
# From VSCode Marketplace (pending publication)
|
|
35
|
+
code --install-extension gwicho38.mcli-framework
|
|
36
|
+
|
|
37
|
+
# Or install from VSIX
|
|
38
|
+
code --install-extension vscode-extension/mcli-framework-1.0.0.vsix
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Learn More:**
|
|
42
|
+
- [Extension README](vscode-extension/README.md) - Features and usage
|
|
43
|
+
- [Visual Editing Guide](README-VISUAL-EDITING.md) - Quick start
|
|
44
|
+
- [Installation Guide](vscode-extension/INSTALL.md) - Detailed setup
|
|
45
|
+
- [Workflow Notebooks Docs](docs/workflow-notebooks.md) - Complete guide
|
|
46
|
+
|
|
13
47
|
## ⚡ Quick Start
|
|
14
48
|
|
|
15
49
|
### Installation
|
|
@@ -290,7 +324,7 @@ Available workflows:
|
|
|
290
324
|
- **redis** - Redis cache management
|
|
291
325
|
- **videos** - Video processing and overlay removal
|
|
292
326
|
- **sync** - Multi-cloud synchronization
|
|
293
|
-
- **politician-trading** -
|
|
327
|
+
- **politician-trading** - Now available as standalone package: [politician-trading-tracker](https://github.com/gwicho38/politician-trading-tracker)
|
|
294
328
|
|
|
295
329
|
## 💡 Why MCLI?
|
|
296
330
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mcli-framework"
|
|
3
|
-
version = "7.10.
|
|
3
|
+
version = "7.10.2"
|
|
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"
|
|
@@ -253,6 +253,8 @@ ignore_missing_imports = true
|
|
|
253
253
|
mypy_path = "src"
|
|
254
254
|
namespace_packages = true
|
|
255
255
|
explicit_package_bases = true
|
|
256
|
+
follow_imports = "normal"
|
|
257
|
+
follow_imports_for_stubs = true
|
|
256
258
|
|
|
257
259
|
# Output
|
|
258
260
|
show_error_codes = true
|
|
@@ -260,6 +262,24 @@ show_column_numbers = true
|
|
|
260
262
|
show_error_context = true
|
|
261
263
|
color_output = true
|
|
262
264
|
error_summary = true
|
|
265
|
+
pretty = true
|
|
266
|
+
|
|
267
|
+
# Error reporting
|
|
268
|
+
show_traceback = true
|
|
269
|
+
raise_exceptions = false
|
|
270
|
+
|
|
271
|
+
# Incremental mode
|
|
272
|
+
incremental = true
|
|
273
|
+
cache_dir = ".mypy_cache"
|
|
274
|
+
|
|
275
|
+
# Strict options for core modules (enable gradually)
|
|
276
|
+
# disallow_any_unimported = false
|
|
277
|
+
# disallow_any_expr = false
|
|
278
|
+
# disallow_any_decorated = false
|
|
279
|
+
# disallow_any_explicit = false
|
|
280
|
+
# disallow_subclassing_any = false
|
|
281
|
+
# strict_optional = true
|
|
282
|
+
# warn_incomplete_stub = true
|
|
263
283
|
|
|
264
284
|
# Per-module options
|
|
265
285
|
[[tool.mypy.overrides]]
|
|
@@ -278,6 +298,19 @@ module = [
|
|
|
278
298
|
]
|
|
279
299
|
warn_return_any = false
|
|
280
300
|
|
|
301
|
+
# Ignore missing imports for optional dependencies
|
|
302
|
+
[[tool.mypy.overrides]]
|
|
303
|
+
module = [
|
|
304
|
+
"ollama.*",
|
|
305
|
+
"streamlit.*",
|
|
306
|
+
"torch.*",
|
|
307
|
+
"transformers.*",
|
|
308
|
+
"mlflow.*",
|
|
309
|
+
"plotly.*",
|
|
310
|
+
"supabase.*",
|
|
311
|
+
]
|
|
312
|
+
ignore_missing_imports = true
|
|
313
|
+
|
|
281
314
|
[build-system]
|
|
282
315
|
requires = ["setuptools>=65.0.0", "wheel>=0.40.0"]
|
|
283
316
|
build-backend = "setuptools.build_meta"
|
|
@@ -287,6 +320,7 @@ dev = [
|
|
|
287
320
|
"black>=25.1.0",
|
|
288
321
|
"isort>=5.13.2",
|
|
289
322
|
"mypy>=1.16.1",
|
|
323
|
+
"pylint>=3.0.0",
|
|
290
324
|
"pytest>=8.4.1",
|
|
291
325
|
"pytest-cov>=4.1.0",
|
|
292
326
|
"pre-commit>=3.6.0",
|
|
@@ -342,6 +376,8 @@ show_missing = true
|
|
|
342
376
|
precision = 2
|
|
343
377
|
skip_covered = false
|
|
344
378
|
skip_empty = false
|
|
379
|
+
# Fail if coverage is below threshold
|
|
380
|
+
fail_under = 30.0
|
|
345
381
|
|
|
346
382
|
[tool.coverage.html]
|
|
347
383
|
directory = "htmlcov"
|
|
@@ -107,15 +107,25 @@ class CustomCommandManager:
|
|
|
107
107
|
"""
|
|
108
108
|
Load all custom commands from the commands directory.
|
|
109
109
|
|
|
110
|
+
Automatically filters out test commands (starting with 'test_' or 'test-')
|
|
111
|
+
unless MCLI_INCLUDE_TEST_COMMANDS=true is set.
|
|
112
|
+
|
|
110
113
|
Returns:
|
|
111
114
|
List of command data dictionaries
|
|
112
115
|
"""
|
|
113
116
|
commands = []
|
|
117
|
+
include_test = os.environ.get('MCLI_INCLUDE_TEST_COMMANDS', 'false').lower() == 'true'
|
|
118
|
+
|
|
114
119
|
for command_file in self.commands_dir.glob("*.json"):
|
|
115
120
|
# Skip the lockfile
|
|
116
121
|
if command_file.name == "commands.lock.json":
|
|
117
122
|
continue
|
|
118
123
|
|
|
124
|
+
# Skip test commands unless explicitly included
|
|
125
|
+
if not include_test and command_file.stem.startswith(('test_', 'test-')):
|
|
126
|
+
logger.debug(f"Skipping test command: {command_file.name}")
|
|
127
|
+
continue
|
|
128
|
+
|
|
119
129
|
command_data = self.load_command(command_file)
|
|
120
130
|
if command_data:
|
|
121
131
|
commands.append(command_data)
|