
    i(                     n   % 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	J
r
  S SKJr  S SKJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&  S SK'J(r(J)r)  S SK*J+r+  \"\\\ \&\$/r,\\\"      \-S'   \	 " S S5      5       r. " S S\S9r/S\S\04S jr1g)    N)defaultdict)	dataclassfield)default_timer)AnyDictListOptionalTupleType)
DictConfig)SourcesRegistry)	Singleton)CompletionPlugin)ConfigSource)Launcher)Plugin)SearchPathPlugin)Sweeper)HydraContextTaskFunction)instantiatePLUGIN_TYPESc                   R    \ rS rSr% Sr\\S'   Sr\\S'   \" \	S9r
\\\4   \S'   Srg)		ScanStats$   r   
total_timetotal_modules_import_time)default_factorymodules_import_time N)__name__
__module____qualname____firstlineno__r   float__annotations__r   r   dictr    r   str__static_attributes__r!       Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hydra/core/plugins.pyr   r   $   s0    J'(u(,1$,Gc5j)Gr+   r   c                   r   \ rS rSr\S\S\SS 4S j5       rSS jrSS jrS	\	\
   SS4S
 jrS	\	\
   SS4S jrS\S\
4S jr\S	\S\4S j5       rS\S\S\S\4S jrS\S\S\S\4S jr\S\\   S\\\	\
      \4   4S j5       rS\\   4S jr SS\\	\
      S\\	\
      4S jjr\S\SS4S j5       rSr g)Plugins+   argskwargsreturnc                  p    [         R                  " [        /U Q70 UD6n[        U[        5      (       d   eU$ N)r   instancer.   
isinstance)r0   r1   rets      r,   r5   Plugins.instance,   s4      :4:6:#w''''
r+   Nc                 N    0 U l         0 U l        S U l        U R                  5         g r4   )plugin_type_to_subclass_listclass_name_to_classstats_initializeselfs    r,   __init__Plugins.__init__2   s%    TV)<> *.
r+   c                 \   / n[         R                  " S5      nUR                  U5         [         R                  " S5      nUR                  U5        [	        [
        5      U l        0 U l        U R                  US9u  o@l	        U H  nU R                  U5        M     g ! [         a     NXf = f)Nzhydra._internal.core_pluginshydra_plugins)modules)	importlibimport_moduleappendImportErrorr   listr:   r;   _scan_all_pluginsr<   	_register)r?   	top_levelcore_pluginsrC   scanned_pluginsclazzs         r,   r=   Plugins._initialize8   s    !	 ../MN&	%33ODM]+
 -8,=)#% &*&<&<Y&<&O#$ENN5! %  		s   'B 
B+*B+rO   c                 \    [        U5      (       d  [        S5      eU R                  U5        g)zQ
Call Plugins.instance().register(MyPlugin) to manually register a plugin class.
zNot a valid Hydra PluginN)_is_concrete_plugin_type
ValueErrorrK   )r?   rO   s     r,   registerPlugins.registerK   s'     (..788ur+   c                    [        U5      (       d   e[         HG  n[        X5      (       d  M  XR                  U   ;  d  M)  U R                  U   R	                  U5        MI     UR
                   SUR                   3nXR                  U'   [        U[        5      (       a%  [        R                  " 5       R                  U5        g g )N.)rR   r   
issubclassr:   rG   r#   r"   r;   r   r   r5   rT   )r?   rO   plugin_typenames       r,   rK   Plugins._registerS   s    '....'K%-- A A+ NN55kBII%P ( ""#1U^^$45).  &e\**$$&//6 +r+   configc           	         SSK Jn  UR                  USS9n Uc  [        S5      eU R	                  U5      (       d  [        SU S35      eX0R                  R                  5       ;  a  [        SU S	35      eU R                  U   n[        XS
9n[        U[        5      (       d   e U$ ! [         a   n[        SU S[        U5       S35      eS nAff = f)Nr   )utilsF)popzclass not configuredzInvalid plugin 'z ': not the hydra_plugins packagezUnknown plugin class : '')r\   _target_zCould not instantiate plugin  : z

	IS THE PLUGIN INSTALLED?

)hydra._internalr^   _get_cls_namerH   is_in_toplevel_plugins_moduleRuntimeErrorr;   keysr   r6   r   r)   )r?   r\   internal_utils	classnamerO   plugines          r,   _instantiatePlugins._instantiate^   s    ;"00U0C		 !"89955i@@ #&yk1QR   8 8 = = ??"%=i[#JKK,,Y7E ?Fff----   	/	{#c!fXEgh 	s   BB) )
C3CCc                 T    U R                  S5      =(       d    U R                  S5      $ )Nzhydra_plugins.zhydra._internal.core_plugins.)
startswith)rO   s    r,   re   %Plugins.is_in_toplevel_plugins_modulez   s+     01 
U5E5E+6
 	
