a
    DfX                     @   s   d 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ZddlZdddZ	ddd	Z
dddZddeedddZdddZdddZdS )z
Download utils
    N)PathTc              	   C   sh   zFt | } tj| }t|j|jgs*J |rBtj| 	 dkndW S  t
tjjfyb   Y dS 0 d S )N   TF)strurllibparseurlparseallschemenetlocrequesturlopengetcodeAssertionError	HTTPError)urlcheckresult r   E/data/NAS7/SABIOD/METHODE/ermites/yolo-dyni/yolov5/utils/downloads.pyis_url   s    r    c                 C   s.   t jdd| gddd}|r*t| d S dS )NgsutilduTzutf-8)shellencodingr   )
subprocesscheck_outputintsplit)r   outputr   r   r   gsutil_getsize   s    r    &https://ultralytics.com/images/bus.jpgc                 C   s    t j| dd}t|jddS )NT)allow_redirectszcontent-length)requestsheadr   headersget)r   responser   r   r   url_getsize#   s    r)   F)silent)r*   returnc                C   s<   |rdnd}t ddd| d| d|dd	d
dg
}|jdkS )z>
    Download a file from a url to a filename using curl.
    ZsSr   curlz-#-Lz--outputz--retry9z-Cr   )r   run
returncode)r   filenamer*   Zsilent_optionprocr   r   r   curl_download)   s    
r4         ?c                 C   s  ddl m} t| } d|  d| }zzX|d| d|  d tjj|t| |jt	j
kd |  rv|  j|ks~J |W nd ty } zL|  r|   |d	| d
|p| d|  d t|p||  W Y d }~n
d }~0 0 W |  r|  j|k r*|  r|   |d	| d|  |d nN|  rP|  j|k rx|  rb|   |d	| d|  |d 0 d S )Nr   LOGGERzDownloaded file 'z(' does not exist or size is < min_bytes=zDownloading z to z...)progresszERROR: z
Re-attempting 
r   )utils.generalr7   r   infotorchhubdownload_url_to_filer   levelloggingINFOexistsstatst_size	Exceptionunlinkr4   )filer   Zurl2	min_bytes	error_msgr7   
assert_msger   r   r   safe_download<   s,    ""&

rL   ultralytics/yolov5v7.0c           	      C   s  ddl m} ddd}tt|  dd} |  sttj	t| j
}t| drt| d	d
}|dd } t|  r|d| d|   nt| |dd | S dd dD }z|||\}}W nv tyF   z||\}}W nP ty@   z"tjddtjd  d }W n ty:   |}Y n0 Y n0 Y n0 | jjddd ||v rt| d| d| d| d|  d| d| d t| S )Nr   r6   latestc                 S   sF   |dkrd| }t d|  d|  }|d dd |d D fS )	NrO   ztags/zhttps://api.github.com/repos/
/releases/Ztag_namec                 S   s   g | ]}|d  qS )namer   ).0xr   r   r   
<listcomp>]       z;attempt_download.<locals>.github_assets.<locals>.<listcomp>assets)r$   r'   json)Z
repositoryversionr(   r   r   r   github_assetsX   s    
z'attempt_download.<locals>.github_assets'r   )zhttp:/zhttps:/z:/z://?zFound z locally at g     j@)rG   r   rH   c                 S   s&   g | ]}d D ]}d| | dqqS ))r   6z-clsz-segyolov5z.ptr   )rR   sizesuffixr   r   r   rT   m   rU   z$attempt_download.<locals>.<listcomp>Znsmlxzgit tagT)r   stderrr#   )parentsexist_okzhttps://github.com/z/releases/download//z2 missing, try downloading from https://github.com/rP   )r   rH   rI   )rO   )r:   r7   r   r   stripreplacerB   r   r   unquoterQ   
startswithr   is_filer;   rL   rE   r   r   STDOUTdecodeparentmkdir)	rG   reporeleaser7   rY   rQ   r   rV   tagr   r   r   attempt_downloadT   s>    

"
rp   )T)r   )r!   )Nr5   r   )rM   rN   )__doc__r@   osr   r   pathlibr   r$   r<   r   r    r)   boolr4   rL   rp   r   r   r   r   <module>   s   



