o
    1j,                     @   s  U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZmZmZmZmZ d dlmZmZ d dlZd dlZd dlZd dlmZ d dlmZmZm Z m!Z! ddl"m#Z#m$Z$ dd	l%m&Z& d
dl'm(Z( ddl)m*Z*m+Z+m,Z, e$drd dl-Z-e$drd dl.Z.e$drd dl/Z/e$drd dl0Z1e$drd dl2Z2g dZ3ed Z4e e5d< dZ6e7e5d< G dd de8Z9dddej:dee7 ddfddZ;d ee<e<f de7ddfd!d"Z=ed#Z>ed$Z?de@fd%d&ZAd'e@deBfd(d)ZCd*e@dee4 fd+d,ZDe#dd-e@dee@ fd.d/ZEe#dd0eFdej:fd1d2ZGd0eFdejfd3d4ZHdddejd6e@deFfd7d8ZIe#ddedej:d:e@deFfd;d<ZJd0eFdejKfd=d>ZLd?ejKdeFfd@dAZMd0eFde@fdBdCZNe#dd	dfdDeFdEee7 deeej: e+f fdFdGZOedHdIdJeFdKedL dEee7 deeej: e*f fdMdNZPedHdIdJeFdKedO dEee7 deeej: e+f fdPdNZPedHdIdJeFdKedQ dEee7 deeeej: e*f eeej: e+f f fdRdNZPddIdJeFdKedQ dEee7 deeeej: e*f eeej: e+f f fdSdNZPdej:de*fdTdUZQdJeFdVe@de@fdWdXZRd-e@deFfdYdZZSe#ddd-e@d[d\deFfd]d^ZTd_ee>e?f d`e>jUdae>jVdee? fdbdcZWdS )g    N)partial)	AwaitableCallableListOptionalTupleTypeVarUnionoverload)parse_qsurlparse)Image)Literal	ParamSpec	TypeAliasassert_never   )function_requires_depsis_dep_available)PDF_RENDER_SCALE   )pdfium_lock   )	ImageInfoPDFInfoPDFPageInfoaiohttpzopencv-contrib-pythonfiletype	pypdfium2yarl)FileTypeMAX_IMAGE_PIXELSImageTooLargeErrorgenerate_log_idis_urlinfer_file_typeinfer_file_extimage_bytes_to_arrayimage_bytes_to_imageimage_to_bytesimage_array_to_bytescsv_bytes_to_data_framedata_frame_to_bytesbase64_encoderead_pdffile_to_imagesget_image_infowrite_to_temp_fileget_raw_bytesget_raw_bytes_async
call_async)IMAGEPDFVIDEOAUDIOr    i
r!   c                       s\   e Zd ZdZdddedddedee dee dee ded	ee d
df fddZ  Z	S )r"   zDRaised when decoded image height * width exceeds `MAX_IMAGE_PIXELS`.Nwidthheightpixel_count
max_pixels
page_indexmessager:   r;   r<   r=   r>   returnc                   s.   t  | || _|| _|| _|| _|| _d S N)super__init__r:   r;   r<   r=   r>   )selfr?   r:   r;   r<   r=   r>   	__class__ f/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/serving/infra/utils.pyrC   Q   s   

zImageTooLargeError.__init__)
__name__
__module____qualname____doc__r!   strr   intrC   __classcell__rG   rG   rE   rH   r"   N   s,    	r"   r>   imager>   r@   c             	   C   s   | j dk rd S t| jd t| jd }}|| }|tkrCd| d| d| dt d	}|d ur9d	| d
| }t||||t|dd S )N   r   r   zImage pixel count z (width=	, height=z) exceeds maximum allowed .	PDF page z: r9   )ndimrN   shaper!   r"   )rQ   r>   hwpixelsmsgrG   rG   rH   ensure_image_pixel_limitc   s(   
r\   	page_sizec          	      C   s   t | d t | d }}|t | t }|tkrKtt|t }tt|t }|| }d| d| d| d| dt d}t||||t|d	d S )
Nr   r   rU   z: Estimated render size width=rS   z (pixel count z) would exceed maximum allowed rT   r9   )floatr   r!   rN   mathceilr"   )	r]   r>   Zw_pdfZh_pdfrZ   Zw_pxZh_pxZestr[   rG   rG   rH   *_ensure_pdf_page_pixel_limit_before_render{   s*   ra   PRc                   C   s   t t S rA   )rM   uuiduuid4rG   rG   rG   rH   r#      s   r#   sc                 C   s:   |  ds|  dsdS t| }t|j|jgo|jdv S )Nzhttp://zhttps://F)httphttps)
startswithr   allschemenetloc)rf   resultrG   rG   rH   r$      s   r$   urlc                 C   s   t | }|jdd }t|d }|d u rRtd|jd u}|rL|jrLt	|j}d|v rLt
|d dkrLtd|d d }|rLt|dd }|d u rRd S |drYd	S |d
kr_dS |drfdS |drmdS d S )N/r   z\w+\.bcebos\.comZresponseContentDispositionr   zattachment;filename=(.*)zimage/r5   zapplication/pdfr6   zvideo/r7   zaudio/r8   )r   pathsplit	mimetypes
guess_typere	fullmatchrl   queryr   lenmatchgroupri   )rn   	url_partsfilename	file_typeZ
is_bos_urlparamsZmatch_rG   rG   rH   r%      s2   




