[project] name = "ci-agent-api" version = "0.1.0" description = "CI Agent backend API" requires-python = ">=3.12" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.32", "pydantic>=2.9", "pydantic-settings>=2.5", "sqlalchemy>=2.0.35", "alembic>=1.13", "psycopg[binary,pool]>=3.2", "aiosqlite>=0.20", "greenlet>=3.1", "celery>=5.4", "redis>=5.1", "httpx>=0.27", "beautifulsoup4>=4.12", "lxml>=5.3", "trafilatura>=1.12", "feedparser>=6.0", "argon2-cffi>=23.1", "cryptography>=43.0", "pyjwt>=2.9", "slowapi>=0.1.9", "anthropic>=0.39", "google-genai>=1.0", "python-multipart>=0.0.12", "tenacity>=9.0", "structlog>=24.4", "python-dateutil>=2.9", "email-validator>=2.2", "markdown-it-py>=3.0", "croniter>=3.0", ] [project.optional-dependencies] dev = [ "pytest>=8.3", "pytest-asyncio>=0.24", "pytest-cov>=5.0", "ruff>=0.7", "black>=24.10", "mypy>=1.13", "faker>=30.8", "respx>=0.21", ] [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["app*"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] # E501: line length handled by black. B008: FastAPI's Depends() pattern requires # calling Depends(...) in argument defaults - that's idiomatic here, not a bug. ignore = ["E501", "B008"] [tool.black] line-length = 100 target-version = ["py312"] [tool.mypy] python_version = "3.12" ignore_missing_imports = true