
    }-j;                     4   d dl Z d dlZd dlZd dlZd dlmZmZ d dlZddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z. dd	l/m0Z0m1Z1 dd
l2m3Z3m4Z4m5Z5m6Z6m7Z7  G d d          Z8dS )    N)OptionalUnion   )default_payload extract_api_message_from_payloadextract_job_idjob_id_for_taskjob_status_from_dataparse_batch_statusraise_for_statusresolve_document_modelresolve_document_optionsresolve_ocr_modelunwrap_api_responsevalidate_input_sourcevalidate_result_json_urlvalidate_state)	APIError	AuthErrorInvalidRequestErrorJobFailedErrorNetworkErrorPollTimeoutErrorRequestTimeoutErrorResponseFormatErrorResultParseError)DocParsingOptionsModel
OCROptions)&save_document_parsing_result_resourcessave_ocr_result_resourcessave_resource)BatchStatusDocParsingResultJob	JobStatus	OCRResult)API_PATHDEFAULT_BASE_URL)DEFAULT_INITIAL_INTERVALDEFAULT_MAX_INTERVALDEFAULT_MULTIPLIERparse_doc_parsing_resultparse_ocr_resultc                      e Zd ZdZ	 	 	 	 	 	 d9dee         dee         deded	ee         d
ee         fdZd Zd Z	d Z
d ZdefdZej        d             Zdddddej        fdee         dee         dee         dee         dee         deeef         defdZej        dddddfdeeef         dee         dee         dee         dee         dee         defdZdddddej        fdee         dee         dee         dee         dee         deeef         defdZej        dddddfdeeef         dee         dee         dee         dee         dee         defdZdedefdZdede fdZ!d dd!d"ed#ed$e"d%ee         def
d&Z#d d'd(ed#ed$e"de$fd)Z%d d'd(ed#ed$e"de$fd*Z&d+eeef         defd,Z'd+eeef         defd-Z(dedee         dee         dee         dee         defd.Z)	 	 d:deded/edee         dee         defd0Z*	 	 d:deded/edee         dee         defd1Z+dedefd2Z,dedefd3Z-d4ede$fd5Z.dede$fd6Z/d;d7Z0defd8Z1dS )<AsyncPaddleOCRClientzzAsync client for PaddleOCR API using aiohttp.

    Supports asyncio.gather for concurrent job submission and polling.
    N     r@     @tokenbase_urlrequest_timeoutpoll_timeouttimeoutclient_platformc                 r   |pt           j                            dd          | _        | j        st	          d          |p%t           j                            d          pt
          }|                    d          | _        | j         t           | _	        ||}|}|| _
        || _        || _        d | _        d S )NPADDLEOCR_ACCESS_TOKEN z=Token is required. Set PADDLEOCR_ACCESS_TOKEN or pass token=.PADDLEOCR_BASE_URL/)osenvironget_tokenr   r)   rstrip	_base_urlr(   	_jobs_url_request_timeout_poll_timeout_client_platform_session)selfr3   r4   r5   r6   r7   r8   resolved_base_urls           b/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddleocr/_api_client/async_client.py__init__zAsyncPaddleOCRClient.__init__M   s     Krz~~.FKK{ 	O   P
';<<P@P 	 +11#66 N6H66%O"L /) /    c                 >   K   |                                   d {V  | S N)_ensure_sessionrI   s    rK   
__aenter__zAsyncPaddleOCRClient.__aenter__h   s/      ""$$$$$$$$$rM   c                 >   K   |                                   d {V  d S rO   )close)rI   argss     rK   	__aexit__zAsyncPaddleOCRClient.__aexit__l   s,      jjllrM   c                    K   | j         Gt          j        |                                 t          j        | j                            | _         d S d S )Ntotal)headersr7   )rH   aiohttpClientSession_api_headersClientTimeoutrE   rQ   s    rK   rP   z$AsyncPaddleOCRClient._ensure_sessiono   sV      = #1))++-D4IJJJ  DMMM ! rM   c                 h   K   | j         r(| j                                          d {V  d | _         d S d S rO   )rH   rT   rQ   s    rK   rT   zAsyncPaddleOCRClient.closev   sK      = 	!-%%''''''''' DMMM	! 	!rM   returnc                 @    dd| j          i}| j        r
| j        |d<   |S )NAuthorizationzBearer zClient-Platform)rA   rG   )rI   rZ   s     rK   r]   z!AsyncPaddleOCRClient._api_headers{   s5    "$;dk$;$;<  	?)-)>G%&rM   c                D  K   	 dW V  dS # t           j        $ r}t          d|           |d}~wt          $ re}t	          |t
          t          t          t          t          t          t          t          t          t          f
          r t          d|           |d}~ww xY w)z7Wraps an async block with unified error classification.NzRequest timed out: zConnection failed: )asyncioTimeoutErrorr   	Exception
