Ë
    L²jr\  ã                   ól  — d Z ddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
mZmZ ddlmZmZmZmZ ddlmZmZmZmZmZ d	d
lmZmZ d	dlmZ erddlmZ ddlm Z  dZ! G d„ de«      Z" G d„ de«      Z# G d„ de#«      Z$ G d„ de#«      Z% G d„ de#«      Z& G d„ de#«      Z' G d„ de'«      Z( G d„ de#«      Z)y)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é   )Ú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                   ór   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zdefd„Zdefd„Zd	d
de	d   ddddfˆ fd„Z
ˆ xZS )ÚItertoolsVariableÚvalueÚkwargsÚreturnNc                 ó2   •— t        ‰| �  di |¤Ž || _        y ©N© )ÚsuperÚ__init__r   )Úselfr   r   Ú	__class__s      €ú[/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/variables/iter.pyr#   zItertoolsVariable.__init__0   s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
ó    c                 ó"   — d| j                   › d�S )NzItertoolsVariable(ú)©r   ©r$   s    r&   Ú__repr__zItertoolsVariable.__repr__4   s   € Ø# D§J¡J <¨qÐ1Ð1r'   c                 ó   — | j                   S ©Nr*   r+   s    r&   Úas_python_constantz$ItertoolsVariable.as_python_constant7   ó   € Ø�z‰zÐr'   c                 ó   — | j                   S r.   r*   r+   s    r&   Úget_real_python_backed_valuez.ItertoolsVariable.get_real_python_backed_value:   r0   r'   Útxr   Úargsr   zdict[str, VariableTracker]c                 óü  •‡ ‡‡‡‡— ‰ j                   t        j                  u rüt        d„ ‰D «       «      rUt	        dd‰ › d‰› d‰› �ddj                  t        ‰j                  «       «      dhz
  «      › �g t        j                  ¢¬«       d‰v r‰d   j                  «       }nd	}‰D �cg c]  }|j                  ‰«      ‘Œ }}t        j                  |d|iŽD �cg c]   }t        j                  t        |«      «      ‘Œ" }}t        j                  |t!        «       ¬
«      S ‰ j                   t        j"                  u rÇ‰sÅt%        ‰«      dk(  r·‰d   j'                  ‰«      r£‰d	   j)                  «       r�‰d   j+                  ‰«      }	‰d	   j                  «       }g }t        j"                  |	|«      D ]/  }|j-                  t        j                  t        |«      «      «       Œ1 t        j                  |t!        «       ¬
«      S ‰ j                   t        j.                  u �rãt        d„ ‰D «       «      rUt	        dd‰ › d‰› d‰› �ddj                  t        ‰j                  «       «      dhz
  «      › �g t        j                  ¢¬«       dt0        dt2        fˆˆˆ fd„Št%        ‰«      d	k(  r)‰d   j'                  ‰«      r‰d   j+                  ‰«      }
