Skip to content

Commit fbb34fe

Browse files
fix(api): serialize transcription chunking strategy
Castiron-Internal-PR: openai/openai-python-internal#121 Castiron-Source-SHA: 86e84a2b4158cb1eacefe0920fdd665bf28812dd Castiron-Public-Base-SHA: 69a2c1d
1 parent 69a2c1d commit fbb34fe

10 files changed

Lines changed: 343 additions & 121 deletions

File tree

‎.castiron.stats.yml‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
schema_version: 1
2-
generation_id: feaf88e6-0c6a-4d57-95a5-0bcc23d7105c
3-
openapi_spec_hash: ce912f79d7f8cb19a7a515513c214b8a
4-
openapi_transformed_spec_hash: 352b5a7a028f990b6475b6593e381eee
5-
config_hash: dde98d9c41cd6f4163320f92c70f83e6
6-
codegen_sha: 799a1f4d5f6b415088641ca4d3bbb804443ec30e
7-
codegen_hash: 7d4da50897149f4eab2fa63ac3dbc972694c6dfeb79a01531da408010bff5dcd
8-
public_codegen_sha: 4b121f228fc198913ea2a56404f38d8f18ca0e86
2+
generation_id: b96e3828-ffad-4815-b703-c404d04829ed
3+
openapi_spec_hash: e2cec1422c7704234fb7736cb865dac9
4+
openapi_transformed_spec_hash: a47cc346be0dd7c1833ea16acd6f145f
5+
config_hash: fbf4242a57b6c023ef78a63466ab5c6d
6+
codegen_sha: 021f51b39d91ee89b80fca82bd619d9de76a3cc1
7+
codegen_hash: 30b56c8802b480afdea6feade2b7ea1ec31e9ebce33e9b64f0ff4da1154e2a1b
8+
public_codegen_sha: 83df0063fc6a13287d02a4f32956575b7537c766

‎api.md‎

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -451,29 +451,29 @@ Methods:
451451

452452
# Safety
453453

454-
## Alerts
454+
## Cases
455455

456456
Types:
457457

458458
```python
459-
from openai.types.safety import SafetyAlert
459+
from openai.types.safety import SafetyCase
460460
```
461461

462462
Methods:
463463

464-
- <code title="get /safety/alerts/{id}">client.safety.alerts.<a href="./src/openai/resources/safety/alerts.py">retrieve</a>(id) -> <a href="./src/openai/types/safety/safety_alert.py">SafetyAlert</a></code>
464+
- <code title="get /safety/cases/{id}">client.safety.cases.<a href="./src/openai/resources/safety/cases.py">retrieve</a>(id) -> <a href="./src/openai/types/safety/safety_case.py">SafetyCase</a></code>
465465

466-
## Cases
466+
## Alerts
467467

468468
Types:
469469

470470
```python
471-
from openai.types.safety import SafetyCase
471+
from openai.types.safety import SafetyAlert
472472
```
473473

474474
Methods:
475475

476-
- <code title="get /safety/cases/{id}">client.safety.cases.<a href="./src/openai/resources/safety/cases.py">retrieve</a>(id) -> <a href="./src/openai/types/safety/safety_case.py">SafetyCase</a></code>
476+
- <code title="get /safety/alerts/{id}">client.safety.alerts.<a href="./src/openai/resources/safety/alerts.py">retrieve</a>(id) -> <a href="./src/openai/types/safety/safety_alert.py">SafetyAlert</a></code>
477477

478478
# [Webhooks](src/openai/resources/webhooks/api.md)
479479

@@ -1299,27 +1299,6 @@ Methods:
12991299

13001300
## Organization
13011301

1302-
### ExternalStorage
1303-
1304-
Types:
1305-
1306-
```python
1307-
from openai.types.admin.organization import (
1308-
AwsExternalStorageProvider,
1309-
AzureExternalStorageProvider,
1310-
ExternalStorageConfiguration,
1311-
ExternalStorageDeleted,
1312-
)
1313-
```
1314-
1315-
Methods:
1316-
1317-
- <code title="post /organization/external_storage">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">create</a>(\*\*<a href="src/openai/types/admin/organization/external_storage_create_params.py">params</a>) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1318-
- <code title="get /organization/external_storage/{external_storage_id}">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">retrieve</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1319-
- <code title="get /organization/external_storage">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">list</a>(\*\*<a href="src/openai/types/admin/organization/external_storage_list_params.py">params</a>) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">SyncCursorPage[ExternalStorageConfiguration]</a></code>
1320-
- <code title="delete /organization/external_storage/{external_storage_id}">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">delete</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_deleted.py">ExternalStorageDeleted</a></code>
1321-
- <code title="post /organization/external_storage/{external_storage_id}/validate">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">validate</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1322-
13231302
### AuditLogs
13241303

