22
33from __future__ import annotations
44
5- from typing import Dict , Optional
5+ from typing import Dict , Mapping , Optional , cast
66
77import httpx
88
99from ...types import dataset_generate_schema_params , dataset_generate_dataset_params , dataset_generate_validators_params
1010from ..._types import Body , Omit , Query , Headers , NotGiven , FileTypes , omit , not_given
11- from ..._utils import maybe_transform , async_maybe_transform
11+ from ..._utils import extract_files , maybe_transform , deepcopy_minimal , async_maybe_transform
1212from ..._compat import cached_property
1313from ..._resource import SyncAPIResource , AsyncAPIResource
1414from ..._response import (
@@ -137,10 +137,6 @@ def generate_schema(
137137 seed_description must be provided.
138138
139139 Args:
140- seed_description: The seed description to generate a schema from
141-
142- seed_file: The seed file to generate a schema from
143-
144140 extra_headers: Send extra headers
145141
146142 extra_query: Add additional query parameters to the request
@@ -149,15 +145,21 @@ def generate_schema(
149145
150146 timeout: Override the client-level default timeout for this request, in seconds
151147 """
148+ body = deepcopy_minimal (
149+ {
150+ "seed_description" : seed_description ,
151+ "seed_file" : seed_file ,
152+ }
153+ )
154+ files = extract_files (cast (Mapping [str , object ], body ), paths = [["seed_file" ]])
155+ # It should be noted that the actual Content-Type header that will be
156+ # sent to the server will contain a `boundary` parameter, e.g.
157+ # multipart/form-data; boundary=---abc--
158+ extra_headers = {"Content-Type" : "multipart/form-data" , ** (extra_headers or {})}
152159 return self ._post (
153160 "/datasets/generate-schema" ,
154- body = maybe_transform (
155- {
156- "seed_description" : seed_description ,
157- "seed_file" : seed_file ,
158- },
159- dataset_generate_schema_params .DatasetGenerateSchemaParams ,
160- ),
161+ body = maybe_transform (body , dataset_generate_schema_params .DatasetGenerateSchemaParams ),
162+ files = files ,
161163 options = make_request_options (
162164 extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
163165 ),
@@ -316,10 +318,6 @@ async def generate_schema(
316318 seed_description must be provided.
317319
318320 Args:
319- seed_description: The seed description to generate a schema from
320-
321- seed_file: The seed file to generate a schema from
322-
323321 extra_headers: Send extra headers
324322
325323 extra_query: Add additional query parameters to the request
@@ -328,15 +326,21 @@ async def generate_schema(
328326
329327 timeout: Override the client-level default timeout for this request, in seconds
330328 """
329+ body = deepcopy_minimal (
330+ {
331+ "seed_description" : seed_description ,
332+ "seed_file" : seed_file ,
333+ }
334+ )
335+ files = extract_files (cast (Mapping [str , object ], body ), paths = [["seed_file" ]])
336+ # It should be noted that the actual Content-Type header that will be
337+ # sent to the server will contain a `boundary` parameter, e.g.
338+ # multipart/form-data; boundary=---abc--
339+ extra_headers = {"Content-Type" : "multipart/form-data" , ** (extra_headers or {})}
331340 return await self ._post (
332341 "/datasets/generate-schema" ,
333- body = await async_maybe_transform (
334- {
335- "seed_description" : seed_description ,
336- "seed_file" : seed_file ,
337- },
338- dataset_generate_schema_params .DatasetGenerateSchemaParams ,
339- ),
342+ body = await async_maybe_transform (body , dataset_generate_schema_params .DatasetGenerateSchemaParams ),
343+ files = files ,
340344 options = make_request_options (
341345 extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
342346 ),
0 commit comments