§
    ŠŠtjW]  ã                   óN  — d Z ddlZddl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 ddlmZmZmZmZmZ ddlmZ d	d
lmZmZ d	dlmZ d	dlmZ d	dlmZ erddlm Z  ddl!m"Z" dZ#dddede$f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- G d&„ d'e-¦  «        Z. G d(„ d)e-¦  «        Z/ G d*„ d+e-¦  «        Z0 G d,„ d-e-¦  «        Z1 G d.„ d/e-¦  «        Z2dS )0a“  
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)ÚAnyÚTYPE_CHECKINGé   )Úgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_call_functionÚcreate_call_function_exÚcreate_instruction)Úhandle_observed_exceptionÚObservedUserStopIterationÚraise_observed_exceptionÚraise_value_errorÚunimplemented©Úunpack_iterableé   )ÚValueMutationNewÚVariableTracker)ÚConstantVariable)ÚHashableTracker)Úgeneric_iternext)Ú	PyCodegen)ÚInstructionTranslatorBasei � Útxr   ÚiteratorÚreturnc                 óh   — 	 t          | |¦  «         dS # t          $ r t          | ¦  «         Y dS w xY w)NFT)r   r   r   )r   r   s     úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/variables/iter.pyÚis_iterator_exhaustedr    0   sL   € ðÝ˜˜XÑ&Ô&Ð&ØˆuøÝ$ð ð ð Ý! "Ñ%Ô%Ð%Øˆtˆtðøøøs   ‚ ”1°1c                   ó�   ‡ — e Zd Zdededdfˆ fd„Zddded	ede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Úkwargsr   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S ©N© )ÚsuperÚ__init__r#   )Úselfr#   r$   Ú	__class__s      €r   r)   zItertoolsVariable.__init__<   s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ˆ
ˆ
ó    r   r   ÚotherÚopc                 ó*   — ddl m}  || |||¦  «        S )Nr   )Ú python_constant_richcompare_impl)Úobject_protocolr0   )r*   r   r-   r.   r0   s        r   Úrichcompare_implz"ItertoolsVariable.richcompare_impl@   s.   € ð 	FÐEÐEÐEÐEÐEà/Ð/°°b¸%ÀÑDÔDÐDr,   c                 ó   — d| j         › d�S )NzItertoolsVariable(ú)©r#   ©r*   s    r   Ú__repr__zItertoolsVariable.__repr__G   s   € Ø1 D¤JÐ1Ð1Ð1Ð1r,   c                 ó   — | j         S ©Nr5   r6   s    r   Úas_python_constantz$ItertoolsVariable.as_python_constantJ   ó
   € ØŒzÐr,   c                 ó   — | j         S r9   r5   r6   s    r   Úget_real_python_backed_valuez.ItertoolsVariable.get_real_python_backed_valueM   r;   r,   Úargsr   zdict[str, VariableTracker]c                 ó  •‡ ‡‡‡‡— ‰ j         t          j        u ræt          d„ ‰D ¦   «         ¦  «        rat	          dd‰ › d‰› d‰› �dd                     t          ‰                     ¦   «         ¦  «        dhz
  ¦  «        › �g t          j	        ¢¬¦  «         d‰v r‰d          
                    ¦   «         }nd	}ˆfd
„‰D ¦   «         }d„ t          j        |d|iŽD ¦   «         }t          j        |t          ¦   «         ¬¦  «        S ‰ j         t          j        u rÏ‰sÍt          ‰¦  «        dk    rº‰d	                              ¦   «         r t#          ‰‰d         ¦  «        }‰d	          
                    ¦   «         }g }t          j        ||¦  «        D ]6}|                     t          j        t)          |¦  «        ¦  «        ¦  «         Œ7t          j        |t          ¦   «         ¬¦  «        S ‰ j         t          j        u �r<t          d„ ‰D ¦   «         ¦  «        rat	          dd‰ › d‰› d‰› �dd                     t          ‰                     ¦   «         ¦  «        dhz
  ¦  «        › �g t          j	        ¢¬¦  «         dt,          dt.          fˆˆˆ fd„Št          ‰¦  «        d	k    r0t	          dd‰ › d‰› d‰› �d‰› d‰› d�dgt          j        ¢¬¦  «         t#          ‰‰d         ¦  «        }	d‰v rdt,          dt.          fˆˆˆfd„}
