
    Şi                       d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZ  G d dej                  Z G d d	e          Z G d
 dej                  Z G d deej                  ZefdddZd Zd ZdS )    )annotationsN)InfoExtractor)
NO_DEFAULTbug_reports_messageclasspropertytraverse_obj)__version__c                      e Zd Z G d dej                  Zej        Zej	        dd            Z
ej	        dddd            Zej	        dd	            Zej	        dddd
            Zej	        ddd            ZdS )IEContentProviderLoggerc                  8    e Zd ZdZdZdZdZdZed             Z	dS ) IEContentProviderLogger.LogLevelr   
         (   c                    t          |t                    r-|                                }|t          |           v r| |         S | j        S N)
isinstancestrupperdirINFO)clsvalues     kC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/youtube/pot/_provider.py	_missing_z*IEContentProviderLogger.LogLevel._missing_   sC    %%% &CHH$$u:%8O    N)
__name__
__module____qualname__TRACEDEBUGr   WARNINGERRORclassmethodr    r   r   LogLevelr      sF        		 	 
	 	 	r   r'   messager   c                    d S r   r&   selfr(   s     r   tracezIEContentProviderLogger.trace"       r   F)oncec                   d S r   r&   r+   r(   r.   s      r   debugzIEContentProviderLogger.debug&   r-   r   c                    d S r   r&   r*   s     r   infozIEContentProviderLogger.info*   r-   r   c                   d S r   r&   r0   s      r   warningzIEContentProviderLogger.warning.   r-   r   Nc                    d S r   r&   )r+   r(   causes      r   errorzIEContentProviderLogger.error2   r-   r   )r(   r   r   )r   r   r    enumIntEnumr'   r   	log_levelabcabstractmethodr,   r1   r3   r5   r8   r&   r   r   r   r      s           4<     I    	*/       	    	,1       	      r   r   c                        e Zd Zd fd	Z xZS )IEContentProviderErrorNFc                X    t                                          |           || _        d S r   )super__init__expected)r+   msgrC   	__class__s      r   rB   zIEContentProviderError.__init__8   s&     r   )NF)r   r   r    rB   __classcell__rE   s   @r   r?   r?   7   s=        ! ! ! ! ! ! ! ! ! !r   r?   c                       e Zd ZU dZded<   dZded<   d fdZedd fd
            Ze	dd            Z