n0t	        dd‰ › d‰› d‰› �d‰› d‰› d�dgt        j4                  ¢¬«       d‰v rdt0        dt2        fˆˆˆfd„}ndt0        dt2        fˆfd„}g }	 t        j.                  
|¬«      D ]™  \  }}|j-                  t        j                  t        j6                  j9                  |«      rt        j6                  j;                  |«      n|t        j                  t        |«      t!        «       ¬
«      gt!        «       ¬
«      «       Œ› 	 t        j                  |t!        «       ¬
«      S ‰ j                   t        j>                  u r`t%        ‰«      dk  rt        j@                  ‰dt!        «       iŽS ‰jC                  t1        jD                  ‰tF        j>                  «      ‰‰«      S ‰ j                   t        jH                  u r£‰s¡t%        ‰«      dk(  rt        jJ                  t!        «       ¬
«      S t%        ‰«      d	k(  r"t        jJ                  ‰d   t!        «       ¬ «      S t%        ‰«      dk(  r&t        jJ                  ‰d   ‰d	   t!        «       ¬!«      S tL        ‰‰ ��  ‰‰‰«      S ‰ j                   t        jP                  u rÅt%        ‰«      d	k(  s!t%        ‰«      dk(  r©‰d	   j)                  «       r–‰s”t%        ‰«      dk(  r‰d	   j                  «       }nd }t        jP                  ‰d   j                  ‰«      |«      D �cg c]   }t        j                  t        |«      «      ‘Œ" }}t        j                  |t!        «       ¬
«      S tL        ‰‰ ��  ‰‰‰«      S c c}w c c}w # t<        $ r4}t	        dd‰ › d‰› d‰› �dg t        j4                  ¢|¬«       Y d }~�ŒŽd }~ww xY wc c}w )"Nc              3   ó&   K  — | ]	  }|d k7  –— Œ y­w)ÚrepeatNr!   ©Ú.0Úkws     r&   ú	<genexpr>z2ItertoolsVariable.call_function.<locals>.<genexpr>F   s   è ø€ Ò3 b�2˜•>Ñ3ùó   ‚z(Unsupported kwargs for itertools.productúcall_function ú z#Expected kwargs: 'repeat', but got ú,r7   ©Úgb_typeÚcontextÚexplanationÚhintsr   )Úmutation_typer   r   c              3   ó&   K  — | ]	  }|d k7  –— Œ y­w)ÚkeyNr!   r8   s     r&   r;   z2ItertoolsVariable.call_function.<locals>.<genexpr>n   s   è ø€ Ò0 2�2˜•;Ñ0ùr<   z(Unsupported kwargs for itertools.groupbyz Expected kwargs: 'key', but got rG   r   c           
      ó  •— t        | t        j                  «      r| j                  «       S | j	                  «       r| j                  «       S t        dd‰› d‰› d‰› �dt        t        | «      «      › d�g t        j                  ¢¬«       y )Nz*Unsupported key type for itertools.groupbyr=   r>   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.)r@   )Ú
isinstancer
   ÚSymNodeVariableÚevaluate_exprÚis_python_constantr/   r   ÚstrÚtyper   ÚSUPPORTABLE)rG   r4   r   r$   s    €€€r&   Úretrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_keyw   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   •—  ‰‰j                  d«      j                  ‰| gi «      «      S )NrG   )ÚgetÚcall_function)rQ   r   rP   r3   s    €€€r&   Úkeyfuncz0ItertoolsVariable.call_function.<locals>.keyfunc˜   s-   ø€ Ù-ØŸ
™
 5Ó)×7Ñ7¸¸Q¸CÀÓDóð r'   c                 ó   •—  ‰| «      S r.   r!   )rQ   rP   s    €r&   rU   z0ItertoolsVariable.call_function.<locals>.keyfuncŸ   s   ø€ Ù-¨aÓ0Ð0r'   )rG   z7Unexpected failure during itertools.groupby() iterationz6Unexpected failure in invoking function during groupby)rA   rB   rC   rD   Úfrom_excrE   )ÚitemrE   )rX   ÚsteprE   ))r   Ú	itertoolsÚproductÚanyr   ÚjoinÚsetÚkeysr   Ú
USER_ERRORr/   Úforce_unpack_var_sequencer
   ÚTupleVariableÚlistÚListIteratorVariabler   ÚcombinationsÚlenÚhas_unpack_var_sequencerL   Úunpack_var_sequenceÚappendÚgroupbyr   r   rO   r   Ú
is_literalÚcreateÚ	Exceptionr7   ÚRepeatIteratorVariableÚinline_user_function_returnÚbuildr	   ÚcountÚCountIteratorVariabler"   rT   Úpermutations)r$   r3   r4   r   ÚrÚargÚseqsrX   ÚitemsÚiterableÚseqrU   ÚresultÚkÚvÚerP   r%   s   ````            @€r&   rT   zItertoolsVariable.call_function=   s9  ý€ ð �:‰:œ×*Ñ*Ñ*ÜÑ3¨FÔ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¸#�C×1Ñ1°"Õ5ÐFˆDÐFô &×-Ñ-¨tÐ>¸AÑ>öàô ×'Ñ'¬¨T«
Õ3ðˆEð ô ×1Ñ1ØÜ.Ó0ôð ð
 �J‰Jœ)×0Ñ0Ñ0ÙÜ�D“	˜Q’Ø�Q‘×/Ñ/°Ô3Ø�Q‘×*Ñ*Ô,à˜A‘w×2Ñ2°2Ó6ˆHØ�Q‘×*Ñ*Ó,ˆAàˆEÜ!×.Ñ.¨x¸Ó;ò B�Ø—‘œY×4Ñ4´T¸$³ZÓ@ÕAðBä×1Ñ1ØÜ.Ó0ôð ð �Z‰Zœ9×,Ñ,Ò,ÜÑ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Ø˜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�qØ—M‘MÜ!×/Ñ/ô (1×'AÑ'A×'LÑ'LÈQÔ'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Ÿ?™?Ñ*±6Ü�4‹y˜AŠ~Ü ×6Ñ6ÔEUÓEWÔXÐXÜ�4‹y˜AŠ~Ü ×6Ñ6Ø˜a™Ô0@Ó0Bôð ô �4‹y˜AŠ~Ü ×6Ñ6Ø˜a™Ø˜a™Ü"2Ó"4ôð ô
 ‘7Ñ(¨¨T°6Ó:Ð:à�J‰Jœ)×0Ñ0Ñ0Ü�T“˜a’¤C¨£I°¢N°t¸A±w×7QÑ7QÔ7SÙä�4‹y˜AŠ~Ø˜‘G×.Ñ.Ó0‘à�ô &×2Ñ2Ø˜‘G×5Ñ5°bÓ9¸1óöàô ×'Ñ'¬¨T«
Õ3ðˆEð ô ×1Ñ1ØÜ.Ó0ôð ô
 ‘7Ñ(¨¨T°6Ó:Ð:ùòq Gùòøô@ ò ÜØUØ,¨T¨F°!°D°6¸¸6¸(ÐCØ XØ:Ô-×9Ñ9Ð:Ø÷ó ûðüòXs+   Â(X/Ã%X4Ì/B3X9 ×%Y9Ø9	Y6Ù)Y1Ù1Y6)Ú__name__Ú
__module__Ú__qualname__r   r#   rM   r,   r/   r2   r   rT   Ú__classcell__©r%   s   @r&   r   r   /   s}   ø„ ð˜cð ¨Sð °Tõ ð2˜#ó 2ð Có ð¨có ðn;à#ðn;ð Ð(Ñ)ðn;ð -ð	n;ð
 
÷n;ñ n;r'   r   c            
       óÆ   ‡ — e Zd Zdeddfˆ fd„Zdddefd„Zdddee   fd„Zddd	e	egef   ddfd
„Z
dddefd„Zdddeddfˆ fd„Zdddedee   deeef   def
ˆ fd„Zˆ xZS )ÚIteratorVariabler   r   Nc                 ó$   •— t        ‰| �  di |¤Ž y r    )r"   r#   )r$   r   r%   s     €r&   r#   zIteratorVariable.__init__ï   s   ø€ Ü‰ÑÑ"˜6Ó"r'   r3   r   c                 óJ   — t        dd| › d�dg t        j                  ¢¬«       y )NzUnimplemented next() callznext(r)   z(This abstract method must be implementedr@   )r   r   Ú
DYNAMO_BUG©r$   r3   s     r&   Únext_variablezIteratorVariable.next_variableò   s*   € ÜØ/Ø˜D˜6 �OØBØ1Ô%×0Ñ0Ð1ö		
r'   c                 óB   — g }| j                  ||j                  «       |S r.   )Úforce_apply_to_var_sequenceri   )r$   r3   rz   s      r&   ra   z*IteratorVariable.force_unpack_var_sequenceþ   s"   € ð )+ˆØ×(Ñ(¨¨V¯]©]Ô;Øˆr'   Úfnc                 ój   — 	 	  || j                  |«      «       Œ# t        $ r t        |«       Y y w xY wr.   )r‰   r   r   )r$   r3   rŒ   s      r&   r‹   z,IteratorVariable.force_apply_to_var_sequence  s@   € ð ðÙ�4×%Ñ% bÓ)Ô*ð øô -ò Ü)¨"Ô-Ùðús   ƒ ›2±2c                  ó   — y©NTr!   rˆ   s     r&   Úhas_force_unpack_var_sequencez.IteratorVariable.has_force_unpack_var_sequence  s   € Ør'   Únamer   c                 óv   •— |dk(  s|dk(  rt         j                  j                  d«      S t        ‰| �  ||«      S )NÚ__iter__Ú__next__T)r
   r   rl   r"   Úcall_obj_hasattr)r$   r3   r‘   r%   s      €r&   r•   z!IteratorVariable.call_obj_hasattr  s=   ø€ ð �:Ò ¨Ò!3Ü×-Ñ-×4Ñ4°TÓ:Ð:Ü‰wÑ'¨¨DÓ1Ð1r'   r4   c                 ób   •— |dk(  r| S |dk(  r| j                  |«      S t        ‰| �	  ||||«      S )Nr“   r”   )r‰   r"   Úcall_method)r$   r3   r‘   r4   r   r%   s        €r&   r—   zIteratorVariable.call_method  sA   ø€ ð �:ÒØˆKØ�ZÒØ×%Ñ% bÓ)Ð)Ü‰wÑ" 2 t¨T°6Ó:Ð:r'   )r~   r   r€   r   r#   r   r‰   rc   ra   r   r‹   Úboolr�   rM   r•   Údictr—   r�   r‚   s   @r&   r„   r„   î   sæ   ø„ ð# ð #¨õ #ð
Ð 7ð 
¸Oó 
ðØ)ðà	ˆoÑ	óðØ)ðØ/7¸¸¸s¸
Ñ/Cðà	óðÐ0Gð ÈDó ð2Ø)ð2Ø14ð2à	õ2ð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;ñ ;r'   r„   c                   ó@   ‡ — e Zd ZdZdededdfˆ fd„Zdddefd	„Zˆ xZS )
ÚObjectIteratorVariableaZ  
    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        ‰| �  di |¤Ž || _        d| _        y )NFr!   )r"   r#   rœ   Úgenerator_exhausted)r$   rœ   r   r%   s      €r&   r#   zObjectIteratorVariable.__init__7  s"   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒØ#(ˆÕ r'   r3   r   c                 óœ   — | j                   rt        t        |«       	 | j                  j	                  |«      S # t
        $ r	 d| _         ‚ w xY wr�   )rž   r   ÚStopIterationrœ   r‰   r   rˆ   s     r&   r‰   z$ObjectIteratorVariable.next_variable<  sK   € Ø×#Ò#Ü$¤]°BÔ7ð	Ø—8‘8×)Ñ)¨"Ó-Ð-øÜ(ò 	ð (,ˆDÔ$Øð		ús	   ž9 ¹A)	r~   r   r€   Ú__doc__r   r   r#   r‰   r�   r‚   s   @r&   r›   r›   )  s6   ø„ ñð)˜Oð )°sð )¸tõ )ð

Ð 7ð 
¸O÷ 
r'   r›   c                   óP   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zdddefd	„Zdd
„Z	ˆ xZ
S )rn   rX   r   r   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r    )r"   r#   rX   )r$   rX   r   r%   s      €r&   r#   zRepeatIteratorVariable.__init__J  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	r'   c                 ó"   — t         j                  S r.   )rZ   r7   r+   s    r&   Úpython_typez"RepeatIteratorVariable.python_typeN  s   € Ü×ÑÐr'   r3   r   c                 ó   — | j                   S r.   )rX   rˆ   s     r&   r‰   z$RepeatIteratorVariable.next_variableR  s   € Ø�y‰yÐr'   c                 óˆ   ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  t        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nr7   ©Úextend_outputÚcreate_load_python_modulerZ   Úcreate_load_attr©Úcodegens   €r&   ú<lambda>z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>W  s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨XÓ6ðó€ r'   r   F)Úadd_push_nullrX   rª   r   ©r$   r®   s    `r&   Úreconstructz"RepeatIteratorVariable.reconstructU  s:   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r'   ©r®   r   r   N)r~   r   r€   r   r   r#   rN   r¥   r‰   r²   r�   r‚   s   @r&   rn   rn   I  sB   ø„ ð˜_ð ¸ð Àõ ð ˜Tó  ðÐ 7ð ¸Oó ÷
>r'   rn   c                   óŠ   ‡ — e Zd Zdhej                  £Zdefd„Z	 	 	 ddeez  deez  dede	ddf
ˆ fd„Z
d	d
defd„Zdd„Zˆ xZS )rr   Úadvance_countr   c                 ó"   — t         j                  S r.   )rZ   rq   r+   s    r&   r¥   z!CountIteratorVariable.python_typej  s   € Ü�‰Ðr'   rX   rY   r   Nc                 óâ   •— t        ‰| �  di |¤Ž t        |t        «      st	        j
                  |«      }t        |t        «      st	        j
                  |«      }|| _        || _        || _        y r    )	r"   r#   rI   r   r   rl   rX   rY   rµ   )r$   rX   rY   rµ   r   r%   s        €r&   r#   zCountIteratorVariable.__init__m  s_   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDÜ˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDØˆŒ	ØˆŒ	Ø*ˆÕr'   r3   r   c                 ó  — | j                  «       sJ ‚| j                  }|j                  j                  j	                  | «       | j                  j                  |d| j                  gi «      | _        | xj                  dz  c_        |S )NÚ__add__r   )Ú