ndt,          dt.          fˆfd„}
g }	 t          j        |	|
¬¦  «        D ]§\  }}|                     t          j        t          j                             |¦  «        rt          j                             |¦  «        n|t          j        t)          |¦  «        t          ¦   «         ¬¦  «        gt          ¦   «         ¬¦  «        ¦  «         Œ¨n@# t8          $ r3}t	          dd‰ › d‰› d‰› �dg t          j        ¢|¬ ¦  «         Y d }~nd }~ww xY wt          j        |t          ¦   «         ¬¦  «        S ‰ j         t          j        u r_t          ‰¦  «        dk     rt=          ‰d!t          ¦   «         iŽS ‰                     t-          j         ‰tB          j        ¦  «        ‰‰¦  «        S ‰ j         t          j"        u rÖ‰sÔt          ‰¦  «        dk    r!t          j#        t          ¦   «         ¬¦  «        S t          ‰¦  «        d	k    r(t          j#        ‰d         t          ¦   «         ¬"¦  «        S t          ‰¦  «        dk    r/t          j#        ‰d         ‰d	         t          ¦   «         ¬#¦  «        S tI          ¦   «          %                    ‰‰‰¦  «        S ‰ j         t          j&        u rÇt          ‰¦  «        d	k    s-t          ‰¦  «        dk    r¡‰d	                              ¦   «         r‡‰s…t          ‰¦  «        dk    r‰d	          
                    ¦   «         }nd }d$„ t          j&        t#          ‰‰d         ¦  «        |¦  «        D ¦   «         }t          j        |t          ¦   «         ¬¦  «        S tI          ¦   «          %                    ‰‰‰¦  «        S )%Nc              3   ó"   K  — | ]
}|d k    V — ŒdS )ÚrepeatNr'   ©Ú.0Úkws     r   ú	<genexpr>z2ItertoolsVariable.call_function.<locals>.<genexpr>Y   s&   è è € Ð3Ð3 b�2˜’>Ð3Ð3Ð3Ð3Ð3Ð3r,   z(Unsupported kwargs for itertools.productúcall_function ú z#Expected kwargs: 'repeat', but got ú,rA   ©Úgb_typeÚcontextÚexplanationÚhintsr   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r'   r   )rC   Úargr   s     €r   ú
<listcomp>z3ItertoolsVariable.call_function.<locals>.<listcomp>f   s#   ø€ Ð=Ð=Ð=°•O B¨Ñ,Ô,Ð=Ð=Ð=r,   c                 óP   — g | ]#}t          j        t          |¦  «        ¦  «        ‘Œ$S r'   ©r   ÚTupleVariableÚlist©rC   Úitems     r   rP   z3ItertoolsVariable.call_function.<locals>.<listcomp>g   ó9   € ð ð ð àõ Ô'­¨T©
¬
Ñ3Ô3ðð ð r,   )Úmutation_typer   r   c              3   ó"   K  — | ]
}|d k    V — ŒdS )ÚkeyNr'   rB   s     r   rE   z2ItertoolsVariable.call_function.<locals>.<genexpr>€   s&   è è € Ð0Ð0 2�2˜’;Ð0Ð0Ð0Ð0Ð0Ð0r,   z(Unsupported kwargs for itertools.groupbyz Expected kwargs: 'key', but got rZ   r   c           
      ób  •— ddl m}  || ¦  «        } t          | t          j        ¦  «        r|                      ¦   «         S |                      ¦   «         r|                      ¦   «         S t          dd‰› d‰› d‰› �dt          t          | ¦  «        ¦  «        › d�g t          j        ¢¬¦  «         d S )	Nr   )Úspecialize_symnodez*Unsupported key type for itertools.groupbyrF   rG   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.)rI   )Úutilsr\   Ú
isinstancer   ÚSymNodeVariableÚevaluate_exprÚis_python_constantr:   r   ÚstrÚtyper   ÚSUPPORTABLE)rZ   r\   r>   r$   r*   s     €€€r   Úretrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_key‰   sè   ø€ Ø6Ð6Ð6Ð6Ð6Ð6ð )Ð(¨Ñ-Ô-�Ý˜c¥9Ô#<Ñ=Ô=ð Ø×,Ò,Ñ.Ô.Ð.Ø×+Ò+Ñ-Ô-ð 
Ø×1Ò1Ñ3Ô3Ð3å!Ø LØ G°Ð GÐ G¸Ð GÐ G¸vÐ GÐ Gð%cÝ<?ÅÀSÁ	Ä	¹N¼Nð%cð %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                 ól   •—  ‰‰                      d¦  «                             ‰| gi ¦  «        ¦  «        S )NrZ   )ÚgetÚcall_function)rf   r$   re   r   s    €€€r   Úkeyfuncz0ItertoolsVariable.call_function.<locals>.keyfunc­   s;   ø€ Ø-Ð-ØŸ
š
 5Ñ)Ô)×7Ò7¸¸Q¸CÀÑDÔDñô ð r,   c                 ó   •—  ‰| ¦  «        S r9   r'   )rf   re   s    €r   rj   z0ItertoolsVariable.call_function.<locals>.keyfunc´   s   ø€ Ø-Ð-¨aÑ0Ô0Ð0r,   )rZ   z7Unexpected failure during itertools.groupby() iterationz6Unexpected failure in invoking function during groupby)rJ   rK   rL   rM   Úfrom_excrX   )rV   rX   )rV   ÚsteprX   c                 óP   — g | ]#}t          j        t          |¦  «        ¦  «        ‘Œ$S r'   rR   rU   s     r   rP   z3ItertoolsVariable.call_function.<locals>.<listcomp>ó   rW   r,   )'r#   Ú	itertoolsÚproductÚanyr   ÚjoinÚsetÚkeysr   Ú