isinstancer   r   r   FileNotFoundErrorr   r   r   r   r   )rI   es     rK   _request_scopez#AsyncPaddleOCRClient._request_scope   s      	AEEEEEE# 	H 	H 	H%&?A&?&?@@aG 	A 	A 	A'%''$$"    8Q8899q@#	As    B-BA BBfile_url	file_pathoptionspage_rangesbatch_idmodelc                    K   t          |          }|                     ||||||           d {V }|                     |           d {V }t          ||          S rO   )r   _submit_poll_until_doner.   )	rI   rk   rl   rm   rn   ro   rp   job_id
jsonl_datas	            rK   ocrzAsyncPaddleOCRClient.ocr   s       "%((||
 
 
 
 
 
 
 
  0088888888

333rM   c                    K   t          |          }t          ||          }|                     ||||||           d {V }|                     |           d {V }t	          ||          S rO   )r   r   rr   rs   r-   )	rI   rp   rk   rl   rm   rn   ro   rt   ru   s	            rK   parse_documentz#AsyncPaddleOCRClient.parse_document   s       'u--*5'::||8Yh
 
 
 
 
 
 
 
  0088888888
'
;;;rM   c                    K   t          |          }|                     ||||||           d {V }t          ||j        d          S )Nrv   rt   rp   task)r   rr   r%   value)rI   rk   rl   rm   rn   ro   rp   rt   s           rK   
submit_ocrzAsyncPaddleOCRClient.submit_ocr   sq       "%((||
 
 
 
 
 
 
 
 &%@@@@rM   c                    K   t          |          }t          ||          }|                     ||||||           d {V }t          ||j        d          S )Ndocument_parsingrz   )r   r   rr   r%   r|   )rI   rp   rk   rl   rm   rn   ro   rt   s           rK   submit_document_parsingz,AsyncPaddleOCRClient.submit_document_parsing   s|       'u--*5'::||8Yh
 
 
 
 
 
 
 
 &:LMMMMrM   rt   c                    K   |                                   d {V  |                     |           d {V }t          ||          S rO   )rP   _get_job_statusr
   )rI   rt   datas      rK   
get_statuszAsyncPaddleOCRClient.get_status   s_      ""$$$$$$$$$))&11111111#FD111rM   c                    K   |                                   d {V  |                     |           d {V }t          ||          S rO   )rP   _get_batch_statusr   )rI   ro   r   s      rK   get_batch_statusz%AsyncPaddleOCRClient.get_batch_status   s_      ""$$$$$$$$$++H55555555!(D111rM   F)	overwritefilenameresource_urldestinationr   r   c                Z   K   t          j        t          ||||| j                   d {V S )N)r   r   r7   )rd   	to_threadr"   rE   )rI   r   r   r   r   s        rK   r"   z"AsyncPaddleOCRClient.save_resource   sU       &)
 
 
 
 
 
 
 
 
 	
rM   )r   resultc                X   K   t          j        t          |||| j                   d {V S N)r   r7   )rd   r   r!   rE   rI   r   r   r   s       rK   r!   z.AsyncPaddleOCRClient.save_ocr_result_resources   sR       &%)
 
 
 
 
 
 
 
 
 	
rM   c                X   K   t          j        t          |||| j                   d {V S r   )rd   r   r    rE   r   s       rK   r    z;AsyncPaddleOCRClient.save_document_parsing_result_resources  sR       &2)
 
 
 
 
 
 
 
 
 	
rM   jobc                 |   K   t          |d          }|                     |           d {V }t          ||          S )Nrv   )r	   rs   r.   rI   r   rt   ru   s       rK   wait_ocr_resultz$AsyncPaddleOCRClient.wait_ocr_result  sJ       e,,0088888888

