Ë
    ÃÓ^jW]  ã                   óþ  — 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-«      Z2y)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                 óR   — 	 t        | |«       y# t        $ r t        | «       Y yw xY w)NFT)r   r   r   )r   r   s     úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/iter.pyÚis_iterator_exhaustedr   0   s.   € ðÜ˜˜XÔ&ØøÜ$ò Ü! "Ô%Ùðús   ‚ �&¥&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                 ó2   •— t        ‰| �  di |¤Ž || _        y ©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_protocolr/   )r)   r   r,   r-   r/   s        r   Úrichcompare_implz"ItertoolsVariable.richcompare_impl@   s   € õ 	Fá/°°b¸%ÀÓDÐDr+   c                 ó"   — d| j                   › d�S )NzItertoolsVariable(ú)©r"   ©r)   s    r   Ú__repr__zItertoolsVariable.__repr__G   s   € Ø# D§J¡J <¨qÐ1Ð1r+   c                 ó   — | j                   S ©Nr4   r5   s    r   Úas_python_constantz$ItertoolsVariable.as_python_constantJ   ó   € Ø�z‰zÐr+   c                 ó   — | j                   S r8   r4   r5   s    r   Úget_real_python_backed_valuez.ItertoolsVariable.get_real_python_backed_valueM   r:   r+   Úargsr   zdict[str, VariableTracker]c                 ón  •‡ ‡‡‡‡— ‰ 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]  }t        ‰|«      ‘Œ }}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‹t        ‰‰d   «      }	‰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t,        dt.        fˆˆˆ fd„Št%        ‰«      d	k7  r0t	        dd‰ › d‰› d‰› �d‰› d‰› d�dgt        j0                  ¢¬«       t        ‰‰d   «      }
d‰v rdt,        dt.        fˆˆˆfd„}ndt,        dt.        fˆfd„}g }	 t        j*                  |
|¬«      D ]™  \  }}|j)                  t        j                  t        j2                  j5                  |«      rt        j2                  j7                  |«      n|t        j                  t        |«      t!        «       ¬
«      gt!        «       ¬
«      «       Œ› 	 t        j                  |t!        «       ¬
«      S ‰ j                   t        j:                  u rVt%        ‰«      dk  rt=        ‰dt!        «       iŽS ‰j?                  t-        j@                  ‰tB        j:                  «      ‰‰«      S ‰ j                   t        jD                  u r£‰s¡t%        ‰«      dk(  rt        jF                  t!        «       ¬
«      S t%        ‰«      d	k(  r"t        jF                  ‰d   t!        «       ¬ «      S t%        ‰«      dk(  r&t        jF                  ‰d   ‰d	   t!        «       ¬!«      S tH        ‰‰ �•  ‰‰‰«      S ‰ j                   t        jL                  u rÀt%        ‰«      d	k(  s!t%        ‰«      dk(  r¤‰d	   j'                  «       r‘‰s�t%        ‰«      dk(  r‰d	   j                  «       }nd }t        jL                  t        ‰‰d   «      |«      D �cg c]   }t        j                  t        |«      «      ‘Œ" }}t        j                  |t!        «       ¬
«      S tH        ‰‰ �•  ‰‰‰«      S c c}w c c}w # t8        $ r4}t	        dd‰ › d‰› d‰› �dg t        j0                  ¢|¬«       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>Y   s   è ø€ Ò3 b�2˜•>Ñ3ùó   ‚z(Unsupported kwargs for itertools.productúcall_function ú z#Expected kwargs: 'repeat', but got ú,r@   ©Úgb_typeÚcontextÚexplanationÚhintsr   )Úmutation_typer   r   c              3   ó&   K  — | ]	  }|d k7  –— Œ y­w)ÚkeyNr&   rA   s     r   rD   z2ItertoolsVariable.call_function.<locals>.<genexpr>€   s   è ø€ Ò0 2�2˜•;Ñ0ùrE   z(Unsupported kwargs for itertools.groupbyz Expected kwargs: 'key', but got rP   r   c           
      ó2  •— ddl m}  || «      } t        | t        j                  «      r| j                  «       S | j                  «       r| j                  «       S t        dd‰› d‰› d‰› �dt        t        | «      «      › d�g t        j                  ¢¬«       y )	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   )ÚutilsrR   Ú
