
    V|h*                     t    S SK r S SKrS SKrS SKrS SKrS SKrS SKrSSKJ	r	J
r
JrJr  SSKJr   " S S5      rg)    N   )expand_pathtraverse_objversion_tuplewrite_json_file)__version__c                   ^    \ rS rSrS rS rS r\S 5       rSS jr	S r
SSS	.S
 jjrS rSrg)Cache   c                     Xl         g N_ydl)selfydls     F/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/cache.py__init__Cache.__init__   s    	    c                     U R                   R                  R                  S5      nUc7  [        R                  " SS5      n[        R
                  R                  US5      n[        U5      $ )NcachedirXDG_CACHE_HOMEz~/.cachezyt-dlp)r   paramsgetosgetenvpathjoinr   )r   res
cache_roots      r   _get_root_dirCache._get_root_dir   sQ    ii"":.;#3Z@J'',,z84C3r   c                    [         R                  " SU5      (       d   SU< 35       e[        R                  R	                  USS9R                  SS5      n[        R                  R                  U R                  5       X SU 35      $ )Nz	^[\w.-]+$zinvalid section  )safe%,.)
rematchurllibparsequotereplacer   r   r   r!   )r   sectionkeydtypes       r   _get_cache_fnCache._get_cache_fn   su    xxg..N2B7+0NN.ll  2 .66sC@ww||D..0'U!E7;KLLr   c                 P    U R                   R                  R                  S5      SL$ )Nr   F)r   r   r   )r   s    r   enabledCache.enabled   s"    yy##J/u<<r   c                    US;   d   eU R                   (       d  g U R                  XU5      n [        R                  " [        R                  R                  U5      SS9  U R                  R                  SU SU S35        [        [        US.U5        g ! [         a:    [        R                  " 5       nU R                  R                  SU< S	U 35         g f = f)
NjsonT)exist_okzSaving r(   z	 to cache)yt-dlp_versiondatazWriting cache to z	 failed: )r5   r2   r   makedirsr   dirnamer   write_debugr   r   	Exception	traceback
format_excreport_warning)r   r/   r0   r<   r1   fntbs          r   storeCache.store!   s    	!!!||e4	NKK+d;II!!GG9AcU)"DE{DI2N 	N%%'BII$$'8it%LM	Ns   A'B ACCc                     [        US5      nU(       d  SU0Sp1U(       a  [        U5      [        U5      :  a  US   $ U R                  R                  SU SU S35        g )Nr;   r<   z
2022.08.19z"Discarding old cache from version z (needs ))r   r   r   r?   )r   r<   min_verversions       r   	_validateCache._validate0   s`    t%56#TNL'-0M'4JJ<		 B7)8T[S\\]^_r   N)rJ   c          	         US;   d   eU R                   (       d  U$ U R                  XU5      n[        R                  " [        5          [        USS9 nU R                  R                  SU SU S35        U R                  [        R                  " U5      U5      sS S S 5        sS S S 5        $ ! , (       d  f       O~= f! [        [        4 ah     [        R                  R                  U5      nO"! [         a  n	[!        U	5      n S n	A	OS n	A	ff = fU R                  R#                  SU SU S	35         Of = fS S S 5        U$ ! , (       d  f       U$ = f)
Nr8   zutf-8)encodingzLoading r(   z from cachezCache retrieval from z	 failed (rI   )r5   r2   
contextlibsuppressOSErroropenr   r?   rL   r9   load
ValueErrorKeyErrorr   r   getsizestrrC   )
r   r/   r0   r1   defaultrJ   cache_fncachef	file_sizeoes
             r   rT   
Cache.load8   s%   	!!!||N%%gE:  )	b(W5II))HWIQse;*OP>>$))F*;WE 65 *)55 ) b( " 9I ( #BI(		((+@
)T]S^^_)`ab *  *) sy   E

C AB/	C /
B=	9C <E=C  D8C10D81
D;DD8D%D85E7D88E
Ec                   ^ U R                   (       d  U R                  R                  S5        g U R                  5       m[	        U4S jS 5       5      (       d  [        ST S35      eU R                  R                  ST S3SS	9  [        R                  R                  T5      (       a0  U R                  R                  S
SS	9  [        R                  " T5        U R                  R                  S
5        g )NzFCache is disabled (Did you combine --no-cache-dir and --rm-cache-dir?)c              3   ,   >#    U  H	  oT;   v   M     g 7fr    ).0termr   s     r   	<genexpr>Cache.remove.<locals>.<genexpr>S   s     C2B$H$2Bs   )cachetmpzNot removing directory z& - this does not look like a cache dirzRemoving cache dir z .T)skip_eolr(   )r5   r   	to_screenr!   anyr@   r   r   existsshutilrmtree)r   r   s    @r   removeCache.removeM   s    ||II hi%%'C2BCCC5hZ?efgg		!(2. 	 	?77>>(##IId3MM(#		C r   r   r8   )r9   N)__name__
__module____qualname____firstlineno__r   r!   r2   propertyr5   rF   rL   rT   rn   __static_attributes__ra   r   r   r
   r
      sC     M
 = =N` *!r   r
   )rP   r9   r   r)   rl   rA   urllib.parser+   utilsr   r   r   r   rK   r   r
   ra   r   r   <module>rx      s/      	 	    L L  N! N!r   