[tool.poetry]
name = "arcade-ai"
version = "1.1.0"
description = "Arcade Python SDK and CLI"
readme = "README.md"
packages = [
    {include="arcade", from="."}
]
authors = ["Arcade <dev@arcade.dev>"]

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"


[tool.poetry.dependencies]
python = ">=3.10,<4.0"
pydantic = "^2.7.0"
typer = ">=0.10.0"
rich = "^13.7.1"
Jinja2 = ">=3.1.5,<4.0.0"
pyyaml = "^6.0"
openai = "^1.36.0" # TODO: relax to an earlier version that still has what we need
arcadepy = "^1.3.1"
pyjwt = "^2.8.0"
loguru = "^0.7.0"
tqdm = "^4.1.0"
toml = "^0.10.2"
packaging = "^24.1"
types-python-dateutil = "2.9.0.20241003"
types-pytz = "2024.2.0.20241003"
types-toml = "0.10.8.20240310"
opentelemetry-instrumentation-fastapi = "0.48b0"
opentelemetry-exporter-otlp-proto-http = "1.27.0"
opentelemetry-exporter-otlp-proto-common = "1.27.0"
fastapi = "^0.115.3"
uvicorn = "^0.30.0"
scipy = {version = "^1.14.0", optional = true}
numpy = {version = "^2.0.0", optional = true}
scikit-learn = {version = "^1.5.0", optional = true}
pytz = {version = "^2024.1", optional = true}
python-dateutil = {version = "^2.8.2", optional = true}
watchfiles = "^1.0.5"

pyreadline3 = {version = "^3.5.4", platform = "win32"}
[tool.poetry.extras]
evals = ["scipy", "numpy", "scikit-learn", "pytz", "python-dateutil"]


[tool.poetry.group.dev.dependencies]
pytest = "^8.1.2"
pytest-cov = "^4.0.0"
mypy = "^1.5.1"
pre-commit = "^3.4.0"
tox = "^4.11.1"
pytest-asyncio = "^0.23.7"
types-pytz = "^2024.1"
types-python-dateutil = "^2.8.2"
types-PyYAML = "^6.0.0"
poetry-plugin-export = "^1.7.0"

[tool.poetry.scripts]
arcade = "arcade.cli.main:cli"

[tool.mypy]
files = ["arcade"]
exclude = "arcade/templates"
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"

[tool.pytest.ini_options]
testpaths = ["tests"]


[tool.coverage.run]
branch = true
source = ["arcade"]
omit = ["arcade/cli/*"]

[tool.coverage.report]
skip_empty = true
