6969 PdfRestFileID ,
7070 PdfRestInfoResponse ,
7171 SummarizePdfTextResponse ,
72+ TranslatePdfTextFileResponse ,
7273 TranslatePdfTextResponse ,
7374 UpResponse ,
7475)
75-
76- __all__ = ("AsyncPdfRestClient" , "PdfRestClient" )
77-
7876from .models ._internal import (
7977 BasePdfRestGraphicPayload ,
8078 BmpPdfRestPayload ,
122120 TranslateOutputFormat ,
123121)
124122
123+ __all__ = ("AsyncPdfRestClient" , "PdfRestClient" )
124+ FileResponseModel = TypeVar ("FileResponseModel" , bound = PdfRestFileBasedResponse )
125+
125126DEFAULT_BASE_URL = "https://api.pdfrest.com"
126127API_KEY_ENV_VAR = "PDFREST_API_KEY"
127128API_KEY_HEADER_NAME = "Api-Key"
@@ -986,11 +987,12 @@ def _post_file_operation(
986987 endpoint : str ,
987988 payload : dict [str , Any ],
988989 payload_model : type [BaseModel ],
990+ response_model : type [FileResponseModel ] = PdfRestFileBasedResponse ,
989991 extra_query : Query | None = None ,
990992 extra_headers : AnyMapping | None = None ,
991993 extra_body : Body | None = None ,
992994 timeout : TimeoutTypes | None = None ,
993- ) -> PdfRestFileBasedResponse :
995+ ) -> FileResponseModel :
994996 job_options = payload_model .model_validate (payload )
995997 json_body = job_options .model_dump (
996998 mode = "json" , by_alias = True , exclude_none = True , exclude_unset = True
@@ -1018,15 +1020,17 @@ def _post_file_operation(
10181020 for file_id in output_ids
10191021 ]
10201022
1021- return PdfRestFileBasedResponse .model_validate (
1022- {
1023- "input_id" : [str (file_id ) for file_id in raw_response .input_id ],
1024- "output_file" : [
1025- file .model_dump (mode = "json" , by_alias = True ) for file in output_files
1026- ],
1027- "warning" : raw_response .warning ,
1028- }
1029- )
1023+ response_payload : dict [str , Any ] = {
1024+ "input_id" : [str (file_id ) for file_id in raw_response .input_id ],
1025+ "output_file" : [
1026+ file .model_dump (mode = "json" , by_alias = True ) for file in output_files
1027+ ],
1028+ "warning" : raw_response .warning ,
1029+ }
1030+ if raw_response .model_extra :
1031+ response_payload .update (raw_response .model_extra )
1032+
1033+ return response_model .model_validate (response_payload )
10301034
10311035 def send_request (self , request : _RequestModel ) -> Any :
10321036 return self ._send_request (request )
@@ -1250,11 +1254,12 @@ async def _post_file_operation(
12501254 endpoint : str ,
12511255 payload : dict [str , Any ],
12521256 payload_model : type [BaseModel ],
1257+ response_model : type [FileResponseModel ] = PdfRestFileBasedResponse ,
12531258 extra_query : Query | None = None ,
12541259 extra_headers : AnyMapping | None = None ,
12551260 extra_body : Body | None = None ,
12561261 timeout : TimeoutTypes | None = None ,
1257- ) -> PdfRestFileBasedResponse :
1262+ ) -> FileResponseModel :
12581263 job_options = payload_model .model_validate (payload )
12591264 request = self .prepare_request (
12601265 "POST" ,
@@ -1290,15 +1295,17 @@ async def throttled_fetch_file_info(file_id: str) -> PdfRestFile:
12901295 )
12911296 )
12921297
1293- return PdfRestFileBasedResponse .model_validate (
1294- {
1295- "input_id" : [str (file_id ) for file_id in raw_response .input_id ],
1296- "output_file" : [
1297- file .model_dump (mode = "json" , by_alias = True ) for file in output_files
1298- ],
1299- "warning" : raw_response .warning ,
1300- }
1301- )
1298+ response_payload : dict [str , Any ] = {
1299+ "input_id" : [str (file_id ) for file_id in raw_response .input_id ],
1300+ "output_file" : [
1301+ file .model_dump (mode = "json" , by_alias = True ) for file in output_files
1302+ ],
1303+ "warning" : raw_response .warning ,
1304+ }
1305+ if raw_response .model_extra :
1306+ response_payload .update (raw_response .model_extra )
1307+
1308+ return response_model .model_validate (response_payload )
13021309
13031310 async def send_request (self , request : _RequestModel ) -> Any :
13041311 return await self ._send_request (request )
@@ -2334,7 +2341,7 @@ def translate_pdf_text_to_file(
23342341 extra_headers : AnyMapping | None = None ,
23352342 extra_body : Body | None = None ,
23362343 timeout : TimeoutTypes | None = None ,
2337- ) -> PdfRestFileBasedResponse :
2344+ ) -> TranslatePdfTextFileResponse :
23382345 """Translate textual content and receive a file-based response."""
23392346
23402347 payload : dict [str , Any ] = {
@@ -2356,6 +2363,7 @@ def translate_pdf_text_to_file(
23562363 extra_headers = extra_headers ,
23572364 extra_body = extra_body ,
23582365 timeout = timeout ,
2366+ response_model = TranslatePdfTextFileResponse ,
23592367 )
23602368
23612369 def extract_images (
@@ -3323,7 +3331,7 @@ async def translate_pdf_text_to_file(
33233331 extra_headers : AnyMapping | None = None ,
33243332 extra_body : Body | None = None ,
33253333 timeout : TimeoutTypes | None = None ,
3326- ) -> PdfRestFileBasedResponse :
3334+ ) -> TranslatePdfTextFileResponse :
33273335 """Translate textual content and receive a file-based response."""
33283336
33293337 payload : dict [str , Any ] = {
@@ -3345,6 +3353,7 @@ async def translate_pdf_text_to_file(
33453353 extra_headers = extra_headers ,
33463354 extra_body = extra_body ,
33473355 timeout = timeout ,
3356+ response_model = TranslatePdfTextFileResponse ,
33483357 )
33493358
33503359 async def extract_images (
0 commit comments