USER_ERRORr:   r   ÚListIteratorVariabler   ÚcombinationsÚlenra   r   ÚappendrS   rT   Úgroupbyr   r   rd   r   Ú
is_literalÚcreateÚ	ExceptionrA   ÚRepeatIteratorVariableÚinline_user_function_returnÚbuildr   ÚcountÚCountIteratorVariabler(   ri   Úpermutations)r*   r   r>   r$   ÚrÚseqsÚitemsÚiterablerV   Úseqrj   ÚresultÚkÚvÚere   r+   s   ````           @€r   ri   zItertoolsVariable.call_functionP   sÁ  øøøøøø€ ð Œ:�Ô*Ð*Ð*ÝÐ3Ð3¨FÐ3Ñ3Ô3Ñ3Ô3ð ÝØFØC¨TÐCÐC°DÐCÐC¸6ÐCÐCð!CØ—x’x¥ F§K¢K¡M¤MÑ 2Ô 2°h°ZÑ ?Ñ@Ô@ð!Cð !Cà9Õ-Ô8Ð9ðñ ô ð ð ˜6Ð!Ð!Ø˜8Ô$×7Ò7Ñ9Ô9��à�Ø=Ð=Ð=Ð=¸Ð=Ñ=Ô=ˆDðð å%Ô-¨tÐ>¸AÐ>Ð>ðñ ô ˆEõ Ô1ØÝ.Ñ0Ô0ðñ ô ð ð
 ŒJ�)Ô0Ð0Ð0Øð 1å�D‘	”	˜Q’�Ø�Q”×*Ò*Ñ,Ô,ð õ ' r¨4°¬7Ñ3Ô3ˆHØ�Q”×*Ò*Ñ,Ô,ˆAàˆEÝ!Ô.¨x¸Ñ;Ô;ð Bð B�Ø—’�YÔ4µT¸$±Z´ZÑ@Ô@ÑAÔAÐAÐAÝÔ1ØÝ.Ñ0Ô0ðñ ô ð ð ŒZ�9Ô,Ð,Ñ,ÝÐ0Ð0¨Ð0Ñ0Ô0Ñ0Ô0ð ÝØFØC¨TÐCÐC°DÐCÐC¸6ÐCÐCð!@Ø—x’x¥ F§K¢K¡M¤MÑ 2Ô 2°e°WÑ <Ñ=Ô=ð!@ð !@à9Õ-Ô8Ð9ðñ ô ð ð­ð ½Cð ð ð ð ð ð ð ð õ& �4‰yŒy˜AŠ~ˆ~ÝØIØC¨TÐCÐC°DÐCÐC¸6ÐCÐCð!DØ48ð!Dð !DØGMð!Dð !Dð !Dð
 Tðå*Ô6ððñ ô ð õ " " d¨1¤gÑ.Ô.ˆCà˜ˆˆð�ð µ3ð ð ð ð ð ð ð ð ð ð1�ð 1µ3ð 1ð 1ð 1ð 1ð 1ð 1ð ˆFðÝ%Ô-¨c°wÐ?Ñ?Ô?ð ð ‘D�A�qØ—M’MÝ!Ô/õ (1Ô'A×'LÒ'LÈQÑ'OÔ'Oð%+¥IÔ$>×$EÒ$EÀaÑ$HÔ$HÐ$Hà)*å )Ô >Ý$(¨¡G¤GÕ;KÑ;MÔ;Mð!"ñ !"ô !"ð	õ +;Ñ*<Ô*<ðñ ô ñô ð ð ðøõ  ð ð ð ÝØUØC¨TÐCÐC°DÐCÐC¸6ÐCÐCØ XØ:Õ-Ô9Ð:Øðñ ô ð ð ð ð ð ð øøøøðøøøõ Ô1ØÝ.Ñ0Ô0ðñ ô ð ð ŒZ�9Ô+Ð+Ð+Ý�4‰yŒy˜1Š}ˆ}Ý-¨tÐVÕCSÑCUÔCUÐVÐVÐVà×1Ò1ÝÔ% b­)Ô*:Ñ;Ô;¸TÀ6ñô ð ð ŒZ�9œ?Ð*Ð*°6Ð*Ý�4‰yŒy˜AŠ~ˆ~Ý Ô6ÕEUÑEWÔEWÐXÑXÔXÐXÝ�4‰yŒy˜AŠ~ˆ~Ý Ô6Ø˜aœÕ0@Ñ0BÔ0Bðñ ô ð õ �4‰yŒy˜AŠ~ˆ~Ý Ô6Ø˜aœØ˜aœÝ"2Ñ"4Ô"4ðñ ô ð õ
 ‘7”7×(Ò(¨¨T°6Ñ:Ô:Ð:àŒJ�)Ô0Ð0Ð0Ý�T‘”˜a’�¥C¨¡I¤I°¢N N°t¸A´w×7QÒ7QÑ7SÔ7S NØð %3õ �4‰yŒy˜AŠ~ˆ~Ø˜”G×.Ò.Ñ0Ô0��à�ðð å%Ô2µ?À2ÀtÈAÄwÑ3OÔ3OÐQRÑSÔSðñ ô ˆEõ Ô1ØÝ.Ñ0Ô0ðñ ô ð õ
 ‘7”7×(Ò(¨¨T°6Ñ:Ô:Ð:s   ÌB>O Ï
PÏ)PÐP)Ú__name__Ú
__module__Ú__qualname__r   r)   r   rb   r2   r7   r:   r=   rT   ri   Ú__classcell__©r+   s   @r   r"   r"   ;   s7  ø€ € € € € ð˜cð ¨Sð °Tð ð ð ð ð ð ðEØ-ðEØ6EðEØKNðEà	ðEð Eð Eð Eð2˜#ð 2ð 2ð 2ð 2ð Cð ð ð ð ð¨cð ð ð ð ðl;à'ðl;ð Ð$Ô%ðl;ð -ð	l;ð
 
ðl;ð l;ð l;ð l;ð l;ð l;ð l;ð l;ð l;ð l;r,   r"   c                   óp   ‡ — e Zd Zdeddfˆ fd„Zdddededefd	„Zdddefd
„Zdddeddfˆ fd„Z	dd„Z
ˆ xZS )ÚIteratorVariabler$   r   Nc                 ó:   •—  t          ¦   «         j        di |¤Ž d S r&   )r(   r)   )r*   r$   r+   s     €r   r)   zIteratorVariable.__init__   s&   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"r,   r   r   r-   r.   c                 ó*   — ddl m}  || |||¦  «        S )Nr   )Úobject_richcompare)r1   r–   )r*   r   r-   r.   r–   s        r   r2   z!IteratorVariable.richcompare_impl  s-   € ð 	8Ð7Ð7Ð7Ð7Ð7à!Ð! $¨¨E°2Ñ6Ô6Ð6r,   c                 óL   — t          dd| › d�dg t          j        ¢¬¦  «         d S )NzUnimplemented next() callznext(r4   z(This abstract method must be implementedrI   )r   r   Ú
DYNAMO_BUG©r*   r   s     r   Útp_iternext_implz!IteratorVariable.tp_iternext_impl
  s@   € ÝØ/Ø#˜D�O�O�OØBØ1Õ%Ô0Ð1ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r,   Únamer   c                 óž   •— |dk    s|dk    rt           j                             d¦  «        S t          ¦   «                              ||¦  «        S )NÚ__iter__Ú__next__T)r   r   r|   r(   Úcall_obj_hasattr)r*   r   r›   r+   s      €r   rŸ   z!IteratorVariable.call_obj_hasattr  sK   ø€ ð �:ÒÐ ¨Ò!3Ð!3ÝÔ-×4Ò4°TÑ:Ô:Ð:Ý‰wŒw×'Ò'¨¨DÑ1Ô1Ð1r,   r   c                 ó   — | S )z!Iterators are their own iterator.r'   r™   s     r   Útp_iter_implzIteratorVariable.tp_iter_impl  s   € àˆr,   )r   r   r   r   )r�   rŽ   r�   r   r)   r   rb   r2   rš   rŸ   r¡   r�   r‘   s   @r   r“   r“   ÿ   sì   ø€ € € € € ð# ð #¨ð #ð #ð #ð #ð #ð #ð7Ø-ð7Ø6Eð7ØKNð7à	ð7ð 7ð 7ð 7ð
