The OpenAI Agents SDK uses uv for workspace management, ruff for linting and formatting, mypy and pyright for dual static type checking, and pytest with auto-async mode for testing, configured to enforce strict typing while permitting flexible package resolution. Custom pytest markers (allow_call_model_methods, requires_native_macos_sandbox, review_optional, serial) gate integration tests, sandbox-dependent tests, slow tests, and serialization constraints respectively. A uv workspace groups multiple related Python packages in one repository under a single lock file, enabling local inter-package dependency resolution without publishing to a registry.
The openai-agents project uses uv as its package and workspace manager and ruff as its linter and formatter, with documentation built via MkDocs and mkdocs-material.[1] The uv workspace configuration treats agents as a local workspace member, so uv add openai-agents resolves to the workspace package during development.[1] uv dependency resolution is configured with exclude-newer = "7 days" globally, with openai = false as a package-level exception so the openai package always resolves to the latest version regardless of the recency cutoff.[1]
Ruff lint rules enabled include E/W (pycodestyle), F (pyflakes), I (isort), B (bugbear), C4 (comprehensions), ASYNC, DTZ005 (timezone-naive datetime.now()), G004 (f-string in logging), RUF006 (unowned asyncio tasks), RUF012 (mutable class attributes without ClassVar), UP (pyupgrade), and others.[1] mypy is configured in strict mode (strict = true) but with disallow_incomplete_defs, disallow_untyped_defs, and disallow_untyped_calls all set to false.[1] pyright==1.1.408 is pinned in the dev dependency group alongside mypy for dual static analysis coverage.[1]
pytest is configured to discover tests in the tests/ directory; asyncio_mode = "auto" means all async tests run automatically without explicit marks.[1] Four custom pytest markers are registered: allow_call_model_methods (permits live model calls), requires_native_macos_sandbox (macOS sandbox-exec process required), review_optional (slow subsystem-specific test), and serial (requires exclusive post-xdist execution).[1]
Sources