isinstancer   ÚSymNodeVariableÚevaluate_exprÚis_python_constantr9   r   ÚstrÚtyper   ÚSUPPORTABLE)rP   rR   r=   r#   r)   s     €€€r   Úretrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_key‰   sž   ø€ Ý6ñ )¨Ó-�Ü˜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 )NrP   )ÚgetÚcall_function)r\   r#   r[   r   s    €€€r   Úkeyfuncz0ItertoolsVariable.call_function.<locals>.keyfunc­   s-   ø€ Ù-ØŸ
™
 5Ó)×7Ñ7¸¸Q¸CÀÓDóð r+   c                 ó   •—  ‰| «      S r8   r&   )r\   r[   s    €r   r`   z0ItertoolsVariable.call_function.<locals>.keyfunc´   s   ø€ Ù-¨aÓ0Ð0r+   )rP   z7Unexpected failure during itertools.groupby() iterationz6Unexpected failure in invoking function during groupby)rJ   rK   rL   rM   Úfrom_excrN   )ÚitemrN   )rc   ÚsteprN   )'r"   Ú	itertoolsÚproductÚanyr   ÚjoinÚsetÚkeysr   Ú
USER_ERRORr9   r   r   ÚTupleVariableÚlistÚListIteratorVariabler   ÚcombinationsÚlenrW   ÚappendÚgroupbyr   r   rZ   r   Ú
is_literalÚcreateÚ	Exceptionr@   ÚRepeatIteratorVariableÚinline_user_function_returnÚbuildr   ÚcountÚCountIteratorVariabler'   r_   Úpermutations)r)   r   r=   r#   ÚrÚargÚseqsrc   ÚitemsÚiterableÚseqr`   ÚresultÚkÚvÚer[   r*   s   ````            @€r   r_   zItertoolsVariable.call_functionP   sô  ý€ ð �:‰:œ×*Ñ*Ñ*ÜÑ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‘à�Ø8<Ö=°”O B¨Õ,Ð=ˆDÐ=ô &×-Ñ-¨tÐ>¸AÑ>öàô ×'Ñ'¬¨T«
Õ3ðˆEð ô ×1Ñ1ØÜ.Ó0ôð ð
 �J‰Jœ)×0Ñ0Ñ0ÙÜ�D“	˜Q’Ø�Q‘×*Ñ*Ô,ä& r¨4°©7Ó3ˆ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Š~ÜØIØ,¨T¨F°!°D°6¸¸6¸(ÐCð!4Ø48°6¸ÀvÀhð ODð!Dð
 Tðä*×6Ñ6ðõô " " d¨1¡gÓ.ˆCà˜‰ðœð ´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Š}Ü-¨tÐVÔCSÓCUÑVÐVà×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´?À2ÀtÈAÁwÓ3OÐQRÓSöàô ×'Ñ'¬¨T«
Õ3ðˆEð ô ×1Ñ1ØÜ.Ó0ôð ô
 ‘7Ñ(¨¨T°6Ó:Ð:ùòm >ùòøôD ò ÜØUØ,¨T¨F°!°D°6¸¸6¸(ÐCØ XØ:Ô-×9Ñ9Ð:Ø÷ó ûðüòTs+   Â(W(Ã%W-Ë7B3W2 Ö%X2×2	X/×;)X*Ø*X/)Ú__name__Ú
__module__Ú__qualname__r   r(   r   rX   r1   r6   r9   r<   rm   r_   Ú__classcell__©r*   s   @r   r!   r!   ;   s§   ø„ ð˜cð ¨Sð °Tõ ðEØ-ðEØ6EðEØKNðEà	óEð2˜#ó 2ð Có ð¨có ð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        ‰| �  di |¤Ž y 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)r0   r�   )r)   r   r,   r-   r�   s        r   r1   z!IteratorVariable.richcompare_impl  s   € õ 	8á! $¨¨E°2Ó6Ð6r+   c                 óJ   — t        dd| › d�dg t        j                  ¢¬«       y )NzUnimplemented next() callznext(r3   z(This abstract method must be implementedrI   )r   r   Ú
DYNAMO_BUG©r)   r   s     r   Útp_iternext_implz!IteratorVariable.tp_iternext_impl
  s*   € ÜØ/Ø˜D˜6 �OØBØ1Ô%×0Ñ0Ð1ö		
r+   Únamer   c                 óv   •— |dk(  s|dk(  rt         j                  j                  d«      S t        ‰| �  ||«      S )NÚ__iter__Ú__next__T)r   r   rt   r'   Úcall_obj_hasattr)r)   r   r”   r*   s      €r   r˜   z!IteratorVariable.call_obj_hasattr  s=   ø€ ð �:Ò ¨Ò!3Ü×-Ñ-×4Ñ4°TÓ:Ð:Ü‰wÑ'¨¨DÓ1Ð1r+   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   rX   r1   r“   r˜   rš   r‰   rŠ   s   @r   rŒ   rŒ   ÿ   sq   ø„ ð# ð #¨õ #ð7Ø-ð7Ø6Eð7ØKNð7à	ó7ð
Ð#>ð 
À?ó 
ð2Ø-ð2Ø58ð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 )rv   rc   r#   r   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r%   )r'   r(   rc   )r)   rc   r#   r*   s      €r   r(   zRepeatIteratorVariable.__init__  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	r+   c                 ó"   — t         j                  S r8   )re   r@   r5   s    r   Úpython_typez"RepeatIteratorVariable.python_type#  s   € Ü×ÑÐr+   r   r   c                 ó   — | j                   S r8   )rc   r’   s     r   r“   z'RepeatIteratorVariable.tp_iternext_impl'  s   € ð �y‰yÐr+   c                 óˆ   ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  t        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nr@   ©Úextend_outputÚcreate_load_python_modulere   Úcreate_load_attr©Úcodegens   €r   ú<lambda>z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>.  s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨XÓ6ðó€ r+   r   F)Úadd_push_nullrc   r£   r	   ©r)   r§   s    `r   Úreconstructz"RepeatIteratorVariable.reconstruct,  s:   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r+   ©r§   r   r   N)r†   r‡   rˆ   r   r   r(   rY   rž   r“   r«   r‰   rŠ   s   @r   rv   rv     sB   ø„ ð˜_ð ¸ð Àõ ð ˜Tó  ðÐ#>ð À?ó ÷

>r+   rv   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 )rz   Úadvance_countr   c                 ó"   — t         j                  S r8   )re   ry   r5   s    r   rž   z!CountIteratorVariable.python_typeA  s   € Ü�‰Ðr+   rc   rd   r#   Nc                 óâ   •— t        ‰| �  di |¤Ž t        |t        «      st	        j
                  |«      }t        |t        «      st	        j
                  |«      }|| _        || _        || _        y r%   )	r'   r(   rT   r   r   rt   rc   rd   r®   )r)   rc   rd   r®   r#   r*   s        €r   r(   zCountIteratorVariable.__init__D  s_   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDÜ˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDØˆŒ	ØˆŒ	Ø*ˆÕr+   r   r   c                 ó$  — | j                  «       st        d«      ‚| j                  }|j                  j                  j                  | «       | j                  j                  |d| j                  gi «      | _        | xj                  dz  c_        |S )Nz0CountIteratorVariable must be mutable for next()Ú__add__r   )	Ú
