[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "evo-ai"
version = "1.0.0"
description = "API for executing AI agents"
readme = "README.md"
authors = [
    {name = "Davidson Gomes", email = "contato@evolution-api.com"}
]
requires-python = ">=3.10"
license = {text = "Apache-2.0"}
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
]

# Main dependencies
dependencies = [
    "fastapi==0.115.12", 
    "uvicorn==0.34.2",
    "pydantic==2.11.3",
    "sqlalchemy==2.0.40",
    "psycopg2==2.9.10",
    "psycopg2-binary==2.9.10",
    "google-cloud-aiplatform==1.90.0",
    "python-dotenv==1.1.0",
    "google-adk==0.3.0",
    "litellm>=1.68.0,<1.69.0",
    "python-multipart==0.0.20",
    "alembic==1.15.2",
    "asyncpg==0.30.0",
    "python-jose==3.4.0",
    "passlib==1.7.4",
    "sendgrid==6.11.0",
    "pydantic-settings==2.9.1",
    "fastapi_utils==0.8.0",
    "bcrypt==4.3.0",
    "jinja2==3.1.6",
    "pydantic[email]==2.11.3",
    "httpx==0.28.1",
    "httpx-sse==0.4.0",
    "redis==5.3.0",
    "sse-starlette==2.3.3",
    "jwcrypto==1.5.6",
    "pyjwt[crypto]==2.9.0",
    "langgraph==0.4.1",
    "opentelemetry-sdk==1.33.0",
    "opentelemetry-exporter-otlp==1.33.0",
    "mcp==1.9.0",
    "crewai==0.120.1",
    "crewai-tools==0.45.0",
    "a2a-sdk==0.2.4",
]

[project.optional-dependencies]
dev = [
    "black==25.1.0",
    "flake8==7.2.0",
    "pytest==8.3.5",
    "pytest-cov==6.1.1",
    "httpx==0.28.1",
    "pytest-asyncio==0.26.0",
]

[tool.setuptools]
packages = ["src"]

[tool.black]
line-length = 88
target-version = ["py310"]
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
  | venv
  | alembic/versions
)/
'''

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_functions = "test_*"
python_classes = "Test*"
filterwarnings = [
    "ignore::DeprecationWarning",
]

[tool.coverage.run]
source = ["src"]
omit = ["tests/*", "alembic/*"] 