Files
Charlie Marsh 94427aaf46 Use uv as Python SDK build backend (#27901)
## Summary

Replace Hatchling with uv's build backend for the Python SDK. The
backend infers the `src/openai_codex` module from the normalized project
name and standard source layout, so no uv-specific package configuration
is required.

This keeps Python packaging within the uv toolchain already used for
dependency management and release builds. A controlled before-and-after
PEP 517 comparison produced identical wheel package paths, bytes,
permissions, and semantic metadata. The sdist retains the SDK package
tree, root README, and project metadata while dropping the unrelated
examples README that Hatch included through its broad include matching.
2026-06-12 17:21:00 +00:00

75 lines
1.8 KiB
TOML

[build-system]
requires = ["uv_build>=0.11.19,<0.12"]
build-backend = "uv_build"
[project]
name = "openai-codex"
version = "0.0.0-dev"
description = "Python SDK for Codex"
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
authors = [{ name = "OpenAI" }]
keywords = ["codex", "sdk", "llm", "ai", "agents"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = ["pydantic>=2.12", "openai-codex-cli-bin==0.137.0a4"]
[project.urls]
Homepage = "https://github.com/openai/codex"
Repository = "https://github.com/openai/codex"
Issues = "https://github.com/openai/codex/issues"
Documentation = "https://github.com/openai/codex/tree/main/sdk/python/docs"
[dependency-groups]
format = ["ruff>=0.15.8"]
test = [
"pytest>=8.0",
"datamodel-code-generator==0.31.2",
{ include-group = "format" },
]
dev = [
{ include-group = "test" },
{ include-group = "format" },
]
[tool.pytest.ini_options]
addopts = "-q"
testpaths = ["tests"]
[tool.ruff]
target-version = "py310"
required-version = ">=0.15.8"
line-length = 100
extend-exclude = [
"notebooks/**",
"src/openai_codex/generated/**",
]
[tool.ruff.lint]
select = ["E", "F", "I", "B", "C4"]
ignore = ["E501"]
preview = true
extend-safe-fixes = ["ALL"]
unfixable = ["F841"]
[tool.ruff.lint.per-file-ignores]
"examples/**/*.py" = ["E402"]
"tests/test_real_app_server_integration.py" = ["E402"]
[tool.ruff.lint.isort]
combine-as-imports = true
[tool.uv]
exclude-newer = "7 days"
exclude-newer-package = { openai-codex-cli-bin = "2026-06-03T19:00:00Z" }
index-strategy = "first-index"
[tool.uv.pip]
exclude-newer = "7 days"
exclude-newer-package = { openai-codex-cli-bin = "2026-06-03T19:00:00Z" }
index-strategy = "first-index"