is_mutableÚAssertionErrorrc   ÚoutputÚside_effectsÚmutationÚcall_methodrd   r®   )r)   r   Úold_items      r   r“   z&CountIteratorVariable.tp_iternext_implT  sq   € à�‰Ô Ü Ð!SÓTÐTØ—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 )Nry   r¢   r¦   s   €r   r¨   z3CountIteratorVariable.reconstruct.<locals>.<lambda>`  s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨WÓ5ðó€ r+   r   F)r©   rc   rd   r£   r	   rª   s    `r   r«   z!CountIteratorVariable.reconstruct^  sF   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔÙ�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r+   )r   r   r   r¬   )r†   r‡   rˆ   rŒ   Ú_nonvar_fieldsrY   rž   Úintr   r   r(   r“   r«   r‰   rŠ   s   @r   rz   rz   9  sŒ   ø„ ð 	ðà	×	(Ñ	(ð€Nð
˜Tó ð
 '(Ø&'Øñ	+à�OÑ#ð+ð �OÑ#ð+ð ð	+ð
 ð+ð 
õ+ð Ð#>ð À?ó ÷>r+   rz   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)
    Ústrictr€   r#   r   Nc                 ó¢   •— t        ‰| �  di |¤Ž t        |t        j                  «      st        dt        |«      › �«      ‚|| _        || _        y ©Nz#Expected a tuple of iterables, got r&   )	r'   r(   rT   r   rl   r´   rY   r€   rÀ   )r)   r€   rÀ   r#   r*   s       €r   r(   zZipVariable.__init__y  sK   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜(¤I×$;Ñ$;Ô<Ü Ð#FÄtÈHÃ~ÐFVÐ!WÓXÐXà ˆŒØˆ�r+   c                 ó   — t         S r8   )Úzipr5   s    r   rž   zZipVariable.python_type†  ó   € Üˆ
r+   r   r   c                 óh  — | j                  «       st        d«      ‚t        | j                  j                  «      }|dk(  rt        t        |«       g }t        |«      D ]7  }| j                  j                  |   }	 |j                  t        ||«      «       Œ9 t        j                   |«      S # t        $ r| | j                  s‚ |dkD  rt        |d|› d�«       t        |dz   |«      D ])  }| j                  j                  |   }t        ||«      rŒ) n ‚ t        |«       t        |d|› d�«       Y ŒÓw xY w)Nz&ZipVariable must be mutable for next()r   zzip() argument z  shorter than previous argumentsr   z" is longer than previous arguments)r³   r´   rp   r€   r   r   ÚStopIterationÚrangerq   r   r   rÀ   r   r   r   r   rl   ©r)   r   Ú	tuplesizer   ÚiÚitÚjÚit_js           r   r“   zZipVariable.tp_iternext_impl‰  s3  € à�‰Ô Ü Ð!IÓJÐJÜ˜Ÿ™×+Ñ+Ó,ˆ	à˜Š>Ü$¤]°BÔ7àˆÜ�yÓ!ò 	ˆAØ—‘×$Ñ$ QÑ'ˆBðØ—‘Ô-¨b°"Ó5Õ6ð	ô8 ×&Ñ& uÓ-Ð-øô1 -ò Ø—{’{Øà�q’5Ü%Ø˜o¨a¨SÐ0PÐQôô
 ˜q 1™u iÓ0ò �AØŸ=™=×.Ñ.¨qÑ1�DÜ,¨R°Ô6Ø Ùð	ð ä)¨"Ô-Ü!Ø˜/¨!¨Ð,NÐOöð)ús   Á:B,Â,BD1Ä0D1c                 óü   ‡— ‰j                  ˆfd„d¬«        ‰| 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   ©r}   F)r©   r€   r£   Úcreate_load_constrÀ   r   r
   rª   s    `r   r«   zZipVariable.reconstruct±  sx   ø€ Ø×ÑÛ?ÐRVð 	ô 	
ñ 	�—‘ÔØ×Ñà×)Ñ)¨(Ó3Ø×)Ñ)¨$¯+©+Ó6Ü" ;°AÔ6ðô )¨¨uÓ5ð	õ	
r+   ©Fr¬   )r†   r‡   rˆ   Ú__doc__rÄ   Ú_cpython_typerŒ   r¼   r   Úboolr   r(   rY   rž   r“   r«   r‰   rŠ   s   @r   r¿   r¿   l  sƒ   ø„ ñð
 €Mð 	ðà	×	(Ñ	(ð€Nð ñà!ðð ðð ð	ð
 
õð˜T #™Yó ð&.Ð#>ð &.À?ó &.÷P
r+   r¿   c                   ó‚   ‡ — 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À   ÚfnÚ	iterablesr#   r   Nc                 ó°   •— t        ‰| �  di |¤Ž || _        t        |t        j
                  «      st        dt        |«      › �«      ‚|| _        || _	        y rÂ   )
r'   r(   rà   rT   r   rl   r´   rY   r€   rÀ   )r)   rà   rá   rÀ   r#   r*   s        €r   r(   zMapVariable.__init__Í  sX   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒÜ˜)¤Y×%<Ñ%<Ô=Ü Ø5´d¸9³oÐ5FÐGóð ð "ˆŒØˆ�r+   c                 ó   — t         S r8   )Úmapr5   s    r   rž   zMapVariable.python_typeÝ  rÅ   r+   r   r   c           
      ór  — | j                  «       st        d«      ‚t        | j                  j                  «      }g }t        |«      D ]7  }| j                  j                  |   }	 |j                  t        ||«      «       Œ9 | j                  j!                  ||i «      S # t        $ rŽ | j                  s‚ t        |«       |rt        |d|dz   › d|› �«       t        d|«      D ]=  }| j                  j                  |   }t        ||«      rŒ)t        |d|dz   › d|› �«       Œ? t        t        |«       Y Œíw xY w)Nz&MapVariable must be mutable for next()zmap() argument r   z shorter than argument z is longer than argument )r³   r´   rp   r€   r   rÈ   rq   r   r   rÀ   r   r   r   r   rÇ   rà   r_   rÉ   s           r   r“   zMapVariable.tp_iternext_implà  s6  € à�‰Ô Ü Ð!IÓJÐJä˜Ÿ™×+Ñ+Ó,ˆ	àˆÜ�yÓ!ò 	<ˆAØ—‘×$Ñ$ QÑ'ˆBð<Ø—‘Ô-¨b°"Ó5Õ6ð	<ð6 �w‰w×$Ñ$ R¨°Ó3Ð3øô/ -ò <Ø—{’{Øä)¨"Ô-áÜ%ØØ)¨!¨a©%¨Ð0GÈÀsÐKôô ˜q )Ó,ò �AØŸ=™=×.Ñ.¨qÑ1�DÜ0°°TÕ:Ü)Ø /°!°a±%°Ð8QÐRSÐQTÐ Uõðô )¬¸Ö;ð)<ús   Á%BÂA,D6Ä'D6Ä5D6c                 óÜ  ‡— ‰j                  ˆfd„d¬«        ‰t        j                  | j                  g| j                  j
                  ¢«      «       | j                  rrt        j                  dk  rt        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Õ   )é   é   z6Unexpected bug: map(strict=True) requires Python 3.14+rÀ   r×   r   rØ   F)r©   r   rl   rà   r€   r   rÀ   ÚsysÚversion_infor´   r£   rÙ   r   r
   rª   s    `r   r«   zMapVariable.reconstruct  sÔ   ø€ Ø×ÑÛ?ÐRVð 	ô 	
