oauth-codex 3.2.1__tar.gz → 3.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/PKG-INFO +1 -1
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/pyproject.toml +1 -1
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_streaming.py +12 -1
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_version.py +1 -1
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/chat/completions.py +4 -6
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex.egg-info/PKG-INFO +1 -1
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/README.md +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/setup.cfg +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_base_client.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_engine.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_exceptions.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_models.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_module_client.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_resource.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_sdk_client.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/_types.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/_oauth.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/_provider.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/config.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/pkce.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/store.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/auth/token_manager.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/compat_store.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/core_types.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/errors.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/py.typed +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/_wrappers.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/beta.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/chat/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/files.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/models.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/responses/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/responses/_helpers.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/responses/input_tokens.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/responses/responses.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/responses.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/file_batches.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/files.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/vector_stores.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/store.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/tooling.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/chat/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/chat/completions.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/file_deleted.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/file_object.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/responses/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/responses/input_token_count_response.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/responses/response.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/responses/response_stream_event.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/shared/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/shared/model_capabilities.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/shared/usage.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/__init__.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_deleted.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_file.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_file_batch.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_search_response.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/version.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex.egg-info/SOURCES.txt +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex.egg-info/dependency_links.txt +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex.egg-info/requires.txt +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex.egg-info/top_level.txt +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/tests/test_beta_chat_completions.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/tests/test_client_authentication.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/tests/test_client_resource_surface.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/tests/test_public_api_docstrings.py +0 -0
- {oauth_codex-3.2.1 → oauth_codex-3.2.2}/tests/test_public_surface.py +0 -0
|
@@ -16,7 +16,10 @@ def _extract_event_data(raw_event: str) -> str | None:
|
|
|
16
16
|
data_lines: list[str] = []
|
|
17
17
|
for line in raw_event.split("\n"):
|
|
18
18
|
if line.startswith("data:"):
|
|
19
|
-
|
|
19
|
+
content = line[5:].lstrip()
|
|
20
|
+
if content == "[DONE]":
|
|
21
|
+
return "[DONE]"
|
|
22
|
+
data_lines.append(content)
|
|
20
23
|
|
|
21
24
|
if not data_lines:
|
|
22
25
|
return None
|
|
@@ -41,12 +44,16 @@ class Stream(Generic[T]):
|
|
|
41
44
|
while "\n\n" in buffer:
|
|
42
45
|
raw_event, buffer = buffer.split("\n\n", 1)
|
|
43
46
|
data = _extract_event_data(raw_event)
|
|
47
|
+
if data == "[DONE]":
|
|
48
|
+
return
|
|
44
49
|
if data is None:
|
|
45
50
|
continue
|
|
46
51
|
yield self._cast_event(data)
|
|
47
52
|
|
|
48
53
|
if buffer:
|
|
49
54
|
data = _extract_event_data(buffer)
|
|
55
|
+
if data == "[DONE]":
|
|
56
|
+
return
|
|
50
57
|
if data is not None:
|
|
51
58
|
yield self._cast_event(data)
|
|
52
59
|
finally:
|
|
@@ -71,12 +78,16 @@ class AsyncStream(Generic[T]):
|
|
|
71
78
|
while "\n\n" in buffer:
|
|
72
79
|
raw_event, buffer = buffer.split("\n\n", 1)
|
|
73
80
|
data = _extract_event_data(raw_event)
|
|
81
|
+
if data == "[DONE]":
|
|
82
|
+
return
|
|
74
83
|
if data is None:
|
|
75
84
|
continue
|
|
76
85
|
yield self._cast_event(data)
|
|
77
86
|
|
|
78
87
|
if buffer:
|
|
79
88
|
data = _extract_event_data(buffer)
|
|
89
|
+
if data == "[DONE]":
|
|
90
|
+
return
|
|
80
91
|
if data is not None:
|
|
81
92
|
yield self._cast_event(data)
|
|
82
93
|
finally:
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
__title__ = "oauth-codex"
|
|
2
|
-
__version__ = "3.2.
|
|
2
|
+
__version__ = "3.2.2"
|
|
@@ -167,7 +167,7 @@ def _parse_tool_arguments(arguments: Any) -> dict[str, Any]:
|
|
|
167
167
|
if isinstance(arguments, dict):
|
|
168
168
|
return arguments
|
|
169
169
|
if not isinstance(arguments, str) or not arguments.strip():
|
|
170
|
-
|
|
170
|
+
raise ValueError(f"Tool arguments must be a valid JSON object string, got: {arguments!r}")
|
|
171
171
|
|
|
172
172
|
try:
|
|
173
173
|
parsed = json.loads(arguments)
|
|
@@ -175,11 +175,9 @@ def _parse_tool_arguments(arguments: Any) -> dict[str, Any]:
|
|
|
175
175
|
parsed = json.loads(parsed)
|
|
176
176
|
if isinstance(parsed, dict):
|
|
177
177
|
return parsed
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return {}
|
|
182
|
-
|
|
178
|
+
raise ValueError("Parsed arguments is not a dictionary")
|
|
179
|
+
except Exception as e:
|
|
180
|
+
raise ValueError(f"Failed to parse tool arguments: {arguments!r}") from e
|
|
183
181
|
def _run_tool_function(*, fn: Any, arguments: Any) -> Any:
|
|
184
182
|
if isinstance(arguments, dict):
|
|
185
183
|
return fn(**arguments)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/file_batches.py
RENAMED
|
File without changes
|
|
File without changes
|
{oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/resources/vector_stores/vector_stores.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/responses/response_stream_event.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_deleted.py
RENAMED
|
File without changes
|
{oauth_codex-3.2.1 → oauth_codex-3.2.2}/src/oauth_codex/types/vector_stores/vector_store_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|