Seeing that arcade-ai==2.2.3 doesn't allow for core, serve, or tdk versions 3.x.x and that it doesn't know about arcade-mcp-server or arcade-mcp, I feel confident that we can get this past the release candidate stage. The current state of our documentation (docs.arcade.dev) still references the 'old way' of doing things, so we can gradually introduce these new packages to users without the hassle of specifying pre release flags when installing ### New packages: arcade-mcp==1.0.0 arcade-mcp-server==1.0.0 ### Breaking change with major bump: arcade-core==3.0.0 from 2.4.0 arcade-serve==3.0.0 from 2.1.0 arcade-tdk==3.0.0 from 2.5.0 ### Deprecated: arcade-ai==2.2.3
159 lines
3.4 KiB
TOML
159 lines
3.4 KiB
TOML
[project]
|
|
name = "arcade-mcp"
|
|
version = "1.0.0"
|
|
description = "Arcade.dev - Tool Calling platform for Agents"
|
|
readme = "README.md"
|
|
license = {file = "LICENSE"}
|
|
authors = [
|
|
{name = "Arcade", email = "dev@arcade.dev"},
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
]
|
|
requires-python = ">=3.10"
|
|
|
|
dependencies = [
|
|
# CLI dependencies
|
|
"arcade-mcp-server>=1.0.0,<2.0.0",
|
|
"arcade-core>=3.0.0,<4.0.0",
|
|
"typer==0.10.0",
|
|
"rich==13.9.4",
|
|
"Jinja2==3.1.6",
|
|
"arcadepy==1.8.0",
|
|
"tqdm==4.67.1",
|
|
"openai==1.82.1",
|
|
"click==8.1.8",
|
|
"posthog==6.7.6",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
all = [
|
|
# evals
|
|
"scipy>=1.14.0",
|
|
"numpy>=2.0.0",
|
|
"scikit-learn>=1.5.0",
|
|
"pytz>=2024.1",
|
|
"python-dateutil>=2.8.2",
|
|
# mcp
|
|
"arcade-mcp-server>=1.0.0,<2.0.0",
|
|
# serve
|
|
"arcade-serve>=3.0.0,<4.0.0",
|
|
# tdk
|
|
"arcade-tdk>=3.0.0,<4.0.0",
|
|
]
|
|
# Evals also depends on arcade-core and openai, but they are already required deps
|
|
evals = [
|
|
"scipy>=1.14.0",
|
|
"numpy>=2.0.0",
|
|
"scikit-learn>=1.5.0",
|
|
"pytz>=2024.1",
|
|
"python-dateutil>=2.8.2",
|
|
]
|
|
|
|
[tool.uv]
|
|
dev-dependencies = [
|
|
"pytest>=8.1.2",
|
|
"pytest-cov>=4.0.0",
|
|
"pytest-asyncio>=0.23.7",
|
|
"mypy>=1.5.1",
|
|
"pre-commit>=3.4.0",
|
|
"ruff>=0.4.0",
|
|
"types-PyYAML>=6.0.0",
|
|
"types-python-dateutil>=2.8.2",
|
|
"types-pytz>=2024.1",
|
|
]
|
|
|
|
# CLI entry point
|
|
[project.scripts]
|
|
arcade = "arcade_cli.main:cli"
|
|
arcade-mcp = "arcade_cli.main:cli"
|
|
|
|
[tool.uv.sources]
|
|
# Workspace member sources
|
|
arcade-core = { workspace = true }
|
|
arcade-tdk = { workspace = true }
|
|
arcade-serve = { workspace = true }
|
|
arcade-mcp-server = { workspace = true }
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = [
|
|
"libs/arcade-cli/arcade_cli",
|
|
"libs/arcade-evals/arcade_evals",
|
|
]
|
|
|
|
[tool.uv.workspace]
|
|
members = [
|
|
"libs/arcade-core",
|
|
"libs/arcade-tdk",
|
|
"libs/arcade-serve",
|
|
"libs/arcade-mcp-server",
|
|
]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
disallow_untyped_defs = true
|
|
disallow_any_unimported = true
|
|
no_implicit_optional = true
|
|
check_untyped_defs = true
|
|
warn_return_any = true
|
|
warn_unused_ignores = true
|
|
show_error_codes = true
|
|
ignore_missing_imports = true
|
|
exclude = [
|
|
'.*{{.*}}.*' # Ignore files that have names that use Jinja template syntax
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["libs/tests"]
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
addopts = [
|
|
"--strict-markers",
|
|
"--strict-config",
|
|
"--verbose",
|
|
"--cov=libs",
|
|
"--cov-report=term-missing",
|
|
"--cov-report=html",
|
|
"--cov-report=xml",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["libs"]
|
|
omit = [
|
|
"*/tests/*",
|
|
"*/test_*",
|
|
"*/__pycache__/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
]
|
|
|
|
[tool.ruff]
|
|
target-version = "py310"
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "N", "UP", "RUF"]
|
|
ignore = ["E501", "S105"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401"]
|