ñ 	”	×'Ñ'¨¯©Ð(G°4·=±=×3FÑ3FÐ(GÓHÔIØ�;Š;Ü×Ñ 'Ò)Ü$ØLóð ð ×!Ñ!à×-Ñ-¨hÓ7Ø×-Ñ-¨d¯k©kÓ:Ü& {¸Ô:ðô -¨T°5Ó9ð	õð ×!Ñ!Ô"9¸%ÀÓ"GÕHr+   rÚ   r¬   )r†   r‡   rˆ   rÛ   rä   rÜ   rŒ   r¼   r   rÝ   r   r(   rY   rž   r“   r«   r‰   rŠ   s   @r   rß   rß   À  sŠ   ø„ ñð
 €Mð 	ðà	×	(Ñ	(ð€Nð ñ	àðð #ðð ð	ð
 ðð 
õð ˜Tó ð#4Ð#>ð #4À?ó #4÷J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                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r%   )r'   r(   rà   r€   )r)   rà   r€   r#   r*   s       €r   r(   zFilterVariable.__init__#  s#   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒØ ˆ�r+   c                 ó   — t         S r8   )Úfilterr5   s    r   rž   zFilterVariable.python_type-  s   € Üˆr+   r   r   c                 ó6  — 	 t        || j                  «      }| j                  j                  «       r|}n| j                  j	                  ||gi «      }t        j                  t        j                  «      j	                  ||gi «      }|j                  «       r|S Œ™r8   )
r   r€   rà   Úis_constant_noner_   r   ÚUserFunctionVariabler   Ú	predicater9   )r)   r   rc   ÚresÚpred_ress        r   r“   zFilterVariable.tp_iternext_impl0  sŠ   € ð Ü# B¨¯©Ó6ˆDØ�w‰w×'Ñ'Ô)Ø‘à—g‘g×+Ñ+¨B°°¸Ó;�Ü ×5Ñ5Ü×#Ñ#óç‰m˜B   rÓ*ð ð ×*Ñ*Ô,Ø�ð 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?  s@   ø€ Ø×ÑÓTÔUÙ�—‘ÔÙ�—‘ÔØ×ÑÔ2°1°eÓ<Õ=r+   r¬   )r†   r‡   rˆ   rÛ   rð   rÜ   r   r   r(   rY   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_typerj   r   r#   r   Nc                 óJ  •— t        ‰| �  di |¤Ž | j                  dk(  rt        |«      | _        y | j                  dk(  rt        |j                  «       «      | _        y | j                  dk7  rt        d| j                  ›�«      ‚t        |j                  «       «      | _        y )Nrj   Ú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Ø�^‰^˜xÒ'Ü˜eŸl™l›nÓ-ˆD�Jà�~‰~ Ò(Ü$Ø6°t·~±~Ð6HÐIóð ô ˜eŸk™k›mÓ,ˆD�Jr+   r   r   c                 óž  — 	 t        | j                  «      }| j                  dk(  r|j                  S | j                  dk(  r|S |\  }}t	        j
                  ||j                  |f«      S # t        t        f$ rS}t        t        |«      ||j                  D �cg c]  }t	        j
                  ||«      ‘Œ nc c}w c}¬«       Y d }~y d }~ww xY w)Nrj   rý   )r=   )Únextrÿ   rû   Úvtr   rx   ÚRuntimeErrorrÇ   r   rY   r=   )r)   r   rc   rƒ   r„   r…   Úas          r   r“   z!DictViewIterator.tp_iternext_impla  s­   € ð	Ü˜Ÿ
