From b9313877ada532fc9b2cd5664136ceea4bee4c66 Mon Sep 17 00:00:00 2001 From: lif <1835304752@qq.com> Date: Thu, 18 Dec 2025 00:16:00 +0800 Subject: [PATCH] feat: export ChatCompletion, Response, ResponseUsage from openai.types Fixes #2680 Added exports for major types from openai.types module for easier access: - ChatCompletion (from openai.types.chat) - Response (from openai.types.responses) - ResponseUsage (from openai.types.responses) This allows users to import these commonly used types directly: from openai.types import ChatCompletion, Response, ResponseUsage --- src/openai/types/__init__.py | 3 +++ tests/test_type_exports.py | 48 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/test_type_exports.py diff --git a/src/openai/types/__init__.py b/src/openai/types/__init__.py index a98ca16ee9..1273368b49 100644 --- a/src/openai/types/__init__.py +++ b/src/openai/types/__init__.py @@ -6,6 +6,9 @@ from .image import Image as Image from .model import Model as Model from .video import Video as Video +from .chat import ChatCompletion as ChatCompletion +from .responses import Response as Response +from .responses import ResponseUsage as ResponseUsage from .shared import ( Metadata as Metadata, AllModels as AllModels, diff --git a/tests/test_type_exports.py b/tests/test_type_exports.py new file mode 100644 index 0000000000..c5bc5eafe8 --- /dev/null +++ b/tests/test_type_exports.py @@ -0,0 +1,48 @@ +"""Tests for type exports from openai.types. + +Verifies that major types are exported from openai.types for easier access. +Relates to issue #2680: Major types are not exposed in openai.types +""" + +import pytest + + +class TestTypeExports: + """Test that major types are exported from openai.types.""" + + def test_chat_completion_exported(self) -> None: + """Verify ChatCompletion is exported from openai.types (fixes #2680).""" + from openai.types import ChatCompletion + from openai.types.chat import ChatCompletion as ChatCompletionOriginal + + assert ChatCompletion is ChatCompletionOriginal + + def test_response_exported(self) -> None: + """Verify Response is exported from openai.types (fixes #2680).""" + from openai.types import Response + from openai.types.responses import Response as ResponseOriginal + + assert Response is ResponseOriginal + + def test_response_usage_exported(self) -> None: + """Verify ResponseUsage is exported from openai.types (fixes #2680).""" + from openai.types import ResponseUsage + from openai.types.responses import ResponseUsage as ResponseUsageOriginal + + assert ResponseUsage is ResponseUsageOriginal + + def test_types_can_be_used_for_type_hints(self) -> None: + """Verify that imported types can be used for type hints.""" + from openai.types import ChatCompletion, Response, ResponseUsage + + def process_chat_completion(completion: ChatCompletion) -> None: + pass + + def process_response(response: Response) -> None: + pass + + def process_usage(usage: ResponseUsage) -> None: + pass + + # If we get here without errors, the types work for hints + assert True