ó
    EñiCW  ã                   óz  • S r SSKrSSKrSSKJrJr  SSKJrJrJ	r	  SSK
JrJrJr  SSKJrJrJrJr  SSKJr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!  Sr" " S S\5      r# " S S\5      r$ " S S\$5      r% " S S\$5      r& " S S\$5      r' " S S\$5      r( " S S\(5      r) " S S\$5      r*g)a“  
This module provides iterator-related variable tracking functionality for Dynamo.
It implements variable classes for handling Python iterators and itertools functions
during symbolic execution and tracing.

The module includes:
- Base iterator variable classes for tracking iterator state
- Implementations of built-in iterators (zip, map, filter)
- Support for itertools functions (product, accumulate, combinations, etc.)
- Mutation tracking and reconstruction capabilities for iterator operations

These classes integrate with Dynamo's variable tracking system to enable proper
handling of iterator operations during code transformation and optimization.
é    N)ÚCallableÚSequence)ÚAnyÚTYPE_CHECKINGÚUnioné   )Úgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_build_tupleÚcreate_call_functionÚcreate_call_function_exÚcreate_instruction)Úhandle_observed_exceptionÚObservedUserStopIterationÚraise_observed_exceptionÚunimplementedÚ	UserErroré   )ÚValueMutationNewÚVariableTracker)ÚConstantVariable)Ú	PyCodegen)ÚInstructionTranslatori � c                   óz   ^ • \ rS rSrS\S\SS4U 4S jjrS\4S jrS\4S jrS	S
S\	S   SSSS4U 4S jjr
SrU =r$ )ÚItertoolsVariableé/   ÚvalueÚkwargsÚreturnNc                 ó2   >• [         TU ]  " S0 UD6  Xl        g ©N© )ÚsuperÚ__init__r   )Úselfr   r   Ú	__class__s      €ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/variables/iter.pyr%   ÚItertoolsVariable.__init__0   s   ø€ Ü‰ÒÑ"˜6Ò"Ø�
ó    c                 ó"   • SU R                    S3$ )NzItertoolsVariable(Ú)©r   ©r&   s    r(   Ú__repr__ÚItertoolsVariable.__repr__4   s   € Ø# D§J¡J <¨qÐ1Ð1r*   c                 ó   • U R                   $ ©Nr-   r.   s    r(   Úas_python_constantÚ$ItertoolsVariable.as_python_constant7   s   € Ø�z‰zÐr*   Útxr   Úargsr   zdict[str, VariableTracker]c                 ój  >^ ^^^^• T R                   [        R                  L Ga  [        S T 5       5      (       aR  [	        SST  ST ST 3SSR                  [        TR                  5       5      S1-
  5       3/ [        R                  QS9  ST;   a  TS   R                  5       nOS	nT Vs/ s H  oUR                  T5      PM     nn[        R                  " USU06 Vs/ s H"  n[        R                  " [        U5      5      PM$     nn[        R                  " U[!        5       S
9$ T R                   [        R"                  L aØ  T(       dÑ  [%        T5      S:X  aÂ  TS   R'                  T5      (       a©  TS	   R)                  5       (       a‘  TS   R+                  T5      n	TS	   R                  5       n/ n[        R"                  " X”5       H1  nUR-                  [        R                  " [        U5      5      5        M3     [        R                  " U[!        5       S
9$ T R                   [        R.                  L Gaí  [        S T 5       5      (       aR  [	        SST  ST ST 3SSR                  [        TR                  5       5      S1-
  5       3/ [        R                  QS9  S[0        S[2        4UUU 4S jjm[%        T5      S	:X  a.  TS   R'                  T5      (       a  TS   R+                  T5      n
O-[	        SST  ST ST 3ST ST S3S/[        R4                  QS9  ST;   a  S[0        S[2        4UUU4S jjnOS[0        S[2        4U4S jjn/ n [        R.                  " W
US9 Hš  u  pÞUR-                  [        R                  " [        R6                  R9                  U5      (       a  [        R6                  R;                  U5      OU[        R                  " [        U5      [!        5       S
9/[!        5       S
95        Mœ     [        R                  " U[!        5       S
9$ T R                   [        R>                  L ac  [%        T5      S:  a  [        R@                  " TS[!        5       06$ TRC                  [0        RD                  " T[F        R>                  5      TT5      $ T R                   [        RH                  L a  [        RJ                  " TS[!        5       06$ T R                   [        RL                  L aÕ  [%        T5      S	:X  d'  [%        T5      S:X  a·  TS	   R)                  5       (       aŸ  T(       d˜  [%        T5      S:X  a  TS	   R                  5       nOS n[        RL                  " TS   R                  T5      U5       Vs/ s H"  n[        R                  " [        U5      5      PM$     nn[        R                  " U[!        5       S
9$ [N        TT ]¡  TTT5      $ s  snf s  snf ! [<         a1  n[	        SST  ST ST 3S/ [        R4                  QUS9   S nAGNS nAff = fs  snf ) Nc              3   ó*   #   • U  H	  oS :g  v •  M     g7f)ÚrepeatNr#   ©Ú.0Úkws     r(   Ú	<genexpr>Ú2ItertoolsVariable.call_function.<locals>.<genexpr>C   s   é € Ð3ªF b˜–>ªFùó   ‚z(Unsupported kwargs for itertools.productúcall_function Ú z#Expected kwargs: 'repeat', but got Ú,r9   ©Úgb_typeÚcontextÚexplanationÚhintsr   )Úmutation_typer   r   c              3   ó*   #   • U  H	  oS :g  v •  M     g7f)ÚkeyNr#   r:   s     r(   r=   r>   k   s   é € Ð0ª 2˜–;ªùr?   z(Unsupported kwargs for itertools.groupbyz Expected kwargs: 'key', but got rJ   r    c           
      ó$  >• [        U [        R                  5      (       a  U R                  5       $ U R	                  5       (       a  U R                  5       $ [        SST ST ST 3S[        [        U 5      5       S3/ [        R                  QS9  g )Nz*Unsupported key type for itertools.groupbyr@   rA   zCDynamo does not know how to trace itertools.groupby with key type: zJ. We only support grouping keys that are constants (int, float, str, etc.)rC   )Ú
isinstancer   ÚSymNodeVariableÚevaluate_exprÚis_python_constantr3   r   ÚstrÚtyper	   ÚSUPPORTABLE)rJ   r6   r   r&   s    €€€r(   Úretrieve_const_keyÚ;ItertoolsVariable.call_function.<locals>.retrieve_const_keyt   s•   ø€ Ü˜c¤9×#<Ñ#<×=Ñ=Ø×,Ñ,Ó.Ð.Ø×+Ñ+×-Ñ-Ø×1Ñ1Ó3Ð3ä!Ø LØ"0°°°a¸°v¸Q¸v¸hÐ Gð%<Ü<?ÄÀSÃ	»NÐ;Kð Lcð%cð ?Ô 1× =Ñ =Ð>ór*   z+Unsupported arguments for itertools.groupbyz?Dynamo does not know how to trace itertools.groupby with args: z and kwargs: ze. itertools.groupby expects an iterable to group and an optional key function to determine groupings.z9Make sure the arguments to itertools.groupby are correct.Úxc                 óV   >• T" TR                  S5      R                  TU /0 5      5      $ )NrJ   )ÚgetÚcall_function)rU   r   rS   r5   s    €€€r(   ÚkeyfuncÚ0ItertoolsVariable.call_function.<locals>.keyfunc•   s-   ø€ Ù-ØŸ
™
 5Ó)×7Ñ7¸¸Q¸CÀÓDóð r*   c                 ó   >• T" U 5      $ r2   r#   )rU   rS   s    €r(   rY   rZ   œ   s   ø€ Ù-¨aÓ0Ð0r*   )rJ   z7Unexpected failure during itertools.groupby() iterationz6Unexpected failure in invoking function during groupby)rD   rE   rF   rG   Úfrom_excrH   ))r   Ú	itertoolsÚproductÚanyr   ÚjoinÚsetÚkeysr	   Ú
USER_ERRORr3   Úforce_unpack_var_sequencer   ÚTupleVariableÚlistÚListIteratorVariabler   ÚcombinationsÚlenÚhas_unpack_var_sequencerO   Úunpack_var_sequenceÚappendÚgroupbyr   r   rR   r   Ú
is_literalÚcreateÚ	Exceptionr9   ÚRepeatIteratorVariableÚinline_user_function_returnÚbuildr
   ÚcountÚCountIteratorVariableÚpermutationsr$   rX   )r&   r5   r6   r   ÚrÚargÚseqsÚitemÚitemsÚiterableÚseqrY   ÚresultÚkÚvÚerS   r'   s   ````            @€r(   rX   ÚItertoolsVariable.call_function:   sÙ  ý€ ð �:‰:œ×*Ñ*Ó*ÜÑ3©FÓ3×3Ñ3ÜØFØ,¨T¨F°!°D°6¸¸6¸(ÐCØ"EØ—x‘x¤ F§K¡K£MÓ 2°h°ZÑ ?Ó@ÐAð!Cà9Ô-×8Ñ8Ð9òð ˜6Ó!Ø˜8Ñ$×7Ñ7Ó9‘à�ÙAEÓFÂ¸#×1Ñ1°"Ö5ÁˆDÐFô &×-Ò-¨tÐ>¸AÒ>óâ>�Dô ×'Ò'¬¨T«
Ö3Ù>ð ð ô ×1Ò1ØÜ.Ó0ñð ð
 �J‰Jœ)×0Ñ0Ò0ÞÜ�D“	˜Q“Ø�Q‘×/Ñ/°×3Ñ3Ø�Q‘×*Ñ*×,Ñ,à˜A‘w×2Ñ2°2Ó6ˆHØ�Q‘×*Ñ*Ó,ˆAàˆEÜ!×.Ò.¨xÖ;�Ø—‘œY×4Ò4´T¸$³ZÓ@ÖAñ <ä×1Ò1ØÜ.Ó0ñð ð �Z‰Zœ9×,Ñ,Ó,ÜÑ0©Ó0×0Ñ0ÜØFØ,¨T¨F°!°D°6¸¸6¸(ÐCØ"BØ—x‘x¤ F§K¡K£MÓ 2°e°WÑ <Ó=Ð>ð!@à9Ô-×8Ñ8Ð9òð¬ð ¼C÷ ñ ô �4‹y˜A‹~ $ q¡'×"AÑ"AÀ"×"EÑ"EØ˜1‘g×1Ñ1°"Ó5‘äØIØ,¨T¨F°!°D°6¸¸6¸(ÐCð!4Ø48°6¸ÀvÀhð ODð!Dð
 Tðä*×6Ñ6ðòð ˜‹ðœð ´3÷ ò ð1œð 1´3÷ 1ð ˆFðä%×-Ò-¨c°wÔ?‘D�AØ—M‘MÜ!×/Ò/ô (1×'AÑ'A×'LÑ'LÈQ×'OÑ'Oô %.×$>Ñ$>×$EÑ$EÀaÔ$Hà)*ä )× >Ò >Ü$(¨£GÔ;KÓ;Mñ!"ð	ô +;Ó*<ñöñ @ô0 ×1Ò1ØÜ.Ó0ñð ð �Z‰Zœ9×+Ñ+Ò+Ü�4‹y˜1‹}Ü ×7Ò7ØðÜ)9Ó);ñð ð ×1Ñ1Ü×%Ò% b¬)×*:Ñ*:Ó;¸TÀ6óð ð �Z‰Zœ9Ÿ?™?Ò*Ü×2Ò2ØðÜ%5Ó%7ñð ð �J‰Jœ)×0Ñ0Ò0Ü�T“˜a“¤C¨£I°£N°t¸A±w×7QÑ7Q×7SÑ7SÞä�4‹y˜A‹~Ø˜‘G×.Ñ.Ó0‘à�ô &×2Ò2Ø˜‘G×5Ñ5°bÓ9¸1ôóò�Dô ×'Ò'¬¨T«
Ö3ñð ð ô ×1Ò1ØÜ.Ó0ñð ô
 ‘7Ñ(¨¨T°6Ó:Ð:ùò_ GùòøôB ó ÜØUØ,¨T¨F°!°D°6¸¸6¸(ÐCØ XØ:Ô-×9Ñ9Ð:Ø÷ð ûðüòDs+   Â.W(Ã")W-ÍB3W2 Ö)X0×2
X-×<&X(Ø(X-r-   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r%   rP   r/   r3   r   rX   Ú__static_attributes__Ú__classcell__©r'   s   @r(   r   r   /   sq   ø† ð˜cð ¨Sð °T÷ ð2˜#ô 2ð Cô ðe;à#ðe;ð Ð(Ñ)ðe;ð -ð	e;ð
 
÷e;õ e;r*   r   c            
       óâ   ^ • \ rS rSrS\SS4U 4S jjrSSS\4S jrSSS\\   4S	 jr	SSS
\
\/\4   SS4S jrSSS\4S jrSSS\SS4U 4S jjrSSS\S\\   S\\\4   S\4
U 4S jjrSrU =r$ )ÚIteratorVariableéâ   r   r    Nc                 ó&   >• [         TU ]  " S0 UD6  g r"   )r$   r%   )r&   r   r'   s     €r(   r%   ÚIteratorVariable.__init__ã   s   ø€ Ü‰ÒÑ"˜6Ó"r*   r5   r   c                 óD   • [        SSU  S3S/ [        R                  QS9  g )NzUnimplemented next() callznext(r,   z(This abstract method must be implementedrC   )r   r	   Ú
DYNAMO_BUG©r&   r5   s     r(   Únext_variableÚIteratorVariable.next_variableæ   s*   € ÜØ/Ø˜D˜6 �OØBØ1Ô%×0Ñ0Ð1ó		
r*   c                 ó@   • / nU R                  XR                  5        U$ r2   )Úforce_apply_to_var_sequencerl   )r&   r5   r~   s      r(   rd   Ú*IteratorVariable.force_unpack_var_sequenceò   s    € ð )+ˆØ×(Ñ(¨¯]©]Ô;Øˆr*   Úfnc                 ón   •   U" U R                  U5      5        M  ! [         a    [        U5         g f = fr2   )r’   r   r   )r&   r5   r—   s      r(   r•   Ú,IteratorVariable.force_apply_to_var_sequenceù   s@   € ð ðÙ�4×%Ñ% bÓ)Ô*ñ øô -ó Ü)¨"Ô-Ùðús   ƒ œ4³4c                 ó   • g©NTr#   r‘   s     r(   Úhas_force_unpack_var_sequenceÚ.IteratorVariable.has_force_unpack_var_sequence  s   € Ør*   Únamer   c                 óx   >• US:X  d  US:X  a  [         R                  R                  S5      $ [        TU ]  X5      $ )NÚ__iter__Ú__next__T)r   r   ro   r$   Úcall_obj_hasattr)r&   r5   rž   r'   s      €r(   r¢   Ú!IteratorVariable.call_obj_hasattr  s;   ø€ ð �:Ó ¨Ó!3Ü×-Ñ-×4Ñ4°TÓ:Ð:Ü‰wÑ'¨Ó1Ð1r*   r6   c                 ób   >• US:X  a  U $ US:X  a  U R                  U5      $ [        TU ]	  XX45      $ )Nr    r¡   )r’   r$   Úcall_method)r&   r5   rž   r6   r   r'   s        €r(   r¥   ÚIteratorVariable.call_method  s=   ø€ ð �:ÓØˆKØ�ZÓØ×%Ñ% bÓ)Ð)Ü‰wÑ" 2¨TÓ:Ð:r*   r#   )rƒ   r„   r…   r†   r   r%   r   r’   rf   rd   r   r•   Úboolrœ   rP   r¢   Údictr¥   r‡   rˆ   r‰   s   @r(   r‹   r‹   â   sæ   ø† ð# ð #¨÷ #ð
Ð 7ð 
¸Oô 
ðØ)ðà	ˆoÑ	ôðØ)ðØ/7¸¸¸s¸
Ñ/Cðà	ôðÐ0Gð ÈDô ð2Ø)ð2Ø14ð2à	÷2ð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;õ ;r*   r‹   c                   óN   ^ • \ rS rSrSrS\S\SS4U 4S jjrSS	S\4S
 jrSr	U =r
$ )ÚObjectIteratorVariablei  a6  
VariableTracker for iter(obj) that implements the iterator protocol (i.e.,
has a `__next__` method).

We use this class to track the state of the iterator and handle the case
when the iterator is exhausted:

Example usage:
    > b = iter(obj)
    > list(b)  # exhaust the iterator
    > list(b)  # empty list
Úobjr   r    Nc                 ó@   >• [         TU ]  " S0 UD6  Xl        SU l        g )NFr#   )r$   r%   r«   Úgenerator_exhausted)r&   r«   r   r'   s      €r(   r%   ÚObjectIteratorVariable.__init__+  s    ø€ Ü‰ÒÑ"˜6Ò"ØŒØ#(ˆÕ r*   r5   r   c                 ó¨   • U R                   (       a  [        [        U5         U R                  R	                  U5      $ ! [
         a	    SU l         e f = fr›   )r­   r   ÚStopIterationr«   r’   r   r‘   s     r(   r’   Ú$ObjectIteratorVariable.next_variable0  sK   € Ø×#×#Ü$¤]°BÔ7ð	Ø—8‘8×)Ñ)¨"Ó-Ð-øÜ(ó 	ð (,ˆDÔ$Øð		ús	   £> ¾A)r­   r«   )rƒ   r„   r…   r†   Ú__doc__r   r   r%   r’   r‡   rˆ   r‰   s   @r(   rª   rª     s;   ø† ñð)˜Oð )°sð )¸t÷ )ð

Ð 7ð 
¸O÷ 
ò 
r*   rª   c                   óT   ^ • \ rS rSrS\S\SS4U 4S jjrSSS\4S	 jrSS
 jrSr	U =r
$ )rq   i=  rz   r   r    Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g r"   )r$   r%   rz   )r&   rz   r   r'   s      €r(   r%   ÚRepeatIteratorVariable.__init__>  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�	r*   r5   r   c                 ó   • U R                   $ r2   ©rz   r‘   s     r(   r’   Ú$RepeatIteratorVariable.next_variableC  s   € Ø�y‰yÐr*   c                 óŠ   ^• TR                  U4S j5        T" U R                  5        TR                  [        SS5      5        g )Nc                  ón   >• T R                  T R                  [        5      T R                  S5      /5      $ )Nr9   ©Úextend_outputÚcreate_load_python_moduler]   Úcreate_load_attr©Úcodegens   €r(   Ú<lambda>Ú4RepeatIteratorVariable.reconstruct.<locals>.<lambda>H  s1   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨XÓ6ðôr*   r   F)Úadd_push_nullrz   r¼   r   ©r&   rÀ   s    `r(   ÚreconstructÚ"RepeatIteratorVariable.reconstructF  s:   ø€ Ø×Ñôô	
ñ 	�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r*   r·   ©rÀ   r   r    N)rƒ   r„   r…   r†   r   r   r%   r’   rÅ   r‡   rˆ   r‰   s   @r(   rq   rq   =  s;   ø† ð˜_ð ¸ð À÷ ð
Ð 7ð ¸Oô ÷
>ò 
>r*   rq   c            	       ót   ^ • \ rS rSr  SS\\\4   S\\\4   S\SS4U 4S jjjrSS	S\4S
 jr	SS jr
SrU =r$ )ru   iS  rz   Ústepr   r    Nc                 óê   >• [         TU ]  " S0 UD6  [        U[        5      (       d  [        R
                  " U5      n[        U[        5      (       d  [        R
                  " U5      nXl        X l        g r"   )r$   r%   rL   r   r   ro   rz   rÉ   )r&   rz   rÉ   r   r'   s       €r(   r%   ÚCountIteratorVariable.__init__T  sY   ø€ ô 	‰ÒÑ"˜6Ò"Ü˜$¤×0Ñ0Ü#×*Ò*¨4Ó0ˆDÜ˜$¤×0Ñ0Ü#×*Ò*¨4Ó0ˆDØŒ	Ø�	r*   r5   r   c                 óò   • U R                  5       (       d   eU R                  nUR                  R                  R	                  U 5        U R                  R                  USU R                  /0 5      U l        U$ )NÚ__add__)Ú
is_mutablerz   ÚoutputÚside_effectsÚmutationr¥   rÉ   )r&   r5   Úold_items      r(   r’   Ú#CountIteratorVariable.next_variableb  s]   € Ø�‰× Ñ Ð Ð Ø—9‘9ˆØ
�	‰	×Ñ×'Ñ'¨Ô-Ø—I‘I×)Ñ)¨"¨i¸$¿)¹)¸ÀbÓIˆŒ	Øˆr*   c                 ó®   ^• TR                  U4S j5        T" U R                  5        T" U R                  5        TR                  [	        SS5      5        g )Nc                  ón   >• T R                  T R                  [        5      T R                  S5      /5      $ )Nrt   r»   r¿   s   €r(   rÁ   Ú3CountIteratorVariable.reconstruct.<locals>.<lambda>k  s1   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨WÓ5ðôr*   r   F)rÃ   rz   rÉ   r¼   r   rÄ   s    `r(   rÅ   Ú!CountIteratorVariable.reconstructi  sF   ø€ Ø×Ñôô	
ñ 	�—	‘	ÔÙ�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r*   )rz   rÉ   )r   r   rÇ   )rƒ   r„   r…   r†   r   Úintr   r   r%   r’   rÅ   r‡   rˆ   r‰   s   @r(   ru   ru   S  sm   ø† ð -.Ø,-ñà�C˜Ð(Ñ)ðð �C˜Ð(Ñ)ðð ð	ð
 
÷ð ðÐ 7ð ¸Oô ÷>ò >r*   ru   c            	       óÐ   ^ • \ rS rSrSrSS1\R                  kr SS\\   S\	S\
SS4U 4S	 jjjrS\\   4S
 jrSSS\	4S jrSSS\S   4S jrSSS\4S jrSS jrSS jrSrU =r$ )ÚZipVariableiw  z
Represents zip(*iterables)
ÚindexÚstrictÚ	iterablesr   r    Nc                 óz   >• [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        SU l        X l        g ©Nr   r#   )r$   r%   rL   rf   rÝ   rÛ   rÜ   )r&   rÝ   rÜ   r   r'   s       €r(   r%   ÚZipVariable.__init__‚  s9   ø€ ô 	‰ÒÑ"˜6Ò"Ü˜)¤T×*Ñ*Ð*Ð*à"ŒØˆŒ
Ø�r*   c                 ó   • [         $ r2   )Úzipr.   s    r(   Úpython_typeÚZipVariable.python_type�  ó   € Üˆ
r*   r5   r   c                 óB   ^• [        U4S jU R                   5       5      $ )Nc              3   ót   >#   • U  H-  n[        U[        5      =(       d    UR                  T5      v •  M/     g 7fr2   )rL   rf   rj   )r;   Úitr5   s     €r(   r=   Ú6ZipVariable.has_unpack_var_sequence.<locals>.<genexpr>“  s2   øé € ð 
â$�ô �rœ4Ó ×B B×$>Ñ$>¸rÓ$BÔBÚ$ùs   ƒ58)ÚallrÝ   r‘   s    `r(   rj   Ú#ZipVariable.has_unpack_var_sequence’  s!   ø€ Üô 
à—n’nó
ó 
ð 	
r*   r   c                 óÆ  • U R                  U5      (       d   e/ nU R                   HW  n[        U[        5      (       a  UR	                  X0R
                  S  5        M7  UR	                  UR                  U5      5        MY     U R                  (       a  SU R                  0O0 n[        U0 UD6nU Vs/ s H"  n[        R                  " [        U5      5      PM$     sn$ s  snf )NrÜ   )rj   rÝ   rL   rf   rl   rÛ   rk   rÜ   râ   r   re   )r&   r5   rÝ   rè   r   ÚzippedÚvars          r(   rk   ÚZipVariable.unpack_var_sequence˜  s¹   € ð ×+Ñ+¨B×/Ñ/Ð/Ð/Øˆ	Ø—.”.ˆBÜ˜"œd×#Ñ#Ø× Ñ  §J¡J LÐ!1Ö2à× Ñ  ×!7Ñ!7¸Ó!;Ö<ñ	 !ð
 -1¯K¯K�(˜DŸK™KÑ(¸RˆÜ�iÐ* 6Ñ*ˆÙ>DÓEºf°s”	×'Ò'¬¨S«	Ö2¹fÑEÐEùÒEs   Â2)Cc                 óü  ^^• U R                  5       (       d   e[        U R                  5      S:X  a  [        [        T5        U R
                  m/ nS[        [        [           [        4   S[        4UU4S jjnS n [        U R                  5       H  u  pEUR                  U" U5      5        M     TR                   R"                  R%                  U 5        U =R
                  S-  sl        [&        R(                  " U5      $ ! [         ao    U R                  (       a\  US:X  a:  U R                   H)  n U" U5        O! [         a    [        T5         M%  f = f  O   e [        T5        [        [        S5      S ee f = f)Nr   rè   r    c                 ó˜   >• [        U [        5      (       a$  T[        U 5      :¼  a  [        [        T5        U T   $ U R                  T5      $ r2   )rL   rf   ri   r   r°   r’   )rè   Ú	old_indexr5   s    €€r(   Úget_itemÚ+ZipVariable.next_variable.<locals>.get_item¯  sC   ø€ ô ˜"œd×#Ñ#Ø¤ B£Ó'Ü,¬]¸BÔ?Ø˜)‘}Ð$à×'Ñ'¨Ó+Ð+r*   z3zip() has one argument of len differing from othersr   )rÎ   ri   rÝ   r   r°   rÛ   r   rf   r   Ú	enumeraterl   r   rÜ   r   r   Ú
ValueErrorrÏ   rÐ   rÑ   r   re   )r&   r5   r6   ró   Úidxrè   rò   s    `    @r(   r’   ÚZipVariable.next_variable¦  sS  ù€ Ø�‰× Ñ Ð Ð äˆt�~‰~Ó !Ó#Ü$¤]°BÔ7à—J‘Jˆ	Øˆð	,Ü”dœ?Ñ+¬_Ð<Ñ=ð	,ä÷	,ð 	,ð ˆð	Ü$ T§^¡^Ö4‘�Ø—‘™H R›LÖ)ñ 5ð0 	�	‰	×Ñ×'Ñ'¨Ô-Ø�
Š
�a‰�
Ü×&Ò& tÓ,Ð,øô1 )ó 	Ø�{�{Ø˜!“8à"Ÿnœn˜ð%Ù$ R�LøÜ8ó %Ü5°bÔ9Ú$ð%úñ ñ -ð Ü)¨"Ô-ÜÜØIóð ðð ð)	ús0   Á=5D Ä0E;Ä3D<Ä;E;Ä<EÅE;ÅEÅ&E;c                 óì   • U R                    Hd  n[        U[        5      (       aD  X R                  S  nUR	                  U5        UR                  [        [        U5      5      5        M\  U" U5        Mf     g r2   )rÝ   rL   rf   rÛ   ÚforeachÚappend_outputr   ri   )r&   rÀ   rè   Úremaining_itemss       r(   Úreconstruct_itemsÚZipVariable.reconstruct_items×  sW   € Ø—.”.ˆBÜ˜"œd×#Ñ#Ø"$§Z¡Z \Ð"2�Ø—‘ Ô0Ø×%Ñ%Ô&8¼¸_Ó9MÓ&NÖOá˜–ò !r*   c           	      óJ  ^• TR                  U4S jSS9  U R                  T5        TR                  [        [	        U R
                  5      5      5        TR                  TR                  S5      TR                  U R                  5      [        SSS9/[        SS5      Q5        g )	Nc                  ó(   >• T R                  SS5      $ )NÚbuiltinsrâ   ©Úload_import_fromr¿   s   €r(   rÁ   Ú)ZipVariable.reconstruct.<locals>.<lambda>â  ó   ø€ �G×,Ñ,¨Z¸Ô?r*   T©Úcall_function_exrÜ   Ú	BUILD_MAPr   ©rx   F)rÃ   rý   rû   r   ri   rÝ   r¼   Úcreate_load_constrÜ   r   r   rÄ   s    `r(   rÅ   ÚZipVariable.reconstructà  s—   ø€ Ø×ÑÜ?ÐRVð 	ñ 	
ð 	×Ñ˜wÔ'Ø×ÑÔ0´°T·^±^Ó1DÓEÔFØ×Ñà×)Ñ)¨(Ó3Ø×)Ñ)¨$¯+©+Ó6Ü" ;°AÑ6ðô )¨¨uÓ5ð	õ	
r*   )rÛ   rÝ   rÜ   )FrÇ   )rƒ   r„   r…   r†   r²   r‹   Ú_nonvar_fieldsrf   r   r§   r   r%   rQ   râ   rã   rj   rk   r’   rý   rÅ   r‡   rˆ   r‰   s   @r(   rÚ   rÚ   w  sÇ   ø† ñð
 	Øðð 
×	(Ñ	(ð€Nð ñà˜Ñ(ðð ðð ð	ð
 
÷ð ð˜T #™Yô ð
Ð*Að 
Àdô 
ðFØ)ðFà	ÐÑ	 ôFð/-Ð 7ð /-¸Oô /-ôb÷
ò 
r*   rÚ   c                   óˆ   ^ • \ rS rSrSrS\S\\   S\SS4U 4S jjrS\	4S	 jr
S
SS\4S jrS
SS\4U 4S jjrSS jrSrU =r$ )ÚMapVariableið  z 
Represents map(fn, *iterables)
r—   rÝ   r   r    Nc                 ó4   >• [         TU ]  " U40 UD6  Xl        g r2   )r$   r%   r—   )r&   r—   rÝ   r   r'   s       €r(   r%   ÚMapVariable.__init__õ  s   ø€ ô 	‰Ò˜Ñ- fÒ-Ø�r*   c                 ó   • [         $ r2   )Úmapr.   s    r(   rã   ÚMapVariable.python_typeþ  rå   r*   r5   r   c                 ó   • g)NFr#   r‘   s     r(   rj   Ú#MapVariable.has_unpack_var_sequence  s   € Ør*   c                 ón   >• [         TU ]  U5      nU R                  R                  XR                  0 5      $ r2   )r$   r’   r—   rX   r{   )r&   r5   r6   r'   s      €r(   r’   ÚMapVariable.next_variable  s-   ø€ Ü‰wÑ$ RÓ(ˆØ�w‰w×$Ñ$ R¯©°RÓ8Ð8r*   c           	      ó  ^• TR                  U4S jSS9  T" U R                  5        U R                  T5        TR                  [	        [        U R                  5      S-   5      5        U R                  (       al  [        R                  S:¼  d   S5       eTR                  TR                  S5      TR                  U R                  5      [        SSS	9/[        SS
5      Q5        g TR                  [        S
S
5      5        g )Nc                  ó(   >• T R                  SS5      $ )Nr  r  r  r¿   s   €r(   rÁ   Ú)MapVariable.reconstruct.<locals>.<lambda>
  r  r*   Tr  r   )é   é   z6Unexpected bug: map(strict=True) requires Python 3.14+rÜ   r  r	  F)rÃ   r—   rý   rû   r   ri   rÝ   rÜ   ÚsysÚversion_infor¼   r
  r   r   rÄ   s    `r(   rÅ   ÚMapVariable.reconstruct  sç   ø€ Ø×ÑÜ?ÐRVð 	ñ 	
ñ 	�—‘ÔØ×Ñ˜wÔ'Ø×ÑÔ0´°T·^±^Ó1DÀqÑ1HÓIÔJØ�;�;Ü×#Ñ# wÓ.ð ØHóÐ.ð ×!Ñ!à×-Ñ-¨hÓ7Ø×-Ñ-¨d¯k©kÓ:Ü& {¸Ñ:ðô -¨T°5Ó9ð	õð ×!Ñ!Ô"9¸%ÀÓ"GÕHr*   )r—   rÇ   )rƒ   r„   r…   r†   r²   r   rf   r   r%   rQ   rã   r§   rj   r’   rÅ   r‡   rˆ   r‰   s   @r(   r  r  ð  sx   ø† ñðàðð ˜Ñ(ðð ð	ð
 
÷ð˜Tô ðÐ*Að Àdô ð9Ð 7ð 9¸O÷ 9÷Iò Ir*   r  c                   óÂ   ^ • \ rS rSrSrS1\R                  krS\S\\   S\	SS4U 4S	 jjr
S\4S
 jrSSS\4S jrSSS\S   4S jrSSS\4S jrSS jrSS jrSrU =r$ )ÚFilterVariablei  z!
Represents filter(fn, iterable)
rÛ   r—   r|   r   r    Nc                 óL   >• [         TU ]  " S0 UD6  Xl        X l        SU l        g rß   )r$   r%   r—   r|   rÛ   )r&   r—   r|   r   r'   s       €r(   r%   ÚFilterVariable.__init__)  s&   ø€ ô 	‰ÒÑ"˜6Ò"ØŒØ ŒØˆ�
r*   c                 ó   • [         $ r2   )Úfilterr.   s    r(   rã   ÚFilterVariable.python_type4  s   € Üˆr*   r5   r   c                 óz   • [        U R                  [        5      =(       d    U R                  R                  U5      $ r2   )rL   r|   rf   rj   r‘   s     r(   rj   Ú&FilterVariable.has_unpack_var_sequence7  s.   € Ü˜$Ÿ-™-¬Ó.÷ 
°$·-±-×2WÑ2WØó3
ð 	
r*   r   c                 óF  • U R                  U5      (       d   eS n[        U R                  [        5      (       a  U R                  U R                  S  nOU R                  R                  U5      nU R                  R                  X0 5      n[        R                  " U/5      /$ r2   )
rj   rL   r|   rf   rÛ   rk   r—   rX   r   re   )r&   r5   rè   Úfiltereds       r(   rk   Ú"FilterVariable.unpack_var_sequence<  s…   € ð ×+Ñ+¨B×/Ñ/Ð/Ð/ØˆÜ�d—m‘m¤T×*Ñ*Ø—‘˜tŸz™z˜|Ð,‰Bà—‘×2Ñ2°2Ó6ˆBØ—7‘7×(Ñ(¨°Ó4ˆÜ×'Ò'¨¨
Ó3Ð4Ð4r*   c                 ó|  ^ ^• S[         4U U4S jjn U" 5       nT =R                  S-  sl        T R                  R                  5       (       a  UnOT R                  R	                  TU/0 5      n[
        R                  " [        R                  5      R	                  TU/0 5      nUR                  5       (       a  U$ M«  )Nr    c                  ó   >• TR                   n [        TR                  [        5      (       a8  U [	        TR                  5      :¼  a  [        [        T5        TR                  U    $ TR                  R                  T5      $ r2   )rÛ   rL   r|   rf   ri   r   r°   r’   )rò   r&   r5   s    €€r(   Ú_nextÚ+FilterVariable.next_variable.<locals>._nextI  s\   ø€ ØŸ
™
ˆIÜ˜$Ÿ-™-¬×.Ñ.Ø¤ D§M¡MÓ 2Ó2Ü,¬]¸BÔ?Ø—}‘} YÑ/Ð/à—}‘}×2Ñ2°2Ó6Ð6r*   r   )
r   rÛ   r—   Úis_constant_nonerX   r   ÚUserFunctionVariabler
   Ú	predicater3   )r&   r5   r.  rz   ÚresÚpred_ress   ``    r(   r’   ÚFilterVariable.next_variableH  s¦   ù€ ð	7”÷ 	7ð 	7ð Ù“7ˆDØ�JŠJ˜!‰O�JØ�w‰w×'Ñ'×)Ñ)Ø‘à—g‘g×+Ñ+¨B°°¸Ó;�Ü ×5Ò5Ü×#Ñ#óç‰m˜B   rÓ*ð ð ×*Ñ*×,Ñ,Ø�ñ r*   c                 ó  • [        U R                  [        5      (       aN  U R                  U R                  S  nUR	                  U5        UR                  [        [        U5      5      5        g U" U R                  5        g r2   )rL   r|   rf   rÛ   rú   rû   r   ri   )r&   rÀ   rü   s      r(   rý   Ú FilterVariable.reconstruct_items`  sX   € Ü�d—m‘m¤T×*Ñ*Ø"Ÿm™m¨D¯J©J¨LÐ9ˆOØ�O‰O˜OÔ,Ø×!Ñ!Ô"4´S¸Ó5IÓ"JÕKá�D—M‘MÕ"r*   c                 ó¬   ^• TR                  U4S j5        T" U R                  5        U R                  T5        TR                  [	        SS5      5        g )Nc                  ó(   >• T R                  SS5      $ )Nr  r%  r  r¿   s   €r(   rÁ   Ú,FilterVariable.reconstruct.<locals>.<lambda>i  s   ø€  g×&>Ñ&>¸zÈ8Ô&Tr*   r   F)rÃ   r—   rý   r¼   r   rÄ   s    `r(   rÅ   ÚFilterVariable.reconstructh  sB   ø€ Ø×ÑÔTÔUÙ�—‘ÔØ×Ñ˜wÔ'Ø×ÑÔ2°1°eÓ<Õ=r*   )r—   rÛ   r|   rÇ   )rƒ   r„   r…   r†   r²   r‹   r  r   rf   r   r%   rQ   rã   r§   rj   rk   r’   rý   rÅ   r‡   rˆ   r‰   s   @r(   r!  r!    s°   ø† ñð
 	ðà	×	(Ñ	(ð€Nð
	àð	ð �Ñ'ð	ð ð		ð
 
÷	ð˜Tô ð
Ð*Að 
Àdô 
ð

5Ø)ð
5à	ÐÑ	 ô
5ðÐ 7ð ¸Oô ô0#÷>ò >r*   r!  )+r²   r]   r  Úcollections.abcr   r   Útypingr   r   r   Ú r	   r
   r   Úbytecode_transformationr   r   r   r   Úexcr   r   r   r   r   Úbaser   r   Úconstantr   Útorch._dynamo.codegenr   Útorch._dynamo.symbolic_convertr   ÚMAX_ITERATOR_LIMITr   r‹   rª   rq   ru   rÚ   r  r!  r#   r*   r(   Ú<module>rF     sÃ   ðñó Û 
ß .ß ,Ñ ,ç 6Ñ 6÷ó ÷õ ÷ 4Ý &ö Ý/ÝDð  Ð ôp;˜ô p;ôf8;�ô 8;ôvÐ-ô ô@>Ð-ô >ô,!>Ð,ô !>ôHv
Ð"ô v
ôr,I�+ô ,Iô^M>Ð%õ M>r*   