is_mutablerX   ÚoutputÚside_effectsÚmutationr—   rY   rµ   )r$   r3   Úold_items      r&   r‰   z#CountIteratorVariable.next_variable}  sk   € Ø�‰Ô Ð Ð Ø—9‘9ˆØ
�	‰	×Ñ×'Ñ'¨Ô-Ø—I‘I×)Ñ)¨"¨i¸$¿)¹)¸ÀbÓIˆŒ	Ø×Ò˜aÑÕØˆr'   c                 ó¬   ‡— ‰j                  ˆfd„«        ‰| j                  «        ‰| j                  «       ‰j                  t	        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrq   r©   r­   s   €r&   r¯   z3CountIteratorVariable.reconstruct.<locals>.<lambda>‡  s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨WÓ5ðó€ r'   r   F)r°   rX   rY   rª   r   r±   s    `r&   r²   z!CountIteratorVariable.reconstruct…  sF   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔÙ�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r'   )r   r   r   r³   )r~   r   r€   r„   Ú_nonvar_fieldsrN   r¥   Úintr   r   r#   r‰   r²   r�   r‚   s   @r&   rr   rr   b  sŒ   ø„ ð 	ðà	×	(Ñ	(ð€Nð
˜Tó ð
 '(Ø&'Øñ	+à�OÑ#ð+ð �OÑ#ð+ð ð	+ð
 ð+ð 
