mirror of
https://github.com/openai/codex.git
synced 2026-04-26 15:45:02 +00:00
2026-03-12 Switch the repo-source Python SDK real coverage over to a pinned runtime-package flow backed by GitHub release artifacts instead of PATH or explicit binary overrides. - add sdk/python/_runtime_setup.py to download the release codex archive for a requested CODEX_PYTHON_RUNTIME_VERSION, stage a temporary codex-cli-bin package, and install it into a target Python environment with cleanup - refactor real integration tests to run repo-source SDK code against an isolated site-packages target that contains the staged codex-cli-bin runtime - update examples and notebook bootstrap to install and use the runtime package, and stop consulting CODEX_PYTHON_SDK_CODEX_BIN or PATH - switch the failing turn-run and model-selection examples to runtime-compatible model selection for the pinned release binary - keep the main SDK runtime resolution model unchanged: explicit codex_bin or installed codex-cli-bin Validation: - python3 -m pytest sdk/python/tests - RUN_REAL_CODEX_TESTS=1 CODEX_PYTHON_RUNTIME_VERSION=0.115.0-alpha.11 python3 -m pytest sdk/python/tests/test_real_app_server_integration.py Co-authored-by: Codex <noreply@openai.com>
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
_SDK_PYTHON_DIR = Path(__file__).resolve().parents[1]
|
|
_SDK_PYTHON_STR = str(_SDK_PYTHON_DIR)
|
|
if _SDK_PYTHON_STR not in sys.path:
|
|
sys.path.insert(0, _SDK_PYTHON_STR)
|
|
|
|
from _runtime_setup import ensure_runtime_package_installed
|
|
|
|
|
|
def _ensure_runtime_dependencies(sdk_python_dir: Path) -> None:
|
|
if importlib.util.find_spec("pydantic") is not None:
|
|
return
|
|
|
|
python = sys.executable
|
|
raise RuntimeError(
|
|
"Missing required dependency: pydantic.\n"
|
|
f"Interpreter: {python}\n"
|
|
"Install dependencies with the same interpreter used to run this example:\n"
|
|
f" {python} -m pip install -e {sdk_python_dir}\n"
|
|
"If you installed with `pip` from another Python, reinstall using the command above."
|
|
)
|
|
|
|
|
|
def ensure_local_sdk_src() -> Path:
|
|
"""Add sdk/python/src to sys.path so examples run without installing the package."""
|
|
sdk_python_dir = _SDK_PYTHON_DIR
|
|
src_dir = sdk_python_dir / "src"
|
|
package_dir = src_dir / "codex_app_server"
|
|
if not package_dir.exists():
|
|
raise RuntimeError(f"Could not locate local SDK package at {package_dir}")
|
|
|
|
_ensure_runtime_dependencies(sdk_python_dir)
|
|
|
|
src_str = str(src_dir)
|
|
if src_str not in sys.path:
|
|
sys.path.insert(0, src_str)
|
|
return src_dir
|
|
|
|
|
|
def runtime_config():
|
|
"""Return an example-friendly AppServerConfig for repo-source SDK usage."""
|
|
from codex_app_server import AppServerConfig
|
|
|
|
ensure_runtime_package_installed(sys.executable, _SDK_PYTHON_DIR)
|
|
return AppServerConfig()
|