
    =Ґi~
                       d 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m	Z	m
Z
mZ ddlmZmZmZ ddlmZ  G d de	      Z G d	 d
eej&                  d      Z G d dej*                        Zej.                   G d d             Z G d deej&                  d      ZddZddZ	 	 	 	 ddZej:                  rej<                  eegef   Z yy)z
PUBLIC API    )annotationsN)IEContentProviderIEContentProviderErrorregister_preference_genericregister_provider_generic)_pot_cache_provider_preferences_pot_cache_providers_pot_pcs_providers)PoTokenRequestc                      e Zd ZdZy)PoTokenCacheProviderErrorz+An error occurred while fetching a PO TokenN)__name__
__module____qualname____doc__     [/var/www/descvideos/venv/lib/python3.12/site-packages/yt_dlp/extractor/youtube/pot/cache.pyr   r      s    5r   r   c                  ~    e Zd Zej                  dd       Zej                  dd       Zej                  dd       Zy)PoTokenCacheProviderc                     y Nr   selfkeys     r   getzPoTokenCacheProvider.get       r   c                     y r   r   )r   r   value
expires_ats       r   storezPoTokenCacheProvider.store!   r   r   c                     y r   r   r   s     r   deletezPoTokenCacheProvider.delete%   r   r   N)r   strreturnz
str | None)r   r$   r   r$   r    int)r   r$   )r   r   r   abcabstractmethodr   r!   r#   r   r   r   r   r      sN      	  	 r   r   PCP)suffixc                  P    e Zd Z ej                         Z ej                         Zy)CacheProviderWritePolicyN)r   r   r   enumauto	WRITE_ALLWRITE_FIRSTr   r   r   r,   r,   *   s    		I$))+Kr   r,   c                  R    e Zd ZU ded<   ded<   ej
                  Zded<   dZded	<   y)
PoTokenCacheSpeczdict[str, str | None]key_bindingsr&   default_ttlr,   write_policyNzPoTokenCacheSpecProvider | None	_provider)r   r   r   __annotations__r,   r/   r5   r6   r   r   r   r2   r2   /   s,    ''-E-O-OL*O 26I.5r   r2   c                  :    e Zd ZddZej
                  dd       Zy)PoTokenCacheSpecProviderc                     y)NTr   )r   s    r   is_availablez%PoTokenCacheSpecProvider.is_available;   s    r   c                     y)z+Generate a cache spec for the given requestNr   )r   requests     r   generate_cache_specz,PoTokenCacheSpecProvider.generate_cache_spec>   s     	r   N)r%   bool)r=   r   r%   zPoTokenCacheSpec | None)r   r   r   r;   r'   r(   r>   r   r   r   r9   r9   9   s!     	 r   r9   PCSPc                B    t        | t        t        j                        S )z%Register a PoTokenCacheProvider classprovider
base_classregistry)r   r   r	   r   rC   s    r   register_providerrG   D   s    $'%++ r   c                B    t        | t        t        j                        S )z)Register a PoTokenCacheSpecProvider classrB   )r   r9   r
   r   rF   s    r   register_specrI   M   s    $+#)) r   c                 @    t        t        t        j                  g|  S )z0Register a preference for a PoTokenCacheProvider)r   r   r   r   )	providerss    r   register_preferencerL   V   s'     ''-- 
 r   )rC   type[PoTokenCacheProvider])rC   ztype[PoTokenCacheSpecProvider])rK   rM   r%   zCtyping.Callable[[CacheProviderPreference], CacheProviderPreference])!r   
__future__r   r'   dataclassesr-   typing&yt_dlp.extractor.youtube.pot._providerr   r   r   r   &yt_dlp.extractor.youtube.pot._registryr   r	   r
   %yt_dlp.extractor.youtube.pot.providerr   r   ABCr   Enumr,   	dataclassr2   r9   rG   rI   rL   TYPE_CHECKINGCallabler&   CacheProviderPreferencer   r   r   <module>rZ      s     " 
     
 A6 6 6,cgge tyy 
 6 6 60#''& .3v 
$oo/C^.TVY.YZ r   