õ+ð Ð 7ð ¸Oó ÷>r'   rr   c            	       óº   ‡ — e Zd ZdZeZddhej                  £Z	 ddee	   de
deddfˆ fd„Zdee   fd	„Zd
dde
fd„Zd
dded   fd„Zd
dde	fd„Zdd„Zdd„Zˆ xZS )ÚZipVariablez$
    Represents zip(*iterables)
    ÚindexÚstrictÚ	iterablesr   r   Nc                 ór   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        d| _        || _        y ©Nr   r!   )r"   r#   rI   rc   rÇ   rÅ   rÆ   )r$   rÇ   rÆ   r   r%   s       €r&   r#   zZipVariable.__init__¡  s:   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜)¤TÔ*Ð*Ð*à"ˆŒØˆŒ
Øˆ�r'   c                 ó   — t         S r.   )Úzipr+   s    r&   r¥   zZipVariable.python_type®  ó   € Üˆ
r'   r3   r   c                 ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3   ód   •K  — | ]'  }t        |t        «      xs |j                  ‰«      –— Œ) y ­wr.   )rI   rc   rg   )r9   Úitr3   s     €r&   r;   z6ZipVariable.has_unpack_var_sequence.<locals>.<genexpr>²  s3   øè ø€ ò 
àô �rœ4Ó ÒB B×$>Ñ$>¸rÓ$BÓBñ
ùs   ƒ-0)ÚallrÇ   rˆ   s    `r&   rg   z#ZipVariable.has_unpack_var_sequence±  s!   ø€ Üó 
à—n‘nô
ó 
ð 	
r'   r   c                 óœ  — | j                  |«      sJ ‚g }| j                  D ]Q  }t        |t        «      r|j	                  || j
                  d  «       Œ2|j	                  |j                  |«      «       ŒS | j                  rd| j                  ini }t        |i |¤Ž}|D �cg c]   }t        j                  t        |«      «      ‘Œ" c}S c c}w )NrÆ   )rg   rÇ   rI   rc   ri   rÅ   rh   rÆ   rË   r
   rb   )r$   r3   rÇ   rÏ   r   ÚzippedÚvars          r&   rh   zZipVariable.unpack_var_sequence·  s¶   € ð ×+Ñ+¨BÔ/Ð/Ð/Øˆ	Ø—.‘.ò 	=ˆBÜ˜"œdÔ#Ø× Ñ   D§J¡J LÐ!1Õ2à× Ñ  ×!7Ñ!7¸Ó!;Õ<ð		=ð
 -1¯KªK�(˜DŸK™KÑ(¸RˆÜ�iÐ* 6Ñ*ˆØ>DÖE°s”	×'Ñ'¬¨S«	Õ2ÒEÐEùÒEs   Â!%C	c                 óÊ  ‡‡— | j                  «       sJ ‚t        | j                  «      dk(  rt        t        ‰«       | j
                  Šg }dt        t           t        z  dt        fˆˆfd„}d }	 t        | j                  «      D ]  \  }}|j                   ||«      «       Œ 	 ‰j                  j                   j#                  | «       | xj
                  dz  c_        t%        j&                  |«      S # t        $ rf | j                  rX|dk(  r7| j                  D ]'  }	  ||«       n# t        $ r t        ‰«       Y Œ#w xY w n ‚ t        ‰«       t        t        d«      d ‚‚ w xY w)Nr   rÏ   r   c                 óŒ   •— t        | t        «      r#‰t        | «      k\  rt        t        ‰«       | ‰   S | j                  ‰«      S r.   )rI   rc   rf   r   r    r‰   )rÏ   Ú	old_indexr3   s    €€r&   Úget_itemz+ZipVariable.next_variable.<locals>.get_itemÎ  s@   ø€ ô ˜"œdÔ#Ø¤ B£Ò'Ü,¬]¸BÔ?Ø˜)‘}Ð$à×'Ñ'¨Ó+Ð+r'   z3zip() has one argument of len differing from othersr   )rº   rf   rÇ   r   r    rÅ   rc   r   Ú	enumerateri   r   rÆ   r   r   Ú
ValueErrorr»   r¼   r½   r
   rb   )r$   r3   r4   r×   ÚidxrÏ   rÖ   s    `    @r&   r‰   zZipVariable.next_variableÅ  sR  ù€ Ø�‰Ô Ð Ð äˆt�~‰~Ó !Ò#Ü$¤]°BÔ7à—J‘Jˆ	Øˆð	,Ü”_Ñ%¬Ñ7ð	,äö	,ð ˆð	Ü$ T§^¡^Ó4ò *‘��RØ—‘™H R›LÕ)ñ*ð0 	�	‰	×Ñ×'Ñ'¨Ô-Ø�
