Ë
    ÌÓ^j.  ã                   ó~  — U d dl Z d dlmZ d dlmZ d dlmZ d dlmZ 	 d dl	m
Z
 d dlmZ g Zee   ed	<   d
ee   fd„Z ede¬«      dee   ded
efd„«       Z ede¬«      dedededeeeeef      d
df
d„«       Zdee   de e   d
e e   fd„Z!ded
efd„Z"ded
efd„Z#ded
ee$eee   f   e$eef   e e   e$eee   f   f   fd„Z%de e   d
ee$eee   f   e$eef   e e   e$eee   f   f   fd „Z&d;ded!ed
ee   fd"„Z'ded
ee   fd#„Z(	 d<deee   z  de e   d$e e   d%ed&e$eef   d'ed
ee   fd(„Z)d)Z*eed*<   d+d,hZ+e e   ed-<    e «       Z,e e   ed.<   d/d/d0œZ-e$eef   ed1<   d2Z.eed3<   d+d,hZ/e e   ed4<    e «       Z0e e   ed5<   d6d7iZ1e$eef   ed8<   d=d9„Z2e3d:k(  r e2«        yy# e$ r“ d dlZ ee«      j!                  «       j"                  d   Zej&                  j)                  d  ee«      «       d dl	m
Z
 d dlmZ  eej&                  «      d kD  r%ej&                  d     ee«      k(  rej&                  d = Y �Œw xY w)>é    N)Údefaultdict)ÚPath)ÚAny)Ú
