o
    1j                     @   s   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g dZG dd de	Z
dd Zdd Zd	d
 Zdd Zdd ZdddZdddZ	dddZdS )    N)downloadextractdownload_and_extractc                       s,   e Zd ZdZd fdd	Zd	ddZ  ZS )
_ProgressPrinterZProgressPrinter皙?c                    s   t    d| _|| _d S )Nr   )super__init__
_last_time_flush_intvl)selfZflush_interval	__class__ W/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/utils/download.pyr      s   

z_ProgressPrinter.__init__Fc                 C   sT   |r	|d7 }d| _ t | j  | jkr(tjd|  t | _ tj  dS dS )print
r   N)r	   timer
   sysstderrwriteflush)r   Zstr_endr   r   r   r   $   s   
z_ProgressPrinter.print)r   )F)__name__
__module____qualname____doc__r   r   __classcell__r   r   r   r   r      s    r   c           
      C   s  |rt d|  dtjd tj| ddd}|  |jd}|d u rAt|d}t	|j
| W d    n1 s;w   Y  n}t|dV}d	}t|}|rat }t d
tj| dtjd |jddD ]-}|t|7 }|| |rtd| | }	| dd|	 ddtd| | dd qgW d    n1 sw   Y  |r|j ddddddddd W d    d S W d    d S W d    d S 1 sw   Y  d S )NzConnecting to z ...fileT   )streamtimeoutzcontent-lengthwbr   zDownloading i   )
chunk_size2   [=<50s] d   .2f%2==================================================r   )r   r   r   requestsgetraise_for_statusheadersopenshutilcopyfileobjrawintr   ospathbasenameiter_contentlenr   float)
url	save_pathprint_progressrtotal_lengthfdlprinterdatadoner   r   r   	_download/   sJ   
$" "rH   c                 c   sl    t | d%}| }t|}t|D ]\}}||| ||fV  qW d   dS 1 s/w   Y  dS )zextract zip filerA   N)zipfileZipFilenamelistr<   	enumerater   )	file_pathextd_dirrC   	file_list	total_numindexr   r   r   r   _extract_zip_fileQ   s   "rR   c              
   c   s    zNt | d=}| }t|}t|D ]&\}}z||| W n ty5   td| dtj	d Y nw ||fV  qW d   W dS 1 sHw   Y  W dS  t
yl } ztd| tj	d W Y d}~dS d}~ww )zextract tar filezr:*zFile z not found in the archive.r   NzAn error occurred: )tarfiler3   getnamesr<   rL   r   KeyErrorr   r   r   	Exception)rM   rN   rC   rO   rP   rQ   r   er   r   r   _extract_tar_file[   s$   &	"rX   c              	   C   s   |rt  }tdtj|  tjd t| rt	}nt
| r#t}ntd|| |D ]&\}}|rRtdt| | }|dd| ddtd	| | d
d q,|rg|jddddd	d
ddd dS dS )r   zExtracting r   zUnsupported file format.r%   r&   r'   r(   r)   r*   r+   r,   r-   Tr.   N)r   r   r8   r9   r:   r   r   rI   
is_zipfilerR   rS   
is_tarfilerX   RuntimeErrorr7   r=   )rM   rN   r@   rE   handlerrP   rQ   rG   r   r   r   _extractk   s    

,$r]   c                 C   s8   t j| rt j| rt|  dS t |  dS dS )removeN)r8   r9   existsisdirr4   rmtreer^   )r9   r   r   r   _remove_if_exists   s
   rb   TFc                 C   sD   t jt j|dd |rt| t j|s t| ||d dS dS )r   Texist_okr@   N)r8   makedirsr9   dirnamerb   r_   rH   )r>   r?   r@   	overwriter   r   r   r      s   r   c                 C   s   t | ||dS )r   re   )r]   )rM   rN   r@   r   r   r   r      s   r   c                 C   s  t j|dd t j||}|rt| t j|st }t j|| dd }t j	|d }	t
| ||d t j|d}
t||
|d |rt |
}t|dkrZ|d }n|}t j|
|}t j|sktt j||}t j|rtj||dd	 nt|| |}nt|
|	 |	}t j|rt j||st|| W d
   d
S W d
   d
S 1 sw   Y  d
S d
S )zdownload and extractTrc   /r   re   r      )symlinksN)r8   rf   r9   joinrb   r_   tempfileTemporaryDirectorysplitsplitextrH   r]   listdirr<   FileNotFoundErrorr`   r4   copytreecopyfilesamefilemove)r>   save_dirZdst_namer@   rh   Zno_interm_dirZdst_pathtdZarc_file_pathrN   Ztmp_extd_dirZ
file_names	file_namespZdpZ	extd_filer   r   r   r      sD   


"r   )TF)T)TFT)r8   r4   r   rS   rn   r   rI   r/   __all__objectr   rH   rR   rX   r]   rb   r   r   r   r   r   r   r   <module>   s&   "

	
	