Ð#>ð 
À?ð 
ð 
ð 
ð 
ð2Ø-ð2Ø58ð2à	ð2ð 2ð 2ð 2ð 2ð 2ðð ð ð ð ð ð ð 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 )r~   rV   r$   r   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r&   )r(   r)   rV   )r*   rV   r$   r+   s      €r   r)   zRepeatIteratorVariable.__init__  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	ˆ	ˆ	r,   c                 ó   — t           j        S r9   )ro   rA   r6   s    r   Úpython_typez"RepeatIteratorVariable.python_type#  s   € ÝÔÐr,   r   r   c                 ó   — | j         S r9   )rV   r™   s     r   rš   z'RepeatIteratorVariable.tp_iternext_impl'  s   € ð ŒyÐr,   Úcodegenr   c                 óž   ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  óˆ   •— ‰                       ‰                      t          ¦  «        ‰                      d¦  «        g¦  «        S )NrA   ©Úextend_outputÚcreate_load_python_modulero   Úcreate_load_attr©r§   s   €r   ú<lambda>z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>.  s>   ø€ �G×)Ò)à×5Ò5µiÑ@Ô@Ø×,Ò,¨XÑ6Ô6ðñô € r,   r   F)Úadd_push_nullrV   r«   r	   ©r*   r§   s    `r   Úreconstructz"RepeatIteratorVariable.reconstruct,  sh   ø€ Ø×Òðð ð ð ñ	
ô 	
ð 	
ð 	ˆ�”	ÑÔÐØ×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r,   ©r§   r   r   N)r�   rŽ   r�   r   r   r)   rc   r¥   rš   r²   r�   r‘   s   @r   r~   r~     s¤   ø€ € € € € ð˜_ð ¸ð Àð ð ð ð ð ð ð ˜Tð  ð  ð  ð  ðÐ#>ð À?ð ð ð ð ð

>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>r,   r~   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 )r‚   Úadvance_countr   c                 ó   — t           j        S r9   )ro   r�   r6   s    r   r¥   z!CountIteratorVariable.python_typeA  s
   € ÝŒÐr,   r   r   rV   rm   r$   Nc                 ó  •—  t          ¦   «         j        di |¤Ž t          |t          ¦  «        st	          j        |¦  «        }t          |t          ¦  «        st	          j        |¦  «        }|| _        || _        || _        d S r&   )	r(   r)   r^   r   r   r|   rV   rm   rµ   )r*   rV   rm   rµ   r$   r+   s        €r   r)   zCountIteratorVariable.__init__D  s‚   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜$¥Ñ0Ô0ð 	1Ý#Ô*¨4Ñ0Ô0ˆDÝ˜$¥Ñ0Ô0ð 	1Ý#Ô*¨4Ñ0Ô0ˆDØˆŒ	ØˆŒ	Ø*ˆÔÐÐr,   r   r   c                 ó  — |                       ¦   «         st          d¦  «        ‚| j        }|j        j                             | ¦  «         | j                             |d| j        gi ¦  «        | _        | xj        dz  c_        |S )Nz0CountIteratorVariable must be mutable for next()Ú__add__r   )	Ú
