Ë
    g^(hbL  ã                   óP  — d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
 ddl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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)ÚOptionalÚTYPE_CHECKINGÚUnioné   )Ú	polyfillsÚ	variables)Úcreate_call_functionÚcreate_instruction)Úhandle_observed_exceptionÚObservedUserStopIterationÚraise_observed_exceptionÚunimplementedÚ	UserErroré   )ÚValueMutationNewÚVariableTracker)ÚConstantVariable)ÚInstructionTranslatori � c                   óN   ‡ — e Zd Zdˆ fd„Zdefd„Zd„ Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚItertoolsVariableÚreturnc                 ó2   •— t        ‰| �  di |¤Ž || _        y ©N© )ÚsuperÚ__init__Úvalue)Úselfr   ÚkwargsÚ	__class__s      €úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/variables/iter.pyr   zItertoolsVariable.__init__,   s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
ó    c                 ó"   — d| j                   › d�S )NzItertoolsVariable(ú)©r   ©r   s    r!   Ú__repr__zItertoolsVariable.__repr__0   s   € Ø# D§J¡J <¨qÐ1Ð1r"   c                 ó   — | j                   S ©Nr%   r&   s    r!   Úas_python_constantz$ItertoolsVariable.as_python_constant3   s   € Ø�z‰zÐr"   c                 óf  •‡‡‡— | j                   t        j                  u rŽ‰sŒt        ˆfd„|D «       «      rx|D �cg c]  }|j	                  ‰«      ‘Œ }}t        j                  |Ž D �cg c]   }t        j                  t        |«      «      ‘Œ" }}t        j                  |t        «       ¬«      S | j                   t        j                  u �r‰ddlm} t        d„ ‰j                  «       D «       «      r9t        ddj!                  t#        ‰j                  «       «      dd	hz
  «      › �«       ‰j%                  d«      }	t'        |«      d
v r£|d   j)                  ‰«      r�|d   j	                  ‰«      }
d	‰v rt'        |«      dk(  r‰d	   j*                  }ndt'        |«      dk(  r|d   j*                  }nFt'        |«      dk(  r! |t,        j.                  «      j*                  }nt        d«       nt        d«       g }|	�|j1                  |	«       
D ]%  }|	€|}	n	  ‰|	|gi «      }	|j1                  |	«       Œ' t        j                  |t        «       ¬«      S | j                   t        j4                  u rÇ‰sÅt'        |«      dk(  r·|d   j)                  ‰«      r£|d   j7                  «       r�|d   j	                  ‰«      }|d   j9                  «       }g }t        j4                  ||«      D ]/  }|j1                  t        j                  t        |«      «      «       Œ1 t        j                  |t        «       ¬«      S | j                   t        j:                  u �r„t        d„ ‰j                  «       D «       «      r8t        ddj!                  t#        ‰j                  «       «      dhz
  «      › �«       d„ Št'        |«      dk(  r)|d   j)                  ‰«      r|d   j	                  ‰«      }