333rM   c                 |   K   t          |d          }|                     |           d {V }t          ||          S )Nr   )r	   rs   r-   r   s       rK   wait_document_parsing_resultz1AsyncPaddleOCRClient.wait_document_parsing_result#  sM       !&8990088888888
'
;;;rM   c                 <  K   t          ||           |                                  d {V  |r|                                nt          |          }|r%|                     |j        ||||           d {V S |                     |j        ||||           d {V S )N)rn   ro   )r   rP   
to_payloadr   _submit_urlr|   _submit_file)rI   rp   rk   rl   rm   rn   ro   payloads           rK   rr   zAsyncPaddleOCRClient._submit*  s      	h	222""$$$$$$$$$*1M'$$&&&u7M7M 	))'! *          &&K# ' 
 
 
 
 
 
 
 
 	
rM   r   c                   K   |||d}|||d<   |||d<   |                                  4 d {V  | j                            | j        |ddi          4 d {V 	 }|                     |           d {V  |                     |           d {V }t          |          cd d d           d {V  cd d d           d {V  S # 1 d {V swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S )N)fileUrlrp   optionalPayload
pageRangesbatchIdzContent-Typezapplication/json)jsonrZ   )rj   rH   postrD   _raise_for_response_response_datar   )	rI   rp   rk   r   rn   ro   bodyrespr   s	            rK   r   z AsyncPaddleOCRClient._submit_urlF  s       &
 

 "!,D&DO&&(( 	, 	, 	, 	, 	, 	, 	, 	,}))');< *   , , , , , , , , ..t444444444!0066666666%d++, , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s6   +C,AC"C,
C	C,C	C,,
C69C6c                   K   t           j                            |          st          |          t	          j                    }|                    d|           |                    dt          j        |                     ||                    d|           ||                    d|           t          |d          5 }|
                                }d d d            n# 1 swxY w Y   |                    d|t           j                            |                     |                                 4 d {V  | j                            | j        |          4 d {V }	|                     |	           d {V  |                     |	           d {V }
t%          |
          cd d d           d {V  cd d d           d {V  S # 1 d {V swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S )	Nrp   r   r   r   rbfile)r   )r   )r>   pathexistsrh   r[   FormData	add_fieldr   dumpsopenreadbasenamerj   rH   r   rD   r   r   r   )rI   rp   rl   r   rn   ro   formf	file_datar   r   s              rK   r   z!AsyncPaddleOCRClient._submit_filea  s      w~~i(( 	/#I...!!w&&&($*W*=*=>>>"NN<555NN9h///)T"" 	!aI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!W%%i00 	 	
 	
 	

 &&(( 	, 	, 	, 	, 	, 	, 	, 	,}))$.t)DD , , , , , , ,..t444444444!0066666666%d++, , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sI   C##C'*C'=(G4%AG*G4
G	G4G	G44
G>G>c                   K   |                                  4 d {V  | j                            | j         d|           4 d {V }|                     |           d {V  |                     |           d {V cd d d           d {V  cd d d           d {V  S # 1 d {V swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr=   rj   rH   r@   rD   r   r   )rI   rt   r   s      rK   r   z$AsyncPaddleOCRClient._get_job_status  s<     &&(( 	7 	7 	7 	7 	7 	7 	7 	7}((DN)E)EV)E)EFF 7 7 7 7 7 7 7$..t444444444!00666666667 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	75   +C6B#>C#
B-	-C0B-	1C
CCc                   K   |                                  4 d {V  | j                            | j         d|           4 d {V }|                     |           d {V  |                     |           d {V cd d d           d {V  cd d d           d {V  S # 1 d {V swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nz/batch/r   )rI   ro   r   s      rK   r   z&AsyncPaddleOCRClient._get_batch_status  s=     &&(( 	7 	7 	7 	7 	7 	7 	7 	7}((DN)M)M8)M)MNN 7 7 7 7 7 7 7RV..t444444444!00666666667 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7r   urlc                 (  K   |                                  4 d {V  t          j        | j                  }t          j        |          4 d {V }|                    |          4 d {V }|                     |           d {V  |                                 d {V }	 |                                	                    d          }d |D             cd d d           d {V  cd d d           d {V  cd d d           d {V  S # t          j        $ r}t          d|           |d }~ww xY w# 1 d {V swxY w Y   	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )NrX   )r7   
c                 ^    g | ]*}|                                 t          j        |          +S  )stripr   loads).0lines     rK   
<listcomp>z5AsyncPaddleOCRClient._fetch_jsonl.<locals>.<listcomp>  s/    SSSTdjjllS
4 0 0SSSrM   z Malformed JSONL result payload: )rj   r[   r^   rE   r\   r@   r   textr   splitr   JSONDecodeErrorr   )rI   r   r7   bare_sessionr   r   linesri   s           rK   _fetch_jsonlz!AsyncPaddleOCRClient._fetch_jsonl  s     &&(( 	! 	! 	! 	! 	! 	! 	! 	!+$2GHHHG,W=== 
! 
! 
! 
! 
! 
! 
!'++C00 	! 	! 	! 	! 	! 	! 	!D224888888888!%,,,,,,D! $

 2 24 8 8SSUSSS	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!  / ! ! !.BqBB  !!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s}   6FE/6D9&2DE*FD6	D1	1D6	6D99
EEEEF
E'	'F*E'	+F
FFc                   K   t           }t          j                    }|                                }|| j        z   }	 |                                }||k    rt          |||z
            |                     |           d {V }t          |          }|dk    r*t          |          }	| 	                    |	           d {V S |dk    r&|
                    dd          }
