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