nt        d«       d‰v rˆˆˆfd„}nˆfd„}g }	 t        j:                  
|¬«      D ]™  \  }}|j1                  t        j                  t
        j<                  j?                  |«      rt
        j<                  jA                  |«      n|t        j                  t        |«      t        «       ¬«      gt        «       ¬«      «       Œ› 	 t        j                  |t        «       ¬«      S | j                   t        jB                  u r`t'        |«      dk  rt        jD                  |dt        «       iŽS ‰jG                  tI        jJ                  ‰tL        jB                  «      |‰«      S | j                   t        jN                  u rt        jP                  |dt        «       iŽS | j                   t        jR                  u rt        jT                  |dt        «       iŽS tV        ‰| �U  ‰|‰«      S c c}w c c}w # t2        $ r!}t        d› d|› |	› d�|¬«       Y d }~�Œäd }~ww xY w# t2        $ r}t        d|¬«       Y d }~�Œqd }~ww xY w)Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr)   )Úhas_unpack_var_sequence)Ú.0ÚargÚtxs     €r!   ú	<genexpr>z2ItertoolsVariable.call_function.<locals>.<genexpr>A   s   øè ø€ ÒD¸�C×/Ñ/°×3ÑDùs   ƒ)Úmutation_typer   )ÚBuiltinVariablec              3   ó$   K  — | ]  }|d v–— Œ
 y­w))ÚinitialÚfuncNr   )r.   Úkeys     r!   r1   z2ItertoolsVariable.call_function.<locals>.<genexpr>M   s   è ø€ ÒK°c�3Ð1Ô1ÑKùs   ‚z-Unsupported kwargs for itertools.accumulate: ú,r5   r6   )r   r   r   r   zDitertools.accumulate can only accept one of: `func` kwarg, pos 2 argz.Unsupported arguments for itertools.accumulatezOUnexpected failure in invoking function during accumulate. Failed running func ú(r$   )Úfrom_excc              3   ó&   K  — | ]	  }|d k7  –— Œ y­w)r7   Nr   )r.   Úkws     r!   r1   z2ItertoolsVariable.call_function.<locals>.<genexpr>Š   s   è ø€ Ò7 2�2˜•;Ñ7ùs   ‚z*Unsupported kwargs for itertools.groupby: r7   c                 óì   — t        | t        j                  «      r| j                  «       S t        | t        j                  «      r| j                  «       S t        dt        t        | «      «      z   «       y )Nz,Unsupported key type for itertools.groupby: )	Ú
isinstancer   ÚSymNodeVariableÚevaluate_exprr   r*   r   ÚstrÚtype©r7   s    r!   Úretrieve_const_keyz;ItertoolsVariable.call_function.<locals>.retrieve_const_key�   sY   € Ü˜c¤9×#<Ñ#<Ô=Ø×,Ñ,Ó.Ð.Ü ¤Y×%?Ñ%?Ô@Ø×1Ñ1Ó3Ð3ä!ØFÌÌTÐRUËYËÑWõr"   z+Unsupported arguments for itertools.groupbyc                 óV   •—  ‰‰j                  d«      j                  ‰| gi «      «      S )Nr7   )ÚgetÚcall_function)Úxr   rD   r0   s    €€€r!   Úkeyfuncz0ItertoolsVariable.call_function.<locals>.keyfunc¡   s-   ø€ Ù-ØŸ
™
 5Ó)×7Ñ7¸¸Q¸CÀÓDóð r"   c                 ó   •—  ‰| «      S r)   r   )rH   rD   s    €r!   rI   z0ItertoolsVariable.call_function.<locals>.keyfunc¨   s   ø€ Ù-¨aÓ0Ð0r"   rC   z1Unexpected failure when calling itertools.groupbyr2   ),r   Ú	itertoolsÚproductÚallÚunpack_var_sequencer   ÚTupleVariableÚlistÚListIteratorVariabler   Ú
accumulateÚbuiltinr3   ÚanyÚkeysr   ÚjoinÚsetrF   Úlenr-   rG   ÚoperatorÚaddÚappendÚ	ExceptionÚcombinationsÚis_python_constantr*   Úgroupbyr   Ú
is_literalÚcreateÚrepeatÚRepeatIteratorVariableÚinline_user_function_returnr   Úbuildr   ÚcountÚCountIteratorVariableÚcycleÚCycleIteratorVariabler   )r   r0   Úargsr   r/   ÚseqsÚitemÚitemsr3   ÚaccÚseqr6   ÚeÚiterableÚrrI   ÚresultÚkÚvrD   r    s    ` `               @€r!   rG   zItertoolsVariable.call_function6   sª  û€ ð �J‰Jœ)×+Ñ+Ñ+ÙÜÓD¸tÔDÔDà;?Ö@°C�C×+Ñ+¨BÕ/Ð@ˆDÐ@ä@I×@QÑ@QÐSWÐ@XöØ8<”	×'Ñ'¬¨T«
Õ3ðˆEð ô ×1Ñ1ØÔ%5Ó%7ôð ð �Z‰Zœ9×/Ñ/Ò/Ý0äÑK¸V¿[¹[»]ÔKÔKÜØCØ—x‘x¤ F§K¡K£MÓ 2°iÀÐ5HÑ HÓIÐJðLôð
 —*‘*˜YÓ'ˆCä�4‹y˜FÑ" t¨A¡w×'FÑ'FÀrÔ'JØ˜1‘g×1Ñ1°"Ó5�à˜VÑ#¬¨D«	°QªØ! &™>×7Ñ7‘DÜ˜“Y !’^Ø ™7×0Ñ0‘DÜ˜“Y !’^á*¬8¯<©<Ó8×FÑF‘Dä!Ø^õô ÐNÔOàˆEØˆØ—‘˜SÔ!Øò "�Ø�;Ø‘CðÙ" 2¨¨T {°BÓ7˜ð —‘˜SÕ!ð"ô ×1Ñ1ØÔ%5Ó%7ôð ð �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ØÔ%5Ó%7ôð ð �Z‰Zœ9×,Ñ,Ò,ÜÑ7¨¯©«Ô7Ô7ÜØ@Ø—x‘x¤ F§K¡K£MÓ 2°e°WÑ <Ó=Ð>ð@ôò
ô �4‹y˜AŠ~ $ q¡'×"AÑ"AÀ"Ô"EØ˜1‘g×1Ñ1°"Ó5‘äÐKÔLà˜‰÷ô1ð ˆFðÜ%×-Ñ-¨c°wÔ?ò ‘D�A�qØ—M‘MÜ!×/Ñ/ô $-×#=Ñ#=×#HÑ#HÈÔ#Kô !*× :Ñ :× AÑ AÀ!Ô Dà%&Ü )× >Ñ >Ü$(¨£GÔ;KÓ;Mô!"ð	ô +;Ó*<ô
õñô& ×1Ñ1ØÔ&6Ó&8ôð ð �Z‰Zœ9×+Ñ+Ñ+Ü�4‹y˜1Š}Ü ×7Ñ7ØðÜ)9Ó);ñð ð ×1Ñ1Ü×%Ñ% b¬)×*:Ñ*:Ó;¸TÀ6óð ð �Z‰Zœ9Ÿ?™?Ñ*Ü×2Ñ2ØðÜ%5Ó%7ñð ð �Z‰Zœ9Ÿ?™?Ñ*Ü×2Ñ2ØðÜ%5Ó%7ñð ô ‘7Ñ(¨¨T°6Ó:Ð:ùòe AùòøôV %ò Ü%ØmÐnrÐmsÐstÐuyÐtzÐ{~Ðzð  @Að  BØ%&÷ó ûðûôX ò ÜØGØ÷ó ûðús<   »WÁ)%WÈW"ÐB3X ×"	X×+XØXØ	X0ØX+Ø+X0©r   N)r0   r   rj   zlist[VariableTracker]r   zdict[str, VariableTracker]r   r   )	Ú__name__Ú
__module__Ú__qualname__r   rA   r'   r*   rG   Ú__classcell__©r    s   @r!   r   r   +   sO   ø„ õð2˜#ó 2òð_;à#ð_;ð &ð_;ð -ð	_;ð
 
÷_;ñ _;r"   r   c                   óD   ‡ — e Zd Zdˆ fd„Zd„ Zdee   fd„Zdefd„Z	ˆ xZ
S )ÚIteratorVariabler   c                 ó$   •— t        ‰| �  di |¤Ž y r   )r   r   )r   r   r    s     €r!   r   zIteratorVariable.__init__Ù   s   ø€ Ü‰ÑÑ"˜6Ó"r"   c                 ó   — t        d«       y )Nzabstract method, must implement)r   ©r   r0   s     r!   Únext_variablezIteratorVariable.next_variableÜ   s   € ÜÐ7Õ8r"   c                 ó‚   — g }	 	 |j                  | j                  |«      «       Œ"# t        $ r t        |«       Y |S w xY wr)   )r[   r�   r   r   )r   r0   rs   s      r!   Úforce_unpack_var_sequencez*IteratorVariable.force_unpack_var_sequenceã   sL   € ØˆØðØ—‘˜d×0Ñ0°Ó4Ô5ð øô -ò Ü)¨"Ô-ØØˆðús   … & ¦>½>c                  ó   — y)NTr   r€   s     r!   Úhas_force_unpack_var_sequencez.IteratorVariable.has_force_unpack_var_sequenceï   s   € Ør"   rv   )rw   rx   ry   r   r�   rP   r   rƒ   Úboolr…   rz   r{   s   @r!   r}   r}   Ø   s*   ø„ õ#ò9ð¨t°OÑ/Dó ð°4÷ r"   r}   c                   ó4   ‡ — e Zd Zdeddfˆ fd„Zd„ Zd„ Zˆ xZS )rc   rl   r   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r   )r   r   rl   )r   rl   r   r    s      €r!   r   zRepeatIteratorVariable.__init__ô   s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	r"   c                 ó   — | j                   S r)   )rl   r€   s     r!   r�   z$RepeatIteratorVariable.next_variableù   s   € Ø�y‰yÐr"   c                 óˆ   ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  t        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrb   ©Úextend_outputÚcreate_load_python_modulerK   Úcreate_load_attr©Úcodegens   €r!   ú<lambda>z4RepeatIteratorVariable.reconstruct.<locals>.<lambda>þ   s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨XÓ6ðó€ r"   r   F)Úadd_push_nullrl   r�   r	   ©r   r‘   s    `r!   Úreconstructz"RepeatIteratorVariable.reconstructü   s:   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r"   )rw   rx   ry   r   r   r�   r•   rz   r{   s   @r!   rc   rc   ó   s    ø„ ð˜_ð ¸4õ ò
ö
>r"   rc   c                   ó:   ‡ — e Zd Zddededdfˆ fd„Zd„ Zd„ Zˆ xZS )	rg   rl   Ústepr   Nc                 óÔ   •— t        ‰| �  di |¤Ž t        |t        «      st	        j
                  |«      }t        |t        «      st	        j
                  |«      }|| _        || _        y r   )r   r   r>   r   r   ra   rl   r—   )r   rl   r—   r   r    s       €r!   r   zCountIteratorVariable.__init__
  sU   ø€ Ü‰ÑÑ"˜6Ò"Ü˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDÜ˜$¤Ô0Ü#×*Ñ*¨4Ó0ˆDØˆŒ	Øˆ�	r"   c                 óè   — | j                  «       sJ ‚| j                  }|j                  j                  j	                  | «       | j                  j                  |d| j                  gi «      | _        |S )NÚ__add__)Ú