is_mutableÚAssertionErrorrV   ÚoutputÚside_effectsÚmutationÚcall_methodrm   rµ   )r*   r   Úold_items      r   rš   z&CountIteratorVariable.tp_iternext_implT  s~   € à�ŠÑ Ô ð 	UÝ Ð!SÑTÔTÐTØ”9ˆØ
Œ	Ô×'Ò'¨Ñ-Ô-Ð-Ø”I×)Ò)¨"¨i¸$¼)¸ÀbÑIÔIˆŒ	ØÐÔ˜aÑÐÔØˆr,   r§   r   c                 ó¾   ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «          ‰| j        ¦  «         ‰                     t	          dd¦  «        ¦  «         d S )Nc                  óˆ   •— ‰                       ‰                      t          ¦  «        ‰                      d¦  «        g¦  «        S )Nr�   rª   r®   s   €r   r¯   z3CountIteratorVariable.reconstruct.<locals>.<lambda>`  s>   ø€ �G×)Ò)à×5Ò5µiÑ@Ô@Ø×,Ò,¨WÑ5Ô5ðñô € r,   r   F)r°   rV   rm   r«   r	   r±   s    `r   r²   z!CountIteratorVariable.reconstruct^  sz   ø€ Ø×Òðð ð ð ñ	
ô 	
ð 	
ð 	ˆ�”	ÑÔÐØˆ�”	ÑÔÐØ×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r,   )r   r   r   r³   )r�   rŽ   r�   r“   Ú_nonvar_fieldsrc   r¥   Úintr   r   r)   rš   r²   r�   r‘   s   @r   r‚   r‚   9  sð   ø€ € € € € ð 	ðà	Ô	(ð€Nð
˜Tð ð ð ð ð
 '(Ø&'Øð	+ð +à�OÑ#ð+ð �OÑ#ð+ð ð	+ð
 ð+ð 
ð+ð +ð +ð +ð +ð +ð Ð#>ð À?ð ð ð ð ð>ð >ð >ð >ð >ð >ð >ð >r,   r‚   c            	       ó€   ‡ — e Zd ZdZeZdhej        £Z	 dd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„Zˆ xZS )ÚZipVariablez$
    Represents zip(*iterables)
    ÚstrictFr‡   r$   r   Nc                 óÈ   •—  t          ¦   «         j        di |¤Ž t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚|| _        || _        d S ©Nz#Expected a tuple of iterables, got r'   )	r(   r)   r^   r   rS   r»   rc   r‡   rÇ   )r*   r‡   rÇ   r$   r+   s       €r   r)   zZipVariable.__init__y  sg   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜(¥IÔ$;Ñ<Ô<ð 	YÝ Ð!WÅtÈHÁ~Ä~Ð!WÐ!WÑXÔXÐXà ˆŒØˆŒˆˆr,   c                 ó   — t           S r9   )Úzipr6   s    r   r¥   zZipVariable.python_type†  ó   € Ýˆ
r,   r   r   c                 óŒ  — |                       ¦   «         st          d¦  «        ‚t          | j        j        ¦  «        }|dk    rt          t          |¦  «         g }t          |¦  «        D ]È}| j        j        |         }	 |                     t          ||¦  «        ¦  «         Œ9# t          $ rƒ | j        s‚ |dk    rt          |d|› d�¦  «         t          |dz   |¦  «        D ]&}| j        j        |         }t          ||¦  «        rŒ% n‚ t          |¦  «         t          |d|› d�¦  «         Y ŒÅw xY wt          j        |¦  «        S )Nz&ZipVariable must be mutable for next()r   zzip() argument z  shorter than previous argumentsr   z" is longer than previous arguments)rº   r»   rx   r‡   r†   r   ÚStopIterationÚrangery   r   r   rÇ   r   r    r   r   rS   ©r*   r   Ú	tuplesizer†   ÚiÚitÚjÚit_js           r   rš   zZipVariable.tp_iternext_impl‰  sŽ  € à�ŠÑ Ô ð 	KÝ Ð!IÑJÔJÐJÝ˜œÔ+Ñ,Ô,ˆ	à˜Š>ˆ>Ý$¥]°BÑ7Ô7Ð7àˆÝ�yÑ!Ô!ð 	ð 	ˆAØ”Ô$ QÔ'ˆBðØ—’Õ-¨b°"Ñ5Ô5Ñ6Ô6Ð6Ð6øÝ,ð ð ð Ø”{ð Øà�q’5�5Ý%ØÐQ¨aÐQÐQÐQñô ð õ
 ˜q 1™u iÑ0Ô0ð ð �AØœ=Ô.¨qÔ1�DÝ,¨R°Ñ6Ô6ð !Ø Ø�Eð å)¨"Ñ-Ô-Ð-Ý!ØÐO¨!ÐOÐOÐOñô ð ð ð ð)øøøõ0 Ô& uÑ-Ô-Ð-s   Á>#B"Â"B
