Ë
    [^(h*  ã                   ó¶  — U d dl Z d dlZd dlmZ d dlmZmZ dee   de	defd„Z
ded	ed
edeeeee	f      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f   eeef   ee   eeee   f   f   fd„Zdee   deeeef   eeef   ee   eeee   f   f   fd„Zd1dededee   fd„Zdedefd„Z	 d2deeee   f   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%d&œZeeef   ed'<   d(Zeed)<   d!d"hZee   ed*<    e«       Zee   ed+<   d,d-iZeeef   ed.<   d3d/„Z e!d0k(  r e «        yy)4é    N)Údefaultdict)ÚAnyÚUnionÚlinesÚindentationÚreturnc                 ó~   — 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         ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/utils/data/datapipes/gen_pyi.pyÚmaterialize_linesr      s^   € Ø€FØ #¨Ñ"3Ñ3ÐÜ˜UÓ#ò ;‰ˆˆ4Ø�Š6ØÐ*Ñ*ˆFØ�$—,‘,˜tÐ%9Ó:Ñ:‰ð;ð €Mó    ÚdirÚtemplate_nameÚoutput_nameÚreplacementsc           	      ó–  — t         j                  j                  | |«      }t         j                  j                  | |«      }t        |«      5 }|j	                  «       }d d d «       |D ]H  \  }}	}
t        |d«      5 }j                  |t        |	|
«      «      }|j                  |«       d d d «       ŒJ y # 1 sw Y   ŒWxY w# 1 sw Y   ŒaxY w)NÚw)ÚosÚpathÚjoinÚopenÚreadr   r   Úwrite)r   r   r   r   Útemplate_pathÚoutput_pathÚfÚcontentÚplaceholderr   r   s              r   Úgen_from_templater'      s»   € ô —G‘G—L‘L  mÓ4€MÜ—'‘'—,‘,˜s KÓ0€Kä	ˆmÓ	ð  Ø—&‘&“(ˆ÷à+7ò Ñ'ˆ�U˜KÜ�+˜sÓ#ð 	 qØ—o‘oØÔ.¨u°kÓBóˆGð �G‰G�GÔ÷		ð 	ñ÷ð ú÷	ð 	ús   ÁB3Á:.B?Â3B<Â?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   )r(   r)   ÚpathsÚdir_pathÚ	all_filesÚfnameÚpython_filesÚfilter_filess           r   Úfind_file_pathsr5   %   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})".ú(")r7   z")ú(')r8   z')z4Unable to find appropriate method name within line:
)ÚRuntimeErrorÚfindÚlen©r   Ústart_tokenÚ	end_tokenÚstartÚends        r   Úextract_method_namerA   6   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 ú()r:   r;   r<   s        r   Úextract_class_namerE   D   s=   € à€KØ€IØ—‘˜;Ó'¬#¨kÓ*:Ñ:¸D¿I¹IÀiÓ<Pˆ3€EØ��cˆ?Ðr   Ú	file_pathc                 ó(  — i i t        «       }}}t        t        «      }t        | «      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                  d«      j                  d«      z  }	�ŒB 	 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
   Fz"""é   é   z@functional_datapiperC   zdef __init__(zdef __new__(rD   Nú)z7open parenthesis count < 0. This shouldn't be possible.r   r   )r,   r   Úlistr   ÚcountÚappendrA   rE   Úaddr:   r;   ÚrfindÚprocess_signaturer9   Ústrip)rF   Úmethod_to_signatureÚmethod_to_class_nameÚspecial_output_typeÚdoc_string_dictr$   Úopen_paren_countÚmethod_nameÚ
class_nameÚ	signatureÚskipr   r?   r@   s                 r   Úparse_datapipe_filer[   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óð ð  §¡¨DÓ!1×!7Ñ!7¸Ó!<Ñ<’IñC!	=÷	%=ðN 	ØØØð	ð ÷M%=ð %=ús   ©B8FÃ"BFÆFÚ
file_pathsc                 óæ   — i i t        «       c}}}i }| D ]V  }t        |«      \  }}}}	|j                  |«       |j                  |«       |j                  |«       |j                  |	«       ŒX ||||fS )N)r,   r[   r.   )
r\   Úmethods_and_signaturesÚmethods_and_class_namesÚ!methods_with_special_output_typesÚmethods_and_doc_stringsr   rR   rS   Ú$methods_needing_special_output_typesrU   s
             r   Úparse_datapipe_filesrc   €   sž   € ð 
ˆR”“ð	ØØØ)à ÐØò 
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
   ú[rI   ú])rM   )r   rd   Úbracket_countÚ
curr_tokenÚresÚchars         r   Úsplit_outside_bracketrl   œ   s‚   € à€MØ€JØ
€CØò 	ˆØ�3Š;Ø˜QÑ‰MØ�SŠ[Ø˜QÑ‰MØ�YÒ =°AÒ#5Ø�J‰J�zÔ"ØˆJØØ�dÑ‰
ð	ð ‡J�JˆzÔØ€Jr   c                 óz  — t        | «      }t        |«      D ]v  \  }}|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   ||<   Œx |D �cg c]
  }|dk7  sŒ	|‘Œ }}dj	                  |«      } | 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   rI   Ú*r
   z
Callable =ú=rH   z= ...z, )rl   r   rQ   Úrsplitr   )r   Útokensr   ÚtokenÚheadÚ_default_argÚts          r   rP   rP   ¯   sÜ   € ô .¨dÓ3€FÜ˜fÓ%ò 	2‰ˆˆ5Ø—K‘K Ó$ˆˆq‰	Ø�EŠ>ØˆF�1ŠIØ�ŠU˜ &¨¨Q©¡-Ò/°f¸Q±iÀ±lÀcÒ6IàˆF�1ŠIØ˜UÒ"Ø!&§¡¨c°1Ó!5ÑˆD�,ØŸ
™
 3›¨'Ñ1ˆF�1ŠIð	2ð  Ö+�A 1¨£7ŠaÐ+€FÐ+Ø�9‰9�VÓ€DØ€Kùò ,s   Â
B8ÂB8Údeprecated_filesÚdefault_output_typeÚmethod_to_special_output_typeÚrootc                 ó–  — |dk(  r:t        t        j                  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 ]Q  \  }}|	|   }||
v r||   }n|}dj                  ||   «      }|dk(  rd}|j                  d|› d|› d|› d|› d|› �
«       ŒS |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
   )r)   z    ...
z# Functional form of 'z'
def rD   z) -> z:
c                 ó*   — | j                  d«      d   S )Nr   rI   )Úsplit)Úss    r   ú<lambda>z(get_method_definitions.<locals>.<lambda>÷   s   € �a—g‘g˜d“m AÑ&€ r   )Úkey)ÚstrÚpathlibÚPathÚ__file__ÚparentÚresolveÚ
isinstancer   r   r   r5   Úunionrc   rN   ÚitemsrM   Úsort)rF   r)   rx   ry   rz   r{   r   r\   r^   r_   Úmethods_w_special_output_typesra   Úfn_nameÚmethod_definitionsrW   Ú	argumentsrX   Úoutput_typeÚ
doc_strings                      r   Úget_method_definitionsr’   Æ   s†  € ð ˆr‚zÜ”7—<‘<¤Ó)×0Ñ0×8Ñ8Ó:Ó;ˆÜ)¨)´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Ø×!Ñ!Ø$ Z Lð 1Ø�-˜q  ¨5°°¸SØˆlðõ	
ð
ð ×ÑÙ&ð ô ð ÐùòE 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        j                  t        «      j                  j                  «       }d| dfd|dfg}t        t        |«      d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Ÿ   ÚMapDataPipez${IterDataPipeMethods}é   z${MapDataPipeMethods}zdatapipe.pyi.inzdatapipe.pyi)r   r   r   r   N)r’   r”   r•   r–   r™   r›   rœ   r�   r    rƒ   r„   r…   r†   r‡   r'   r‚   )Úiter_method_definitionsÚmap_method_definitionsr   r   s       r   Úmainr¦     s�   € ô 5ÜÜÜØÜ,óÐô 4ÜÜÜØÜ+óÐô �<‰<œÓ!×(Ñ(×0Ñ0Ó2€Dà	!Ð#:¸AÐ>Ø	 Ð"8¸!Ð<ð€Lô Ü�‹IØ'Ø"Ø!ö	r   Ú__main__)ú,)r
   )r   N)"r   rƒ   Úcollectionsr   Útypingr   r   rK   r‚   Úintr   Útupler'   r,   r5   rA   rE   Údictr[   rc   rl   rP   r’   r”   Ú__annotations__r•   r–   r™   r›   rœ   r�   r    r¦   Ú__name__© r   r   ú<module>r±      s’  ðä 	Û Ý #ß ð˜T #™Yð °Sð ¸Só ðØ	ðàðð ðð �u˜S # s˜]Ñ+Ñ,ó	ð&˜t C™yð ¸CÀ¹Hð ÈÈSÉó ð"˜cð  có ð˜Sð  Só ð1Øð1à
ˆ4��S�‰>˜4  S ™>¨3¨s©8°T¸#¸tÀC¹y¸.Ñ5IÐIÑJó1ðhØ�C‘ðà
ˆ4��S�‰>˜4  S ™>¨3¨s©8°T¸#¸tÀC¹y¸.Ñ5IÐIÑJóñ8 ð °ð ¸dÀ3¹ió ð&˜Cð  Có ð: ñ4Ø�S˜$˜s™)�^Ñ$ð4à˜#‘hð4ð ˜#‘hð4ð ð	4ð
 $(¨¨S¨¡>ð4ð ð4ð 
ˆ#�Yó4ðp Ð �#Ó Ø%2°JÐ$?Ð ˜˜S™Ó ?Ù$'£EÐ ˜˜S™Ó )à!Ø ñ8Ð $ d¨3°¨8¡nó ð
 €�Ó Ø$1°:Ð#>Ð ˜˜C™Ó >Ù#&£5Ð ˜˜C™Ó (Ø7@À.Ð6QÐ # T¨#¨s¨(¡^Ó Qó!ðH ˆzÒÙ…Fð r   