™
Ó#ˆDà�~‰~ Ò'Ø—w‘w�Ø—‘ 8Ò+Ø�à‘��1Ü&×,Ñ,¨R°!·$±$¸°Ó;Ð;øÜœmÐ,ò 	Ü$Ü�Q“ØØ<=¿F¹FÖC°q”o×+Ñ+¨B°Õ2ÑCùÔC÷ò ûð	ús.   ‚/A* ²A* Á&A* Á*CÁ9CÂB5Â4CÃCc                 óî   — | j                   dk(  rt        t        i «      «      S | j                   dk(  r"t        t        i j                  «       «      «      S t        t        i j	                  «       «      «      S )Nrj   rý   )rû   rY   rþ   rý   r   r5   s    r   rž   zDictViewIterator.python_typev  sT   € Ø�>‰>˜VÒ#Üœ˜R›“>Ð!Ø�^‰^˜xÒ'Üœ˜RŸY™Y›[Ó)Ó*Ð*äœ˜RŸX™X›ZÓ(Ó)Ð)r+   )r†   r‡   rˆ   rÛ   rŒ   r¼   rû   rX   Ú__annotations__Údictr   r   r   r(   r“   rY   rž   r‰   rŠ   s   @r   rú   rú   F  sw   ø… ÙFð 	ðà	×	(Ñ	(ð€Nð
 €IˆsÓð-à�O _Ð4Ñ5ð-ð ð-ð 