r+   hydra_contexttask_functionc                   [         R                  U 5        UR                  R                  c  [	        S5      eU R                  UR                  R                  5      n[        U[        5      (       d   eUR                  XUS9  U$ )NzHydra sweeper is not configuredrq   rr   r\   )	r.   check_usagehydrasweeperrf   rl   r6   r   setup)r?   rq   rr   r\   rw   s        r,   instantiate_sweeperPlugins.instantiate_sweeper   sx     	D!<<'@AA##FLL$8$89'7++++'V 	 	
 r+   c                    [         R                  U 5        UR                  R                  c  [	        S5      eU R                  UR                  R                  5      n[        U[        5      (       d   eUR                  XUS9  U$ )Nz Hydra launcher is not configuredrt   )	r.   ru   rv   launcherrf   rl   r6   r   rx   )r?   rq   rr   r\   r|   s        r,   instantiate_launcherPlugins.instantiate_launcher   sx     	D!<<  (ABB$$V\\%:%:;(H----'V 	 	
 r+   rD   c                 \   [        5       n[        5       Ul        / nU  GH  n[        R                  " UR
                  UR                  S-   S S9 GHU  u  pEn UR                  SS5      S   nUR                  S5      (       a  UR                  S5      (       d  MK  [        5       n[        R                  " SS	9 n	[        R                  S
:  a(  UR                  U5      n
U
c   eU
R                  U5      nOUR                  U5      nUc   eU[        R                   ;   a  [        R                   U   nO["        R$                  R'                  U5      nUb.  UR(                  R+                  U5        U[        R                   U'   S S S 5        [        5       U-
  n[-        W	5      S:  a  [        R.                  R1                  SU S35        U	 HX  n[        R2                  " UR4                  UR6                  UR8                  UR:                  UR<                  UR>                  S9  MZ     U=R@                  U-  sl         XQRB                  ;  d   eXRB                  U'   WbE  [D        RF                  " U5       H(  u  p[I        U5      (       d  M  URK                  U5        M*     GMU  GMX     GM     [        5       UR                  -
  Ul        X!4$ ! , (       d  f       GNQ= f! [L         aA  n[        RN                  " SU S[Q        U5      R                   SU 3[R        S9   S nAGM  S nAff = f)NrW   c                     g r4   r!   )xs    r,   <lambda>+Plugins._scan_all_plugins.<locals>.<lambda>   s    PTr+   )pathprefixonerror   ___T)record)   
   r   z)[Hydra plugins scanner] : warnings from 'z#'. Please report to plugin author.
)messagecategoryfilenamelinenofilelinez
	Error importing 'zl'.
	Plugin is incompatible with this Hydra version or buggy.
	Recommended to uninstall or upgrade plugin.
		rb   )r   r   )*r   timerr   pkgutilwalk_packages__path__r"   rsplitro   warningscatch_warningssysversion_infofind_moduleload_module	find_specrD   rE   utilmodule_from_specloaderexec_modulelenstderrwriteshowwarningr   r   r   r   r   r   r   r    inspect
getmembersrR   rG   rH   warntypeUserWarning)rD   r<   rN   mdlimportermodnameispkgmodule_nameimport_timerecorded_warningsm
loaded_modspecwrZ   objrk   s                    r,   rJ   Plugins._scan_all_plugins   s     7.0C,3,A,A\\#,,*<n-(59")..a"8"<K #--c22;;Q;QRV;W;W "''K!00=AR++g5 ( 4 4W =A#$=0=)*w)?J#+#5#5g#>D#'#33#3&#++5-0[[-A
-6^^-L-LT-R
)5 $ 7 7
 C7AG 4 >  #('K"7K,-1

((GyPtu "3A$00()		)*)*'(xx%&VV%&VV "3 33{B3"*C*CCCC9D--g6!-)0););J)GID7<< / 6 6s ; *H .a- ~ !7U%5%55%%g >=P # MM#..5Y 7  $Aw//0A3	!8
 "- s?   AK K 9CKDK K 
KK  
L+*5L&&L+c                     U R                   $ r4   )r<   r>   s    r,   	get_statsPlugins.get_stats   s    zzr+   rY   c                     [         R                  U 5        / nUc  [        n[        U[        5      (       d   eXR                  ;  a  / $ U R                  U    H  nUR                  U5        M     U$ )z
:param plugin_type: class of plugin to discover, None for all
:return: a list of plugins implementing the plugin type (or all if plugin type is None)
)r.   ru   r   rX   r:   rG   )r?   rY   r7   rO   s       r,   discoverPlugins.discover   so     	D!"$ K+v....???I66{CEJJu D 
r+   self_c                 ~    [        U [        5      (       d(  [        S[        R                  " 5       S   S    S35      eg )Nz6Plugins is now a Singleton. usage: Plugins.instance().r   r   z(...))r6   r.   rS   r   stack)r   s    r,   ru   Plugins.check_usage  sA    %))HYZI[\]I^H__de  *r+   )r;   r:   r<   )r2   Nr4   )!r"   r#   r$   r%   staticmethodr   r5   r@   r=   r   r   rT   rK   r   rl   r)   boolre   r   r   r   ry   r   r}   r	   r   r   rJ   r
   r   r   ru   r*   r!   r+   r,   r.   r.   +   s    s y  
"&d6l t 	7tF| 	7 	7: & 8 
S 
T 
 

 $ $	
  
"# $ 	
 
" H&cH&	tDL!9,	-H& H&T8I.  59#DL1	d6l	& 3 4  r+   r.   )	metaclassr   r2   c                     [         R                  " U 5      =(       a2    [        U [        5      =(       a    [         R                  " U 5      (       + $ r4   )r   isclassrX   r   
isabstract)r   s    r,   rR   rR     s3    XC!8XASASTWAX=Xr+   )2rE   importlib.utilr   r   r   r   collectionsr   dataclassesr   r   timeitr   r   typingr   r   r	   r
   r   r   	omegaconfr    hydra._internal.sources_registryr   hydra.core.singletonr   hydra.plugins.completion_pluginr   hydra.plugins.config_sourcer   hydra.plugins.launcherr   hydra.plugins.pluginr    hydra.plugins.search_path_pluginr   hydra.plugins.sweeperr   hydra.typesr   r   hydra.utilsr   r   r'   r   r.   r   rR   r!   r+   r,   <module>r      s        
  # ( ) 9 9   < * < 4 + ' = ) 2 # $d4<   H H H]	 ]@# $ r+   