deprecated)Úformat_function_signature)ÚFileManageré   Ú__all__Úreturnc                  ó   — g S ©N© r   ó    úm/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/utils/data/datapipes/gen_pyi.pyÚ__dir__r      s   € Ø€Ir   zg`torch.utils.data.datapipes.gen_pyi.materialize_lines` is deprecated and will be removed in the future.)ÚcategoryÚlinesÚindentationc                 ó~   — d}dd|z  z   }t        | «      D ]$  \  }}|dk7  r||z  }||j                  d|«      z  }Œ& |S )NÚ ú
ú r   )Ú	enumerateÚreplace)r   r   ÚoutputÚnew_line_with_indentÚiÚlines         r   Úmaterialize_linesr       s`   € ð
 €FØ #¨Ñ"3Ñ3ÐÜ˜UÓ#ò ;‰ˆˆ4Ø�Š6ØÐ*Ñ*ˆFØ�$—,‘,˜tÐ%9Ó:Ñ:‰ð;ð €Mr   zg`torch.utils.data.datapipes.gen_pyi.gen_from_template` is deprecated and will be removed in the future.ÚdirÚtemplate_nameÚoutput_nameÚreplacementsc           	      óž  — t         j                  j                  | |«      }t         j                  j                  | |«      }t        |d¬«      5 }|j	                  «       }d d d «       |D ]J  \  }}	}
t        |dd¬«      5 }j                  |t        |	|
«      «      }|j                  |«       d d d «       ŒL y # 1 sw Y   ŒYxY w# 1 sw Y   ŒcxY w)Núutf-8©ÚencodingÚw)ÚosÚpathÚjoinÚopenÚreadr   r   Úwrite)r    r!   r"   r#   Útemplate_pathÚoutput_pathÚfÚcontentÚplaceholderr   r   s              r   Úgen_from_templater4   .   s¿   € ô —G‘G—L‘L  mÓ4€MÜ—'‘'—,‘,˜s KÓ0€Kä	ˆm gÔ	.ð °!Ø—&‘&“(ˆ÷à+7ò Ñ'ˆ�U˜KÜ�+˜s¨WÔ5ð 	¸Ø—o‘oØÔ.¨u°kÓBóˆGð �G‰G�GÔ÷		ð 	ñ÷ð ú÷	ð 	ús   ÁB7Á>.CÂ7C ÃC	Ú	dir_pathsÚfiles_to_excludec           
      óB  — t        «       }| D ]€  }t        j                  |«      }|D �ch c]  }d|dd k(  sŒ|’Œ }}|D �ch c]	  }||vsŒ|’Œ }}|j                  |D �ch c]"  }t        j                  j                  ||«      ’Œ$ c}«       Œ‚ |S c c}w c c}w c c}w )z 
    When given a path to a directory, returns the paths to the relevant files within it.

    This function does NOT recursive traverse to subdirectories.
    z.pyéýÿÿÿN)Úsetr)   ÚlistdirÚupdater*   r+   )r5   r6   ÚpathsÚdir_pathÚ	all_filesÚfnameÚpython_filesÚfilter_filess           r   Úfind_file_pathsrB   E   s¬   € ô “e€EØò PˆÜ—J‘J˜xÓ(ˆ	Ø+4ÖL %¸ÀÀrÀsÀÓ8KšÐLˆÐLà+ö
Ø¨uÐ<LÒ/LŠEð
ˆð 
ð 	�‰ÀÖN¸”b—g‘g—l‘l 8¨UÕ3ÒNÕOðPð €Lùò Mùò
ùò Os   ©B·BÁ	BÁBÁ 'B
r   c                 ó¬   — d| v rd\  }}nd| v rd\  }}nt        d| › �«      ‚| j                  |«      t        |«      z   | j                  |«      }}| || S )zXExtract method name from decorator in the form of "@functional_datapipe({method_name})".ú(")rD   z")ú(')rE   z')z4Unable to find appropriate method name within line:
)ÚRuntimeErrorÚfindÚlen©r   Ústart_tokenÚ	end_tokenÚstartÚends        r   Úextract_method_namerN   V   sn   € àˆt�|Ø!+Ñˆ‘YØ	�‰Ø!+Ñˆ‘YäØCÀDÀ6ÐJó
ð 	
ð —‘˜;Ó'¬#¨kÓ*:Ñ:¸D¿I¹IÀiÓ<Pˆ3€EØ��cˆ?Ðr   c                 óp   — d}d}| j                  |«      t        |«      z   | j                  |«      }}| || S )zVExtract class name from class definition in the form of "class {CLASS_NAME}({Type}):".úclass ú()rG   rH   rI   s        r   Úextract_class_namerR   d   s=   € à€KØ€IØ—‘˜;Ó'¬#¨kÓ*:Ñ:¸D¿I¹IÀiÓ<Pˆ3€EØ��cˆ?Ðr   Ú	file_pathc                 ó  — i i t        «       }}}t        t        «      }t        | d¬«      5 }d}d\  }}}	d}
|D �]/  }|j	                  d«      dz  dk(  r|
 }
|
sd|v r||   j                  |«       Œ9d	|v rt        |«      }g ||<   ŒN|rd
|v rt        |«      }Œ`|rDd|v sd|v r<d|v r|j                  |«       |dz  }|j                  d«      t        d«      z   }||d }|dkD  sŒ¬||j	                  d«      z  }||j	                  d«      z  }|dk(  r4|j                  d«      }|	|d| z  }	t        |	«      ||<   |||<   d\  }}}	�Œ|dk  rt        d«      ‚|	|j                  «       z  }	�Œ2 	 ddd«       ||||fS # 1 sw Y   ŒxY w)zfGiven a path to file, parses the file and returns a dictionary of method names to function signatures.r%   r&   r   )r   r   r   Fz"""é   é   z@functional_datapiperP   zdef __init__(zdef __new__(rQ   Nú)z7open parenthesis count < 0. This shouldn't be possible.)r9   r   Úlistr,   ÚcountÚappendrN   rR   ÚaddrG   rH   ÚrfindÚprocess_signaturerF   Ústrip)rS   Úmethod_to_signatureÚmethod_to_class_nameÚspecial_output_typeÚdoc_string_dictr1   Úopen_paren_countÚmethod_nameÚ
class_nameÚ	signatureÚskipr   rL   rM   s                 r   Úparse_datapipe_filerh   l   sí  € ð FHÈÌSËUÐ/BÐ-ÐÜ!¤$Ó'€OÜ	ˆi 'Ô	*ð %.¨aØÐØ-7Ñ*ˆ�Z ØˆØó !	.ˆDØ�z‰z˜%Ó  1Ñ$¨Ò)Ø�x�Ù�u ‘}Ø Ñ,×3Ñ3°DÔ9ØØ%¨Ñ-Ü1°$Ó7�Ø/1� Ñ,ØÙ˜x¨4Ñ/Ü/°Ó5�
ØÙ °4Ñ 7¸>ÈTÑ;QØ! TÑ)Ø'×+Ñ+¨KÔ8Ø  AÑ%Ð ØŸ	™	 #›¬¨S«Ñ1�Ø˜E˜F�|�Ø !Ó#Ø  D§J¡J¨s£OÑ3Ð Ø  D§J¡J¨s£OÑ3Ð Ø# qÒ(ØŸ*™* S›/�CØ  d s Ñ+�IÜ7HÈÓ7SÐ'¨Ñ4Ø8BÐ(¨Ñ5Ø9CÑ6�K ªYØ%¨Ò)Ü&ØQóð ð  §¡£Ñ-’IñC!	.÷	%.ðN 	ØØØð	ð ÷M%.ð %.ús   «B8E:Ã$BE:Å:FÚ
file_pathsc                 óä   — i }i }t        «       }i }| D ]V  }t        |«      \  }}}}	|j                  |«       |j                  |«       |j                  |«       |j                  |	«       ŒX ||||fS r   )r9   rh   r;   )
ri   Úmethods_and_signaturesÚmethods_and_class_namesÚ!methods_with_special_output_typesÚmethods_and_doc_stringsr*   r_   r`   Ú$methods_needing_special_output_typesrb   s
             r   Úparse_datapipe_filesrp       s›   € ð  ÐØ ÐÜ(+«Ð%Ø ÐØò 
8ˆô   Ó%ñ	
ØØ Ø0Øà×%Ñ%Ð&9Ô:Ø×&Ñ&Ð';Ô<Ø)×0Ñ0Ð1UÔVØ×&Ñ& Õ7ð
8ð 	ØØ)Øð	ð r   Ú	delimiterc                 ó´   — d}d}g }| D ];  }|dk(  r|dz  }n)|dk(  r|dz  }n||k(  r|dk(  r|j                  |«       d}Œ7||z  }Œ= |j                  |«       |S )zRGiven a line of text, split it on comma unless the comma is within a bracket '[]'.r   r   ú[rV   ú])rZ   )r   rq   Úbracket_countÚ
curr_tokenÚresÚchars         r   Úsplit_outside_bracketry   º   s‚   € à€MØ€JØ
€CØò 	ˆØ�3Š;Ø˜QÑ‰MØ�SŠ[Ø˜QÑ‰MØ�YÒ =°AÒ#5Ø�J‰J�zÔ"ØˆJØØ�dÑ‰
ð	ð ‡J�JˆzÔØ€Jr   c                 óV  — t        | «      }t        |«      D ]u  \  }}|j                  d«      ||<   |dk(  rd||<   Œ%|dkD  rd||dz
     k(  r||   d   dk7  rd||<   ŒFd|v sŒK|j                  d	«      d   }|j                  d«      d
z   ||<   Œw |D �cg c]
  }|dk7  sŒ	|‘Œ }}|S c c}w )z¶
    Clean up a given raw function signature.

    This includes removing the self-referential datapipe argument, default
    arguments of input functions, newlines, and spaces.
    r   ÚclsÚselfr   rV   Ú*r   z
Callable =ú=z = ...)ry   r   r^   Ú
rpartition)r   Útokensr   ÚtokenÚheadÚts         r   r]   r]   Í   sÎ   € ô .¨dÓ3€FÜ˜fÓ%ò 	3‰ˆˆ5Ø—K‘K Ó$ˆˆq‰	Ø�EŠ>ØˆF�1ŠIØ�ŠU˜ &¨¨Q©¡-Ò/°f¸Q±iÀ±lÀcÒ6IàˆF�1ŠIØ˜UÒ"Ø×#Ñ# CÓ(¨Ñ+ˆDØŸ
™
 3›¨(Ñ2ˆF�1ŠIð	3ð  Ö+�A 1¨£7ŠaÐ+€FÐ+Ø€Mùò ,s   Â
B&ÂB&Údeprecated_filesÚdefault_output_typeÚmethod_to_special_output_typeÚrootc                 óØ  — |dk(  r0t        t        t        «      j                  j	                  «       «      }t        | t         «      r| gn| } | D �cg c]"  }t        j                  j                  ||«      ‘Œ$ } }t        | |j                  |«      ¬«      }t        |«      \  }}	}
}|D ]  }||
vsŒ|
j                  |«       Œ g }|j                  «       D ]|  \  }}|	|   }||
v r||   }n|}dj                  ||   «      }|dk(  rd}nd|z   }t        |||«      }|j                  d|› d�|j!                  d«      j#                  «       z   |z   «       Œ~ |j%                  d„ ¬	«       |S c c}w )
a  
    #.pyi generation for functional DataPipes Process.

    # 1. Find files that we want to process (exclude the ones who don't)
    # 2. Parse method name and signature
    # 3. Remove first argument after self (unless it is "*datapipes"), default args, and spaces
    r   )r6   z ...r   z# Functional form of 'z'
z...c                 ó*   — | j                  d«      d   S )Nr   rV   )Úsplit)Úss    r   ú<lambda>z(get_method_definitions.<locals>.<lambda>  s   € �a—g‘g˜d“m AÑ&€ r   )Úkey)Ústrr   Ú__file__ÚparentÚresolveÚ
isinstancer)   r*   r+   rB   Úunionrp   r[   Úitemsr   rZ   ÚremovesuffixÚrstripÚsort)rS   r6   r„   r…   r†   r‡   r*   ri   rk   rl   Úmethods_w_special_output_typesrn   Úfn_nameÚmethod_definitionsrd   Ú	argumentsre   Úoutput_typeÚ
doc_stringÚ
definitions                       r   Úget_method_definitionsrŸ   ã   s   € ð ˆr‚zÜ”4œ“>×(Ñ(×0Ñ0Ó2Ó3ˆÜ)¨)´SÔ9�‘¸y€IØ6?Ö@¨d”—‘—‘˜d DÕ)Ð@€IÐ@Ü ØÐ$4×$:Ñ$:Ð;KÓ$Lô€Jô 	˜ZÓ(ñØØØ&Øð 1ò 8ˆØÐ8Ò8Ø*×.Ñ.¨wÕ7ð8ð ÐØ"8×">Ñ">Ó"@ò 
Ñˆ�YØ,¨[Ñ9ˆ
ØÐ8Ñ8Ø7¸ÑD‰Kà-ˆKØ—W‘WÐ4°[ÑAÓBˆ
Ø˜ÒØ‰Jà 
Ñ*ˆJÜ.¨{¸IÀ{ÓSˆ
Ø×!Ñ!Ø$ Z L°Ð4Ø×%Ñ% eÓ,×3Ñ3Ó5ñ6àñõ	
ð
ð" ×ÑÙ&ð ô ð ÐùòK As   Á'E'ÚiterÚiterDP_file_pathz__init__.pyzutils.pyÚiterDP_files_to_excludeÚiterDP_deprecated_fileszlist[IterDataPipe])ÚdemuxÚforkÚ$iterDP_method_to_special_output_typeÚmapÚmapDP_file_pathÚmapDP_files_to_excludeÚmapDP_deprecated_filesÚshuffleÚIterDataPipeÚ#mapDP_method_to_special_output_typec                  ó  ‡‡— t        t        t        t        dt        «      Št        t
        t        t        dt        «      Št        t        «      j                  «       j                  } t        | | d¬«      }|j                  ddˆˆfd„«       y)	a  
    # Inject file into template datapipe.pyi.in.

    TODO: The current implementation of this script only generates interfaces for built-in methods. To generate
          interface for user-defined DataPipes, consider changing `IterDataPipe.register_datapipe_as_function`.
    r¬   ÚMapDataPipeF)Úinstall_dirÚtemplate_dirÚdry_runzdatapipe.pyizdatapipe.pyi.inc                  ó   •— ‰ ‰dœS )N)ÚIterDataPipeMethodsÚMapDataPipeMethodsr   )Úiter_method_definitionsÚmap_method_definitionss   €€r   rŒ   zmain.<locals>.<lambda>H  s   ø€ Ø#:Ø"8ñ
€ r   N)rŸ   r¡   r¢   r£   r¦   r¨   r©   rª   r­   r   r�   Úabsoluter�   r   Úwrite_with_template)r*   Úfmr¶   r·   s     @@r   Úmainr»   ,  s|   ù€ ô 5ÜÜÜØÜ,óÐô 4ÜÜÜØÜ+óÐô ”‹>×"Ñ"Ó$×+Ñ+€DÜ	 °DÀ%Ô	H€BØ×ÑØØô	
õr   Ú__main__)ú,)r   )r   N)4r)   Úcollectionsr   Úpathlibr   Útypingr   Útyping_extensionsr   Útorchgen.api.pythonr   Útorchgen.utilsr   ÚImportErrorÚsysr�   r¸   ÚparentsÚ	REPO_ROOTr*   ÚinsertrŽ   rH   r
   rX   Ú__annotations__r   ÚFutureWarningÚintr   Útupler4   r9   rB   rN   rR   Údictrh   rp   ry   r]   rŸ   r¡   r¢   r£   r¦   r¨   r©   rª   r­   r»   Ú__name__r   r   r   ú<module>rÏ      s„  ðä 	Ý #Ý Ý Ý (ðÝ=Ý*ð €ˆˆc‰Ó ð��c‘ó ñ ØmØôð˜T #™Yð °Sð ¸Sò ó	ðñ ØmØôðØ	ðàðð ðð �u˜S # s˜]Ñ+Ñ,ð	ð
 
òó	ðð&˜t C™yð ¸CÀ¹Hð ÈÈSÉó ð"˜cð  có ð˜Sð  Só ð1Øð1à
ˆ4��T˜#‘Y�Ñ  c¨3 h¡°°S±¸4ÀÀTÈ#ÁYÀÑ;OÐOÑPó1ðhØ�C‘ðà
ˆ4��T˜#‘Y�Ñ  c¨3 h¡°°S±¸4ÀÀTÈ#ÁYÀÑ;OÐOÑPóñ4 ð °ð ¸dÀ3¹ió ð&˜Cð  D¨¡Ió ð8 ñ7Ø�T˜#‘Y‰ð7à˜#‘hð7ð ˜#‘hð7ð ð	7ð
 $(¨¨S¨¡>ð7ð ð7ð 
ˆ#�Yó7ðv Ð �#Ó Ø%2°JÐ$?Ð ˜˜S™Ó ?Ù$'£EÐ ˜˜S™Ó )à!Ø ñ8Ð $ d¨3°¨8¡nó ð
 €�Ó Ø$1°:Ð#>Ð ˜˜C™Ó >Ù#&£5Ð ˜˜C™Ó (Ø7@À.Ð6QÐ # T¨#¨s¨(¡^Ó Qó ðF ˆzÒÙ…Fð øðG
 ò 
Ûá�X“×'Ñ'Ó)×1Ñ1°!Ñ4€IØ‡H�H‡O�O�A‘s˜9“~Ô&å=Ý*á
ˆ3�8‰8ƒ}�qÒ˜SŸX™X a™[©C°	«NÒ:Ø�H‰H�QˆKúð
ús   ŸF$ Æ$BH<È;H<