13251304
Types:
@@ -1521,6 +1500,27 @@ Methods:
15211500
- <code title="get /organization/data_retention">client.admin.organization.data_retention.<a href="./src/openai/resources/admin/organization/data_retention.py">retrieve</a>() -> <a href="./src/openai/types/admin/organization/organization_data_retention.py">OrganizationDataRetention</a></code>
15221501
- <code title="post /organization/data_retention">client.admin.organization.data_retention.<a href="./src/openai/resources/admin/organization/data_retention.py">update</a>(\*\*<a href="src/openai/types/admin/organization/data_retention_update_params.py">params</a>) -> <a href="./src/openai/types/admin/organization/organization_data_retention.py">OrganizationDataRetention</a></code>
15231502

1503+
### ExternalStorage
1504+
1505+
Types:
1506+
1507+
```python
1508+
from openai.types.admin.organization import (
1509+
AwsExternalStorageProvider,
1510+
AzureExternalStorageProvider,
1511+
ExternalStorageConfiguration,
1512+
ExternalStorageDeleted,
1513+
)
1514+
```
1515+
1516+
Methods:
1517+
1518+
- <code title="post /organization/external_storage">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">create</a>(\*\*<a href="src/openai/types/admin/organization/external_storage_create_params.py">params</a>) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1519+
- <code title="get /organization/external_storage/{external_storage_id}">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">retrieve</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1520+
- <code title="get /organization/external_storage">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">list</a>(\*\*<a href="src/openai/types/admin/organization/external_storage_list_params.py">params</a>) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">SyncCursorPage[ExternalStorageConfiguration]</a></code>
1521+
- <code title="delete /organization/external_storage/{external_storage_id}">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">delete</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_deleted.py">ExternalStorageDeleted</a></code>
1522+
- <code title="post /organization/external_storage/{external_storage_id}/validate">client.admin.organization.external_storage.<a href="./src/openai/resources/admin/organization/external_storage.py">validate</a>(external_storage_id) -> <a href="./src/openai/types/admin/organization/external_storage_configuration.py">ExternalStorageConfiguration</a></code>
1523+
15241524
### SpendLimit
15251525

15261526
Types:

‎api_reference/openapi.transformed.yml‎

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,30 @@ paths:
601601
schema:
602602
type: string
603603
format: binary
604+
audio/mpeg:
605+
schema:
606+
type: string
607+
format: binary
608+
audio/aac:
609+
schema:
610+
type: string
611+
format: binary
612+
audio/opus:
613+
schema:
614+
type: string
615+
format: binary
616+
audio/flac:
617+
schema:
618+
type: string
619+
format: binary
620+
audio/pcm:
621+
schema:
622+
type: string
623+
format: binary
624+
audio/wav:
625+
schema:
626+
type: string
627+
format: binary
604628
text/event-stream:
605629
schema:
606630
$ref: '#/components/schemas/CreateSpeechResponseStreamEvent'
@@ -694,7 +718,8 @@ paths:
694718
Transcribes audio into the input language.
695719

696720
Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
697-
format, or a stream of transcript events.
721+
format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
722+
events. Supported formats depend on the model.
698723
requestBody:
699724
required: true
700725
content:
@@ -715,6 +740,9 @@ paths:
715740
- $ref: '#/components/schemas/CreateTranscriptionResponseVerboseJson'
716741
discriminator:
717742
propertyName: task
743+
text/plain:
744+
schema:
745+
type: string
718746
text/event-stream:
719747
schema:
720748
$ref: '#/components/schemas/CreateTranscriptionResponseStreamEvent'
@@ -1271,6 +1299,9 @@ paths:
12711299
- $ref: '#/components/schemas/CreateTranslationResponseVerboseJson'
12721300
x-stainless-skip:
12731301
- go
1302+
text/plain:
1303+
schema:
1304+
type: string
12741305
'429':
12751306
$ref: '#/components/responses/InferenceRateLimited'
12761307
'503':

‎scripts/utils/validate-httpx2-wheel.py‎

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
HTTPX2_TEST = ROOT / "tests/test_httpx2.py"
1515
LEGACY_TEST = ROOT / "tests/test_httpx_compat.py"
1616
TLS_TEST = ROOT / "tests/test_tls_hostname.py"
17+
MULTIPART_TEST = ROOT / "tests/lib/test_audio_transcription_multipart.py"
1718

1819

1920
def venv_python(environment_path: Path) -> Path:
@@ -76,17 +77,38 @@ def run_case(
7677
check=True,
7778
)
7879

80+
test_environment = environment.copy()
81+
for name in list(test_environment):
82+
if name.startswith(("OPENAI_", "AZURE_OPENAI_")) or name in (
83+
"ALL_PROXY",
84+
"HTTPS_PROXY",
85+
"HTTP_PROXY",
86+
"all_proxy",
87+
"https_proxy",
88+
"http_proxy",
89+
):
90+
test_environment.pop(name)
91+
subprocess.run(
92+
[
93+
str(python),
94+
"-c",
95+
"from pathlib import Path; import openai, sysconfig; "
96+
"origin = Path(openai.__file__).resolve(); "
97+
"assert origin.is_relative_to(Path(sysconfig.get_path('purelib')).resolve()), origin",
98+
],
99+
cwd=directory,
100+
env=test_environment,
101+
check=True,
102+
)
103+
79104
if not legacy:
80105
subprocess.run(
81106
[str(python), "-c", "import importlib.util; assert importlib.util.find_spec('httpx') is None"],
82107
cwd=directory,
83-
env=environment,
108+
env=test_environment,
84109
check=True,
85110
)
86111

