1
1
from typing import Union , Dict , BinaryIO
2
- from io import BufferedReader
2
+ import os
3
3
4
4
from taskingai .client .models import FileIdData , UploadFilePurpose , UploadFileResponse
5
5
from taskingai .client .utils import get_api_client
@@ -16,14 +16,25 @@ def __prepare_files(file: BinaryIO, purpose: Union[UploadFilePurpose, str]) -> D
16
16
:param purpose: The purpose of the upload, either as a string or UploadFilePurpose enum.
17
17
:return: A dictionary formatted for the API call.
18
18
"""
19
- if not isinstance (file , BufferedReader ):
20
- raise ValueError ("Unsupported file type: Expected a BufferedReader " )
19
+ if not hasattr (file , "read" ):
20
+ raise ValueError ("Unsupported file type: Expected a file-like object with a read method " )
21
21
22
- file_bytes = file .read ()
23
- file_name = file .name
22
+ try :
23
+ file_bytes = file .read ()
24
+ except Exception as e :
25
+ raise ValueError (f"Error reading file: { e } " )
26
+
27
+ file_name = os .path .basename (file .name )
24
28
25
29
if isinstance (purpose , str ):
26
- purpose = UploadFilePurpose (purpose )
30
+ try :
31
+ purpose = UploadFilePurpose (purpose )
32
+ except ValueError :
33
+ raise ValueError (f"Invalid purpose value: { purpose } " )
34
+
35
+ if not isinstance (purpose , UploadFilePurpose ):
36
+ raise ValueError ("Purpose must be an instance of UploadFilePurpose or a valid string" )
37
+
27
38
return {
28
39
"file" : (file_name , file_bytes , "application/octet-stream" ),
29
40
"purpose" : (None , str (purpose .value )),
0 commit comments