arcade-mcp/libs/arcade-core/pyproject.toml
Eric Gustin 25267ab6ee
JSON-safety validation for ToolMetadata.extras (#773)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **Medium Risk**
> Tightens validation on tool metadata, which may break existing tools
that relied on non-JSON-serializable `extras` values or keys; changes
are localized and well-covered by tests.
> 
> **Overview**
> Adds **JSON-safety enforcement** for `ToolMetadata.extras`: top-level
keys must be strings at model construction, and `validate_for_tool()`
now recursively rejects non-JSON-native values (including non-finite
floats) with path-rich `ToolDefinitionError` messages.
> 
> Expands tests to cover valid/invalid nested `extras` cases and
error-message quality, and bumps `arcade-core` version to `4.5.0`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
2bab0db3c17f0ddb97868764d10494da543b39e5. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-02-25 09:48:04 -08:00

63 lines
1.6 KiB
TOML

[project]
name = "arcade-core"
version = "4.5.0"
description = "Arcade Core - Core library for Arcade platform"
readme = "README.md"
license = { text = "MIT" }
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 = [
"pydantic>=2.7.0",
"pyyaml>=6.0",
"loguru>=0.7.0",
"pyjwt>=2.8.0",
"toml>=0.10.2",
"httpx>=0.27.0",
"packaging>=24.1",
"portalocker>=2.10.0",
"types-python-dateutil==2.9.0.20241003",
"types-pytz==2024.2.0.20241003",
"types-toml==0.10.8.20240310",
"posthog>=6.7.6,<7.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.1.2",
"pytest-cov>=4.0.0",
"mypy>=1.5.1",
"pre-commit>=3.4.0",
"pytest-asyncio>=0.23.7",
"types-pytz>=2024.1",
"types-python-dateutil>=2.8.2",
"types-PyYAML>=6.0.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["arcade_core"]
[tool.mypy]
files = ["arcade_core"]
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