is_mutablerl   ÚoutputÚside_effectsÚmutationÚcall_methodr—   )r   r0   Úold_items      r!   r�   z#CountIteratorVariable.next_variable  sZ   € Ø�‰Ô Ð Ð Ø—9‘9ˆØ
�	‰	×Ñ×'Ñ'¨Ô-Ø—I‘I×)Ñ)¨"¨i¸$¿)¹)¸ÀbÓIˆŒ	Øˆr"   c                 ó¬   ‡— ‰j                  ˆfd„«        ‰| j                  «        ‰| j                  «       ‰j                  t	        dd«      «       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrf   rŒ   r�   s   €r!   r’   z3CountIteratorVariable.reconstruct.<locals>.<lambda>  s3   ø€ �G×)Ñ)à×5Ñ5´iÓ@Ø×,Ñ,¨WÓ5ðó€ r"   r   F)r“   rl   r—   r�   r	   r”   s    `r!   r•   z!CountIteratorVariable.reconstruct  sF   ø€ Ø×Ñóô	
ñ 	�—	‘	ÔÙ�—	‘	ÔØ×ÑÔ2°1°eÓ<Õ=r"   )r   r   )rw   rx   ry   Úintr   r�   r•   rz   r{   s   @r!   rg   rg   	  s'   ø„ ñ˜Sð ¨Cð À$õ òö>r"   rg   c                   óT   ‡ — e Zd Z	 	 	 d	dedeee      dedee   ddf
ˆ fd„Zd„ Z	ˆ xZ
S )
ri   NÚiteratorÚsavedÚsaved_indexrl   r   c                 ód   •— |€g }t        ‰| �  di |¤Ž || _        || _        || _        || _        y r   )r   r   r¥   r¦   r§   rl   )r   r¥   r¦   r§   rl   r   r    s         €r!   r   zCycleIteratorVariable.__init__)  s<   ø€ ð ˆ=ØˆEÜ‰ÑÑ"˜6Ò"Ø ˆŒØˆŒ
Ø&ˆÔØˆ�	r"   c                 ó  — | j                  «       sJ ‚| j                  �³	 | j                  j                  |«      }t        | j                  «      t
        kD  rt        d«       |j                  j                  j                  | «       | j                  j                  |«       || _        | j                  €| j                  |«      S | j                  S t        | j                  «      dkD  r[|j                  j                  j                  | «       | j                  dz   t        | j                  «      z  | _        | j                  S t        t         |«       y # t        $ r& t        |«       d | _        | j                  |«      cY S w xY w)Nz4input iterator to itertools.cycle has too many itemsr   r   )r›   r¥   r�   rX   r¦   ÚMAX_ITERATOR_LIMITr   rœ   r�   rž   r[   rl   r   r   r§   r   ÚStopIteration)r   r0   Únew_items      r!   r�   z#CycleIteratorVariable.next_variable9  s8  € Ø�‰Ô Ð Ð à�=‰=Ð$ð.ØŸ=™=×6Ñ6°rÓ:�Ü�t—z‘z“?Ô%7Ò7Ü!ØNôð —	‘	×&Ñ&×/Ñ/°Ô5Ø—
‘
×!Ñ! (Ô+Ø$�”	Ø—9‘9Ð$Ø×-Ñ-¨bÓ1Ð1Ø—y‘yÐ ô
 �—‘‹_˜qÒ Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø $× 0Ñ 0°1Ñ 4¼¸D¿J¹J»ÑGˆDÔØ—9‘9Ðä$¤]°BÕ7øô -ò .Ü)¨"Ô-Ø $�”Ø×)Ñ)¨"Ó-Ò-ð.ús    B%E ÃE Å,FÆF)Nr   N)rw   rx   ry   r}   r   rP   r   r£   r   r�   rz   r{   s   @r!   ri   ri   (  sW   ø„ ð 26ØØ*.ñà"ðð ˜˜_Ñ-Ñ.ðð ð	ð
 �Ñ'ðð 
õö 8r"   ri   c                   ó    ‡ — e Zd ZdZddhej
                  £Z	 ddeeee   ef      de	ddfˆ fd„Z
d„ Zde	fd	„Zded
   fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚZipVariablez$
    Represents zip(*iterables)
    ÚindexÚstrictÚ	iterablesr   Nc                 ór   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        d| _        || _        y ©Nr   r   )r   r   r>   rP   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!   Úpython_typezZipVariable.python_typem  ó   € Üˆ
r"   c                 ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3   ód   •K  — | ]'  }t        |t        «      xs |j                  ‰«      –— Œ) y ­wr)   )r>   rP   r-   )r.   Úitr0   s     €r!   r1   z6ZipVariable.has_unpack_var_sequence.<locals>.<genexpr>q  s3   øè ø€ ò 
àô �rœ4Ó ÒB B×$>Ñ$>¸rÓ$BÓBñ
ùs   ƒ-0)rM   r±   r€   s    `r!   r-   z#ZipVariable.has_unpack_var_sequencep  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°   )r-   r±   r>   rP   r[   r¯   rN   r°   rµ   r   rO   )r   r0   r±   rº   r   ÚzippedÚvars          r!   rN   zZipVariable.unpack_var_sequencev  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 ‚| j                  Šg }ˆˆf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)Nc                 óŒ   •— t        | t        «      r#‰t        | «      k\  rt        t        ‰«       | ‰   S | j                  ‰«      S r)   )r>   rP   rX   r   r«   r�   )rº   Ú	old_indexr0   s    €€r!   Úget_itemz+ZipVariable.next_variable.<locals>.get_item‡  s>   ø€ Ü˜"œdÔ#Ø¤ B£Ò'Ü,¬]¸BÔ?Ø˜)‘}Ð$à×'Ñ'¨Ó+Ð+r"   r   z3zip() has one argument of len differing from othersr   )r›   r¯   Ú	enumerater±   r[   r   r°   r   r   Ú
ValueErrorrœ   r�   rž   r   rO   )r   r0   rj   rÁ   Úidxrº   rÀ   s    `    @r!   r�   zZipVariable.next_variable‚  s  ù€ Ø�‰Ô Ð Ð Ø—J‘Jˆ	Øˆõ	,ð	Ü$ T§^¡^Ó4ò *‘��RØ—‘™H R›LÕ)ñ*ð0 	�	‰	×Ñ×'Ñ'¨Ô-Ø�
Š
�a‰�
Ü×&Ñ& tÓ,Ð,øô1 )ò 	Ø�{Š{Ø˜!’8à"Ÿn™nò 
˜ð%Ù$ R�LøÜ8ò %Ü5°bÔ9Ù$ð%úñ ð
ð Ü)¨"Ô-ÜÜØIóð ðð ð)	ús/   ª4B. Â.)DÃC!Ã DÃ!C8Ã5DÃ7C8Ã8%Dc           	      óâ   — | j                   D ]`  }t        |t        «      rF|| j                  d  }|j	                  |«       |j                  t        dt        |«      ¬«      «       ŒY ||«       Œb y ©NÚBUILD_TUPLE©r/   )r±   r>   rP   r¯   ÚforeachÚappend_outputr
   rX   )r   r‘   rº   Úremaining_itemss       r!   Úreconstruct_itemszZipVariable.reconstruct_items¬  sa   € Ø—.‘.ò 	ˆBÜ˜"œdÔ#Ø"$ T§Z¡Z \Ð"2�Ø—‘ Ô0Ø×%Ñ%Ü& }¼#¸oÓ:NÔOõñ ˜•ñ	r"   c           	      ó¸  ‡— ‰j                  ˆfd„d¬«       | j                  ‰«       ‰j                  t        dt	        | j
                  «      ¬«      «       t        j                  dk\  rT‰j                  ‰j                  d«      ‰j                  | j                  «      t        dd	¬«      t        d