Š
�a‰�
Ü×&Ñ& tÓ,Ð,øô1 )ò 	Ø�{Š{Ø˜!’8à"Ÿn™nò 
˜ð%Ù$ R�LøÜ8ò %Ü5°bÔ9Ù$ð%úñ ð
ð Ü)¨"Ô-ÜÜØIóð ðð ð)	ús0   Á/4C3 Ã3)E"ÄD&Ä%E"Ä&D=Ä:E"Ä<D=Ä=%E"c                 óÞ   — | j                   D ]^  }t        |t        «      rD|| j                  d  }|j	                  |«       |j                  t        t        |«      «      «       ŒW ||«       Œ` y r.   )rÇ   rI   rc   rÅ   ÚforeachÚappend_outputr   rf   )r$   r®   rÏ   Úremaining_itemss       r&   Úreconstruct_itemszZipVariable.reconstruct_itemsö  s[   € Ø—.‘.ò 	ˆBÜ˜"œdÔ#Ø"$ T§Z¡Z \Ð"2�Ø—‘ Ô0Ø×%Ñ%Ô&8¼¸_Ó9MÓ&NÕOá˜•ñ	r'   c                 óT  ‡— ‰j                  ˆfd„d¬«       | j                  ‰«       ‰j                  t        t	        | j
                  «      «      «       ‰j                  ‰j                  d«      ‰j                  | j                  «      t        dd¬«      gt        dd«      ¢«       y )	Nc                  ó(   •— ‰ j                  dd«      S )NÚbuiltinsrË   ©Úload_import_fromr­   s   €r&   r¯   z)ZipVariable.reconstruct.<locals>.<lambda>  ó   ø€ �G×,Ñ,¨Z¸Ó?€ r'   T©Úcall_function_exrÆ   Ú	BUILD_MAPr   ©ru   F)r°   rß   rÝ   r   rf   rÇ   rª   Úcreate_load_constrÆ   r   r   r±   s    `r&   r²   zZipVariable.reconstructÿ  s—   ø€ Ø×ÑÛ?ÐRVð 	ô 	
