
    3KiA                       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
  S SKJrJ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  S S	KJr  \(       a  S S
KJr  S SKJrJ r J!r!J"r"  \" \#5      RI                  5       RJ                  r&\&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       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 jr7          S-S jr8              S.S jr9 " S S5      r: " S  S!\\+   5      r;g)/    )annotationsN)is_dataclass)autoEnum)Pathpformat)AnyGenericTYPE_CHECKINGTypeVar)assert_neverSelf)CodeTemplate)	Namespace)Callable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       P/var/www/html/dynamic-report/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   8   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<   H   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>   P   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   X   sn      hooc4('(vv2cU#3!&&*$s%   A9	 A9
A6AA11A66A9c                .    [         R                  " U 5      $ r7   )r   	from_file)template_fns    r&   _read_templaterM   e   s    !!+..r%   c                    [         R                  " U R                  S5      SS9R                  5       n[        R                  USS9$ )Nlatin1F)usedforsecuritylittle)	byteorder)hashlibsha1encodedigestint
from_bytes)srT   s     r&   string_stable_hashrZ   k   s7    <<*EBIIKD>>$(>33r%   c                  
   \ rS rSr        SS jr\SS j5       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	.                 SS jjrSS jrSS jrSrg)FileManagers   c                n    [        U5      U l        [        U5      U l        [        5       U l        X0l        g r7   )r   install_dirtemplate_dirsetfilesdry_run)selfr_   r`   rc   s       r&   __init__FileManager.__init__t   s,      , . #
r%   c                r    [        U R                   Vs1 s H  oR                  5       iM     sn5      $ s  snf r7   )	frozensetrb   as_posix)rd   files     r&   	filenamesFileManager.filenames   s'    djjAjd--/jABBAs   4c                    [        U5      nS n UR                  SS9nX$:w  a+  UR                  R	                  SSS9  UR                  USS9  g g ! [         a     N=f = f)Nzutf-8)encodingT)parentsexist_ok)r   	read_textOSErrorparentmkdir
write_text)rd   filenamecontentsrj   old_contentss        r&   _write_if_changedFileManager._write_if_changed   sm    H~#'	>>7>;L #KKdT:OOHwO7 $  		s   A 
AAc                   [        U5      R                  5       (       a
   SU 35       eU R                  U-  nU" 5       n[        U[        5      (       a  SU;  a|  [
        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      n	[&        R(                  " SS	U	[&        R*                  S
9$ [        U[,        5      (       a  U$ [/        U5        g ! [        [        4 a    UR                  5       n Nf = f! [         a    UR                   n Nf = f)Nztemplate_fn must be relative: generated_commentzgen.py__main__@zgenerated by z from z
                (""")\n+             # match triple quotes
                (
                    (\s*@.+\n)*     # match decorators if any
                    \s*(class|def)  # match class/function definition
                )
                z\g<1>\n\n\g<2>)flags)r   is_absoluter`   
isinstancedictTORCHGEN_ROOTsysmodules__file__absoluteKeyErrorAttributeErrorrelative_to	REPO_ROOTri   
ValueErrorr0   rM   
substituter)   subVERBOSEstrr   )
rd   rL   env_callabletemplate_pathenvgenerator_default	generatorgenerator_pathtemplatesubstitute_outs
             r&   substitute_with_template$FileManager.substitute_with_template   s   
 $0022 	
,[M:	
2 ))K7nc4  "#-$1H$<!= $J/88M<M!hj 4%.%:%:9%E%N%N%PN'n-=VK=QQ &m4H%005N 66 "jj  c3JSG !.1 = 1 : : <I=
 " 4%.^^N4s$   $=D: "#E  : EE E98E9c                @   [        U5      nUR                  5       (       a
   SU 35       eU R                  U-  nX@R                  ;  d
   SU 35       eU R                  R	                  U5        U R
                  (       d   U R                  UUS9nU R                  XES9  g g )Nfilename must be relative: zduplicate file write )rL   r   )rv   rw   )r   r   r_   rb   addrc   r   ry   )rd   rv   rL   r   rj   r   s         r&   write_with_templateFileManager.write_with_template   s     >''))S-H
+SS)(*::%E)>tf'EE%