d	¬«      g«       y ‰j                  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Ç   rÈ   )é   é
   r°   Ú	BUILD_MAPr   ÚCALL_FUNCTION_EXr   )r“   rÌ   rÊ   r
   rX   r±   ÚsysÚversion_infor�   Úcreate_load_constr°   r”   s    `r!   r•   zZipVariable.reconstruct·  s¾   ø€ Ø×ÑÛ?ÐRVð 	ô 	
ð 	×Ñ˜wÔ'Ø×ÑÜ˜}´#°d·n±nÓ2EÔFô	
ô ×Ñ˜wÒ&Ø×!Ñ!à×-Ñ-¨hÓ7Ø×-Ñ-¨d¯k©kÓ:Ü& {¸Ô:Ü&Ð'9¸qÔAð	õð ×!Ñ!Ô"4Ð5GÈQÔ"OÕPr"   )F)rw   rx   ry   Ú__doc__r}   Ú_nonvar_fieldsrP   r   r   r†   r   r¶   r-   rN   r�   rÌ   r•   rz   r{   s   @r!   r®   r®   U  s—   ø„ ñð
 	Øðð 
×	(Ñ	(ð€Nð ñà˜˜d ?Ñ3°_ÐDÑEÑFðð ðð
 
õòð
¨Tó 
ð
F¨Ð.?Ñ)@ó 
Fò(-òT	öQr"   r®   c                   óh   ‡ — e Zd ZdZdedeeee   ef      ddfˆ fd„Zd„ Zde	fd„Z
ˆ fd	„Zd
„ Zˆ xZS )ÚMapVariablez(
    Represents map(fn, *iterables)
    Úfnr±   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"   c                  ó   — y)NFr   r€   s     r!   r-   z#MapVariable.has_unpack_var_sequenceÝ  s   € Ør"   c                 óp   •— t         ‰| �  |«      }| j                  j                  ||j                  i «      S r)   )r   r�   rà   rG   rm   )r   r0   rj   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	        dt        | j                  «      dz   ¬«      t	        dd¬«      g«       y )	Nc                  ó(   •— ‰ j                  dd«      S )NrÏ   rã   rÐ   r�   s   €r!   r’   z)MapVariable.reconstruct.<locals>.<lambda>æ  rÒ   r"   TrÓ   rÇ   r   rÈ   rØ   r   )r“   rà   rÌ   r�   r
   rX   r±   r”   s    `r!   r•   zMapVariable.reconstructä  sn   ø€ Ø×ÑÛ?ÐRVð 	ô 	