ð 	×Ñ˜wÔ'Ø×ÑÔ0´°T·^±^Ó1DÓEÔFØ×Ñà×)Ñ)¨(Ó3Ø×)Ñ)¨$¯+©+Ó6Ü" ;°AÔ6ðô )¨¨uÓ5ð	õ	
r'   )Fr³   )r~   r   r€   r¡   rË   Ú_cpython_typer„   rÁ   rc   r   r˜   r   r#   rN   r¥   rg   rh   r‰   rß   r²   r�   r‚   s   @r&   rÄ   rÄ   “  sÄ   ø„ ñð
 €Mð 	Øðð 
×	(Ñ	(ð€Nð ñà˜Ñ(ðð ðð ð	ð
 
õð˜T #™Yó ð
Ð*Að 
Àdó 
ðFØ)ðFà	ÐÑ	 óFð/-Ð 7ð /-¸Oó /-ób÷
r'   rÄ   c                   óv   ‡ — e Zd ZdZeZdedee   deddfˆ fd„Z	de
fd„Zd	d
defd„Zd	d
defˆ fd„Zdd„Zˆ xZS )ÚMapVariablez(
    Represents map(fn, *iterables)
    rŒ   rÇ   r   r   Nc                 ó4   •— t        ‰| �  |fi |¤Ž || _        y r.   )r"   r#   rŒ   )r$   rŒ   rÇ   r   r%   s       €r&   r#   zMapVariable.__init__  s   ø€ ô 	‰Ñ˜Ñ- fÒ-Øˆ�r'   c                 ó   — t         S r.   )Úmapr+   s    r&   r¥   zMapVariable.python_type   rÌ   r'   r3   r   c                  ó   — y)NFr!   rˆ   s     r&   rg   z#MapVariable.has_unpack_var_sequence#  s   € Ør'   c                 óp   •— t         ‰| �  |«      }| j                  j                  ||j                  i «      S r.   )r"   r‰   rŒ   rT   rw   )r$   r3   r4   r%   s      €r&   r‰   zMapVariable.next_variable&  s/   ø€ Ü‰wÑ$ RÓ(ˆØ�w‰w×$Ñ$ R¨¯©°RÓ8Ð8r'   c                 ó  ‡— ‰j                  ˆfd„d¬«        ‰| j                  «       | j                  ‰«       ‰j                  t	        t        | j                  «      dz   «      «       | j                  rnt        j                  dk\  sJ d«       ‚‰j                  ‰j                  d«      ‰j                  | j                  «      t        dd¬	«      gt        dd
«      ¢«       y ‰j                  t        d
d
«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nrâ   rð   rã   r­   s   €r&   r¯   z)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   rf   rÇ   rÆ   ÚsysÚversion_inforª   rê   r   r   r±   s    `r&   r²   z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   rc   r   r#   rN   r¥   r˜   rg   r‰   r²   r�   r‚   s   @r&   rí   rí     sy   ø„ ñð
 €Mðàðð ˜Ñ(ðð ð	ð
 
õð˜Tó ðÐ*Að Àdó ð9Ð 7ð 9¸Oõ 9÷Ir'   rí   c                   ó®   ‡ — e Zd ZdZeZdhej                  £Zdede	e   de
ddfˆ fd„Zdefd	„Zd
ddefd„Zd
dde	d   fd„Zd
ddefd„Zdd„Zdd„Zˆ xZS )ÚFilterVariablez)
    Represents filter(fn, iterable)
    rÅ   rŒ   rx   r   r   Nc                 óN   •— t        ‰| �  di |¤Ž || _        || _        d| _        y rÉ   )r"   r#   rŒ   rx   rÅ   )r$   rŒ   rx   r   r%   s       €r&   r#   zFilterVariable.__init__N  s*   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒØ ˆŒØˆ�
r'   c                 ó   — t         S r.   )Úfilterr+   s    r&   r¥   zFilterVariable.python_typeY  s   € Üˆr'   r3   r   c                 óp   — t        | j                  t        «      xs | j                  j                  |«      S r.   )rI   rx   rc   rg   rˆ   s     r&   rg   z&FilterVariable.has_unpack_var_sequence\  s.   € Ü˜$Ÿ-™-¬Ó.ò 
°$·-±-×2WÑ2WØó3
ð 	
r'   r   c                 ó2  — | j                  |«      sJ ‚d }t        | j                  t        «      r| j                  | j                  d  }n| j                  j                  |«      }| j                  j                  ||i «      }t        j                  |g«      gS r.   )
rg   rI   rx   rc   rÅ   rh   rŒ   rT   r
   rb   )r$   r3   rÏ   Úfiltereds       r&   rh   z"FilterVariable.unpack_var_sequencea  s�   € ð ×+Ñ+¨BÔ/Ð/Ð/ØˆÜ�d—m‘m¤TÔ*Ø—‘˜tŸz™z˜|Ð,‰Bà—‘×2Ñ2°2Ó6ˆBØ—7‘7×(Ñ(¨¨R°Ó4ˆÜ×'Ñ'¨¨
Ó3Ð4Ð4r'   c                 ó`  ‡ ‡— dt         fˆ ˆfd„}	  |«       }‰ xj                  dz  c_        ‰ j                  j                  «       r|}n‰ j                  j	                  ‰|gi «      }t        j                  t        j                  «      j	                  ‰|gi «      }|j                  «       r|S ŒŸ)Nr   c                  óô   •— ‰j                   } t        ‰j                  t        «      r7| t	        ‰j                  «      k\  rt        t        ‰«       ‰j                  |    S ‰j                  j                  ‰«      S r.   )rÅ   rI   rx   rc   rf   r   r    r‰   )rÖ   r$   r3   s    €€r&   Ú_nextz+FilterVariable.next_variable.<locals>._nextn  sY   ø€ ØŸ
™
ˆIÜ˜$Ÿ-™-¬Ô.Ø¤ D§M¡MÓ 2Ò2Ü,¬]¸BÔ?Ø—}‘} YÑ/Ð/à—}‘}×2Ñ2°2Ó6Ð6r'   r   )
r   rÅ   rŒ   Úis_constant_nonerT   r
   ÚUserFunctionVariabler	   Ú	predicater/   )r$   r3   r  rX   ÚresÚpred_ress   ``    r&   r‰   zFilterVariable.next_variablem  s›   ù€ ð	7”ö 	7ð Ù“7ˆDØ�JŠJ˜!‰O�JØ�w‰w×'Ñ'Ô)Ø‘à—g‘g×+Ñ+¨B°°¸Ó;�Ü ×5Ñ5Ü×#Ñ#óç‰m˜B   rÓ*ð ð ×*Ñ*Ô,Ø�ð r'   c                 óø   — t        | j                  t        «      rN| j                  | j                  d  }|j	                  |«       |j                  t        t        |«      «      «       y  || j                  «       y r.   )rI   rx   rc   rÅ   rÜ   rÝ   r   rf   )r$   r®   rÞ   s      r&   rß   z FilterVariable.reconstruct_items…  sU   € Ü�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                 óª   ‡— ‰j                  ˆfd„«        ‰| j                  «       | j                  ‰«       ‰j                  t	        dd«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nrâ   rý   rã   r­   s   €r&   r¯   z,FilterVariable.reconstruct.<locals>.<lambda>Ž  s   ø€  g×&>Ñ&>¸zÈ8Ó&T€ r'   r   F)r°   rŒ   rß   rª   r   r±   s    `r&   r²   zFilterVariable.reconstruct�  sB   ø€ Ø×ÑÓTÔUÙ�—‘ÔØ×Ñ˜wÔ'Ø×ÑÔ2°1°eÓ<Õ=r'   r³   )r~   r   r€   r¡   rý   rë   r„   rÁ   r   rc   r   r#   rN   r¥   r˜   rg   rh   r‰   rß   r²   r�   r‚   s   @r&   rú   rú   A  s²   ø„ ñð
 €Mð 	ðà	×	(Ñ	(ð€Nð
	àð	ð �Ñ'ð	ð ð		ð
 
õ	ð˜Tó ð
Ð*Að 
Àdó 
ð

5Ø)ð
5à	ÐÑ	 ó
5ðÐ 7ð ¸Oó ó0#÷>r'   rú   )*r¡   rZ   r÷   Úcollections.abcr   r   Útypingr   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›   rn   rr   rÄ   rí   rú   r!   r'   r&   ú<module>r     sÀ   ðñó Û 
ß .ß %ç 6Ñ 6÷ó ÷õ ÷ 4Ý &ñ Ý/ÝDð  Ð ô|;˜ô |;ô~8;�ô 8;ôvÐ-ô ô@>Ð-ô >ô2.>Ð,ô .>ôby
Ð"ô y
ôx/I�+ô /IôdP>Ð%õ P>r'   