
    hh                        d dl mZ d dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
ddlmZ  ej                   ej                  d      d      Z ej                  e      s	  ej                   e       d
dZddZ	 dd	Zy# e$ r Y w xY w)    )print_functionN   )download~z.cache/gdownc                    dt        j                         }t        | d      5 t        fdd      D ]  }|j	                  |        	 d d d        |j                         S # 1 sw Y   |j                         S xY w)Ni   rbc                  &    j                         S N)read)	blocksizefs   S/var/www/html/dev/engine/venv/lib/python3.12/site-packages/gdown/cached_download.py<lambda>zmd5sum.<locals>.<lambda>   s    !&&"3     r   )hashlibmd5openiterupdate	hexdigest)filenamer   hashblockr   s    `  @r   md5sumr      sv    	;;=D	h	 3S9 	EKK	 >> >>s   'A''A?c                 :   t        |t              rt        |      dk(  st        dj	                  |            |st        dj	                  |              t        |       }||k(  r|st        dj	                  |              yt        dj	                  ||            )N    zMD5 must be 32 chars: {}zComputing MD5: {}zMD5 matches: {}Tz*MD5 doesn't match:
actual: {}
expected: {})
isinstancestrlen
ValueErrorformatprintr   AssertionError)r   r   quietr   
md5_actuals        r   assert_md5sumr&   !   s    sC SX^3::3?@@!((23!JS#**845
6==j#N r   c                    |\| j                  dd      j                  dd      j                  dd      j                  dd	      }t        j                  t        |      }t        j                  |      r |s|st        d
j                  |             |S t        j                  |      r|r	 t        |||       |S t        j                  t        d      }	 t        j                  t        j                  |             t        j                   t              }	 t        j                  |d      }	|sCd}
|rdj                  |
|      }
ndj                  |
      }
t        |
t        j                         t#        | |	fd|i| t%        j&                  |      5  t)        j*                  |	|       ddd       |rt        |||       | ||       |S # t        $ r&}t        |t        j                         Y d}~Bd}~ww xY w# t        $ r Y w xY w# 1 sw Y   gxY w# t,        $ r t)        j.                  |        w xY w)a#  Cached download from URL.

    Parameters
    ----------
    url: str
        URL. Google Drive URL is also supported.
    path: str, optional
        Output filename. Default is basename of URL.
    md5: str, optional
        Expected MD5 for specified file.
    quiet: bool
        Suppress terminal output. Default is False.
    postprocess: callable
        Function called with filename as postprocess.
    kwargs: dict
        Keyword arguments to be passed to `download`.

    Returns
    -------
    path: str
        Output filename.
    N/z-SLASH-:z-COLON-=z-EQUAL-?z
-QUESTION-zFile exists: {})r$   )file_dl_lock)dirdlzCached Downloadingz{}: {}z{}...r$   )replaceospjoin
cache_rootexistsr"   r!   r&   r#   sysstderrosmakedirsdirnameOSErrortempfilemkdtempr   filelockFileLockshutilmove	Exceptionrmtree)urlpathr   r$   postprocesskwargse	lock_path	temp_root	temp_pathmsgs              r   cached_downloadrL   3   s   2 |KKY'WS)$WS)$WS,'	 	 xx
D) zz$#**401	D	c	&$51K
 Z0I
CKK%&   Z0IHHY-	&Cooc40nnS)#CJJ'i7u77y) 	)KK	4(	) dCu- DKG  	&!#**%%	&  	) 	) i sO   ,G (H A?H" H0H" 	HG>>H	HHHH" " Ir
   )FN)NNNFN)
__future__r   r   r7   os.pathrD   r1   r?   r5   r;   r=   r   r2   
expanduserr3   r4   r8   r:   r   r&   rL    r   r   <module>rQ      s    %  	   
   SXXncnnS)>:
szz*J
& =ANC  s   !B B	B	