Files
codex/sdk/python/examples
T
Charlie Marsh c375deaf66 Use dependency groups for Python SDK tooling (#27538)
## Summary

`just fmt` previously used `uv run --with ruff` to make Ruff available.
Because `--with` creates an ephemeral overlay outside the project
lockfile, uv periodically re-resolved Ruff (by default every 10 minutes)
instead of using the version recorded in `uv.lock`.

Move the Python SDK tooling dependencies from the published `dev` extra
into `format`, `test`, and composed `dev` dependency groups. The
formatter now selects only the locked `format` group, contributor and CI
setup explicitly sync the `dev` group, and CI and release commands reuse
that environment with `--frozen --no-sync`. The scripts formatter also
uses its project's locked Ruff dependency instead of an ephemeral
overlay.

Validated the Python 3.12 SDK suite (119 passed, 38 skipped) and the
repository formatter.
c375deaf66 ยท 2026-06-12 16:10:07 +00:00
History
..

Python SDK Examples

Each example folder contains runnable versions:

  • sync.py (public sync surface: Codex)
  • async.py (public async surface: AsyncCodex)

All examples intentionally use only public SDK exports from openai_codex and openai_codex.types.

Examples use plain strings for text-only turns and typed input objects for multimodal or structured input lists.

Prerequisites

  • Python >=3.10
  • Install the SDK for the same Python interpreter you will use to run examples

Install the published beta:

python -m pip install openai-codex

The SDK installs its pinned openai-codex-cli-bin runtime dependency. The pinned runtime version comes from the SDK package dependency.

Run From A Checkout

Contributors using these checked-in scripts should install development dependencies from sdk/python:

uv sync --group dev
source .venv/bin/activate

The examples bootstrap local SDK imports from sdk/python/src. If the pinned runtime is not already installed, the bootstrap installs the matching runtime package for the active interpreter and cleans up temporary files afterward.

Run examples

From sdk/python:

python examples/<example-folder>/sync.py
python examples/<example-folder>/async.py

The checked-in examples use the local SDK source tree automatically.

python examples/01_quickstart_constructor/sync.py
python examples/01_quickstart_constructor/async.py

Index

  • 01_quickstart_constructor/
    • first run / sanity check
  • 02_turn_run/
    • inspect full turn output fields
  • 03_turn_stream_events/
    • stream a turn with a small curated event view
  • 04_models_and_metadata/
    • discover visible models for the connected runtime
  • 05_existing_thread/
    • resume a real existing thread (created in-script)
  • 06_thread_lifecycle_and_controls/
    • thread lifecycle + control calls
  • 07_image_and_text/
    • remote image URL + text multimodal turn
  • 08_local_image_and_text/
    • local image + text multimodal turn using a generated temporary sample image
  • 09_async_parity/
    • parity-style sync flow (see async parity in other examples)
  • 10_error_handling_and_retry/
    • overload retry pattern + typed error handling structure
  • 11_cli_mini_app/
    • interactive chat loop
  • 12_turn_params_kitchen_sink/
    • structured output with a curated advanced turn(...) configuration
  • 13_model_select_and_turn_params/
    • list models, pick highest model + highest supported reasoning effort, run turns, print message and usage
  • 14_turn_controls/
    • separate steer() and interrupt() demos with concise summaries
  • 15_login_and_account/
    • browser-login handle lifecycle, cancellation, and account inspection