D/Ä.D/r§   r   c                 ó   ‡— ‰                      ˆfd„d¬¦  «          ‰| j        ¦  «         ‰                     ‰                     d¦  «        ‰                     | j        ¦  «        t          dd¬¦  «        gt          dd¦  «        ¢¦  «         d S )	Nc                  ó0   •— ‰                       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   ©rO   F)r°   r‡   r«   Úcreate_load_constrÇ   r   r
   r±   s    `r   r²   zZipVariable.reconstruct±  s²   ø€ Ø×ÒØ?Ð?Ð?Ð?ÐRVð 	ñ 	
ô 	
ð 	
ð 	ˆ�”ÑÔÐØ×Òà×)Ò)¨(Ñ3Ô3Ø×)Ò)¨$¬+Ñ6Ô6Ý" ;°AÐ6Ñ6Ô6ðõ )¨¨uÑ5Ô5ð	ñ	
ô 	
ð 	
ð 	
ð 	
r,   ©Fr³   )r�   rŽ   r�   Ú__doc__rË   Ú_cpython_typer“   rÃ   r   Úboolr   r)   rc   r¥   rš   r²   r�   r‘   s   @r   rÆ   rÆ   l  sì   ø€ € € € € ðð ð
 €Mð 	ðà	Ô	(ð€Nð ðð à!ðð ðð ð	ð
 
ðð ð ð ð ð ð˜T #œYð ð ð ð ð&.Ð#>ð &.À?ð &.ð &.ð &.ð &.ðP
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r,   rÆ   c                   óx   ‡ — e Zd ZdZeZdhej        £Z	 ddede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 )ÚMapVariablez(
    Represents map(fn, *iterables)
    rÇ   FÚfnÚ	iterablesr$   r   Nc                 óÖ   •—  t          ¦   «         j        di |¤Ž || _        t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚|| _        || _	        d S rÉ   )
r(   r)   rç   r^   r   rS   r»   rc   r‡   rÇ   )r*   rç   rè   rÇ   r$   r+   s        €r   r)   zMapVariable.__init__Í  su   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒÝ˜)¥YÔ%<Ñ=Ô=ð 	Ý ØGµd¸9±o´oÐGÐGñô ð ð "ˆŒØˆŒˆˆr,   c                 ó   — t           S r9   )Úmapr6   s    r   r¥   zMapVariable.python_typeÝ  rÌ   r,   r   r   c           
      ó�  — |                       ¦   «         st          d¦  «        ‚t          | j        j        ¦  «        }g }t          |¦  «        D ]Ý}| j        j        |         }	 |                     t          ||¦  «        ¦  «         Œ9# t          $ r˜ | j	        s‚ t          |¦  «         |rt          |d|dz   › d|› �¦  «         t          d|¦  «        D ]=}| j        j        |         }t          ||¦  «        st          |d|dz   › d|› �¦  «         Œ>t          t          |¦  «         Y ŒÚw xY w| j                             ||i ¦  «        S )Nz&MapVariable must be mutable for next()zmap() argument r   z shorter than argument z is longer than argument )rº   r»   rx   r‡   r†   rÏ   ry   r   r   rÇ   r   r   r    r   rÎ   rç   ri   rÐ   s           r   rš   zMapVariable.tp_iternext_implà  sŽ  € à�ŠÑ Ô ð 	KÝ Ð!IÑJÔJÐJå˜œÔ+Ñ,Ô,ˆ	àˆÝ�yÑ!Ô!ð 	<ð 	<ˆAØ”Ô$ QÔ'ˆBð<Ø—’Õ-¨b°"Ñ5Ô5Ñ6Ô6Ð6Ð6øÝ,ð <ð <ð <Ø”{ð Øå)¨"Ñ-Ô-Ð-àð Ý%ØØK¨!¨a©%ÐKÐKÈÐKÐKñô ð õ ˜q )Ñ,Ô,ð ð �AØœ=Ô.¨qÔ1�DÝ0°°TÑ:Ô:ð Ý)ØÐ U°!°a±%Ð UÐ UÐRSÐ UÐ Uñô ð øõ )­¸Ñ;Ô;Ð;Ð;Ð;ð)<øøøð. Œw×$Ò$ R¨°Ñ3Ô3Ð3s   Á##BÂBD)Ä(D)r§   r   c                 óô  ‡— ‰                      ˆfd„d¬¦  «          ‰t          j        | j        g| j        j        ¢¦  «        ¦  «         | j        rƒt          j        dk     rt          d¦  «        ‚‰ 
                    ‰                     d¦  «        ‰                     | j        ¦  «        t          dd¬	¦  «        gt          dd
¦  «        ¢¦  «         d S ‰ 
                    t          d
d
¦  «        ¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )NrØ   rë   rÙ   r®   s   €r   r¯   z)MapVariable.reconstruct.<locals>.<lambda>  rÛ   r,   TrÜ   )é   é   z6Unexpected bug: map(strict=True) requires Python 3.14+rÇ   rÞ   r   rß   F)r°   r   rS   rç   r‡   r†   rÇ   ÚsysÚversion_infor»   r«   rà   r   r
   r±   s    `r   r²   zMapVariable.reconstruct  s!  ø€ Ø×ÒØ?Ð?Ð?Ð?ÐRVð 	ñ 	
