§
    µBÄjœ  ã                  ó\  — 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 d dlmZ d dlmZ ej        dk    rd dlmZ nd dlmZ d dlZdd	lmZ dd
lmZ  G d„ ded¬¦  «        Z ej         ej        d¦  «        d¦  «        Z	 	 	 	 	 d(d)d„Zd*d„Zd+d!„Zd,d#„Zd-d&„Zd.d'„Z dS )/é    )ÚannotationsN)ÚCallable)ÚFinal)Ú	TypedDict)é   é   )ÚUnpacké   )Ú_check_cancelled)Údownloadc                  óˆ   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   dS )Ú_DownloadKwargsú
str | NoneÚproxyzfloat | NoneÚspeedÚboolÚuse_cookiesz
bool | strÚverifyÚidÚresumeÚintÚretriesÚformatÚ
user_agentz(Callable[[int, int | None], None] | NoneÚprogressz"float | tuple[float, float] | NoneÚtimeoutzthreading.Event | NoneÚcancelN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úFC:\Projects\Historical\venv\Lib\site-packages\gdown/cached_download.pyr   r      s™   € € € € € € ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ€N€N�NØ€L€L�LØ€L€L�LØÐÐÑØÐÐÑØ6Ð6Ð6Ñ6Ø/Ð/Ð/Ñ/Ø"Ð"Ð"Ñ"Ð"Ð"r#   r   F)Útotalú~z.cache/gdownÚurlr   ÚpathÚquietr   ÚpostprocessúCallable[[str], object] | NoneÚhashÚkwargsúUnpack[_DownloadKwargs]ÚreturnÚstrc                óx  — |                      d¦  «        }t          |¬¦  «         |€}| €t          d¦  «        ‚|                      dd¦  «                             dd¦  «                             d	d
¦  «                             dd¦  «        }t	          j        t          |¦  «        }t	          j        |¦  «        r$|s"|st          d|› �t          j
        ¬¦  «         |S t	          j        |¦  «        rX|rV	 t          ||¬¦  «         t          |¬¦  «         |S # t          $ r%}t          |t          j
        ¬¦  «         Y d}~nd}~ww xY wt	          j        t          d¦  «        }	 t          j        t	          j        |¦  «        ¦  «         n# t           $ r Y nw xY wt          j        t          d¬¦  «         t#          j        t          ¬¦  «        5 }	t	          j        |	d¦  «        }
|rd|› d�nd}|rt'          |¬¦  «        nd}t)          d| |
|d|› �d|› d�dœ|dœ|¤Ž |�#|€J ‚t+          t-          |¬¦  «        |¬¦  «         t/          j        |¦  «        5  t          |¬¦  «         t3          j        |
|¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |� ||¦  «         |S ) a  Cached download from URL.

    Parameters
    ----------
    url:
        URL. Google Drive URL is also supported.
    path:
        Output filename. Default is basename of URL.
    quiet:
        Suppress terminal output. Default is False.
    postprocess:
        Function called with filename as postprocess.
    hash:
        Hash value of file in the format of {algorithm}:{hash_value}
        such as sha256:abcdef.... Supported algorithms: md5, sha1, sha256, sha512.
    kwargs:
        Keyword arguments to be passed to `download`, including `cancel`.
        An already-set cancellation event takes precedence over a cache hit.
        Cancellation removes staging files and leaves the final path untouched.

    Returns
    -------
    path:
        Output filename.

    Raises
    ------
    ValueError
        If url is not specified when path is not specified.
    DownloadError
        If the download fails.
    DownloadCancelled
        If cancellation is requested before final-file publication. Not retried.
    r   )r   Nz0url must be specified when path is not specifiedú/z-SLASH-ú:z-COLON-ú=z-EQUAL-ú?z
-QUESTION-zFile exists: )Úfile)r(   r,   Ú_dl_lockT)Úexist_ok)ÚdirÚdlzHash: ú
Ú ©r,   zCached downloading...
zTo: )ÚstartÚoutput)r'   r?   r)   Úlog_messagesÚhasher©rA   ©Úhash_actualr,   r"   )Úgetr   Ú
ValueErrorÚreplaceÚospÚjoinÚ
cache_rootÚexistsÚprintÚsysÚstderrÚ_assert_filehashÚAssertionErrorÚosÚmakedirsÚdirnameÚOSErrorÚtempfileÚTemporaryDirectoryÚ_new_hasherr   Ú_assert_hashÚ_format_hashÚfilelockÚFileLockÚshutilÚmove)r'   r(   r)   r*   r,   r-   r   ÚeÚ	lock_pathÚ	temp_rootÚ	temp_pathÚlog_message_hashrA   s                r$   Úcached_downloadrc   ,   sª  € ðT �ZŠZ˜Ñ!Ô!€FÝ˜FÐ#Ñ#Ô#Ð#Ø€|Øˆ;ÝÐOÑPÔPÐPà�KŠK˜˜YÑ'Ô'ßŠW�S˜)Ñ$Ô$ßŠW�S˜)Ñ$Ô$ßŠW�S˜,Ñ'Ô'ð	 	õ Œx�
 DÑ)Ô)ˆõ „z�$ÑÔð 