87-
test_environment = environment.copy()
88-
for name in ("ALL_PROXY", "HTTPS_PROXY", "HTTP_PROXY", "all_proxy", "https_proxy", "http_proxy"):
89-
test_environment.pop(name, None)
90112
if legacy:
91113
test_environment["OPENAI_TEST_LEGACY_HTTPX"] = "1"
92114
subprocess.run(
@@ -105,7 +127,7 @@ def main() -> None:
105127
validate_metadata(wheel)
106128

107129
common = ["pytest==9.0.3", "pytest-asyncio==1.4.0", "pygments==2.20.0"]
108-
run_case(wheel, extra=None, tests=[BASE_TEST, HTTPX2_TEST], dependencies=common)
130+
run_case(wheel, extra=None, tests=[BASE_TEST, HTTPX2_TEST, MULTIPART_TEST], dependencies=common)
109131
run_case(wheel, extra="aiohttp", tests=[BASE_TEST], dependencies=common)
110132
run_case(
111133
wheel,

‎src/openai/resources/admin/organization/__init__.py‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,6 @@
118118

119119
else:
120120
_EXPORTS = {
121-
"ExternalStorage": (".external_storage", "ExternalStorage"),
122-
"AsyncExternalStorage": (".external_storage", "AsyncExternalStorage"),
123-
"ExternalStorageWithRawResponse": (".external_storage", "ExternalStorageWithRawResponse"),
124-
"AsyncExternalStorageWithRawResponse": (".external_storage", "AsyncExternalStorageWithRawResponse"),
125-
"ExternalStorageWithStreamingResponse": (".external_storage", "ExternalStorageWithStreamingResponse"),
126-
"AsyncExternalStorageWithStreamingResponse": (".external_storage", "AsyncExternalStorageWithStreamingResponse"),
127121
"AuditLogs": (".audit_logs", "AuditLogs"),
128122
"AsyncAuditLogs": (".audit_logs", "AsyncAuditLogs"),
129123
"AuditLogsWithRawResponse": (".audit_logs", "AuditLogsWithRawResponse"),
@@ -172,6 +166,12 @@
172166
"AsyncDataRetentionWithRawResponse": (".data_retention", "AsyncDataRetentionWithRawResponse"),
173167
"DataRetentionWithStreamingResponse": (".data_retention", "DataRetentionWithStreamingResponse"),
174168
"AsyncDataRetentionWithStreamingResponse": (".data_retention", "AsyncDataRetentionWithStreamingResponse"),
169+
"ExternalStorage": (".external_storage", "ExternalStorage"),
170+
"AsyncExternalStorage": (".external_storage", "AsyncExternalStorage"),
171+
"ExternalStorageWithRawResponse": (".external_storage", "ExternalStorageWithRawResponse"),
172+
"AsyncExternalStorageWithRawResponse": (".external_storage", "AsyncExternalStorageWithRawResponse"),
173+
"ExternalStorageWithStreamingResponse": (".external_storage", "ExternalStorageWithStreamingResponse"),
174+
"AsyncExternalStorageWithStreamingResponse": (".external_storage", "AsyncExternalStorageWithStreamingResponse"),
175175
"SpendLimit": (".spend_limit", "SpendLimit"),
176176
"AsyncSpendLimit": (".spend_limit", "AsyncSpendLimit"),
177177
"SpendLimitWithRawResponse": (".spend_limit", "SpendLimitWithRawResponse"),
@@ -238,12 +238,6 @@ def __dir__() -> list[str]:
238238

239239

240240
__all__ = [
241-
"ExternalStorage",
242-
"AsyncExternalStorage",
243-
"ExternalStorageWithRawResponse",
244-
"AsyncExternalStorageWithRawResponse",
245-
"ExternalStorageWithStreamingResponse",
246-
"AsyncExternalStorageWithStreamingResponse",
247241
"AuditLogs",
248242
"AsyncAuditLogs",
249243
"AuditLogsWithRawResponse",
@@ -292,6 +286,12 @@ def __dir__() -> list[str]:
292286
"AsyncDataRetentionWithRawResponse",
293287
"DataRetentionWithStreamingResponse",
294288
"AsyncDataRetentionWithStreamingResponse",
289+
"ExternalStorage",
290+
"AsyncExternalStorage",
291+
"ExternalStorageWithRawResponse",
292+
"AsyncExternalStorageWithRawResponse",
293+
"ExternalStorageWithStreamingResponse",
294+
"AsyncExternalStorageWithStreamingResponse",
295295
"SpendLimit",
296296
"AsyncSpendLimit",
297297
"SpendLimitWithRawResponse",

0 commit comments

Comments
 (0)