ô 	
ð 	
ð 	ˆ•	Ô'¨¬Ð(G°4´=Ô3FÐ(GÑHÔHÑIÔIÐIØŒ;ð 	IÝÔ 'Ò)Ð)Ý$ØLñô ð ð ×!Ò!à×-Ò-¨hÑ7Ô7Ø×-Ò-¨d¬kÑ:Ô:Ý& {¸Ð:Ñ:Ô:ðõ -¨T°5Ñ9Ô9ð	ñô ð ð ð ð ×!Ò!Õ"9¸%ÀÑ"GÔ"GÑHÔHÐHÐHÐHr,   rá   r³   )r�   rŽ   r�   râ   rë   rã   r“   rÃ   r   rä   r   r)   rc   r¥   rš   r²   r�   r‘   s   @r   ræ   ræ   À  sú   ø€ € € € € ðð ð
 €Mð 	ðà	Ô	(ð€Nð ð	ð àðð #ðð ð	ð
 ðð 
ðð ð ð ð ð ð ˜Tð ð ð ð ð#4Ð#>ð #4À?ð #4ð #4ð #4ð #4ðJIð Ið Ið Ið Ið Ið Ið Ir,   ræ   c                   ó\   ‡ — e Zd ZdZeZde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 )ÚFilterVariablez)
    Represents filter(fn, iterable)
    rç   r‡   r$   r   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S r&   )r(   r)   rç   r‡   )r*   rç   r‡   r$   r+   s       €r   r)   zFilterVariable.__init__#  s4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒØ ˆŒˆˆr,   c                 ó   — t           S r9   )Úfilterr6   s    r   r¥   zFilterVariable.python_type-  s   € Ýˆr,   r   r   c                 ó6  — 	 t          || j        ¦  «        }| j                             ¦   «         r|}n| j                             ||gi ¦  «        }t          j        t          j        ¦  «                             ||gi ¦  «        }| 	                    ¦   «         r|S Œ™r9   )
r   r‡   rç   Úis_constant_noneri   r   ÚUserFunctionVariabler   Ú	predicater:   )r*   r   rV   ÚresÚpred_ress        r   rš   zFilterVariable.tp_iternext_impl0  sž   € ð
	Ý# B¨¬Ñ6Ô6ˆDØŒw×'Ò'Ñ)Ô)ð <Ø��à”g×+Ò+¨B°°¸Ñ;Ô;�Ý Ô5ÝÔ#ñô çŠm˜B   rÑ*Ô*ð ð ×*Ò*Ñ,Ô,ð Ø�ð
	r,   r§   r   c                 ó¾   ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «          ‰| j        ¦  «         ‰                     t	          dd¦  «        ¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )NrØ   r÷   rÙ   r®   s   €r   r¯   z,FilterVariable.reconstruct.<locals>.<lambda>@  s   ø€  g×&>Ò&>¸zÈ8Ñ&TÔ&T€ r,   r   F)r°   rç   r‡   r«   r	   r±   s    `r   r²   zFilterVariable.reconstruct?  sj   ø€ Ø×ÒÐTÐTÐTÐTÑUÔUÐUØˆ�”ÑÔÐØˆ�”ÑÔÐØ×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r,   r³   )r�   rŽ   r�   râ   r÷   rã   r   r   r)   rc   r¥   rš   r²   r�   r‘   s   @r   rô   rô     sÆ   ø€ € € € € ðð ð
 €Mð!àð!ð "ð!ð ð	!ð
 
ð!ð !ð !ð !ð !ð !ð˜Tð ð ð ð ðÐ#>ð À?ð ð ð ð ð>ð >ð >ð >ð >ð >ð >ð >r,   rô   c                   ó€   ‡ — e Zd ZU dZdhej        £ZdZeed<   de	e
ef         deddfˆ fd„Zd	d
defd„Zdefd„Zˆ xZS )ÚDictViewIteratorz<Base class for dict view iterators (keys, values, or items).Ú	view_typert   r†   r$   r   Nc                 ór  •—  t          ¦   «         j        di |¤Ž | j        dk    rt          |¦  «        | _        d S | j        dk    r(t          |                     ¦   «         ¦  «        | _        d S | j        dk    rt          d| j        ›�¦  «        ‚t          |                     ¦   «         ¦  «        | _        d S )Nrt   Úvaluesr†   z Expected view_type 'items', got r'   )r(   r)   r  ÚiterÚ_iterr  r»   r†   )r*   r†   r$   r+   s      €r   r)   zDictViewIterator.__init__P  s±   ø€ ð
 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØŒ>˜VÒ#Ð#Ý˜e™œˆDŒJˆJˆJØŒ^˜xÒ'Ð'Ý˜eŸlšl™nœnÑ-Ô-ˆDŒJˆJˆJàŒ~ Ò(Ð(Ý$ØI°t´~ÐIÐIñô ð õ ˜eŸkšk™mœmÑ,Ô,ˆDŒJˆJˆJr,   r   r   c                 óL  ‡— 	 t          | j        ¦  «        }| j        dk    r|j        S | j        dk    r|S |\  }}t	          j        ‰|j        |f¦  «        S # t          t          f$ r;}t          t          |¦  «        ‰ˆfd„|j
        D ¦   «         ¬¦  «         Y d }~d S d }~ww xY w)Nrt   r  c                 ó:   •— g | ]}t          j        ‰|¦  «        ‘ŒS r'   )r   r€   )rC   Úar   s     €r   rP   z5DictViewIterator.tp_iternext_impl.<locals>.<listcomp>s  s&   ø€ ÐCÐCÐC°q•oÔ+¨B°Ñ2Ô2ÐCÐCÐCr,   )r>   )Únextr  r  Úvtr   r€   ÚRuntimeErrorrÎ   r   rc   r>   )r*   r   rV   rŠ   r‹   rŒ   s    `    r   rš   z!DictViewIterator.tp_iternext_impla  sÝ   ø€ ð	Ý˜œ
