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