& ð 
&Øð 	;ÝÐ( $Ð(Ð(­s¬zÐ:Ñ:Ô:Ð:ØˆÝ	Œ�DÑ	Ô	ð &˜dð &ð	&Ý $¨TÐ2Ñ2Ô2Ð2Ý FÐ+Ñ+Ô+Ð+ØˆKøÝð 	&ð 	&ð 	&Ý�!�#œ*Ð%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%øøøøð	&øøøõ ”� ZÑ0Ô0€IðÝ
Œ•C”K Ñ%Ô%Ñ&Ô&Ð&Ð&øÝð ð ð Øˆðøøøå„K•
 TÐ*Ñ*Ô*Ð*Ý	Ô	$­Ð	4Ñ	4Ô	4ð )¸	Ý”H˜Y¨Ñ-Ô-ˆ	à04Ð<Ð, DÐ,Ð,Ð,Ð,¸"ÐØ+/Ð9• $Ð'Ñ'Ô'Ð'°TˆÝð 
	
ØØØàEÐ3CÐEÐEØ) ˜/˜/˜/ðð ð ð
	
ð 
	
ð ð
	
ð 
	
ð 
	
ð ÐØÐ#Ð#Ð#Ý¥\¸Ð%@Ñ%@Ô%@ÀtÐLÑLÔLÐLÝÔ˜yÑ)Ô)ð 	)ð 	)Ý FÐ+Ñ+Ô+Ð+ÝŒK˜	 4Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð')ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð0 ÐØˆ�DÑÔÐà€Ksa   Ã4"D Ä
EÄ!EÅEÅ$&F Æ
FÆFÇB	J"É&JÉ?J"ÊJ	ÊJ"ÊJ	ÊJ"Ê"J&Ê)J&Ú	algorithmc                óü   ‡‡— dŠt          j        |¦  «        }t          | d¦  «        5 Št          ˆˆfd„d¦  «        D ]}|                     |¦  «         Œ	 d d d ¦  «         n# 1 swxY w Y   t          |¬¦  «        S )Ni   Úrbc                 ó.   •— ‰                      ‰ ¦  «        S )N)Úread)Ú	BLOCKSIZEÚfs   €€r$   ú<lambda>z#_compute_filehash.<locals>.<lambda>š   s   ø€  !§&¢&¨Ñ"3Ô"3€ r#   r#   rB   )ÚhashlibÚnewÚopenÚiterÚupdaterY   )r(   rd   rA   Úblockri   rj   s       @@r$   Ú_compute_filehashrr   •   sÍ   øø€ Ø€IåŒ[˜Ñ#Ô#€FÝ	ˆd�DÑ	Ô	ð !˜QÝÐ3Ð3Ð3Ð3Ð3°SÑ9Ô9ð 	!ð 	!ˆEØ�MŠM˜%Ñ Ô Ð Ð ð	!ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !õ ˜vÐ&Ñ&Ô&Ð&s   ©-A#Á#A'Á*A'úhashlib._Hashc                óè   — d| vrt          d| › d�¦  «        ‚|                      d¦  «        d         }|t          j        vrt          d|› dt          j        › �¦  «        ‚t          j        |¦  «        S )Nr3   zInvalid hash: z9. Hash must be in the format of {algorithm}:{hash_value}.r   zUnsupported hash algorithm: z. Supported algorithms: )rF   Úsplitrl   Úalgorithms_guaranteedrm   )r,   rd   s     r$   rW   rW   Ÿ   s¥   € Ø
�$€€ÝðF˜Tð Fð Fð Fñ
ô 
ð 	
ð —
’
˜3‘” Ô"€IØ�Ô5Ð5Ð5ÝðE¨9ð Eð EÝ%,Ô%BðEð Eñ
ô 
ð 	
õ Œ;�yÑ!Ô!Ð!r#   rA   c                ó>   — | j         › d|                      ¦   «         › �S )Nr3   )ÚnameÚ	hexdigestrB   s    r$   rY   rY   ®   s$   € ØŒkÐ0Ð0˜F×,Ò,Ñ.Ô.Ð0Ð0Ð0r#   rD   ÚNonec                ó<   — | |k    rt          d| › d|› �¦  «        ‚d S )Nz!File hash doesn't match:
actual: z
expected: )rP   rC   s     r$   rX   rX   ²   s:   € Ø�dÒÐÝØP°ÐPÐPÈ$ÐPÐPñ
ô 
ð 	
ð Ðr#   c                óp   — t          |¬¦  «        }t          t          | |j        ¬¦  «        |¬¦  «         d S )Nr=   )r(   rd   rC   )rW   rX   rr   rx   )r(   r,   rA   s      r$   rO   rO   ¹   sG   € Ý˜dÐ#Ñ#Ô#€FÝÝ%¨4¸6¼;ÐGÑGÔGÈdðñ ô ð ð ð r#   )NNFNN)r'   r   r(   r   r)   r   r*   r+   r,   r   r-   r.   r/   r0   )r(   r0   rd   r0   r/   r0   )r,   r0   r/   rs   )rA   rs   r/   r0   )rD   r0   r,   r0   r/   rz   )r(   r0   r,   r0   r/   rz   )!Ú
__future__r   rl   rQ   Úos.pathr(   rH   r\   rM   rU   Ú	threadingÚcollections.abcr   Útypingr   r   Úversion_infor	   Útyping_extensionsrZ   Ú_cancellationr   r   r   rI   Ú
expanduserrJ   rc   rr   rW   rY   rX   rO   r"   r#   r$   ú<module>r†      sê  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àÔ�wÒÐØÐÐÐÐÐÐà(Ð(Ð(Ð(Ð(Ð(à €€€à +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð ð#ð #ð #ð #ð #�i uð #ñ #ô #ð #ð ˆSŒX�n�c”n SÑ)Ô)¨>Ñ:Ô:€
ð
 ØØØ26Øðfð fð fð fð fðR'ð 'ð 'ð 'ð"ð "ð "ð "ð1ð 1ð 1ð 1ð
ð 
ð 
ð 
ðð ð ð ð ð r#   