vibe/pyproject.toml
Clément Drouin f71bfd3b8c
v2.10.1 (#702)
Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com>
Co-authored-by: Michel Thomazo <51709227+michelTho@users.noreply.github.com>
Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai>
Co-authored-by: Val <102326092+vdeva@users.noreply.github.com>
Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com>
Co-authored-by: Mistral Vibe <vibe@mistral.ai>
2026-05-20 11:39:59 +02:00

262 lines
6.6 KiB
TOML

[project]
name = "mistral-vibe"
version = "2.10.1"
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.9.0",
"annotated-types==0.7.0",
"anyio==4.13.0",
"attrs==26.1.0",
"beautifulsoup4==4.14.3",
"cachetools==7.0.6",
"certifi==2026.4.22",
"cffi==2.0.0",
"charset-normalizer==3.4.7",
"click==8.3.3 ; sys_platform != 'emscripten'",
"colorama==0.4.6 ; sys_platform == 'win32'",
"cryptography==47.0.0",
"eval-type-backport==0.3.1",
"gitdb==4.0.12",
"gitpython==3.1.47",
"giturlparse==0.14.0",
"google-auth==2.49.2",
"googleapis-common-protos==1.74.0",
"h11==0.16.0",
"httpcore==1.0.9",
"httpx==0.28.1",
"httpx-sse==0.4.3",
"idna==3.13",
"importlib-metadata==8.7.1",
"jaraco-classes==3.4.0",
"jaraco-context==6.1.2",
"jaraco-functools==4.4.0",
"jeepney==0.9.0 ; sys_platform == 'linux'",
"jsonpatch==1.33",
"jsonpath-python==1.1.5",
"jsonpointer==3.1.1",
"jsonschema==4.26.0",
"jsonschema-specifications==2025.9.1",
"keyring==25.7.0",
"linkify-it-py==2.1.0",
"markdown-it-py==4.0.0",
"markdownify==1.2.2",
"mcp==1.27.0",
"mdit-py-plugins==0.5.0",
"mdurl==0.1.2",
"mistralai==2.4.4",
"more-itertools==11.0.2",
"opentelemetry-api==1.39.1",
"opentelemetry-exporter-otlp-proto-common==1.39.1",
"opentelemetry-exporter-otlp-proto-http==1.39.1",
"opentelemetry-proto==1.39.1",
"opentelemetry-sdk==1.39.1",
"opentelemetry-semantic-conventions==0.60b1",
"packaging==26.2",
"pexpect==4.9.0",
"platformdirs==4.9.6",
"protobuf==6.33.6",
"ptyprocess==0.7.0",
"pyasn1==0.6.3",
"pyasn1-modules==0.4.2",
"pycparser==3.0 ; implementation_name != 'PyPy'",
"pydantic==2.13.3",
"pydantic-core==2.46.3",
"pydantic-settings==2.14.0",
"pygments==2.20.0",
"pyjwt==2.12.1",
"pyperclip==1.11.0",
"python-dateutil==2.9.0.post0",
"python-dotenv==1.2.2",
"python-multipart==0.0.27",
"pywin32==311 ; sys_platform == 'win32'",
"pywin32-ctypes==0.2.3 ; sys_platform == 'win32'",
"pyyaml==6.0.3",
"referencing==0.37.0",
"requests==2.33.1",
"rich==15.0.0",
"rpds-py==0.30.0",
"secretstorage==3.5.0 ; sys_platform == 'linux'",
"six==1.17.0",
"smmap==5.0.3",
"sounddevice==0.5.5",
"soupsieve==2.8.3",
"sse-starlette==3.4.1",
"starlette==1.0.0",
"textual==8.2.4",
"textual-speedups==0.2.1",
"tomli-w==1.2.0",
"tree-sitter==0.25.2",
"tree-sitter-bash==0.25.1",
"typing-extensions==4.15.0",
"typing-inspection==0.4.2",
"uc-micro-py==2.0.0",
"urllib3==2.6.3",
"uvicorn==0.46.0 ; sys_platform != 'emscripten'",
"watchfiles==1.1.1",
"websockets==16.0",
"zipp==3.23.1",
"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]
exclude-newer = "7 days"
exclude-newer-package = { agent-client-protocol = false, mistralai = false }
package = true
required-version = ">=0.8.0"
[dependency-groups]
dev = [
"debugpy>=1.8.19",
"pre-commit>=4.2.0",
"pyinstrument>=5.1.2",
"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",
"tomlkit>=0.13.0",
"twine>=5.0.0",
"typos>=1.34.0",
"vulture>=2.14",
]
build = [
"altgraph==0.17.5",
"macholib==1.16.4 ; sys_platform == 'darwin'",
"packaging==26.2",
"pefile==2024.8.26 ; sys_platform == 'win32'",
"pyinstaller==6.20.0",
"pyinstaller-hooks-contrib==2026.4",
"pywin32-ctypes==0.2.3 ; sys_platform == 'win32'",
"setuptools==82.0.1",
"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-public-methods = 26
max-positional-args = 10
max-statements = 50
max-branches = 15
max-locals = 15
max-args = 10
max-returns = 6
max-nested-blocks = 5
[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",
]