r%   filec                 C   s\   t | r"t| }|jdd }t|d }|d u rd S t|S t| }dt	| S )Nro   rp   r   rT   )
r$   r   rq   rr   rs   rt   guess_extensionbase64	b64decoder   )r   r{   r|   Z	mime_typebytes_rG   rG   rH   r&      s   

r&   datac                 C   s4   t t| tjt j}|d u rtdt| |S )NzFailed to decode image bytes)cv2ZimdecodenpZ
frombufferZuint8ZIMREAD_COLOR
ValueErrorr\   )r   ZarrrG   rG   rH   r'      s
   r'   c                 C   s   t t| S rA   )r   openioBytesIOr   rG   rG   rH   r(         r(   JPEGformatc                 C   sD   t  }| j||d | }W d    |S 1 sw   Y  |S )N)r   )r   r   savegetvalue)rQ   r   fZ	img_bytesrG   rG   rH   r)      s   


r)   .jpgextc                 C   s   t || d } |  S )Nr   )r   Zimencodetobytes)rQ   r   rG   rG   rH   r*      s   r*   c                 C   s@   t | d}t|}W d    |S 1 sw   Y  |S Nzutf-8)r   StringIOdecodepdZread_csv)r   r   dfrG   rG   rH   r+      s   
r+   r   c                 C   s   |   dS r   )Zto_csvencode)r   rG   rG   rH   r,      s   r,   c                 C   s   t | dS )Nascii)r   	b64encoder   r   rG   rG   rH   r-      r   r-   r   max_num_imgsc              
   C   s"  g }g }t w t| }|  z`d}|D ]U}zN|d ur)t||kr)W |   nB|d7 }| }t||d t}d}	|j	||	d
 }
t|
|d ||
 t|
jd |
jd d}|| W |  q|  w W |  n|  w W d    n1 sw   Y  tt||d}||fS )Nr   r   rP   )scaleZrotationr:   r;   )ZnumPagesZpages)r   pdfiumZPdfDocumentZ
init_formsrx   closeget_sizera   r   renderZto_numpyr\   appendr   rW   r   )r   r   imagesZpage_info_listdocZpage_numberpager]   ZzoomdegrQ   Z	page_infoZpdf_inforG   rG   rH   r.     sH   

r.   .r   
file_bytesr}   r5   c                C      d S rA   rG   r   r}   r   rG   rG   rH   r/   ,     r/   r6   c                C   r   rA   rG   r   rG   rG   rH   r/   5  r   )r5   r6   c                C   r   rA   rG   r   rG   rG   rH   r/   >  r   c                C   sV   |dkrt | g}t|d }||fS |dkr#t| |d\}}||fS t| ||fS )Nr5   r   r6   r   )r'   r0   r.   r   )r   r}   r   r   	data_inforG   rG   rH   r/   G  s   
c                 C   s   t | jd | jd dS )Nr   r   r   )r   rW   )rQ   rG   rG   rH   r0   W  s   r0   suffixc                 C   sD   t jd|dd}||  |jW  d    S 1 sw   Y  d S )NwbF)r   delete)tempfileNamedTemporaryFilewritename)r   r   r   rG   rG   rH   r1   [  s   
$r1   c                 C   s.   t | rtj| dd}|  |jS t| S )N   )timeout)r$   requestsgetraise_for_statuscontentr   r   )r   resprG   rG   rH   r2   a  s
   
r2   sessionzaiohttp.ClientSessionc              	      sn   t | r2|tj| dd4 I d H }| I d H W  d   I d H  S 1 I d H s+w   Y  d S t| S )NT)encoded)r$   r   r   URLreadr   r   )r   r   r   rG   rG   rH   r3   j  s   0
r3   funcargskwargsc                O   s"   t  d t| g|R i |S rA   )asyncioZget_running_loopZrun_in_executorr   )r   r   r   rG   rG   rH   r4   s  s   r4   )r   )r   rA   )Xr   r   r   r_   rs   ru   r   rd   	functoolsr   typingr   r   r   r   r   r   r	   r
   urllib.parser   r   numpyr   Zpandasr   r   ZPILr   Ztyping_extensionsr   r   r   r   Z
utils.depsr   r   Zutils.flagsr   Zutils.pdfium_lockr   modelsr   r   r   r   r   r   r   r   r   __all__r    __annotations__r!   rN   	Exceptionr"   Zndarrayr\   r^   ra   rb   rc   rM   r#   boolr$   r%   r&   bytesr'   r(   r)   r*   Z	DataFramer+   r,   r-   r.   r/   r0   r1   r2   r3   r   r   r4   rG   rG   rG   rH   <module>   s  
(


$(&&
	