t||!::') ; N ""D"J r%   c                (    U R                  XU5        g r7   )r   )rd   rv   r   s      r&   writeFileManager.write   s    
 	  \Br%   N)base_envc               0    U R                  UUUUUUUUS9  g )N)key_fnr   
num_shardsr   sharded_keys)write_sharded_with_template)rd   rv   itemsr   r   r   r   r   s           r&   write_shardedFileManager.write_sharded   s/     	((%!% 	) 		
r%   c               V  ^^ [        U5      n	U	R                  5       (       a
   SU 35       e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 H6  nU" U5      n[        U5      U-  nU" U5      nU" UU   U5        U" U
U5        M8     U H<  mTS   nU R                  U	R                  U	R                   U 35      UU4S j5        M>     U R                  R                  U R                  U	R                  U	R                   S35      -  5        g s  snf )
Nr   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 )r   )intofrom_kvr   s       r&   	merge_env:FileManager.write_sharded_with_template.<locals>.merge_env  s;    L(G,CA3*GG(1 &r%   r   c                    > T $ r7   r   )shards   r&   <lambda>9FileManager.write_sharded_with_template.<locals>.<lambda>-  s    r%   )r   dict[str, list[str]]r   r   returnNone)r   r   rangeupdater   listcopyrc   rZ   r   	with_stemstemrb   discardr_   )rd   rv   rL   r   r   r   r   r   r   rj   
everythingishards
all_shardskeyr   itemsidr   r   r   s           `           @r&   r   'FileManager.write_sharded_with_template   s    H~##%%O)DXJ'OO%&0,%?
+0+<(
+<aZ1QC!+< 	 (
 !\F*
#X& $  C#%<%eCj$77 A7 "'s!2E#J!#E#J $  	
 <<ED,C$S)J6Ct$CfSk3'j#&   EZ(H$$$))XJ78   	

4++dnn		{*=U.VVW[(
s   F&c                    SR                  SU/S [        U R                  5       5       QSP75      nU R                  X#5        g)zSWrite a file containing the list of all outputs which are generated by this script.r@   zset(c              3  J   #    U  H  nS UR                  5        S3v   M     g7f)z    ""N)ri   ).0rj   s     r&   	<genexpr>,FileManager.write_outputs.<locals>.<genexpr>:  s"     L9KE$--/*!,9Ks   !#)N)joinsortedrb   ry   )rd   variable_namerv   contents       r&   write_outputsFileManager.write_outputs3  sN    )) M

9KL	
 
 	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.
)ospathrelpathr`   dirnamer   rd   s    r&   template_dir_for_comments%FileManager.template_dir_for_comments@  s,     wwt00"''//(2KLLr%   )rc   rb   r_   r`   )r_   
str | Pathr`   r   rc   boolr   r   )r   zfrozenset[str])rv   r   rw   r   r   r   )rL   r   r   "Callable[[], str | dict[str, Any]]r   r   )rv   r   rL   r   r   r   r   r   )rv   r   r   r   r   r   )rv   r   r   Iterable[T]r   Callable[[T], str]r   #Callable[[T], dict[str, list[str]]]r   rW   r   dict[str, Any] | Noner   set[str]r   r   )rv   r   rL   r   r   r   r   r   r   r   r   rW   r   r   r   r   r   r   )r   r   rv   r   r   r   r   r   )r   r   r   r   re   propertyrk   ry   r   r   r   r   r   r   r   r$   r   r%   r&   r\   r\   s   s   		 !	 		
 
	 C C
844 94 
	4lKK  K 9	K
 
K$CC 9C 
	C +/

 

 #
 :
 
 (
 
 

> +/<X<X  <X 	<X #<X :<X <X (<X <X 
<X|2Mr%   r\   c                    [         R                  R                  U R                  S5      nU(       a  UOU R                  n[        UUU R                  S9$ )N	templates)r_   r`   rc   )r   r   r   source_pathr_   r\   rc   )optionsr_   r`   s      r&   make_file_managerr   J  sG     77<< 3 3[AL!,+'2E2EK! r%   c                    [        XU5      $ r7   r   )objrD   widths      r&   dataclass_reprr   X  s    
 3&&r%   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      $ )N   z: {})r   reprr   r	   lenappend_format)	attrrD   r   curr_indent	dict_reprr   r   k_reprv_strs	            r&   _format_dictr  `  s     A:KI

