mcli-framework 7.8.1__py3-none-any.whl → 7.8.3__py3-none-any.whl
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/ml/dashboard/app_supabase.py +1 -0
- mcli/self/self_cmd.py +8 -0
- mcli/self/store_cmd.py +422 -0
- mcli/workflow/dashboard/dashboard_cmd.py +179 -0
- mcli_framework-7.8.3.dist-info/METADATA +615 -0
- {mcli_framework-7.8.1.dist-info → mcli_framework-7.8.3.dist-info}/RECORD +10 -72
- mcli/__init__.py +0 -160
- mcli/__main__.py +0 -14
- mcli/app/__init__.py +0 -23
- mcli/app/model/__init__.py +0 -0
- mcli/app/video/__init__.py +0 -5
- mcli/chat/__init__.py +0 -34
- mcli/lib/__init__.py +0 -0
- mcli/lib/api/__init__.py +0 -0
- mcli/lib/auth/__init__.py +0 -1
- mcli/lib/config/__init__.py +0 -1
- mcli/lib/erd/__init__.py +0 -25
- mcli/lib/files/__init__.py +0 -0
- mcli/lib/fs/__init__.py +0 -1
- mcli/lib/logger/__init__.py +0 -3
- mcli/lib/performance/__init__.py +0 -17
- mcli/lib/pickles/__init__.py +0 -1
- mcli/lib/shell/__init__.py +0 -0
- mcli/lib/toml/__init__.py +0 -1
- mcli/lib/watcher/__init__.py +0 -0
- mcli/ml/__init__.py +0 -16
- mcli/ml/api/__init__.py +0 -30
- mcli/ml/api/routers/__init__.py +0 -27
- mcli/ml/auth/__init__.py +0 -41
- mcli/ml/backtesting/__init__.py +0 -33
- mcli/ml/cli/__init__.py +0 -5
- mcli/ml/config/__init__.py +0 -33
- mcli/ml/configs/__init__.py +0 -16
- mcli/ml/dashboard/__init__.py +0 -12
- mcli/ml/dashboard/components/__init__.py +0 -7
- mcli/ml/dashboard/pages/__init__.py +0 -6
- mcli/ml/data_ingestion/__init__.py +0 -29
- mcli/ml/database/__init__.py +0 -40
- mcli/ml/experimentation/__init__.py +0 -29
- mcli/ml/features/__init__.py +0 -39
- mcli/ml/mlops/__init__.py +0 -19
- mcli/ml/models/__init__.py +0 -90
- mcli/ml/monitoring/__init__.py +0 -25
- mcli/ml/optimization/__init__.py +0 -27
- mcli/ml/predictions/__init__.py +0 -5
- mcli/ml/preprocessing/__init__.py +0 -24
- mcli/ml/scripts/__init__.py +0 -1
- mcli/ml/trading/__init__.py +0 -63
- mcli/ml/training/__init__.py +0 -7
- mcli/mygroup/__init__.py +0 -3
- mcli/public/__init__.py +0 -1
- mcli/public/commands/__init__.py +0 -2
- mcli/self/__init__.py +0 -3
- mcli/test/__init__.py +0 -1
- mcli/workflow/__init__.py +0 -0
- mcli/workflow/daemon/__init__.py +0 -15
- mcli/workflow/dashboard/__init__.py +0 -5
- mcli/workflow/docker/__init__.py +0 -0
- mcli/workflow/file/__init__.py +0 -0
- mcli/workflow/gcloud/__init__.py +0 -1
- mcli/workflow/git_commit/__init__.py +0 -0
- mcli/workflow/interview/__init__.py +0 -0
- mcli/workflow/politician_trading/__init__.py +0 -4
- mcli/workflow/registry/__init__.py +0 -0
- mcli/workflow/repo/__init__.py +0 -0
- mcli/workflow/scheduler/__init__.py +0 -25
- mcli/workflow/search/__init__.py +0 -0
- mcli/workflow/sync/__init__.py +0 -5
- mcli/workflow/videos/__init__.py +0 -1
- mcli/workflow/wakatime/__init__.py +0 -80
- mcli_framework-7.8.1.dist-info/METADATA +0 -491
- {mcli_framework-7.8.1.dist-info → mcli_framework-7.8.3.dist-info}/WHEEL +0 -0
- {mcli_framework-7.8.1.dist-info → mcli_framework-7.8.3.dist-info}/entry_points.txt +0 -0
- {mcli_framework-7.8.1.dist-info → mcli_framework-7.8.3.dist-info}/licenses/LICENSE +0 -0
- {mcli_framework-7.8.1.dist-info → mcli_framework-7.8.3.dist-info}/top_level.txt +0 -0
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
MCLI Scheduler Module
|
|
3
|
-
|
|
4
|
-
A robust cron-like job scheduling system with the following features:
|
|
5
|
-
- Cron expression parsing and job scheduling
|
|
6
|
-
- Job monitoring and persistence across restarts
|
|
7
|
-
- JSON API for frontend integration
|
|
8
|
-
- System automation capabilities
|
|
9
|
-
- Desktop file cleanup and management
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
from .cron_parser import CronExpression
|
|
13
|
-
from .job import JobStatus, ScheduledJob
|
|
14
|
-
from .monitor import JobMonitor
|
|
15
|
-
from .persistence import JobStorage
|
|
16
|
-
from .scheduler import JobScheduler
|
|
17
|
-
|
|
18
|
-
__all__ = [
|
|
19
|
-
"JobScheduler",
|
|
20
|
-
"ScheduledJob",
|
|
21
|
-
"JobStatus",
|
|
22
|
-
"CronExpression",
|
|
23
|
-
"JobStorage",
|
|
24
|
-
"JobMonitor",
|
|
25
|
-
]
|
mcli/workflow/search/__init__.py
DELETED
|
File without changes
|
mcli/workflow/sync/__init__.py
DELETED
mcli/workflow/videos/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Videos workflow module
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
import click
|
|
4
|
-
|
|
5
|
-
# from mcli.types.watcher.watcher import watch
|
|
6
|
-
from mcli.lib.watcher import watcher
|
|
7
|
-
|
|
8
|
-
# from mcli.util.db.db import readDB
|
|
9
|
-
|
|
10
|
-
"""
|
|
11
|
-
Source of Truth for the bundle command.
|
|
12
|
-
c3 ui -u BA:BA -t $OE_C3_TENANT -g $OE_C3_TAG -c $OE_C3_PACKAGE -W $OE_C3_UI_WORK_DIR -e http://localhost:8080 --log-dir $OE_C3_UI_LOGS_DIR --out-dir $OE_C3_UI_OUT_DIR -a provision
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
NODE_TLS_REJECT_UNAUTHORIZED=0 c3 ui --with-tests -W ~/c3/UiWorkingDirectory -e http://localhost:8080 --bundler-port 50082 -t operationalEnergy:dev -c operationalEnergyDemo -a . -T 303349a1bbcdbd5fd33d96ce1a34fa68b6b3cb24378cca4441c67718d1b670f4b092
|
|
16
|
-
|
|
17
|
-
NODE_TLS_REJECT_UNAUTHORIZED=0 c3 prov tag -t operationalEnergy:dev -c operationalEnergyDemo -T 303349a1bbcdbd5fd33d96ce1a34fa68b6b3cb24378cca4441c67718d1b670f4b092 -e http://localhost:8080 -r --verbose
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
NOTE: Info on getting UI artifacts: https://c3energy.atlassian.net/wiki/spaces/ENG/pages/8413446693/Component+Library+c3ui+repo+and+monthly+release#For-Studio-Administrators
|
|
21
|
-
|
|
22
|
-
https://c3energy.atlassian.net/wiki/spaces/~63065ed547d60b7107ed59f8/pages/8906934405/8.6+React+18+ui+upgrade
|
|
23
|
-
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
C3LI_PACKAGES_TO_SYNC = [os.environ.get("C3LI_PACKAGES_TO_SYNC")]
|
|
27
|
-
C3LI_PATH_TO_PACKAGE_REPO = os.environ.get("C3LI_PATH_TO_PACKAGE_REPO")
|
|
28
|
-
C3LI_UNAME = os.environ.get("C3LI_UNAME")
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# TODO: To implement / integrate ReactJS version of c3 packages
|
|
32
|
-
@click.group(name="ui")
|
|
33
|
-
def bundle():
|
|
34
|
-
"""ui utility - use this to interact with c3 ui components"""
|
|
35
|
-
pass
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
@click.command(name="provision")
|
|
39
|
-
def provision():
|
|
40
|
-
"""provision utility - use this to provision your c3 package"""
|
|
41
|
-
pass
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
@click.command(name="v8")
|
|
45
|
-
@click.option("--interactive", "interactive", flag_value=True, default=False)
|
|
46
|
-
def v8(interactive):
|
|
47
|
-
"""bundle utility - use this to bundle your c3 package"""
|
|
48
|
-
if interactive:
|
|
49
|
-
pass # logger.info("Bundling in interactive mode")
|
|
50
|
-
else:
|
|
51
|
-
# Dummy fallback for test pass
|
|
52
|
-
pass
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
@click.command(name="v7")
|
|
56
|
-
@click.option("--interactive", "interactive", flag_value=True, default=False)
|
|
57
|
-
def v7(interactive):
|
|
58
|
-
"""bundle utility - use this to bundle your c3 package"""
|
|
59
|
-
if interactive:
|
|
60
|
-
pass # logger.info("Bundling in interactive mode")
|
|
61
|
-
pass
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
@click.command(name="sync")
|
|
65
|
-
def sync():
|
|
66
|
-
"""sync utility - use this to sync your c3 package"""
|
|
67
|
-
if hasattr(watcher, "watch"):
|
|
68
|
-
watcher.watch(C3LI_PACKAGES_TO_SYNC, C3LI_PATH_TO_PACKAGE_REPO)
|
|
69
|
-
else:
|
|
70
|
-
# Dummy fallback for test pass
|
|
71
|
-
pass
|
|
72
|
-
pass
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
bundle.add_command(provision)
|
|
76
|
-
bundle.add_command(bundle)
|
|
77
|
-
bundle.add_command(sync)
|
|
78
|
-
|
|
79
|
-
if __name__ == "__main__":
|
|
80
|
-
bundle()
|
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: mcli-framework
|
|
3
|
-
Version: 7.8.1
|
|
4
|
-
Summary: 🚀 High-performance CLI framework with Rust extensions, AI chat, and stunning visuals
|
|
5
|
-
Author-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
6
|
-
Maintainer-email: Luis Fernandez de la Vara <luis@lefv.io>
|
|
7
|
-
License: MIT
|
|
8
|
-
Project-URL: Homepage, https://github.com/gwicho38/mcli
|
|
9
|
-
Project-URL: Repository, https://github.com/gwicho38/mcli
|
|
10
|
-
Project-URL: Documentation, https://github.com/gwicho38/mcli#readme
|
|
11
|
-
Project-URL: Issues, https://github.com/gwicho38/mcli/issues
|
|
12
|
-
Project-URL: Changelog, https://github.com/gwicho38/mcli/releases
|
|
13
|
-
Project-URL: Source, https://github.com/gwicho38/mcli
|
|
14
|
-
Keywords: cli,command-line,framework,chat,assistant,rust,performance,visual,tui,terminal,ai,openai,anthropic,productivity
|
|
15
|
-
Classifier: Development Status :: 4 - Beta
|
|
16
|
-
Classifier: Environment :: Console
|
|
17
|
-
Classifier: Intended Audience :: Developers
|
|
18
|
-
Classifier: Intended Audience :: System Administrators
|
|
19
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
-
Classifier: Operating System :: OS Independent
|
|
21
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
22
|
-
Classifier: Operating System :: MacOS
|
|
23
|
-
Classifier: Operating System :: Microsoft :: Windows
|
|
24
|
-
Classifier: Programming Language :: Python :: 3
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
27
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
28
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
29
|
-
Classifier: Programming Language :: Rust
|
|
30
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
31
|
-
Classifier: Topic :: System :: Shells
|
|
32
|
-
Classifier: Topic :: System :: Systems Administration
|
|
33
|
-
Classifier: Topic :: Terminals
|
|
34
|
-
Classifier: Topic :: Utilities
|
|
35
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
36
|
-
Classifier: Typing :: Typed
|
|
37
|
-
Requires-Python: >=3.9
|
|
38
|
-
Description-Content-Type: text/markdown
|
|
39
|
-
License-File: LICENSE
|
|
40
|
-
Requires-Dist: click<9.0.0,>=8.1.7
|
|
41
|
-
Requires-Dist: rich>=14.0.0
|
|
42
|
-
Requires-Dist: requests<3.0.0,>=2.31.0
|
|
43
|
-
Requires-Dist: tomli>=2.2.1
|
|
44
|
-
Requires-Dist: python-dotenv>=1.1.1
|
|
45
|
-
Requires-Dist: watchdog<4.0.0,>=3.0.0
|
|
46
|
-
Requires-Dist: tqdm<5.0.0,>=4.66.1
|
|
47
|
-
Requires-Dist: humanize<5.0.0,>=4.9.0
|
|
48
|
-
Requires-Dist: psutil<6.0.0,>=5.9.0
|
|
49
|
-
Requires-Dist: inquirerpy<0.4.0,>=0.3.4
|
|
50
|
-
Requires-Dist: gitpython<4.0.0,>=3.1.40
|
|
51
|
-
Requires-Dist: aiohttp>=3.9.0
|
|
52
|
-
Requires-Dist: httpx>=0.28.1
|
|
53
|
-
Requires-Dist: websockets>=12.0
|
|
54
|
-
Requires-Dist: beautifulsoup4>=4.13.5
|
|
55
|
-
Requires-Dist: fuzzywuzzy>=0.18.0
|
|
56
|
-
Requires-Dist: openai<2.0.0,>=1.3.0
|
|
57
|
-
Requires-Dist: anthropic>=0.60.0
|
|
58
|
-
Requires-Dist: ollama>=0.5.3
|
|
59
|
-
Requires-Dist: ipython<9.0.0,>=8.12.0
|
|
60
|
-
Requires-Dist: fastapi>=0.110.0
|
|
61
|
-
Requires-Dist: uvicorn>=0.27.0
|
|
62
|
-
Requires-Dist: uvloop>=0.19.0
|
|
63
|
-
Requires-Dist: aiosqlite>=0.20.0
|
|
64
|
-
Requires-Dist: redis>=5.0.0
|
|
65
|
-
Requires-Dist: aiohttp-sse-client>=0.2.1
|
|
66
|
-
Requires-Dist: aiomqtt>=2.0.0
|
|
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.18.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.8.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.42.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: chat
|
|
125
|
-
Provides-Extra: async-extras
|
|
126
|
-
Provides-Extra: video
|
|
127
|
-
Provides-Extra: documents
|
|
128
|
-
Provides-Extra: viz
|
|
129
|
-
Provides-Extra: database
|
|
130
|
-
Provides-Extra: ml
|
|
131
|
-
Provides-Extra: monitoring
|
|
132
|
-
Provides-Extra: streaming
|
|
133
|
-
Provides-Extra: dashboard
|
|
134
|
-
Provides-Extra: web
|
|
135
|
-
Provides-Extra: dev
|
|
136
|
-
Requires-Dist: pytest>=8.4.1; extra == "dev"
|
|
137
|
-
Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
|
|
138
|
-
Requires-Dist: pytest-mock>=3.14.1; extra == "dev"
|
|
139
|
-
Requires-Dist: pytest-asyncio>=1.1.0; extra == "dev"
|
|
140
|
-
Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
|
|
141
|
-
Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
|
|
142
|
-
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
|
|
143
|
-
Requires-Dist: hypothesis>=6.92.0; extra == "dev"
|
|
144
|
-
Requires-Dist: faker>=22.0.0; extra == "dev"
|
|
145
|
-
Requires-Dist: responses>=0.24.0; extra == "dev"
|
|
146
|
-
Requires-Dist: freezegun>=1.4.0; extra == "dev"
|
|
147
|
-
Requires-Dist: pytest-html>=4.1.0; extra == "dev"
|
|
148
|
-
Requires-Dist: pytest-json-report>=1.5.0; extra == "dev"
|
|
149
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
150
|
-
Requires-Dist: isort<6.0.0,>=5.12.0; extra == "dev"
|
|
151
|
-
Requires-Dist: mypy<2.0.0,>=1.7.1; extra == "dev"
|
|
152
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
153
|
-
Requires-Dist: pre-commit>=3.6.0; extra == "dev"
|
|
154
|
-
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
|
155
|
-
Requires-Dist: maturin>=1.9.3; extra == "dev"
|
|
156
|
-
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
157
|
-
Provides-Extra: all
|
|
158
|
-
Dynamic: license-file
|
|
159
|
-
|
|
160
|
-
# MCLI
|
|
161
|
-
|
|
162
|
-
A modern CLI framework with chat capabilities, command management, and extensible architecture.
|
|
163
|
-
|
|
164
|
-
## Features
|
|
165
|
-
|
|
166
|
-
- 🚀 **Modern CLI Framework**: Built with Click and Rich for beautiful command-line interfaces
|
|
167
|
-
- 💬 **AI Chat Integration**: Built-in chat capabilities with OpenAI and Anthropic support
|
|
168
|
-
- 🔧 **Command Management**: Dynamic command discovery and registration
|
|
169
|
-
- 🎨 **Rich UI**: Colorful, interactive command-line experience
|
|
170
|
-
- 📦 **Easy Extension**: Simple framework for adding custom commands
|
|
171
|
-
- 🛠️ **Developer Tools**: IPython integration for interactive development
|
|
172
|
-
- ⚡ **Shell Completion**: Full tab completion for bash, zsh, and fish shells
|
|
173
|
-
|
|
174
|
-
## Quick Start
|
|
175
|
-
|
|
176
|
-
### Prerequisites
|
|
177
|
-
|
|
178
|
-
- Python 3.9 or higher
|
|
179
|
-
- [UV](https://docs.astral.sh/uv/) (recommended) or pip
|
|
180
|
-
|
|
181
|
-
### Installation from PyPI (Recommended)
|
|
182
|
-
|
|
183
|
-
The easiest way to install mcli is from PyPI:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
# Install latest version (includes all features)
|
|
187
|
-
pip install mcli-framework
|
|
188
|
-
|
|
189
|
-
# Or with UV (recommended)
|
|
190
|
-
uv pip install mcli-framework
|
|
191
|
-
|
|
192
|
-
# Optional: GPU support (CUDA required)
|
|
193
|
-
pip install "mcli-framework[gpu]"
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Note:** As of v7.0.0, all features are included by default. GPU support is optional as it requires CUDA.
|
|
197
|
-
|
|
198
|
-
**Self-Update Feature:** Once installed from PyPI, you can update mcli to the latest version with:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# Check for updates
|
|
202
|
-
mcli self update --check
|
|
203
|
-
|
|
204
|
-
# Install updates automatically
|
|
205
|
-
mcli self update
|
|
206
|
-
|
|
207
|
-
# Install with confirmation
|
|
208
|
-
mcli self update --yes
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Installation from Source
|
|
212
|
-
|
|
213
|
-
For development or if you want to customize mcli:
|
|
214
|
-
|
|
215
|
-
#### With UV
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
# Clone the repository
|
|
219
|
-
git clone https://github.com/gwicho38/mcli.git
|
|
220
|
-
cd mcli
|
|
221
|
-
|
|
222
|
-
# Install with UV (recommended)
|
|
223
|
-
uv venv
|
|
224
|
-
uv pip install -e .
|
|
225
|
-
|
|
226
|
-
# Or install development dependencies
|
|
227
|
-
uv pip install -e ".[dev]"
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
#### With pip
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
# Clone the repository
|
|
234
|
-
git clone https://github.com/gwicho38/mcli.git
|
|
235
|
-
cd mcli
|
|
236
|
-
|
|
237
|
-
# Create virtual environment
|
|
238
|
-
python -m venv .venv
|
|
239
|
-
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
240
|
-
|
|
241
|
-
# Install the package
|
|
242
|
-
pip install -e .
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Usage
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
# Show available commands
|
|
249
|
-
mcli --help
|
|
250
|
-
|
|
251
|
-
# Start a chat session
|
|
252
|
-
mcli chat
|
|
253
|
-
|
|
254
|
-
# Get version information
|
|
255
|
-
mcli version
|
|
256
|
-
|
|
257
|
-
# Manage the application
|
|
258
|
-
mcli self --help
|
|
259
|
-
|
|
260
|
-
# List available commands
|
|
261
|
-
mcli commands
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
### Shell Completion (Optional)
|
|
265
|
-
|
|
266
|
-
Enable tab completion for faster command discovery:
|
|
267
|
-
|
|
268
|
-
```bash
|
|
269
|
-
# Install completion for your shell (auto-detects bash/zsh/fish)
|
|
270
|
-
mcli completion install
|
|
271
|
-
|
|
272
|
-
# Check completion status
|
|
273
|
-
mcli completion status
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
After installation, you'll have full tab completion:
|
|
277
|
-
- `mcli <TAB>` → shows all available commands
|
|
278
|
-
- `mcli workflow <TAB>` → shows workflow subcommands
|
|
279
|
-
- `mcli workflow politician-trading <TAB>` → shows politician-trading options
|
|
280
|
-
|
|
281
|
-
See [SHELL_COMPLETION.md](docs/features/SHELL_COMPLETION.md) for detailed setup and troubleshooting.
|
|
282
|
-
|
|
283
|
-
## Development Workflow
|
|
284
|
-
|
|
285
|
-
This project uses [UV](https://docs.astral.sh/uv/) for fast, reliable Python package management.
|
|
286
|
-
|
|
287
|
-
### Setup Development Environment
|
|
288
|
-
|
|
289
|
-
```bash
|
|
290
|
-
# 1. Set up the development environment
|
|
291
|
-
make setup
|
|
292
|
-
|
|
293
|
-
# Or manually with UV
|
|
294
|
-
uv venv
|
|
295
|
-
uv pip install -e ".[dev]"
|
|
296
|
-
|
|
297
|
-
# 2. Configure environment variables
|
|
298
|
-
cp .env.example .env
|
|
299
|
-
# Edit .env with your API keys and configuration
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### Available Make Commands
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
# Setup and Installation
|
|
306
|
-
make setup # Setup UV environment with caching
|
|
307
|
-
make install # Install the package with caching
|
|
308
|
-
|
|
309
|
-
# Building
|
|
310
|
-
make wheel # Build Python wheel package
|
|
311
|
-
make portable # Build portable executable
|
|
312
|
-
make validate-build # Validate application for distribution
|
|
313
|
-
|
|
314
|
-
# Testing
|
|
315
|
-
make test # Test basic installation and functionality
|
|
316
|
-
make test-all # Run complete test suite (if available)
|
|
317
|
-
make validate-build # Comprehensive build validation
|
|
318
|
-
|
|
319
|
-
# CI/CD
|
|
320
|
-
make ci-trigger-build # Trigger GitHub Actions build workflow
|
|
321
|
-
make ci-trigger-test # Trigger GitHub Actions test workflow
|
|
322
|
-
make ci-watch # Watch GitHub Actions runs in real-time
|
|
323
|
-
make ci-status # Show GitHub Actions run status
|
|
324
|
-
|
|
325
|
-
# Maintenance
|
|
326
|
-
make clean # Clean all build artifacts
|
|
327
|
-
make debug # Show debug information
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Project Structure
|
|
331
|
-
|
|
332
|
-
```
|
|
333
|
-
mcli/
|
|
334
|
-
├── src/mcli/ # Main package source
|
|
335
|
-
│ ├── app/ # Application modules
|
|
336
|
-
│ │ ├── main.py # Main CLI entry point
|
|
337
|
-
│ │ ├── chat_cmd.py # Chat command implementation
|
|
338
|
-
│ │ └── commands_cmd.py # Command management
|
|
339
|
-
│ ├── chat/ # Chat system
|
|
340
|
-
│ ├── lib/ # Shared libraries
|
|
341
|
-
│ │ ├── api/ # API functionality
|
|
342
|
-
│ │ ├── ui/ # UI components
|
|
343
|
-
│ │ └── logger/ # Logging utilities
|
|
344
|
-
│ └── self/ # Self-management commands
|
|
345
|
-
├── tests/ # Test suite
|
|
346
|
-
├── .github/workflows/ # CI/CD workflows
|
|
347
|
-
├── pyproject.toml # Project configuration
|
|
348
|
-
├── Makefile # Build and development commands
|
|
349
|
-
└── README.md # This file
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
## Dependencies
|
|
353
|
-
|
|
354
|
-
### Core Dependencies
|
|
355
|
-
- **click**: Command-line interface creation
|
|
356
|
-
- **rich**: Rich text and beautiful formatting
|
|
357
|
-
- **requests**: HTTP library
|
|
358
|
-
- **tomli**: TOML parser
|
|
359
|
-
|
|
360
|
-
### AI & Chat
|
|
361
|
-
- **openai**: OpenAI API integration
|
|
362
|
-
- **anthropic**: Anthropic API integration
|
|
363
|
-
|
|
364
|
-
### Development Tools
|
|
365
|
-
- **ipython**: Interactive Python shell
|
|
366
|
-
- **inquirerpy**: Interactive command-line prompts
|
|
367
|
-
|
|
368
|
-
### Optional Dependencies
|
|
369
|
-
|
|
370
|
-
MCLI has been optimized with minimal core dependencies. Install only what you need:
|
|
371
|
-
|
|
372
|
-
```bash
|
|
373
|
-
# Chat and AI features
|
|
374
|
-
uv pip install -e ".[chat]"
|
|
375
|
-
|
|
376
|
-
# Video processing
|
|
377
|
-
uv pip install -e ".[video]"
|
|
378
|
-
|
|
379
|
-
# Document processing (PDF, Excel, etc.)
|
|
380
|
-
uv pip install -e ".[documents]"
|
|
381
|
-
|
|
382
|
-
# ML/Trading features
|
|
383
|
-
uv pip install -e ".[ml]"
|
|
384
|
-
|
|
385
|
-
# Database support
|
|
386
|
-
uv pip install -e ".[database]"
|
|
387
|
-
|
|
388
|
-
# Web dashboards
|
|
389
|
-
uv pip install -e ".[dashboard]"
|
|
390
|
-
|
|
391
|
-
# Development tools
|
|
392
|
-
uv pip install -e ".[dev]"
|
|
393
|
-
|
|
394
|
-
# Everything
|
|
395
|
-
uv pip install -e ".[all]"
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
Available extras:
|
|
399
|
-
- `chat` - OpenAI, Anthropic, Ollama support
|
|
400
|
-
- `async-extras` - FastAPI, Redis, advanced async features
|
|
401
|
-
- `video` - OpenCV, image processing
|
|
402
|
-
- `documents` - PDF, Excel processing
|
|
403
|
-
- `viz` - Matplotlib, Plotly visualization
|
|
404
|
-
- `database` - Supabase, SQLAlchemy, PostgreSQL
|
|
405
|
-
- `ml` - PyTorch, MLflow, DVC, trading features
|
|
406
|
-
- `gpu` - CUDA support
|
|
407
|
-
- `monitoring` - Prometheus, Datadog
|
|
408
|
-
- `streaming` - Kafka support
|
|
409
|
-
- `dashboard` - Streamlit dashboards
|
|
410
|
-
- `web` - Flask, FastAPI web frameworks
|
|
411
|
-
- `dev` - Testing, linting, type checking
|
|
412
|
-
- `all` - All optional features
|
|
413
|
-
|
|
414
|
-
## Configuration
|
|
415
|
-
|
|
416
|
-
MCLI can be configured through environment variables and configuration files.
|
|
417
|
-
|
|
418
|
-
### Environment Setup
|
|
419
|
-
|
|
420
|
-
1. **Copy the environment template:**
|
|
421
|
-
```bash
|
|
422
|
-
cp .env.example .env
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
2. **Edit the `.env` file with your configuration:**
|
|
426
|
-
```bash
|
|
427
|
-
# Required for AI chat functionality
|
|
428
|
-
OPENAI_API_KEY=your-openai-api-key-here
|
|
429
|
-
ANTHROPIC_API_KEY=your-anthropic-api-key-here
|
|
430
|
-
|
|
431
|
-
# Required for politician trading features
|
|
432
|
-
SUPABASE_URL=https://your-project.supabase.co
|
|
433
|
-
SUPABASE_ANON_KEY=your-supabase-anon-key-here
|
|
434
|
-
SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key-here
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
3. **Optional development settings:**
|
|
438
|
-
```bash
|
|
439
|
-
# Enable debug logging
|
|
440
|
-
MCLI_TRACE_LEVEL=1
|
|
441
|
-
MCLI_DEBUG=true
|
|
442
|
-
|
|
443
|
-
# Performance optimization
|
|
444
|
-
MCLI_AUTO_OPTIMIZE=true
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
See `.env.example` for a complete list of configuration options.
|
|
448
|
-
|
|
449
|
-
## Creating Custom Commands
|
|
450
|
-
|
|
451
|
-
MCLI supports dynamic command discovery. Add your commands to the appropriate modules:
|
|
452
|
-
|
|
453
|
-
```python
|
|
454
|
-
import click
|
|
455
|
-
from mcli.lib.ui.styling import success
|
|
456
|
-
|
|
457
|
-
@click.command()
|
|
458
|
-
def my_command():
|
|
459
|
-
"""My custom command."""
|
|
460
|
-
success("Hello from my custom command!")
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
## CI/CD
|
|
464
|
-
|
|
465
|
-
The project includes comprehensive CI/CD with GitHub Actions:
|
|
466
|
-
|
|
467
|
-
- **Build Workflow**: Multi-platform builds (Ubuntu, macOS)
|
|
468
|
-
- **Test Workflow**: Multi-Python version testing (3.9-3.12)
|
|
469
|
-
- **Automatic Triggers**: Runs on push/PR to main branch
|
|
470
|
-
- **Manual Triggers**: Use `make ci-trigger-*` commands
|
|
471
|
-
|
|
472
|
-
## Contributing
|
|
473
|
-
|
|
474
|
-
1. Fork the repository
|
|
475
|
-
2. Create a feature branch: `git checkout -b feature-name`
|
|
476
|
-
3. Make your changes
|
|
477
|
-
4. Run tests: `make test`
|
|
478
|
-
5. Validate build: `make validate-build`
|
|
479
|
-
6. Commit your changes: `git commit -am 'Add feature'`
|
|
480
|
-
7. Push to your fork: `git push origin feature-name`
|
|
481
|
-
8. Create a Pull Request
|
|
482
|
-
|
|
483
|
-
## License
|
|
484
|
-
|
|
485
|
-
MIT License - see [LICENSE](LICENSE) for details.
|
|
486
|
-
|
|
487
|
-
## Acknowledgments
|
|
488
|
-
|
|
489
|
-
- Built with [Click](https://click.palletsprojects.com/) for CLI interfaces
|
|
490
|
-
- Styled with [Rich](https://github.com/Textualize/rich) for beautiful output
|
|
491
|
-
- Managed with [UV](https://docs.astral.sh/uv/) for fast Python packaging
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|