
    i,                         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Jr  S SK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\5      r " S S\5      rg)    N)abstractmethod)ConfigCompositionException)	Container
DictConfigMissingMandatoryValue	OmegaConf
ListConfig)AnyListOptionalTuple)ConfigLoader)
ObjectType)Plugin)RunModec            
          \ rS rSrS\SS4S jr\SS j5       r\SS j5       r\	\S\
4S j5       5       r\S	\\
   SS4S
 j5       r\	\S\
S\
4S j5       5       r\	S\
S\\\
   \\
   4   4S j5       r\	S\
S\\
   4S j5       r\	S\S\
S\\
   4S j5       rS\
S	\\
   S\\
   S\\\
   \4   4S jrS	\\
   S\
S\\
   4S jr\	S\
S\
4S j5       rSrg)CompletionPlugin   config_loaderreturnNc                     Xl         g Nr   )selfr   s     ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hydra/plugins/completion_plugin.py__init__CompletionPlugin.__init__   s    *    c                     g r    r   s    r   installCompletionPlugin.install!       r   c                     g r   r    r!   s    r   	uninstallCompletionPlugin.uninstall%   r$   r   c                      g)zD
:return: the name of the shell this plugin provides completion for
Nr    r    r   r   providesCompletionPlugin.provides)   s     	r   config_namec                     g r   r    r   r+   s     r   queryCompletionPlugin.query1   r$   r   commandc                     g)z
:param command: "install" or "uninstall"
:return: command the user can run to install or uninstall this shell completion on the appropriate shell
Nr    r0   s    r   helpCompletionPlugin.help5   s     	r   filenamec                    U R                  S5      nUS:w  a  U SUS-    nXS-   S  n / SQn[        R                  R                  S5      (       aB  [	        [        S5      [        S5      5       H   nUR                  [        U5       S	35        M"     U (       d  g
U H,  nU R                  5       R                  U5      (       d  M)  X 4s  $    g
)N=r      )./\z./z.\winaz:)NN)	rfindsysplatform
startswithrangeordappendchrlower)r5   lastkey_eqprefixesdriveprefixs         r   _get_filenameCompletionPlugin._get_filename>   s    ~~c"2:a$(+Fq
+H4H||&&u--"3s8SX6EOOs5zl!$45 7 !">>#..v66!++ # r   wordc                    [         R                  R                  U 5      (       a  U n[         R                  " U 5      nSnO{[         R                  R	                  U 5      n[         R                  R                  U5      (       a  [         R                  " U5      nO/ n[         R                  R                  U 5      n/ nU HI  nUR                  U5      (       d  M  UR                  [         R                  R                  X5      5        MK     U$ )N )	ospathisdirlistdirdirnamebasenamerD   rG   join)rQ   rX   filesfile_prefixretfiles         r   complete_filesCompletionPlugin.complete_filesP   s    77==GJJt$EKggood+Gww}}W%%

7+''**40KD{++

277<<67  
r   configc                    S[         S[         S[        4S jnU c  / $ [        R                  " U 5      (       GaD  / nUR	                  S5      (       d  UR	                  S5      (       a  USS n [        R
                  " XS	S
9nUbd  [        R                  " U5      (       a  [        R                  US5      nO4[        U[        5      (       a  [        U5      R                  5       nU/nO/ nUR                  U Vs/ s H  oq U 3PM
     sn5        U$ UR                  S5      nUS:w  a_  USU n	XS-   S  n
[        R
                  " X	5      n[        R                  XZ5      nUR                  U Vs/ s H	  oy SU 3PM     sn5        U$ [        U [        5      (       aT  U R                  SS9 H?  u  p[        U5      nUR!                  U5      (       d  M(  UR#                  U" X5      5        MA     U$ [        R$                  " U 5      (       ao  [        U [&        5      (       d   e[)        [+        U 5      5       H@  n X   n[        U5      R!                  U5      (       a  UR#                  U" X5      5        M@  MB     U$  S[-        U 5       35       e! [         a    Sn GNf = fs  snf s  snf ! [         a    UR#                  U" US5      5         M  f = f)Nin_keyin_valuer   c                 L    [         R                  " U5      (       a  U  S3$ U  S3$ )Nr:   r7   )r   	is_config)rc   rd   s     r   str_rep.CompletionPlugin._get_matches.<locals>.str_repe   s+    ""8,, |# |#r   r:   r7   r   r8   T)throw_on_missingrS   r9   F)resolvez&Object is not an instance of config : )r
   strr   rf   endswithselectr   r   _get_matches
isinstanceboolrI   extendrA   r   items_exrD   rG   is_listr	   rE   lentype)ra   rQ   rg   matches	exact_key	conf_nodekey_matchesmatchlast_dotbase_keypartial_keykeyvaluestr_keyidxs                  r   rn   CompletionPlugin._get_matchesc   s   	$C 	$3 	$3 	$ >I  ((G}}S!!T]]3%7%7 2J	# ) 0 0D!I
 ( **955&6&C&CIr&R &i66(+I(<(<(>I'0k"$KkJkU& 0kJK8 5  ::c?r>#Ah/H"&!|~"6K ) 0 0 BI"2"?"?	"WKNN{#S{ej%$9{#ST( % "&*55*0//%/*HJC&)#hG&11$77 'ws/B C +I"  #**622)&*====#(V#5CA(.#&s8#6#6t#<#<$+NN733F$G $= $6  RB4<.QQ5O - # "I#  K $T $9 A 'wsB/? @As0   -J :J#/J(;:J-J J -"KKwordsc                 H   UR                  S5      nUR                  S5      nU(       d  U(       a
  US   USS  pOSnUR                  S5      nUR                  S5      nSn	US	:w  a  USU n
[        R                  nO[        R                  nUS	:X  a  Sn
OUSU n
U R
                  R                  U
UUUS
9n/ nU[        R                  :X  aB  U H;  nU
S:w  a  U
 SU 3OUnUR                  U5      (       a  UR                  U5        Sn	M=     OU[        R                  :X  a  U H  nU
S:w  a  U
 SU 3OUnUR                  U5      (       d  M*  U R
                  R                  U[        R                  UUS
9nU R
                  R                  U[        R                  UUS
9n[        U5      S:X  a  [        U5      S:  a  U(       d  US-   nO#[        U5      S:  a  [        U5      S:X  a  US-   nUR                  U5        M     U Vs/ s H	  nU U 3PM     nnX4$ s  snf )N+~r   r9   rS   r7   r;   Fr8   )
group_nameresults_filterr+   	overridesT)	rD   rA   r   CONFIGGROUPr   get_group_optionsrG   rt   )r   rQ   r+   r   is_additionis_deletionrN   last_eq_indexlast_slash_indexexact_matchparent_groupr   all_matched_groupsmatched_groupsrz   namer[   dirsgroups                      r   _query_config_groups%CompletionPlugin._query_config_groups   s?    ooc*ooc*+7DHDF

3::c?!B-0L'..N'--N2%!#A&67!//AA#)#	 B 
 %'Z...+4@B4F,q0E??4(("))$/"	 ,
 z///+4@B4F,q0E??4(( ..@@#''1'8'8$/"'	 A E  --??#''1'7'7$/"'	 @ D 4yA~#e*q.#czTQ3u:?#cz"))$/' ,* ;II.VHUG,.I** Js   
Hlinec                    SSK Jn  [        U5      S:H  =(       d    US   S:H  nU" UR                  5       5      nUR                  nU(       d  [        U5      S:X  a  SnO
US   nUSS n[
        R                  U5      u  pU	b/  Uc   e[
        R                  U	5      n
U
 Vs/ s H  oU-   PM	     n
nOU R                  XqUS9u  p/ nU(       dd  UR                  (       a  [        R                  O[        R                  n/ n U R                  R                  XUS9n[
        R                  UU5      n[#        [%        X-   5      5      n
['        U
5      $ s  snf ! [          a     N2f = f)	N   )get_argsr   r8    rS   )r+   r   )r+   r   run_mode)_internal.utilsr   rt   splitr   r   rO   r_   r   multirunr   MULTIRUNRUNr   load_configurationrn   r   listsetsorted)r   r+   r   r   new_wordparsed_argsr   rQ   fname_prefixr5   resultr^   r   r   config_matchesr   ra   s                    r   _queryCompletionPlugin._query   sg   .t9>4T"X_tzz|,%%s5zQD9D!BKE!1!?!?!E+++%44X>F6<=fdT)fF=F*.*C*CU +D +'N )+N/:/C/C7++!#!//BB$/8 C F &6%B%B64%PN #n=>?Ff~1 > 2  s   !E0E 
E$#E$c                     SnSn[         R                  " X5      nU(       a  UR                  S5      $ [         R                  " X 5      nU(       a  UR                  S5      $ [        SU  S35      e)ao  
Take the command line received from shell completion, and strip the app name from it
which could be at the form of python script.py or some_app.
it also corrects the key (COMP_INDEX) to reflect the same location in the striped command line.
:param line: input line, may contain python file.py followed=by_args..
:return: tuple(args line, key of cursor in args line)
z'^\s*[\w\/]*python[3]?\s*[\w/\.]*\s*(.*)z^\s*[\w_\-=\./]+\s*(.*)r9   zError parsing line '')rerz   r   RuntimeError)r   python_argsapp_argsrz   s       r   strip_python_or_app_name)CompletionPlugin.strip_python_or_app_name  sb     A-+;;q>!HHX,E{{1~%"%9$q#ABBr   r   r   N)__name__
__module____qualname____firstlineno__r   r   r   r"   r&   staticmethodrk   r)   r   r.   r3   r   rO   r   r_   r   rn   rp   r   r   r   __static_attributes__r    r   r   r   r      s   +l +t +     c    # 4   c c     hsmXc].J(K  " S T#Y  $ :Y :c :d3i : :x:+:+&.sm:+<@I:+	tCy$	:+x((3- (s (tCy (T Cs Cs C Cr   r   c                   x    \ rS rSrSrSS jrSS jr\S\4S j5       r	S\
\   SS4S	 jr\S
\S\4S j5       rSrg)DefaultCompletionPlugini  zC
A concrete instance of CompletionPlugin that is used for testing.
r   Nc                     [         er   NotImplementedErrorr!   s    r   r"   DefaultCompletionPlugin.install!      !!r   c                     [         er   r   r!   s    r   r&   !DefaultCompletionPlugin.uninstall$  r   r   c                      [         er   r   r    r   r   r)    DefaultCompletionPlugin.provides'      !!r   r+   c                     [         er   r   r-   s     r   r.   DefaultCompletionPlugin.query+  r   r   r0   c                     [         er   r   r2   s    r   r3   DefaultCompletionPlugin.help.  r   r   r    r   )r   r   r   r   __doc__r"   r&   r   rk   r)   r   r.   r3   r   r    r   r   r   r     se    "" "c " ""# "4 " "c "c " "r   r   )rT   r   rB   abcr   hydra.errorsr   	omegaconfr   r   r   r   r	   typingr
   r   r   r   hydra.core.config_loaderr   hydra.core.object_typer   hydra.plugins.pluginr   hydra.typesr   r   r   r    r   r   <module>r      sR    
 	 
  3  . - 1 - ' |Cv |C~". "r   