Files
mistral-vibe/pyproject.toml
Mathias Gesbert 6a50d1d521 v2.7.0 (#534)
Co-authored-by: Quentin Torroba <quentin.torroba@mistral.ai>
Co-authored-by: Clément Drouin <clement.drouin@mistral.ai>
Co-authored-by: Clément Sirieix <clement.sirieix@mistral.ai>
Co-authored-by: Mistral Vibe <vibe@mistral.ai>
2026-03-26 10:11:34 +01:00

186 lines
4.4 KiB
TOML

[project]
name = "mistral-vibe"
version = "2.7.0"
description = "Minimal CLI coding agent by Mistral"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "Apache-2.0" }
authors = [{ name = "Mistral AI" }]
keywords = [
"ai",
"cli",
"coding-assistant",
"mistral",
"llm",
"developer-tools",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Utilities",
]
dependencies = [
"agent-client-protocol==0.8.1",
"anyio>=4.12.0",
"cachetools>=5.5.0",
"cryptography>=44.0.0,<=46.0.3",
"gitpython>=3.1.46",
"giturlparse>=0.14.0",
"google-auth>=2.0.0",
"httpx>=0.28.1",
"keyring>=25.6.0",
"markdownify>=1.2.2",
"mcp>=1.14.0",
"mistralai==2.1.3",
"opentelemetry-api>=1.39.1",
"opentelemetry-exporter-otlp-proto-http>=1.39.1",
"opentelemetry-sdk>=1.39.1",
"opentelemetry-semantic-conventions>=0.60b1",
"packaging>=24.1",
"pexpect>=4.9.0",
"pydantic>=2.12.4",
"pydantic-settings>=2.12.0",
"pyperclip>=1.11.0",
"python-dotenv>=1.0.0",
"pyyaml>=6.0.0",
"requests>=2.20.0",
"rich>=14.0.0",
"sounddevice>=0.5.1",
"textual>=8.1.1",
"textual-speedups>=0.2.1",
"tomli-w>=1.2.0",
"tree-sitter>=0.25.2",
"tree-sitter-bash>=0.25.1",
"watchfiles>=1.1.1",
"websockets>=13.0",
"zstandard>=0.25.0",
]
[project.urls]
Homepage = "https://github.com/mistralai/mistral-vibe"
Repository = "https://github.com/mistralai/mistral-vibe"
Issues = "https://github.com/mistralai/mistral-vibe/issues"
Documentation = "https://github.com/mistralai/mistral-vibe#readme"
[build-system]
requires = ["hatchling", "hatch-vcs", "editables"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
include = ["vibe/"]
[project.scripts]
vibe = "vibe.cli.entrypoint:main"
vibe-acp = "vibe.acp.entrypoint:main"
[tool.uv]
package = true
required-version = ">=0.8.0"
[dependency-groups]
dev = [
"debugpy>=1.8.19",
"pre-commit>=4.2.0",
"pyright>=1.1.403",
"pytest>=8.3.5",
"pytest-asyncio>=1.2.0",
"pytest-textual-snapshot>=1.1.0",
"pytest-timeout>=2.4.0",
"pytest-xdist>=3.8.0",
"respx>=0.22.0",
"ruff>=0.14.5",
"twine>=5.0.0",
"typos>=1.34.0",
"vulture>=2.14",
]
build = ["pyinstaller>=6.17.0", "truststore>=0.10.4"]
[tool.pyright]
pythonVersion = "3.12"
reportMissingTypeStubs = false
reportPrivateImportUsage = false
include = ["vibe/**/*.py", "tests/**/*.py"]
exclude = ["pyinstaller/"]
venvPath = "."
venv = ".venv"
[tool.ruff]
include = ["vibe/**/*.py", "tests/**/*.py"]
exclude = ["pyinstaller/"]
line-length = 88
target-version = "py312"
preview = true
[tool.ruff.format]
skip-magic-trailing-comma = true
[tool.ruff.lint]
select = [
"F",
"I",
"D2",
"UP",
"TID",
"ANN",
"PLR",
"B0",
"B905",
"DOC102",
"RUF022",
"RUF010",
"RUF012",
"RUF019",
"RUF100",
]
ignore = ["D203", "D205", "D213", "ANN401", "PLR6301"]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["ANN", "PLR"]
# Textual parent classes don't use ClassVar, so we can't either without breaking pyright
"vibe/cli/textual_ui/ansi_markdown.py" = ["RUF012"]
[tool.ruff.lint.flake8-tidy-imports]
ban-relative-imports = "all"
[tool.ruff.lint.isort]
known-first-party = ["vibe"]
force-sort-within-sections = true
split-on-trailing-comma = false
combine-as-imports = true
force-wrap-aliases = false
order-by-type = true
required-imports = ["from __future__ import annotations"]
[tool.ruff.lint.pylint]
max-statements = 50
max-branches = 15
max-locals = 15
max-args = 9
max-returns = 6
max-nested-blocks = 4
[tool.vulture]
ignore_decorators = ["@*"]
[tool.pytest.ini_options]
addopts = "-vvvv -q -n auto --durations=10 --import-mode=importlib --maxschedchunk=1"
timeout = 10
filterwarnings = [
# (e2e) streaming mock server is started in a thread; and the cli is spawn in a fork
"ignore:This process \\(pid=.*\\) is multi-threaded, use of forkpty\\(\\) may lead to deadlocks in the child\\.:DeprecationWarning",
]