
    V|h!                     
   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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  S SKJr  SSKJrJrJrJr  SSKJrJrJrJrJrJr  SrSr\" \ 5      RB                  r"/ S	Qr#\RH                   " S
 S5      5       r% " S S\RL                  RN                  5      r(\RR                  S 5       r*S r+S r, " S S\RL                  RZ                  5      r.S r/S r0S r1S\%4S jr2S r3S\%4S jr4g)    N)Path)ZipFile   )Indirectplugin_dirsall_plugins_loadedplugin_specs)get_executable_pathget_system_config_dirsget_user_config_dirsmerge_dicts
orderedSetwrite_stringyt_dlp_pluginsytdlp_plugins)COMPAT_PACKAGE_NAMEPACKAGE_NAME
PluginSpecdirectoriesload_all_pluginsload_pluginsregister_plugin_specc                   >    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)r   6   module_namesuffixdestinationplugin_destination N)__name__
__module____qualname____firstlineno__str__annotations__r   __static_attributes__r       H/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/plugins.pyr   r   6   s    K  r'   r   c                       \ rS rSrSrS rSrg)PluginLoader>   z+Dummy loader for virtual namespace packagesc                     g Nr   )selfmodules     r(   exec_modulePluginLoader.exec_moduleA   s    r'   r   N)r    r!   r"   r#   __doc__r0   r&   r   r'   r(   r*   r*   >   s
    5r'   r*   c                 2    [        U 5       n[        [        R                  R	                  S UR                  5        5       5      5      sS S S 5        $ ! , (       d  f       g= f! [         a     g[         a  n[        SU  SU S35         S nAgS nAff = f)Nc              3   L   #    U  H  n[        U5      R                  v   M     g 7fr-   )r   parents).0files     r(   	<genexpr>dirs_in_zip.<locals>.<genexpr>I   s      5@/>tT
""s   "$z!WARNING: Could not read zip file z: 
r   )	r   set	itertoolschainfrom_iterablenamelistFileNotFoundError	Exceptionr   )archivezip_es      r(   dirs_in_ziprE   E   s    KWy44 5@/3}}5@ @ A  	     K8	A3bIJJKs:   A% =A
	A% 
A"A% "A% %
B1	B:BBc               #   &  #    S n U " / [        S5      Q[        S5      Q7SS06 S h  vN   U " [        5       /[        S5      Q[        S5      Q7SS06 S h  vN   S [        [        [
        R                  5       5        S h  vN   g  Nb N4 N	7f)Nc              7     #    [        [        [        U5      SS9 HL  nU[        :X  a  M  [        R
                  " [        5         X -  R                  5        S h  vN   S S S 5        MN     g  N! , (       d  f       Mb  = f7f)NTlazy)r   mapr   _BASE_PACKAGE_PATH
