
    <Цid@                       S SK J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
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Jr  S SKJr  S SKJr  \(       a  S S	KJr  S S
KJ r J!r!J"r"  \" \#5      RI                  5       RJ                  RJ                  r& " S S\5      r'Sr(S#S jr)\" S5      r*\" S5      r+S$S jr,S%S jr-\R\                  S&S j5       r/S'S jr0\Rb                  S(S j5       r2S)S jr3 " S S5      r4 S*     S+S jjr5  S,       S-S jjr6 S.         S/S jjr7          S0S jr8          S1S jr9              S2S jr: " S S 5      r; " S! S"\\*   5      r<g)3    )annotationsN)fieldsis_dataclass)autoEnum)Path)AnyCallableGenericLiteralNoReturnTYPE_CHECKINGTypeVar)Self)CodeTemplate)	Namespace)IterableIteratorSequencec                  h    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
Srg)Target#    N)__name__
__module____qualname____firstlineno__r   
DEFINITIONDECLARATIONREGISTRATIONANONYMOUS_DEFINITIONNAMESPACED_DEFINITIONNAMESPACED_DECLARATION__static_attributes__r       M/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torchgen/utils.pyr   r   #   s/    J&K6L6 F!Vr%   r   z(^|\W){}($|\W)c                    [         R                  " SU 5      nUc  [        SU  35      eUR                  5       u  p#nX$R	                  S5      4$ )Nz(\w+)(\.\w+)?\((.*)\)zUnsupported function schema: , )rematchRuntimeErrorgroupssplit)schemamname_paramss        r&   split_name_paramsr3   6   sL    
)62Ay:6(CDDhhjODVd###r%   TSc              #  @   #    U H  nU " U5      nUc  M  Uv   M     g 7fNr   )funcxsxrs       r&   mapMayber<   F   s"     G=G s   	c              #  B   #    U H  nU " U5       S h  vN   M     g  N	7fr7   r   )r8   r9   r:   s      r&   	concatMapr>   N   s     7 s   
c              #     #     S v   g ! [          ac  nU " 5       n[        R                  " US5      nUR                  (       a  UR                  S    SU 3OUnU4UR                  SS  -   Ul        e S nAff = f7f)Nz  r   
   )	Exceptiontextwrapindentargs)msg_fnemsgs      r&   contextrI   V   sn      hooc4('(vv2cU#3!&&*$s%   A9	 A9
A6AA11A66A9c                D    [        S[        U 5      R                   35      e)NzUnhandled type: )AssertionErrortyper   )r:   s    r&   assert_neverrM   f   s     
+DG,<,<+=>
??r%   c                .    [         R                  " U 5      $ r7   )r   	from_file)template_fns    r&   _read_templaterQ   j   s    !!+..r%   c                    [         R                  " U R                  S5      5      R                  5       n[        R                  USS9$ )Nlatin1little)	byteorder)hashlibsha1encodedigestint
from_bytes)srW   s     r&   string_stable_hashr]   p   s5    <<*+224D>>$(>33r%   c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS	 jrSS
 jr      SS jr        SS jr      SS jr	SS.               SS jjr
SS jrSS jrSrg)FileManagerx   strinstall_dirtemplate_dirbooldry_runset[str]	filenamesc                F    Xl         X l        [        5       U l        X0l        g r7   )rb   rc   setrg   re   )selfrb   rc   re   s       r&   __init__FileManager.__init__~   s    &(r%   c                t    [        U5       nUR                  5       nS S S 5        UW:w  aY  [        R                  " [        R
                  R                  U5      SS9  [        US5       nUR                  U5        S S S 5        g g ! , (       d  f       Nn= f! [         a    S n Nf = f! , (       d  f       g = f)NT)exist_okw)openreadOSErrorosmakedirspathdirnamewrite)rj   filenamecontentsfold_contentss        r&   _write_if_changedFileManager._write_if_changed   s    	 h1 vvx   |#KK1DAh$! %$ $	   	 L	 
 %$s9   B BB *B)
BB B B&%B&)
B7c                   [         R                  R                  U R                  U5      nU" 5       n[	        U[
        5      (       a  SU;  a  [        S-  S-  n [        [        R                  S   R                  =(       d    U5      R                  5       n UR                  [        5      R                  5       n0 UESSSU SU 3-   0En[%        U5      nUR'                  U5      $ [	        U[(        5      (       a  U$ [+        U5        g ! [        [        4 a    UR                  5       n Nf = f! [          a    UR"                  n Nf = f)Ngenerated_commenttorchgenzgen.py__main__@zgenerated by z from )rs   ru   joinrc   
isinstancedict	REPO_ROOTr   sysmodules__file__absoluteKeyErrorAttributeErrorrelative_toas_posix
ValueErrorr0   rQ   
substitutera   rM   )	rj   rP   env_callabletemplate_pathenvgenerator_default	generatorgenerator_pathtemplates	            r&   substitute_with_template$FileManager.substitute_with_template   s:    T%6%6Dnc4  "#-$-
$:X$E!= $J/88M<M!hj 4%.%:%:9%E%N%N%PN'n-=VK=QQ &m4H&&s++S!!J' !.1 = 1 : : <I=
 " 4%.^^N4s$   =D #D1  D.-D.1E
	E
c                    U R                    SU 3nXR                  ;  d   S5       eU R                  R                  U5        U R                  (       d   U R	                  UUS9nU R                  XS9  g g )N/zduplicate file write {filename})rP   r   )rx   ry   )rb   rg   addre   r   r|   )rj   rx   rP   r   substitute_outs        r&   write_with_templateFileManager.write_with_template   s}     &&'q
3~~-P/PP-8$||!::') ; N ""H"N r%   c                (    U R                  XU5        g r7   )r   )rj   rx   r   s      r&   rw   FileManager.write   s    
 	  \Br%   N)base_envc                 ^^ SS0n[        U5       V	s/ s H
  n	SSU	 30PM     n
n	U/U
-   nUb  U H  mTR                  U5        M     T HN  nU HE  mUT;   a7  [        TU   [        5      (       d   S5       eTU   R	                  5       TU'   M@  / TU'   MG     MP     SU4S jjnU R
                  (       a  SnU H5  nU" U5      n[        U5      U-  nU" U5      nU" X   U5        U" UU5        M7     UR                  S5      nUS:X  a  [        U5      nUS U nUUS  nU H%  mTS   nU R                  U U U 3UU4S	 j5        M'     U R                  R                  U R                   S
U SU 35        g s  sn	f )Nshard_id
Everythingr1   z'sharded keys in base_env must be a listc                p   > UR                  5        H!  u  p#UT;   d
   SU 35       eX==   U-  ss'   M#     g )Nzundeclared sharded key )items)intofrom_kvsharded_keyss       r&   	merge_env,FileManager.write_sharded.<locals>.merge_env   s;    L(G,CA3*GG(1 &r%   r   .c                    > T $ r7   r   )shards   r&   <lambda>+FileManager.write_sharded.<locals>.<lambda>  s    5r%   r   )r   dict[str, list[str]]r   r   returnNone)rangeupdater   listcopyre   r]   rfindlenr   rg   discardrb   )rj   rx   r   key_fnr   
num_shardsr   r   
everythingishards
all_shardskeyr   itemsidr   dot_posbase_filename	extensionr   r   s          `             @r&   write_shardedFileManager.write_sharded   s    '1,%?
+0+<(
+<aZ1QC!+< 	 (
 !\F*
#X& $  C#%<%c
D  A@A  "'s!2E#J!#E#J $  	
 <<ED,C$S)J6Ct$Cfk3'j#&  ..%b=(mG '*WX&	EZ(H$$ /(I;7=   	 -
9+F	
c(
s   E9c           	         SR                  USR                  S [        U R                  5       5       5      5      nU R	                  X#5        g)zSWrite a file containing the list of all outputs which are
generated by this script.zset({}
    {})z
    c              3  2   #    U  H  nS U-   S -   v   M     g7f)"Nr   ).0r0   s     r&   	<genexpr>,FileManager.write_outputs.<locals>.<genexpr>  s     N7Mt#*s*7Ms   N)formatr   sortedrg   r|   )rj   variable_namerx   contents       r&   write_outputsFileManager.write_outputs  sB     $**MMNvdnn7MNN
 	x1r%   c                    [         R                  R                  U R                  [         R                  R	                  [
        5      5      $ )z
This needs to be deterministic. The template dir is an absolute path
that varies across builds. So, just use the path relative to this file,
which will point to the codegen source but will be stable.
)rs   ru   relpathrc   rv   r   rj   s    r&   template_dir_for_comments%FileManager.template_dir_for_comments  s,     wwt00"''//(2KLLr%   )re   rg   rb   rc   )rb   ra   rc   ra   re   rd   r   r   )rx   ra   ry   ra   r   r   )rP   ra   r   "Callable[[], str | dict[str, Any]]r   ra   )rx   ra   rP   ra   r   r   r   r   )rx   ra   r   r   r   r   )rx   ra   r   Iterable[T]r   zCallable[[T], str]r   z#Callable[[T], dict[str, list[str]]]r   rZ   r   zdict[str, Any] | Noner   rf   r   r   )r   ra   rx   ra   r   r   r   ra   )r   r   r   r   __annotations__rk   r|   r   r   rw   r   r   r   r$   r   r%   r&   r_   r_   x   s    M".P	BOO O 9	O
 
O CC 9C 
	C +/?
?
 ?

 #?
 :?
 ?
 (?
 ?
 
?
B2Mr%   r_   c                    [         R                  R                  U R                  S5      nU(       a  UOU R                  n[        XU R                  S9$ )N	templates)rb   rc   re   )rs   ru   r   source_pathrb   r_   re   )optionsrb   rc   s      r&   make_file_managerr     sC     77<< 3 3[AL!,+'2E2EKGOO r%   c                \    [         R                  S:  a  SSKJn  U" XU5      $ [	        XUS9$ )N)   
   r   )pformat)rD   width)r   version_infopprintr   _pformat)objrD   r   r   s       r&   dataclass_reprr   )  s/     7""sE**Ce44r%   c                   [        U 5      (       d   S[        U 5       35       eU R                  R                  nU[	        U5      S-   -  n[        U 5       Vs/ s H6  oUR                  (       d  M  UR                  [        XR                  5      4PM8     nn/ nU H  u  pU[	        U5      -   S-   n
[        U	5      (       a  [        XX*5      nOZ[        U	[        5      (       a  [        XX*5      nO8[        U	[        [        [        45      (       a  [!        XX*5      nO[        U	5      nUR#                  U SU 35        M     US-  nSU 3R%                  U5      nU SU S3$ s  snf )Nz%obj should be a dataclass, received: rA   = z,
())r   rL   	__class__r   r   r   reprr0   getattrr   r   r   _format_dictr   ri   tuple_format_listappendr   )r   rD   r   curr_indent
class_namerz   fields_list
fields_strr0   attr_curr_indentstr_repr
indent_strbodys                 r&   r   r   7  sM    Q Ed3i[QQ''J3z?Q&&K;A#;Q;a&&1AFFGC01;KQJ!
 #SY.2eBHd###D%FHtS%011#D%FHDzHTF!H:./ " s"J"":.D\4&"") Rs   E#0%E#c           
     
   X1S-   -  n/ nU R                  5        HY  u  pV[        U5      n[        U5      (       a  [        XaX#[	        U5      -   5      O
[        U5      nUR                  U SU 35        M[     [        XAX#SS5      $ )Nr   z: {})r   r   r   r   r   r   _format)	r  rD   r   r   	dict_reprr   r   k_reprv_strs	            r&   r   r   Z  s     A:KI

a A QS['@Aa 	
 	F82eW-.  9e#sCCr%   c           	         X1S-   -  nU  Vs/ s H*  n[        U5      (       a  [        XAX#5      O
[        U5      PM,     nn[        U [        5      (       a  SOSu  pg[        XQX#Xg5      $ s  snf )NrA   )[])r   r   )r   r   r   r   r   r	  )r  rD   r   r   l	list_reprstartends           r&   r   r   n  sv     A:K A 4@??E/QO    *$55:JE9e%EEs   1A'c                    Su  pg[        [        U 5      5      U:  a  SnSU-  nSU-  nSU U 3R                  U 5      n	U U U	 U 3$ )N) r  r@   r   r(   )r   r   r   )
r   rD   r   r   r  r  	delimitercurr_indent_strr  r  s
             r&   r	  r	  }  si     "(I
4
%	+vJ	{?+,11*=DWZLse,,r%   c                      \ rS rSrSr S       SS jjr\ S     SS jj5       r\SS j5       r	\SS j5       r
\SS j5       rSSS jjrS	rg
)NamespaceHelperi  zA helper for constructing the namespace open and close strings for a nested set of namespaces.

e.g. for namespace_str torch::lazy,

prologue:
namespace torch {
namespace lazy {

epilogue:
} // namespace lazy
} // namespace torch
c                T   UR                  S5      n[        U5      U::  d   SU SU S35       eXl        SR                  U Vs/ s H	  nSU S3PM     sn5      U l        SR                  [        U5       Vs/ s H  nSU 3PM
     sn5      U l        X@l        X l        g s  snf s  snf )	N::z"Codegen doesn't support more than z# level(s) of custom namespace. Got r   r@   z
namespace z {z} // namespace )	r-   r   cpp_namespace_r   	prologue_reversed	epilogue_namespaces_entity_name_)rj   namespace_strentity_name	max_levelcpp_namespacesns         r&   rk   NamespaceHelper.__init__  s     ',,T29,	o/	{:]^k]llmn	o,+#PAj3$7#PQ-5n-EF-Es#-EF
 *' $QFs   B 8B%c                j    U R                  S5      nUS   nSR                  USS 5      n[        XCUS9$ )za
Generate helper from nested namespaces as long as class/function name. E.g.: "torch::lazy::add"
r  r   N)r"  r#  r$  )r-   r   r  )namespaced_entityr$  namesr#  r"  s        r&   from_namespaced_entity&NamespaceHelper.from_namespaced_entity  sC     "''-Bi		%*-'I
 	
r%   c                    U R                   $ r7   )r  r   s    r&   prologueNamespaceHelper.prologue      ~~r%   c                    U R                   $ r7   )r  r   s    r&   epilogueNamespaceHelper.epilogue  r0  r%   c                    U R                   $ r7   )r!  r   s    r&   r#  NamespaceHelper.entity_name  s       r%   c                @    U R                   (       a  U R                   $ U$ )z
Return the namespace string from joining all the namespaces by "::" (hence no leading "::").
Return default if namespace string is empty.
)r  )rj   defaults     r&   get_cpp_namespace!NamespaceHelper.get_cpp_namespace  s    
 '+&9&9t""FwFr%   )r  r!  r  r   r  N)r     )r"  ra   r#  ra   r$  rZ   r   r   )r:  )r)  ra   r$  rZ   r   r  r   )r  )r7  ra   r   ra   )r   r   r   r   __doc__rk   staticmethodr+  propertyr.  r2  r#  r8  r$   r   r%   r&   r  r    s     KL( (/2(DG(	(  12

+.
	
 
     ! !G Gr%   r  c                      \ rS rSr% S\S'   SSS jjrSS jrSS jrSS jrSS	 jr	SS
 jr
\SS j5       rSS jrSS jrSS jrSrg)
OrderedSeti  zdict[T, Literal[None]]storageNc                N    Uc  0 U l         g [        R                  U5      U l         g r7   )r@  r   fromkeys)rj   iterables     r&   rk   OrderedSet.__init__  s    DL==2DLr%   c                    XR                   ;   $ r7   r@  rj   r   s     r&   __contains__OrderedSet.__contains__  s    ||##r%   c                H    [        U R                  R                  5       5      $ r7   )iterr@  keysr   s    r&   __iter__OrderedSet.__iter__  s    DLL%%'((r%   c                N    U R                   R                  UR                   5        g r7   )r@  r   )rj   r   s     r&   r   OrderedSet.update  s    EMM*r%   c                "    S U R                   U'   g r7   rF  rG  s     r&   r   OrderedSet.add  s    !Tr%   c                X    [        5       nU R                  R                  5       Ul        U$ r7   )r?  r@  r   )rj   rets     r&   r   OrderedSet.copy  s"    '\ll'')
r%   c                 f    U S   R                  5       nU SS   H  nUR                  U5        M     U$ )Nr   rA   )r   r   )rE   rT  r\   s      r&   unionOrderedSet.union  s1    1gllnabAJJqM 
r%   c                ,    [         R                  X5      $ r7   )r?  rW  rj   others     r&   __or__OrderedSet.__or__  s    ,,r%   c                (    U R                  U5        U $ r7   )r   rZ  s     r&   __ior__OrderedSet.__ior__  s    Er%   c                    [        U[        5      (       a  U R                  UR                  :H  $ [        U R                  R	                  5       5      U:H  $ r7   )r   r?  r@  ri   rL  rZ  s     r&   __eq__OrderedSet.__eq__  s?    eZ((<<5==00t||((*+u44r%   rF  r7   )rC  zIterable[T] | Noner   r   )r   r4   r   rd   )r   zIterator[T])r   OrderedSet[T]r   r   )r   r4   r   r   )r   rd  )rE   rd  r   rd  )r[  rd  r   rd  )r[  rd  r   r   )r[  objectr   rd   )r   r   r   r   r   rk   rH  rM  r   r   r   r<  rW  r\  r_  rb  r$   r   r%   r&   r?  r?    sI    ##3$)+"
  -5r%   r?  )r.   ra   r   ztuple[str, list[str]])r8   zCallable[[T], S | None]r9   r   r   Iterator[S])r8   zCallable[[T], Sequence[S]]r9   r   r   rf  )rF   zCallable[[], str]r   zIterator[None])r:   r   r   r   )rP   ra   r   r   )r\   ra   r   rZ   r7   )r   r   rb   z
str | Noner   r_   )r   P   )r   r	   rD   rZ   r   rZ   r   ra   )r   )
r   r	   rD   rZ   r   rZ   r   rZ   r   ra   )
r  zdict[Any, Any]rD   rZ   r   rZ   r   rZ   r   ra   )
r  z&list[Any] | set[Any] | tuple[Any, ...]rD   rZ   r   rZ   r   rZ   r   ra   )r   z	list[str]rD   rZ   r   rZ   r   rZ   r  ra   r  ra   r   ra   )=
__future__r   
contextlib	functoolsrV   rs   r)   r   rC   dataclassesr   r   enumr   r   pathlibr   typingr	   r
   r   r   r   r   r   typing_extensionsr   torchgen.code_templater   argparser   collections.abcr   r   r   r   r   parentr   r   IDENT_REGEXr3   r4   r5   r<   r>   contextmanagerrI   rM   cacherQ   r]   r_   r   r   r   r   r   r	  r  r?  r   r%   r&   <module>rw     sG   "    	 	 
  ,   T T T " / "<< N##%,,33	
$T 
$  $ CLCL 	 	@ / /
4bM bMN 37%/ 5	55 5 		5$ 	 #	 # #  # 	 #
 	 #FD
DD D 	D
 	D(F
0FF F 	F
 	F--- - 	-
 - 
- 	-&>G >GB,5 ,5r%   