ñ 	�—‘ÔØ×Ñ˜wÔ'Ø×Ñä" =´c¸$¿.¹.Ó6IÈAÑ6MÔNÜ"Ð#5¸1Ô=ðõ	
r"   )rw   rx   ry   rÜ   r   rP   r   r   r¶   r†   r-   r�   r•   rz   r{   s   @r!   rß   rß   Ì  sX   ø„ ñðàðð ˜˜d ?Ñ3°_ÐDÑEÑFðð
 
õòð¨Tó ô9ö
r"   rß   c                   ó”   ‡ — e Zd ZdZdhej
                  £Zdedeee   ef   ddfˆ fd„Z	d„ Z
defd	„Zded
   fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚFilterVariablez)
    Represents filter(fn, iterable)
    r¯   rà   rq   r   Nc                 óN   •— t        ‰| �  di |¤Ž || _        || _        d| _        y r³   )r   r   rà   rq   r¯   )r   rà   rq   r   r    s       €r!   r   zFilterVariable.__init__ü  s*   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒØ ˆŒØˆ�
r"   c                 ó   — t         S r)   )Úfilterr&   s    r!   r¶   zFilterVariable.python_type  s   € Üˆr"   c                 óp   — t        | j                  t        «      xs | j                  j                  |«      S r)   )r>   rq   rP   r-   r€   s     r!   r-   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)   )
r-   r>   rq   rP   r¯   rN   rà   rG   r   rO   )r   r0   rº   Úfiltereds       r!   rN   z"FilterVariable.unpack_var_sequence  s   € Ø×+Ñ+¨BÔ/Ð/Ð/ØˆÜ�d—m‘m¤TÔ*Ø—‘˜tŸz™z˜|Ð,‰Bà—‘×2Ñ2°2Ó6ˆBØ—7‘7×(Ñ(¨¨R°Ó4ˆÜ×'Ñ'¨¨
Ó3Ð4Ð4r"   c                 ó  ‡ ‡— ˆ ˆfd„}	  |«       }‰ xj                   dz  c_         ‰ j                  j                  ‰|gi «      }t        j                  t
        j                  «      j                  ‰|gi «      }|j                  «       r|S Œ‚)Nc                  óô   •— ‰j                   } t        ‰j                  t        «      r7| t	        ‰j                  «      k\  rt        t        ‰«       ‰j                  |    S ‰j                  j                  ‰«      S r)   )r¯   r>   rq   rP   rX   r   r«   r�   )rÀ   r   r0   s    €€r!   Ú_nextz+FilterVariable.next_variable.<locals>._next  sY   ø€ ØŸ