contextlibsuppressOSErroriterdir)containing_folder
root_paths
config_dirs      r(   _get_package_paths0default_plugin_paths.<locals>._get_package_pathsS   sc     $Sz%:FJ//$$W-&:CCEEE .-	 G
 F .-s0   AB A.A,A.B ,A..
A=	8B zyt-dlprP   plugins zyt-dlp-pluginsc              3   <   #    U  H  o[         :w  d  M  Uv   M     g 7fr-   )rK   )r6   paths     r(   r8   'default_plugin_paths.<locals>.<genexpr>k   s     S!4@R8R!4s   	)r   r   r
   rJ   r   sysrX   )rS   s    r(   default_plugin_pathsr[   R   s     F " 	h	'		) $   "	b	! 
 	# +	   TT388!4SSS Ts3   &BB/BB,BBBBBc              #      #    [        U 5      nUR                  5       (       d  [        SU 35      eUR                  5        S h  vN   g  N7f)NzInvalid plugin directory: )r   is_dir
ValueErrorrO   )	candidatecandidate_paths     r(   candidate_plugin_pathsra   n   sC     )_N  ""5n5EFGG%%'''s   AAA
Ac                   4    \ rS rSrSrS rS rS	S jrS rSr	g)
PluginFinderu   z
This class provides one or multiple namespace packages.
It searches in sys.path and yt-dlp config folders for
the existing subdirectories from which the modules can be imported
c                 z    0 U l         [        [        R                  R	                  S U 5       5      5      U l        g )Nc              3   p   #    U  H,  n[         R                  " UR                  S 5      S 5      v   M.     g7f).c                 &    SR                  X45      $ )Nrg   )join)abs     r(   <lambda>1PluginFinder.__init__.<locals>.<genexpr>.<lambda>   s    388QFCSr'   N)r<   
accumulatesplit)r6   names     r(   r8   (PluginFinder.__init__.<locals>.<genexpr>   s0      *&$D $$TZZ_6STT$s   46)_zip_content_cacher;   r<   r=   r>   packages)r.   rs   s     r(   __init__PluginFinder.__init__|   s5    "$OO)) *&$*& &'r'   c              #     #    [         R                  R                  S [        R                   5       5      n[        UR                  S5      6 n[        USS9 Ha  nXC-  n UR                  5       (       a  Uv   M#  UR                  S;   a.  UR                  5       (       a  U[        U5      ;   a  Uv   M]  M_  Ma  Mc     g ! [         a$  n[        SUR                   S35         S nAM  S nAff = f7f)Nc              3   X   #    U  H   nUS :X  a
  [        5       O
[        U5      v   M"     g7f)defaultN)r[   ra   )r6   r_   s     r(   r8   0PluginFinder.search_locations.<locals>.<genexpr>   s.      <
.	 '09&< "BXYbBcc.s   (*rg   TrH   )z.zipz.eggz.whlz-Permission error while accessing modules in "z"
)r<   r=   r>   r   valuer   ro   r   r]   r   is_filerE   PermissionErrorr   filename)r.   fullnamecandidate_locationspartsrX   r_   rD   s          r(   search_locationsPluginFinder.search_locations   s     'oo;; <
(..<
 

 hnnS)*2>DI^##%%#O[[$<<D 11' 2 BP< ? # ^LQZZLX[\]]^s<   AC/ B>9C/;8B>3C/>
C,C'!C/'C,,C/Nc                     XR                   ;  a  g [        [        [        U R	                  U5      5      5      nU(       d  [        U5      e[        R                  R                  U[        5       SS9nXEl
        U$ )NT)
is_package)rs   listrJ   r$   r   ModuleNotFoundError	importlib	machinery
ModuleSpecr*   submodule_search_locations)r.   r~   rX   targetr   specs         r(   	find_specPluginFinder.find_spec   se    ==(C)>)>x)H IJ%h//""--hSW-X*:'r'   c                     [         R                  5         U R                   H*  nU[        R                  ;   d  M  [        R                  U	 M,     g r-   )rE   cache_clearrs   rZ   modules)r.   packages     r(   invalidate_cachesPluginFinder.invalidate_caches   s4    !}}G#++%KK( %r'   )rr   rs   )NN)
r    r!   r"   r#   r2   rt   r   r   r   r&   r   r'   r(   rc   rc   u   s    '^$)r'   rc   c                     [         R                  " [        5         [        R                  R                  [        5      =n (       a  [        U R                  5      sS S S 5        $  S S S 5        / $ ! , (       d  f       / $ = fr-   )	rL   rM   r   r   utilr   r   r   r   )r   s    r(   r   r      s`    			0	1>>++L9949778 
2	19 
2 I 
2	1 Is   ?A//
A>c              #     #    [          SU  3n[        R                  " [        5         [        R
                  " U5      n[        R                  " UR                  U S3S9 S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nrg   )rX   prefix)	r   rL   rM   r   r   import_modulepkgutiliter_modules__path__)
subpackager~   pkgs      r(   r   r      sg     q-H			0	1%%h/''S\\XJa.QQQ 
2	1Q 
2	1s.   &B<A4$A2%A4)	B2A44
B>Bc                 B   ^ ^^ [         R                  " T U UU4S j5      $ )Nc                   > [         R                  " U 5      =(       a    U R                  R                  T5      =(       a    U R                  R                  T5      =(       ab    U R                  R                  S5      (       + =(       a;    U R                  [        TSU R                  /5      ;   =(       a    [        U SS 5      S L $ )N___all__PLUGIN_NAME)inspectisclassr    endswithr!   
startswithgetattr)objr/   r   r   s    r(   rl   %get_regular_classes.<locals>.<lambda>   s     	6LL!!&)	6NN%%k2	6 '',,	6 LLGFI~FF		6
 C-5	6r'   )r   
getmembers)r/   r   r   s   ```r(   get_regular_classesr      s    f '  r'   plugin_specc                    U R                   U R                  p!0 n[        R                  R	                  S5      (       d  [
        R                  (       d  U$ [        U5       H  u  pEn[        S UR                  S5       5       5      (       a  M.   [        R                  S:  a1  [        U[        R                  5      (       a  UR                  U5      nO_UR!                  U5      n["        R$                  R'                  U5      nU[        R(                  U'   UR*                  R-                  U5         UR7                  [9        XuU5      5        M     S	[
        R                  ;   a  [:        R<                  " [>        5         ["        R$                  RA                  U[C        [E        5       [F        US
5      5      n["        R$                  R'                  U5      n	U	[        R(                  URH                  '   UR*                  R-                  U	5        UR7                  [9        XRH                  U5      5        S S S 5        X0RJ                  l        [M        X0RN                  R                  5      U RN                  l        U$ ! [.         a)    [1        SU< S[2        R4                  " SS9 35         GMO  f = f! , (       d  f       N= f)NYTDLP_NO_PLUGINSc              3   B   #    U  H  oR                  S 5      v   M     g7f)r   N)r   )r6   xs     r(   r8   load_plugins.<locals>.<genexpr>   s     A*@Q||C  *@s   rg   )   
   zError while importing module r:   )limitrx   z__init__.py)(r   r   osenvirongetr   rz   r   anyro   rZ   version_info
isinstance	zipimportzipimporterload_moduler   r   r   module_from_specr   loaderr0   rA   r   	traceback
format_excupdater   rL   rM   r@   spec_from_file_locationr   r
   r   rp   r   r   r   )
r   rp   r   regular_classesfinderr   r   r/   r   rU   s
             r(   r   r      s   **K,>,>&O	zz~~())1B1B".t"4QA+*;*;C*@AAA	')jAVAV.W.W  ++K8''4"88>+1K(''/ 	26OP' #50 K%%%  !23>>99(*,?}UD  nn55d;G%,CKK		"KK##G,""#6w		6#RS 4 ,;""($/AXAXA^A^$_K!5  	/bAUAU\^A_@`a 		 43s'   AI=AI= B5J3=.J0/J03
Kc                  z    [         R                  R                  5        H  n [        U 5        M     S[        l        g )NT)r	   rz   valuesr   r   r   s    r(   r   r      s,    #))002[! 3#r'   c                     U R                   [        R                  ;  aZ  U [        R                  U R                   '   [        R                  R                  S[        [         SU R                    35      5        g g )Nr   rg   )r   r	   rz   rZ   	meta_pathinsertrc   r   r   s    r(   r   r      s\    l&8&886A;223Q~Q{?V?V>W-X YZ 9r'   )5rL   dataclasses	functoolsr   importlib.abcimportlib.machineryimportlib.utilr   r<   r   r   rZ   r   r   pathlibr   zipfiler   globalsr   r   r   r	   utilsr
   r   r   r   r   r   r   r   __file__parentrK   r   	dataclassr   abcLoaderr*   cacherE   r[   ra   MetaPathFinderrc   r   r   r   r   r   r   r   r'   r(   <module>r      s            	  
        % (^**  ! ! !9==''  	 	T8(1)9==// 1)hR	.j .b$[j [r'   