o
    i
                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZe Ze ddZ	dd Z
dd Zdd	 ZG d
d dejZddd dddZdS )    NPackagenameversionc              	      s4   t t d jtttd  fdddD d dS )N_yt_dlp__identifierc                 3   s    | ]	}t  |d V  qd S N)getattr).0attrmodule N/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/compat/compat_utils.py	<genexpr>   s
    

z#get_package_info.<locals>.<genexpr>)_yt_dlp__version__version__version_stringr   r   )_Packager   __name__strnextfilterr   r   r   r   get_package_info   s   r   c                 C   s   dt | v S )N__path__)varsr   r   r   r   _is_package   s   r   c                 C   s   |  do	| dS )N__)
startswithendswith)r   r   r   r   
_is_dunder   s   r   c                       s$   e Zd Zdd Z fddZ  ZS )EnhancedModulec                 C   s   t | ddd  S )N__bool__c                   S   s   dS )NTr   r   r   r   r   <lambda>        z)EnhancedModule.__bool__.<locals>.<lambda>)r   get)selfr   r   r   r!      s   zEnhancedModule.__bool__c                    s^   zt  |}W n ty#   t|r t| dd }|s ||}Y nw t|tr-| S |S )N__getattr__)super__getattribute__AttributeErrorr   r   
isinstancepropertyfget)r%   r
   retgetter	__class__r   r   r(   "   s   zEnhancedModule.__getattribute__)r   
__module____qualname__r!   r(   __classcell__r   r   r/   r   r       s    r    .c                 C   s   d S r   r   )_r   r   r   r"   /   r#   r"   )callbackc                   sJ   fdd}t j fddtjtt_|_	S )zOPassthrough parent module into a child module, creating the parent if necessaryc                    sx   t r#tt td|  jW  d    S 1 sw   Y  | }|tu r6tdj d|   |  |S )N.zmodule z has no attribute )	r   
contextlibsuppressModuleNotFoundError	importlibimport_moduler   _NO_ATTRIBUTEr)   )r
   r-   )r6   
from_childparentr   r   r&   1   s    z'passthrough_module.<locals>.__getattr__c                    s   |  vrd vst | rtS ttrtjtrFt	t
 tj d|  td|  jW  d    S 1 sAw   Y  t	t t| W  d    S 1 s[w   Y  tS )N.r7   )r   r=   r*   r   r;   r<   r   r   r8   r9   ImportErrorpassthrough_moduler)   r   )r
   )allowed_attributeschildr?   r   r   r>   <   s   
  z&passthrough_module.<locals>.from_child)
	functoolscachesysmodulesr$   types
ModuleTyper    r0   r&   )r?   rC   rB   r6   r&   r   )rB   r6   rC   r>   r?   r   rA   /   s   rA   )r4   )collectionsr8   rD   r;   rF   rH   objectr=   
namedtupler   r   r   r   rI   r    rA   r   r   r   r   <module>   s    	