™
ˆIÜ˜$Ÿ-™-¬Ô.Ø¤ D§M¡MÓ 2Ò2Ü,¬]¸BÔ?Ø—}‘} YÑ/Ð/à—}‘}×2Ñ2°2Ó6Ð6r"   r   )r¯   rà   rG   r   ÚUserFunctionVariabler   Ú	predicater*   )r   r0   rò   rl   ÚresÚpred_ress   ``    r!   r�   zFilterVariable.next_variable  s   ù€ õ	7ð Ù“7ˆDØ�JŠJ˜!‰O�JØ—'‘'×'Ñ'¨¨T¨F°BÓ7ˆCÜ ×5Ñ5Ü×#Ñ#óç‰m˜B   rÓ*ð ð ×*Ñ*Ô,Ø�ð r"   c                 óü   — t        | j                  t        «      rP| j                  | j                  d  }|j	                  |«       |j                  t        dt        |«      ¬«      «       y  || j                  «       y rÆ   )r>   rq   rP   r¯   rÉ   rÊ   r
   rX   )r   r‘   rË   s      r!   rÌ   z FilterVariable.reconstruct_items.  s[   € Ü�d—m‘m¤TÔ*Ø"Ÿm™m¨D¯J©J¨LÐ9ˆOØ�O‰O˜OÔ,Ø×!Ñ!Ü" =´c¸/Ó6JÔ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>9  s   ø€  g×&>Ñ&>¸zÈ8Ó&T€ r"   r   F)r“   rà   rÌ   r�   r	   r”   s    `r!   r•   zFilterVariable.reconstruct8  sB   ø€ Ø×ÑÓTÔUÙ�—‘ÔØ×Ñ˜wÔ'Ø×ÑÔ2°1°eÓ<Õ=r"   )rw   rx   ry   rÜ   r}   rÝ   r   r   rP   r   r¶   r†   r-   rN   r�   rÌ   r•   rz   r{   s   @r!   ré   ré   ò  s„   ø„ ñð
 	ðà	×	(Ñ	(ð€Nð
	àð	ð ˜˜_Ñ-¨Ð>Ñ?ð	ð
 
õ	òð
¨Tó 
ð
5¨Ð.?Ñ)@ó 5òò*#ö>r"   ré   )$rÜ   rK   rY   rÙ   Útypingr   r   r   Ú r   r   Úbytecode_transformationr	   r
   Úexcr   r   r   r   r   Úbaser   r   Úconstantr   Útorch._dynamo.symbolic_convertr   rª   r   r}   rc   rg   ri   r®   rß   ré   r   r"   r!   ú<module>r     s´   ðñó Û Û 
ß 1Ñ 1ç #ß N÷õ ÷ 4Ý &ñ ÝDð  Ð ôj;˜ô j;ôZ�ô ô6>Ð-ô >ô,>Ð,ô >ô>*8Ð,ô *8ôZtQÐ"ô tQôn#
�+ô #
ôLJ>Ð%õ J>r"   