a A AuCK&?@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   rD   r   r   l	list_reprstartends           r&   _format_listr
  t  su     A:K A 3?q//5.tAwN    *$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   )

fields_strrD   r   r   r  r	  	delimitercurr_indent_str
indent_strbodys
             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@   z
namespace z {z} // namespace )	r-   r   cpp_namespace_r   	prologue_reversed	epilogue_namespaces_entity_name_)rd   namespace_strentity_name	max_levelcpp_namespacesns         r&   re   NamespaceHelper.__init__  s     ',,T2>"i/ 	
0;^_l^mmn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  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  r-  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  )rd   defaults     r&   get_cpp_namespace!NamespaceHelper.get_cpp_namespace  s    
 '+&9&9t""FwFr%   )r  r  r  r  r  N)r     )r  r   r  r   r   rW   r   r   )r7  )r&  r   r   rW   r   r  r   )r  )r4  r   r   r   )r   r   r   r   __doc__re   staticmethodr(  r   r+  r/  r  r5  r$   r   r%   r&   r  r    s      	(( ( 	(
 
(&  


 

 
     ! !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, None]storageNc                N    Uc  0 U l         g [        R                  U5      U l         g r7   )r<  r   fromkeys)rd   iterables     r&   re   OrderedSet.__init__  s    DL==2DLr%   c                    XR                   ;   $ r7   r<  rd   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   )rd   r   s     r&   r   OrderedSet.update  s    EMM*r%   c                "    S U R                   U'   g r7   rB  rC  s     r&   r   OrderedSet.add  s    !Tr%   c                X    [        5       nU R                  R                  5       Ul        U$ r7   )r;  r<  r   )rd   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   rP  rY   s      r&   unionOrderedSet.union  s1    1gllnabAJJqM 
r%   c                ,    [         R                  X5      $ r7   )r;  rS  rd   others     r&   __or__OrderedSet.__or__  s    ,,r%   c                (    U R                  U5        U $ r7   )r   rV  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<  ra   rH  rV  s     r&   __eq__OrderedSet.__eq__  s?    eZ((<<5==00t||((*+u44r%   rB  r7   )r?  zIterable[T] | Noner   r   )r   r4   r   r   )r   zIterator[T])r   OrderedSet[T]r   r   )r   r4   r   r   )r   r`  )rE   r`  r   r`  )rW  r`  r   r`  )rW  r`  r   r   )rW  objectr   r   )r   r   r   r   __annotations__re   rD  rI  r   r   r   r9  rS  rX  r[  r^  r$   r   r%   r&   r;  r;    sI    3$)+"
  -5r%   r;  )r.   r   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   rc  )rF   zCallable[[], str]r   zIterator[None])rL   r   r   r   )rY   r   r   rW   r7   )r   r   r_   zstr | Path | Noner   r\   )r   P   )r   r
   rD   rW   r   rW   r   r   )
r   zdict[Any, Any]rD   rW   r   rW   r   rW   r   r   )
r   z&list[Any] | set[Any] | tuple[Any, ...]rD   rW   r   rW   r   rW   r   r   )r  z	list[str]rD   rW   r   rW   r   rW   r  r   r	  r   r   r   )<
__future__r   
contextlib	functoolsrS   r   r)   r   rC   dataclassesr   enumr   r   pathlibr   pprintr	   typingr
   r   r   r   typing_extensionsr   r   torchgen.code_templater   argparser   collections.abcr   r   r   r   r   r   rs   r   r   r   IDENT_REGEXr3   r4   r5   r<   r>   contextmanagerrI   cacherM   rZ   r\   r   r   r  r
  r   r  r;  r   r%   r&   <module>rt     s   "    	 	 
  $    7 7 0 / "FF X'')00  	
$T 
$  $ CLCL 	 	 / /
4SM SMr &*

"
 
  '	'' ' 		'D
DD D 	D
 	D(F
0FF F 	F
 	F--- - 	-
 - 
- 	-&BG BGJ,5 ,5r%   