õ	-ð"Ð#>ð À?ó ð**˜T÷ *r+   rú   c                   ó,   — e Zd Z e ei «      «      ZdZy)ÚDictIteratorrj   N)r†   r‡   rˆ   rY   rþ   rÜ   rû   r&   r+   r   r	  r	    s   „ Ù™˜b›“N€MØ�Ir+   r	  c                   óH   — e Zd Z e ei j                  «       «      «      ZdZy)ÚDictKeysIteratorrj   N)r†   r‡   rˆ   rY   rþ   rj   rÜ   rû   r&   r+   r   r  r  „  s   „ Ù™˜bŸg™g›i›Ó)€MØ�Ir+   r  c                   óH   — e Zd Z e ei j                  «       «      «      ZdZy)ÚDictValuesIteratorrý   N)r†   r‡   rˆ   rY   rþ   rý   rÜ   rû   r&   r+   r   r  r  ‰  s   „ Ù™˜bŸi™i›kÓ*Ó+€MØ�Ir+   r  c                   óH   — e Zd Z e ei j                  «       «      «      ZdZy)ÚDictItemsIteratorr   N)r†   r‡   rˆ   rY   rþ   r   rÜ   rû   r&   r+   r   r  r  Ž  s   „ Ù™˜bŸh™h›jÓ)Ó*€MØ�Ir+   r  c                   ó6   — e Zd Z e e e«       «      «      ZdZy)ÚSetIteratorrj   N)r†   r‡   rˆ   rY   rþ   ri   rÜ   rû   r&   r+   r   r  r  “  s   „ Ù™™c›e›Ó%€MØ�Ir+   r  )3rÛ   re   rê   Útypingr   r   Ú r   r   r   Úbytecode_transformationr	   r
   r   Úexcr   r   r   r   r   rS   r   Úbaser   r   Úconstantr   Úhashabler   r0   r   Útorch._dynamo.codegenr   Útorch._dynamo.symbolic_convertr   ÚMAX_ITERATOR_LIMITrÝ   r   r!   rŒ   rv   rz   r¿   rß   rí   rú   r	  r  r  r  r  r&   r+   r   ú<module>r     s%  ðñó Û 
ß %ç 6Ñ 6÷ñ ÷
õ õ $ß 3Ý &Ý %Ý -ñ Ý/ÝHð  Ð ðØ#ðØ/>ðà	óôA;˜ô A;ôH�ô ô>>Ð-ô >ô60>Ð,ô 0>ôfQ
Ð"ô Q
ôhXIÐ"ô XIôv(>Ð%ô (>ôV6*Ð'ô 6*ôrÐ#ô ô
Ð'ô ô
Ð)ô ô
Ð(ô ô
Ð"õ r+   