Ñ#Ô#ˆDàŒ~ Ò'Ð'Ø”w�Ø” 8Ò+Ð+Ø�à‘��1Ý&Ô,¨R°!´$¸°Ñ;Ô;Ð;øÝ�mÐ,ð 	ð 	ð 	Ý$Ý�Q‘”ØØCÐCÐCÐC¸A¼FÐCÑCÔCðñ ô ð ð ð ð ð ð ð øøøøð	øøøs!   ƒ%A ©A ¶ A ÁB#Á(0BÂB#c                 ó  — | j         dk    rt          t          i ¦  «        ¦  «        S | j         dk    r.t          t          i                      ¦   «         ¦  «        ¦  «        S t          t          i                      ¦   «         ¦  «        ¦  «        S )Nrt   r  )r  rc   r  r  r†   r6   s    r   r¥   zDictViewIterator.python_typev  sj   € ØŒ>˜VÒ#Ð#Ý�˜R™œ‘>”>Ð!ØŒ^˜xÒ'Ð'Ý�˜RŸYšY™[œ[Ñ)Ô)Ñ*Ô*Ð*å�˜RŸXšX™ZœZÑ(Ô(Ñ)Ô)Ð)r,   )r�   rŽ   r�   râ   r“   rÃ   r  rb   Ú__annotations__Údictr   r   r   r)   rš   rc   r¥   r�   r‘   s   @r   r  r  F  sÒ   ø€ € € € € € ØFÐFð 	ðà	Ô	(ð€Nð
 €IˆsÐÐÑð-à�O _Ð4Ô5ð-ð ð-ð 
ð	-ð -ð -ð -ð -ð -ð"Ð#>ð À?ð ð ð ð ð**˜Tð *ð *ð *ð *ð *ð *ð *ð *r,   r  c                   ó:   — e Zd Z e ei ¦  «        ¦  «        ZdZdS )ÚDictIteratorrt   N)r�   rŽ   r�   rc   r  rã   r  r'   r,   r   r  r    s(   € € € € € Ø�D˜˜˜b™œ‘N”N€MØ€I€I€Ir,   r  c                   ó^   — e Zd Z e ei                      ¦   «         ¦  «        ¦  «        ZdZdS )ÚDictKeysIteratorrt   N)r�   rŽ   r�   rc   r  rt   rã   r  r'   r,   r   r  r  „  s2   € € € € € Ø�D˜˜˜bŸgšg™iœi™œÑ)Ô)€MØ€I€I€Ir,   r  c                   ó^   — e Zd Z e ei                      ¦   «         ¦  «        ¦  «        ZdZdS )ÚDictValuesIteratorr  N)r�   rŽ   r�   rc   r  r  rã   r  r'   r,   r   r  r  ‰  s4   € € € € € Ø�D˜˜˜bŸiši™kœkÑ*Ô*Ñ+Ô+€MØ€I€I€Ir,   r  c                   ó^   — e Zd Z e ei                      ¦   «         ¦  «        ¦  «        ZdZdS )ÚDictItemsIteratorr†   N)r�   rŽ   r�   rc   r  r†   rã   r  r'   r,   r   r  r  Ž  s4   € € € € € Ø�D˜˜˜bŸhšh™jœjÑ)Ô)Ñ*Ô*€MØ€I€I€Ir,   r  c                   óJ   — e Zd Z e e e¦   «         ¦  «        ¦  «        ZdZdS )ÚSetIteratorrt   N)r�   rŽ   r�   rc   r  rs   rã   r  r'   r,   r   r  r  “  s0   € € € € € Ø�D˜˜˜c˜c™eœe™œÑ%Ô%€MØ€I€I€Ir,   r  )3râ   ro   rñ   Útypingr   r   Ú r   r   r   Úbytecode_transformationr	   r
   r   Úexcr   r   r   r   r   r]   r   Úbaser   r   Úconstantr   Úhashabler   r1   r   Útorch._dynamo.codegenr   Útorch._dynamo.symbolic_convertr   ÚMAX_ITERATOR_LIMITrä   r    r"   r“   r~   r‚   rÆ   ræ   rô   r  r  r  r  r  r  r'   r,   r   ú<module>r$     sö  ððð ð Ð Ð Ð Ø 
€
€
€
Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ø %Ð %Ð %Ð %Ð %Ð %Ø -Ð -Ð -Ð -Ð -Ð -ð ð IØ/Ð/Ð/Ð/Ð/Ð/ØHÐHÐHÐHÐHÐHð  Ð ðØ#ðØ/>ðà	ðð ð ð ðA;ð A;ð A;ð A;ð A;˜ñ A;ô A;ð A;ðHð ð ð ð �ñ ô ð ð>>ð >ð >ð >ð >Ð-ñ >ô >ð >ð60>ð 0>ð 0>ð 0>ð 0>Ð,ñ 0>ô 0>ð 0>ðfQ
ð Q
ð Q
ð Q
ð Q
Ð"ñ Q
ô Q
ð Q
ðhXIð XIð XIð XIð XIÐ"ñ XIô XIð XIðv(>ð (>ð (>ð (>ð (>Ð%ñ (>ô (>ð (>ðV6*ð 6*ð 6*ð 6*ð 6*Ð'ñ 6*ô 6*ð 6*ðrð ð ð ð Ð#ñ ô ð ð
ð ð ð ð Ð'ñ ô ð ð
ð ð ð ð Ð)ñ ô ð ð
ð ð ð ð Ð(ñ ô ð ð
ð ð ð ð Ð"ñ ô ð ð ð r,   