|
36 | 36 | DOWNLOAD_MAX_RETRY_DELAY, |
37 | 37 | MULTIPART_UPLOAD_TIMEOUT, |
38 | 38 | DOWNLOAD_INITIAL_RETRY_DELAY, |
| 39 | + MULTIPART_UPLOAD_WRITE_TIMEOUT, |
39 | 40 | ) |
40 | 41 | from ..._resource import SyncAPIResource, AsyncAPIResource |
41 | 42 | from ..types.error import DownloadError, FileTypeError |
@@ -602,11 +603,15 @@ def _upload_single_part(self, part_info: Dict[str, Any], part_data: bytes) -> st |
602 | 603 |
|
603 | 604 | part_headers = part_info.get("Headers", {}) |
604 | 605 |
|
| 606 | + timeout = httpx.Timeout( |
| 607 | + MULTIPART_UPLOAD_TIMEOUT, |
| 608 | + write=MULTIPART_UPLOAD_WRITE_TIMEOUT, |
| 609 | + ) |
605 | 610 | response = self._client._client.put( |
606 | 611 | url=upload_url, |
607 | 612 | content=part_data, |
608 | 613 | headers=part_headers, |
609 | | - timeout=MULTIPART_UPLOAD_TIMEOUT, |
| 614 | + timeout=timeout, |
610 | 615 | ) |
611 | 616 | response.raise_for_status() |
612 | 617 |
|
@@ -670,7 +675,7 @@ def _abort_upload(self, url: str, upload_id: str, file_id: str) -> None: |
670 | 675 |
|
671 | 676 | self._client.post( |
672 | 677 | path=f"{url}/multipart/abort", |
673 | | - cast_to=dict, |
| 678 | + cast_to=httpx.Response, |
674 | 679 | body=payload, |
675 | 680 | options={"headers": {"Content-Type": "application/json"}}, |
676 | 681 | ) |
@@ -1003,12 +1008,16 @@ def _upload_single_part_sync(self, part_info: Dict[str, Any], part_data: bytes) |
1003 | 1008 |
|
1004 | 1009 | part_headers = part_info.get("Headers", {}) |
1005 | 1010 |
|
| 1011 | + timeout = httpx.Timeout( |
| 1012 | + MULTIPART_UPLOAD_TIMEOUT, |
| 1013 | + write=MULTIPART_UPLOAD_WRITE_TIMEOUT, |
| 1014 | + ) |
1006 | 1015 | with httpx.Client() as client: |
1007 | 1016 | response = client.put( |
1008 | 1017 | url=upload_url, |
1009 | 1018 | content=part_data, |
1010 | 1019 | headers=part_headers, |
1011 | | - timeout=MULTIPART_UPLOAD_TIMEOUT, |
| 1020 | + timeout=timeout, |
1012 | 1021 | ) |
1013 | 1022 | response.raise_for_status() |
1014 | 1023 |
|
@@ -1068,7 +1077,7 @@ async def _abort_upload(self, url: str, upload_id: str, file_id: str) -> None: |
1068 | 1077 |
|
1069 | 1078 | await self._client.post( |
1070 | 1079 | path=f"{url}/multipart/abort", |
1071 | | - cast_to=dict, |
| 1080 | + cast_to=httpx.Response, |
1072 | 1081 | body=payload, |
1073 | 1082 | options={"headers": {"Content-Type": "application/json"}}, |
1074 | 1083 | ) |
|
0 commit comments