mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
eb1cc3824c
## Why The initial public `openai-codex` beta should read and install like a normal published Python package before a release tag is created. This follows merged PR #24828, which establishes the independent SDK beta release plumbing and exact runtime dependency. ## What changed - Rewrote `sdk/python/README.md` as a compact PyPI-facing beta package page: published installation, one quickstart, short login examples, built-in help, and links to deeper guides. - Updated the getting-started guide, API reference, FAQ, and examples index to present the published beta consistently without repeating onboarding in the package landing page or reference page. - Made `pip install openai-codex` the primary install path while beta releases are the only published SDK releases, with `--pre` documented for opting into prereleases after a stable release exists. - Added curated `help()` / `pydoc` docstrings across the public API and generated public convenience methods through `scripts/update_sdk_artifacts.py`. - Declared the repository `Apache-2.0` license expression and Documentation URL in package metadata, without introducing a duplicated SDK-local license file. - Kept the source distribution focused on installable package material (`src/openai_codex`, `README.md`, and `pyproject.toml`); the repository docs and runnable examples remain linked from the PyPI README. - Built release artifacts in an Alpine container on the Ubuntu runner, matching Python SDK CI and allowing type generation to install the published `musllinux` runtime wheel. - Added `twine check --strict` to the release workflow so malformed PyPI metadata or rendered README content fails before publishing. - Added focused SDK assertions for beta metadata, the exact runtime pin, source distribution contents, and the built-in Python documentation surface. ## Validation - Ran `uv run --frozen --extra dev ruff check scripts/update_sdk_artifacts.py src/openai_codex tests/test_public_api_signatures.py tests/test_artifact_workflow_and_binaries.py` before the final README-only reductions and review-fix follow-ups. - Built `openai_codex-0.1.0b1-py3-none-any.whl` and `openai_codex-0.1.0b1.tar.gz` before the final README-only reductions and review-fix follow-ups. - Ran `python -m twine check --strict` on both built artifacts before the final README-only reductions and review-fix follow-ups. - Verified artifact metadata reports `Apache-2.0` without a duplicated SDK-local license file. - Verified `inspect.getdoc(...)` resolves documentation for the package, `Codex`, `CodexConfig`, and key generated thread methods. - Rebased the documentation/readiness change onto merged PR #24828 without changing the intended SDK or workflow file contents. - Final verification is delegated to online CI for this PR.
94 lines
2.0 KiB
Python
94 lines
2.0 KiB
Python
"""Python SDK for running Codex workflows.
|
|
|
|
Start with :class:`Codex` for synchronous applications or
|
|
:class:`AsyncCodex` for async applications. Most programs create a thread and
|
|
run a turn::
|
|
|
|
from openai_codex import Codex, Sandbox
|
|
|
|
with Codex() as codex:
|
|
thread = codex.thread_start(sandbox=Sandbox.workspace_write)
|
|
result = thread.run("Describe this project.")
|
|
print(result.final_response)
|
|
"""
|
|
|
|
from ._version import __version__
|
|
from .api import (
|
|
ApprovalMode,
|
|
AsyncChatgptLoginHandle,
|
|
AsyncCodex,
|
|
AsyncDeviceCodeLoginHandle,
|
|
AsyncThread,
|
|
AsyncTurnHandle,
|
|
ChatgptLoginHandle,
|
|
Codex,
|
|
DeviceCodeLoginHandle,
|
|
ImageInput,
|
|
Input,
|
|
InputItem,
|
|
LocalImageInput,
|
|
MentionInput,
|
|
RunInput,
|
|
Sandbox,
|
|
SkillInput,
|
|
TextInput,
|
|
Thread,
|
|
TurnHandle,
|
|
TurnResult,
|
|
)
|
|
from .client import CodexConfig
|
|
from .errors import (
|
|
CodexError,
|
|
CodexRpcError,
|
|
InternalRpcError,
|
|
InvalidParamsError,
|
|
InvalidRequestError,
|
|
JsonRpcError,
|
|
MethodNotFoundError,
|
|
ParseError,
|
|
RetryLimitExceededError,
|
|
ServerBusyError,
|
|
TransportClosedError,
|
|
is_retryable_error,
|
|
)
|
|
from .retry import retry_on_overload
|
|
|
|
__all__ = [
|
|
"__version__",
|
|
"CodexConfig",
|
|
"Codex",
|
|
"AsyncCodex",
|
|
"ApprovalMode",
|
|
"Sandbox",
|
|
"ChatgptLoginHandle",
|
|
"DeviceCodeLoginHandle",
|
|
"AsyncChatgptLoginHandle",
|
|
"AsyncDeviceCodeLoginHandle",
|
|
"Thread",
|
|
"AsyncThread",
|
|
"TurnHandle",
|
|
"AsyncTurnHandle",
|
|
"TurnResult",
|
|
"Input",
|
|
"InputItem",
|
|
"RunInput",
|
|
"TextInput",
|
|
"ImageInput",
|
|
"LocalImageInput",
|
|
"SkillInput",
|
|
"MentionInput",
|
|
"retry_on_overload",
|
|
"CodexError",
|
|
"TransportClosedError",
|
|
"JsonRpcError",
|
|
"CodexRpcError",
|
|
"ParseError",
|
|
"InvalidRequestError",
|
|
"MethodNotFoundError",
|
|
"InvalidParamsError",
|
|
"InternalRpcError",
|
|
"ServerBusyError",
|
|
"RetryLimitExceededError",
|
|
"is_retryable_error",
|
|
]
|