[project] name = "agnes-the-ai-analyst" version = "0.29.0" description = "Agnes — AI Data Analyst platform for AI analytical systems" requires-python = ">=3.11,<3.14" license = "MIT" readme = "README.md" dependencies = [ # Core database "duckdb>=0.9.0", # Web framework (FastAPI) "fastapi>=0.115.0", "uvicorn[standard]>=0.32.0", "python-multipart>=0.0.26", "jinja2>=3.1.0", "starlette>=0.41.0", # Authentication "PyJWT>=2.8.0", "itsdangerous>=2.1.0", "authlib>=1.6.11", "argon2-cffi>=23.1.0", # HTTP client "httpx>=0.27.0", # CLI "typer>=0.12.0", "rich>=13.0.0", # Configuration "python-dotenv>=1.0.0", "pyyaml>=6.0", # Data processing "pandas>=2.0.0", "pyarrow>=12.0.0", "pytz>=2024.1", # SQL parsing — server-side WHERE validator for /api/v2/scan (app/api/where_validator.py) # Minimum 30.x — older versions had walk() yielding (node, parent, key) # tuples instead of expression nodes, which would silently bypass the # WHERE-validator structural checks (isinstance(tuple, exp.Subquery) # is always False). 30.x yields nodes directly. "sqlglot>=30.0.0", # Data source connectors "google-cloud-bigquery>=3.0.0", "google-cloud-bigquery-storage>=2.0.0", # Google Workspace Cloud Identity / Admin SDK (Workspace group membership sync) "google-api-python-client>=2.0.0", # Profiler visualizations "matplotlib>=3.8.0", "numpy>=1.24.0", # Claude Code marketplace endpoint — pure-Python git server mounted in FastAPI "dulwich>=0.22.0", "a2wsgi>=1.10.0", # In-process TTL cache for marketplace etag (transitively present via # google-auth, declared explicitly here because we depend on it directly). "cachetools>=5.3.0", ] [project.optional-dependencies] # keboola-legacy: install kbcstorage>=0.9.0 manually if you need the legacy # Keboola client fallback (primary path uses DuckDB Keboola extension) dev = [ "pytest>=9.0.0", "pytest-timeout>=2.0.0", "pytest-xdist>=3.0.0", "faker>=24.0.0", "anthropic>=0.30.0", "openai>=1.30.0", # jsonschema validates the corporate-memory extraction-tool golden fixtures # under tests/test_corporate_memory_v1.py (extraction.json, correction.json, # confidence_calibration.json). Production code does not depend on it. "jsonschema>=4.0.0", # FastAPI debug toolbar — gated behind DEBUG=1 env var in app/main.py. # Provides per-request panels (headers, routes, timer, profiling, etc.) # for local development. Never loaded in production (no DEBUG=1 there). "fastapi-debug-toolbar>=0.6.3", ] [project.scripts] da = "cli.main:app" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app", "src", "connectors", "cli", "services", "config"] [tool.ruff] line-length = 120 target-version = "py313" [tool.uv] dev-dependencies = [ "pytest>=9.0.0", "pytest-timeout>=2.0.0", "pytest-xdist>=3.0.0", "faker>=24.0.0", "anthropic>=0.30.0", "openai>=1.30.0", "fastapi-debug-toolbar>=0.6.3", ]