e	d             Ze	dd            Zej        dd            Zd ZefdddZ xZS )IEContentProviderz0.0.0r   PROVIDER_VERSIONz2(developer has not provided a bug report location)BUG_REPORT_LOCATIONier   loggerr   settingsdict[str, list[str]]c                v    || _         |pi | _        || _        t                                                       d S r   )rL   rN   rM   rA   rB   )r+   rL   rM   rN   ___rE   s         r   rB   zIEContentProvider.__init__A   s:      Br   N)suffixc               H    |r|| _          t                      j        di |S )Nr&   )_PROVIDER_KEY_SUFFIXrA   __init_subclass__)r   rS   kwargsrE   s      r   rV   z#IEContentProvider.__init_subclass__L   s0     	.'-C$(uww(226222r   returnc                F    | j         d t          | j                            S r   )r   lenrU   r   s    r   PROVIDER_NAMEzIEContentProvider.PROVIDER_NAMER   s#    |;c#":;;;;<<r   c                    d| j          dS )Nz7please report this issue to the provider developer at  z  .)rK   r[   s    r   BUG_REPORT_MESSAGEz$IEContentProvider.BUG_REPORT_MESSAGEV   s    eI`eeeer   c                    t          | d          s
J d            | j                            | j                  sJ d| j         d            | j        d t	          | j                            S )NrU   zIContent Provider implementation must define a suffix for the provider keyzClass name must end with "")hasattrr   endswithrU   rZ   r[   s    r   PROVIDER_KEYzIEContentProvider.PROVIDER_KEYZ   s    s233  	A  	A  6A  	A  	A  	A|$$S%=>>xx@x]`]u@x@x@xxxx|;c#":;;;;<<r   boolc                    t           )aV  
        Check if the provider is available (e.g. all required dependencies are available)
        This is used to determine if the provider should be used and to provide debug information.

        IMPORTANT: This method should not make any network requests or perform any expensive operations.
         It is called multiple times.
        )NotImplementedErrorr+   s    r   is_availablezIEContentProvider.is_available`   s
     "!r   c                    d S r   r&   rg   s    r   closezIEContentProvider.closek   s    r   F	casesensec               2    t          | j        |||          S )aI  
        @returns            A list of values for the setting given by "key"
                            or "default" if no such key is present
        @param default      The default value to return when the key is not present (default: [])
        @param casesense    When false, the values are converted to lower case
        )defaultrl   )configuration_argrN   )r+   keyrn   rl   s       r   _configuration_argz$IEContentProvider._configuration_argn   s     !WPYZZZZr   )rL   r   rM   r   rN   rO   )rX   r   )rX   rd   )r   r   r    rJ   __annotations__rK   rB   r%   rV   r   r\   r^   rc   r<   r=   rh   rj   r   rq   rF   rG   s   @r   rI   rI   =   sU        #####SSSSS	 	 	 	 	 	 )- 3 3 3 3 3 3 [3
 = = = ]= f f ]f = = = ]=
 	" " " "   /9 [u [ [ [ [ [ [ [ [ [r   rI   c                  *    e Zd ZeZ ed          ZdS )BuiltinIEContentProvider )beforeN)r   r   r    r	   rJ   r   r^   r&   r   r   rt   rt   x   s*        ",,B777r   rt   Frk   c               z    t          | |          }||t          u rg n|S |rt          |          nd |D             S )aj  
    @returns            A list of values for the setting given by "key"
                        or "default" if no such key is present
    @param config       The configuration dictionary
    @param default      The default value to return when the key is not present (default: [])
    @param casesense    When false, the values are converted to lower case
    Nc                6    g | ]}|                                 S r&   )lower).0xs     r   
<listcomp>z%configuration_arg.<locals>.<listcomp>   s     '?'?'?a		'?'?'?r   )r   r   list)configrp   rn   rl   vals        r   ro   ro   }   sP     vs
#
#C
{
**rr7!?4999'?'?3'?'?'??r   c                    t          | |          sJ |  d|j                     | j        |vsJ |j         d| j         d            | || j        <   | S )z-Generic function to register a provider classz must be a subclass of  z already registered)
issubclassr   rc   )provider
base_classregistrys      r   register_provider_genericr      sy     h
++ff-f-fQ[Qd-f-ffff 000Z5H2u2u8K`2u2u2u000&.HX"#Or   c                R     t           fdD                       sJ fd}|S )z8Generic function to register a preference for a providerc              3  8   K   | ]}t          |          V  d S r   )r   )rz   r   r   s     r   	<genexpr>z.register_preference_generic.<locals>.<genexpr>   s-      JJHz(J//JJJJJJr   c                t     t          j                    fd            }                    |            S )Nc                D    rt          |           r | g|R i |S dS )Nr   )r   )r   argsrW   
preference	providerss      r   innerz9register_preference_generic.<locals>.outer.<locals>.inner   sA     =
8Y ? ? =!z(<T<<<V<<<1r   )	functoolswrapsadd)r   r   r   r   s   ` r   outerz*register_preference_generic.<locals>.outer   sQ    		$	$	 	 	 	 	 
%	$	 	Ur   )all)r   r   r   r   s   ``` r   register_preference_genericr      sU     JJJJ	JJJJJJJJ      Lr   )
__future__r   r<   r9   r   yt_dlp.extractor.commonr   yt_dlp.utilsr   r   r   r   yt_dlp.versionr	   ABCr   	Exceptionr?   rI   rt   ro   r   r   r&   r   r   <module>r      s   " " " " " " 



      1 1 1 1 1 1 U U U U U U U U U U U U & & & & & &
& & & & &cg & & &R! ! ! ! !Y ! ! !8[ 8[ 8[ 8[ 8[ 8[ 8[ 8[v8 8 8 8 80#' 8 8 8
 ,6 @E @ @ @ @ @	 	 	    r   