t          ||
          ||                                z
  }|dk    r%t          ||                                |z
            t          j        t          ||                     d {V  t          |t          z  t                    }<)NTdonefailederrorMsgzUnknown errorr   )r*   rd   get_running_looptimerF   r   r   r   r   r   r@   r   sleepminr,   r+   )rI   rt   intervalloopstartdeadlinenowr   statejson_url	error_msg	remainings               rK   rs   z%AsyncPaddleOCRClient._poll_until_done  s     +'))		4--	P))++Ch&vsU{;;;--f55555555D"4((E3D99!..x888888888   HHZAA	$VY777 499;;.IA~~&vtyy{{U/BCCC-Hi 8 89999999998&88:NOOH)	PrM   c                 r  K   d|j         cxk    rdk     rn nd S 	 |                                 d {V }t          |t                    rt	          |          nd }|s|                                 d {V }n*# t          $ r |                                 d {V }Y nw xY wt          |j         |           d S )N   i,  )statusr   rg   dictr   r   rf   r   )rI   r   r   msgs       rK   r   z(AsyncPaddleOCRClient._raise_for_response  s      $+#########F
	$$$$$$$D dD))0666 
  ( IIKK'''''' 	$ 	$ 	$		######CCC	$c*****s   AA8 8$BBc                    K   	 |                                  d {V }n%# t          $ r}t          d|           |d }~ww xY wt          ||j                  S )Nz!Response body is not valid JSON: )r   rf   r   r   r   )rI   r   r   ri   s       rK   r   z#AsyncPaddleOCRClient._response_data  s|      	V IIKK''''''GG 	V 	V 	V%&M!&M&MNNTUU	V"7DK888s    
A<A)NNr1   r2   NN)NN)r`   N)2__name__
__module____qualname____doc__r   strfloatrL   rR   rV   rP   rT   r   r]   
contextlibasynccontextmanagerrj   r   PP_OCRV5r   r   r'   rv   PADDLE_OCR_VL_16r   r$   rx   r%   r}   r   r&   r   r#   r   boolr"   listr!   r    r   r   rr   r   r   r   r   r   rs   r   r   r   rM   rK   r0   r0   G   s          $"&!&##')- } 3- 	
  % "#   6      ! ! !
d     #A A $#A6 #'#'(,%)"&#(>4 43-4 C=4 *%	4
 c]4 3-4 UCZ 4 
4 4 4 4. $)#9"&#'/3%)"&< <UCZ < 3-< C=	<
 +,< c]< 3-< 
< < < <& #'#'(,%)"&#(>A A3-A C=A *%	A
 c]A 3-A UCZ A 
A A A A, $)#9"&#'/3%)"&N NUCZ N 3-N C=	N
 +,N c]N 3-N 
N N N N 2s 2y 2 2 2 2
2s 2{ 2 2 2 2  "&
 
 

 

 
 3-
 

 
 
 
,  
 
 

 

 
 

 
 
 
(  
 
 
 
 

 
 

 
 
 
4sCx 4Y 4 4 4 4
<c?<	< < < <

 3-
 C=	
 c]
 3-
 

 
 
 
B &*"&, ,, , 	,
 c], 3-, 
, , , ,@ &*"&, ,, , 	,
 c], 3-, 
, , , ,>7C 7D 7 7 7 77 7 7 7 7 7!c !d ! ! ! !PS PT P P P P8+ + + + 9D 9 9 9 9 9 9rM   r0   )9rd   r   r   r>   typingr   r   r[   _corer   r   r   r	   r
   r   r   r   r   r   r   r   r   r   errorsr   r   r   r   r   r   r   r   r   modelsr   r   r   
_resourcesr    r!   r"   resultsr#   r$   r%   r&   r'   _httpr(   r)   _pollerr*   r+   r,   r-   r.   r0   r   rM   rK   <module>r      s         				 " " " " " " " "                                 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
         
         
 N M M M M M M M M M M M M M - - - - - - - -             E9 E9 E9 E9 E9 E9 E9 E9 E9 E9rM   