Implementation:Arize ai Phoenix Pyproject Config
Overview
The pyproject.toml file is the main Python package configuration for the arize-phoenix project. It defines the package metadata, runtime dependencies, optional extras, CLI entry points, build system settings, and tool configurations for linting, formatting, type checking, and testing. This file serves as the single source of truth for how the Python distribution is built and published.
The package is described as "AI Observability and Evaluation" and is licensed under Elastic-2.0. It supports Python versions 3.10 through 3.13 (>=3.10, <3.14).
Code Reference
| Attribute | Value |
|---|---|
| Source File | pyproject.toml |
| Lines | 373 |
| Domain | Build_Configuration |
| Build Backend | hatchling (Hatch)
|
| Package Manager | uv (required version 0.9.18)
|
Key Sections
Package Metadata
| Field | Value |
|---|---|
| Name | arize-phoenix
|
| Authors | Arize AI (phoenix-devs@arize.com)
|
| License | Elastic-2.0 |
| Python | >=3.10, <3.14
|
| Version | Dynamic, read from src/phoenix/version.py
|
CLI Entry Points
Two console scripts are registered:
| Command | Target |
|---|---|
arize-phoenix |
phoenix.server.main:main
|
phoenix |
phoenix.server.main:main
|
Both commands launch the Phoenix server process.
Core Dependencies
The package declares a substantial set of runtime dependencies including:
- Web framework:
fastapi,starlette,uvicorn - GraphQL:
strawberry-graphql==0.287.3 - Database:
sqlalchemy[asyncio]>=2.0.4,alembic>=1.3.0,aiosqlite - OpenTelemetry:
opentelemetry-sdk,opentelemetry-proto>=1.12.0,opentelemetry-exporter-otlp - OpenInference:
openinference-semantic-conventions>=0.1.26,openinference-instrumentation>=0.1.44 - Data science:
scikit-learn,numpy,pandas>=1.0,scipy,pyarrow - Sub-packages:
arize-phoenix-evals>=2.8.0,arize-phoenix-otel>=0.14.0,arize-phoenix-client>=1.29.0 - Auth:
authlib,ldap3 - Serialization:
orjson,protobuf>=4.25.8
Optional Extras
| Extra | Description |
|---|---|
embeddings |
UMAP, HDBSCAN, numba for embedding analysis |
pg |
PostgreSQL support via asyncpg and psycopg
|
aws |
AWS integration via aioboto3
|
container |
Full container deployment (Anthropic, Google GenAI, OpenAI, OTel instrumentation, uvloop, embeddings, AWS) |
Build Configuration (Hatch)
The wheel build includes only the src/phoenix package while explicitly excluding sub-package directories (client/, evals/, otel/). Build artifacts include:
src/phoenix/server/static(frontend assets)src/phoenix/db/migrations(Alembic migrations)src/phoenix/server/cost_tracking/model_cost_manifest.jsonsrc/phoenix/server/api/helpers/substitutions/server.yaml
Tool Configuration
| Tool | Key Settings |
|---|---|
| Ruff | Line length 100, target Python 3.10, selects E/F/W/I/NPY201 rules |
| mypy | Strict mode, Strawberry and Pydantic plugins, ignores missing imports for many third-party packages |
| pytest | asyncio_mode = "auto", verbose output, doctest modules, import mode importlib
|
| uv | Required version 0.9.18, workspace members in packages/*, workspace sources for sub-packages
|
Workspace Configuration
The [tool.uv.workspace] section defines the uv workspace with members at packages/*. The [tool.uv.sources] section maps the three sub-packages (arize-phoenix-client, arize-phoenix-evals, arize-phoenix-otel) to workspace references, allowing local development against the monorepo versions.
Related Pages
- Arize_ai_Phoenix_Helm_Values - Kubernetes deployment configuration that deploys the built package
- Arize_ai_Phoenix_App_Pnpm_Lock - Frontend dependency lock file (frontend assets are included as build artifacts)
- Arize_ai_Phoenix_OpenAPI_Spec_Canonical - REST API specification served by the FastAPI server defined here