§
    øÛgº,  ã                   ó0  — d Z ddlZddlZddlZddlmZmZ d„ Zd„ Z G d„ de	¦  «        Z
d(d	„Zd)d
„Zd„ Zi ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        d“ej        dej         dej!        dej"        d ej#        d!i¥Z$ej%        d"ej&        d#ej'        d$ej(        d%iZ) G d&„ d'ej*        ¦  «        Z+dS )*z‚
Find intermediate evalutation results in assert statements through builtin AST.
This should replace _assertionold.py eventually.
é    N)Ú_format_explanationÚBuiltinAssertionErrorc                 ó6   — t          | t          j        ¦  «        S ©N)Ú
isinstanceÚastÚexpr©Únodes    úL/granary/edev/quantum/lib/python3.11/site-packages/py/_code/_assertionnew.pyÚ_is_ast_exprr      ó   € Ý�d�CœHÑ%Ô%Ð%ó    c                 ó6   — t          | t          j        ¦  «        S r   )r   r   Ústmtr
   s    r   Ú_is_ast_stmtr      r   r   c                   ó   — e Zd ZdZdd„ZdS )ÚFailurez#Error found while interpreting AST.Ú c                 óD   — t          j        ¦   «         | _        || _        d S r   )ÚsysÚexc_infoÚcauseÚexplanation)Úselfr   s     r   Ú__init__zFailure.__init__   s   € Ý”\‘^”^ˆŒ
Ø&ˆÔÐÐr   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s.   € € € € € Ø-Ð-ð'ð 'ð 'ð 'ð 'ð 'r   r   Fc                 óò   — t          j        | ¦  «        }t          |¦  «        }	 |                     |¦  «         n8# t          $ r+ t          j        ¦   «         d         }t          |¦  «        cY S w xY w|rdS d S )Né   zª(assertion failed, but when it was re-run for printing intermediate values, it did not fail.  Suggestions: compute assert expression before the assert or use --no-assert))r   ÚparseÚDebugInterpreterÚvisitr   r   r   Ú
getfailure)ÚsourceÚframeÚshould_failÚmodÚvisitorÚfailures         r   Ú	interpretr.      sš   € Ý
Œ)�FÑ
Ô
€CÝ˜uÑ%Ô%€Gð#Ø�Š�cÑÔÐÐøÝð #ð #ð #Ý”,‘.”. Ô#ˆÝ˜'Ñ"Ô"Ð"Ð"Ð"ð#øøøð ð SðRð RðSð Ss   ¥; »2A0Á/A0c                 óˆ   — |€1t           j                             t          j        d¦  «        ¦  «        }t          | |¦  «        S )Nr#   )ÚpyÚcodeÚFramer   Ú	_getframer.   )Úoffending_liner)   s     r   Úrunr5   (   s4   € Ø€}Ý”—’�cœm¨AÑ.Ô.Ñ/Ô/ˆÝ�^ UÑ+Ô+Ð+r   c                 óx  — t          | j        ¦  «        }| j        d         }t          |¦  «        rS|                     ¦   «         }|s|                     d¦  «         |dxx         d|›�z  cc<   d                     |¦  «        }| j        d         j        ›d|›�}|                     d¦  «        r
|dd …         }|S )	Nr#   r   r   z << ú
z: zAssertionError: assert é   )	r   r   r   ÚstrÚ
splitlinesÚappendÚjoinr   Ú
startswith)r-   r   ÚvalueÚlinesÚtexts        r   r'   r'   -   sÈ   € Ý% gÔ&9Ñ:Ô:€KØŒM˜!Ô€EÝ
ˆ5�z„zð 'Ø×&Ò&Ñ(Ô(ˆØð 	Ø�LŠL˜ÑÔÐØˆaˆˆŒˆ  Ð'Ñ'ˆˆ‰Ø—i’i Ñ&Ô&ˆØ”} QÔ'Ô0Ð0Ð0°+°+Ð>€DØ‡‚Ð0Ñ1Ô1ð Ø�B�C�CŒyˆØ€Kr   ú|ú^ú&z<<z>>ú+ú-Ú*ú/z//ú%z==z!=ú<z<=ú>z>=ú**Úiszis notÚinznot inznot %sz~%sz-%sz+%sc                   ón   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r%   z;Interpret AST nodes to gleam useful debugging information. c                 ó   — || _         d S r   )r)   )r   r)   s     r   r   zDebugInterpreter.__init__`   s   € ØˆŒ
ˆ
ˆ
r   c                 ó*  — t          |¦  «        rt          j        |¦  «        }|                      |¦  «        }	 | j                             |¦  «        }n# t          $ r t          ¦   «         ‚w xY w| j                             |¦  «        }||fS t          |¦  «        ret          j
        |g¦  «        }|                      |d¦  «        }	 | j                             |¦  «         n# t          $ r t          ¦   «         ‚w xY wdS t          d|›�¦  «        ‚)NÚexec)NNzcan't handle )r   r   Ú
ExpressionÚ_compiler)   ÚevalÚ	Exceptionr   Úreprr   ÚModuleÚexec_ÚAssertionError)r   r   r+   ÚcoÚresultr   s         r   Úgeneric_visitzDebugInterpreter.generic_visitc   s  € å˜ÑÔð 	=Ý”. Ñ&Ô&ˆCØ—’˜sÑ#Ô#ˆBð ØœŸš¨Ñ,Ô,��øÝð  ð  ð  Ý‘i”i�ð øøøàœ*Ÿ/š/¨&Ñ1Ô1ˆKØ Ð&Ð&Ý˜$ÑÔð 		=Ý”*˜d˜VÑ$Ô$ˆCØ—’˜s FÑ+Ô+ˆBð Ø”
× Ò  Ñ$Ô$Ð$Ð$øÝð  ð  ð  Ý‘i”i�ð øøøà�:å �.°T°TÐ!;Ñ<Ô<Ð<s   ºA ÁA.Ã
C% Ã%C>rT   c                 ó$   — t          |d|¦  «        S )Nz<assertion interpretation>)Úcompile)r   r(   Úmodes      r   rS   zDebugInterpreter._compiley   s   € Ý�vÐ;¸TÑBÔBÐBr   c                 ó6   — |                       |j        ¦  «        S r   )r&   r>   )r   r	   s     r   Ú
visit_ExprzDebugInterpreter.visit_Expr|   s   € Ø�zŠz˜$œ*Ñ%Ô%Ð%r   c                 óD   — |j         D ]}|                      |¦  «         Œd S r   )Úbodyr&   )r   r+   r   s      r   Úvisit_ModulezDebugInterpreter.visit_Module   s2   € Ø”Hð 	ð 	ˆDØ�JŠJ�tÑÔÐÐð	ð 	r   c                 óê   — |                       |¦  «        \  }}|j        ›d�}|                      |¦  «        }	 | j                             |¦  «        }n# t
          $ r d}Y nw xY w|s	|j        |fS ||fS )Nz in locals() is not globals()F)r\   ÚidrS   r)   rT   rU   )r   Únamer   r[   r(   rZ   Úlocals          r   Ú
visit_NamezDebugInterpreter.visit_Nameƒ   s˜   € Ø"×0Ò0°Ñ6Ô6Ñˆ�Và6:´g°g°gÐ?ˆØ�]Š]˜6Ñ"Ô"ˆð	Ø”J—O’O BÑ'Ô'ˆEˆEøÝð 	ð 	ð 	àˆEˆEˆEð	øøøð ð 	#Ø”7˜F�?Ð"Ø˜FÐ"Ð"s   ¹A ÁA#Á"A#c                 ó  — |j         }|                      |¦  «        \  }}t          |j        |j        ¦  «        D ]¬\  }}|                      |¦  «        \  }}t
          |j                 }	|›d|	›d|›�}
d|	›d�}|                      |¦  «        }	 | j         	                    |||¬¦  «        }n# t          $ r t          |
¦  «        ‚w xY w	 |s nn# t          $ r ‚  Y  nxY w||}}Œ­t          j        j        }|r ||	||¦  «        }|r|}
|
|fS )Nú ú__exprinfo_left ú __exprinfo_right©Ú__exprinfo_leftÚ__exprinfo_right)Úleftr&   ÚzipÚopsÚcomparatorsÚoperator_mapÚ	__class__rS   r)   rT   rU   r   ÚKeyboardInterruptr0   r1   Ú_reprcompare)r   Úcomprq   Úleft_explanationÚleft_resultÚopÚnext_opÚnext_explanationÚnext_resultÚ	op_symbolr   r(   rZ   r[   ÚrcompÚress                   r   Úvisit_ComparezDebugInterpreter.visit_Compare‘   s{  € ØŒyˆØ(,¯
ª
°4Ñ(8Ô(8Ñ%Ð˜+Ý˜tœx¨Ô)9Ñ:Ô:ð 	Jð 	J‰KˆB�Ø,0¯JªJ°wÑ,?Ô,?Ñ)Ð˜kÝ$ R¤\Ô2ˆIØ(8Ð(8Ð(8¸)¸)¸)Ø(8Ð(8ð:ˆKˆKà>G¸i¸iÐIˆFØ—’˜vÑ&Ô&ˆBð+ØœŸš¨¸[Ø:Eð )ñ Gô G��øåð +ð +ð +Ý˜kÑ*Ô*Ð*ð+øøøðØð Ø�Eðøå$ð ð ð ØðØ��øøøØ,<¸k˜kÐÐå”Ô$ˆØð 	"Ø�%˜	 ;°Ñ<Ô<ˆCØð "Ø!�Ø˜FÐ"Ð"s   ÂB-Â-CÃCÃCc                 ó  — t          |j        t          j        ¦  «        }g }|j        D ]7}|                      |¦  «        \  }}|                     |¦  «         ||k    r nŒ8|rdpd}d|                     |¦  «        z   dz   }||fS )Nz or z and ú(ú))r   r|   r   ÚOrÚvaluesr&   r;   r<   )r   ÚboolopÚis_orÚexplanationsÚoperandr   r[   rg   s           r   Úvisit_BoolOpzDebugInterpreter.visit_BoolOp°   s�   € Ý˜6œ9¥c¤fÑ-Ô-ˆØˆØ”}ð 	ð 	ˆGØ"&§*¢*¨WÑ"5Ô"5ÑˆK˜Ø×Ò Ñ,Ô,Ð,Ø˜ŠˆØ�ð àÐ˜Ð* 7ˆØ˜DŸIšI lÑ3Ô3Ñ3°cÑ9ˆØ˜FÐ"Ð"r   c                 ó$  — t           |j        j                 }|                      |j        ¦  «        \  }}||fz  }|                      |dz  ¦  «        }	 | j                             ||¬¦  «        }n# t          $ r t          |¦  «        ‚w xY w||fS )N©Ú__exprinfo_expr)
Ú	unary_mapr|   rv   r&   rŒ   rS   r)   rT   rU   r   )r   ÚunaryÚpatternÚoperand_explanationÚoperand_resultr   rZ   r[   s           r   Úvisit_UnaryOpzDebugInterpreter.visit_UnaryOp¼   s¡   € Ý˜EœHÔ.Ô/ˆØ.2¯jªj¸¼Ñ.GÔ.GÑ+Ð˜^ØÐ!4Ð 6Ñ6ˆØ�]Š]˜7Ð%9Ñ9Ñ:Ô:ˆð	'Ø”Z—_’_ R¸�_ÑHÔHˆFˆFøÝð 	'ð 	'ð 	'Ý˜+Ñ&Ô&Ð&ð	'øøøà˜FÐ"Ð"s   ÁA1 Á1Bc                 ór  — |                       |j        ¦  «        \  }}|                       |j        ¦  «        \  }}t          |j        j                 }d|›d|›d|›d�}d|›d�}|                      |¦  «        }		 | j                             |	||¬¦  «        }
n# t          $ r t          |¦  «        ‚w xY w||
fS )Nr…   rk   r†   rl   rm   rn   )r&   rq   Úrightru   r|   rv   rS   r)   rT   rU   r   )r   Úbinoprz   r{   Úright_explanationÚright_resultÚsymbolr   r(   rZ   r[   s              r   Úvisit_BinOpzDebugInterpreter.visit_BinOpÇ   sá   € Ø(,¯
ª
°5´:Ñ(>Ô(>Ñ%Ð˜+Ø*.¯*ª*°U´[Ñ*AÔ*AÑ'Ð˜<Ý˜eœhÔ0Ô1ˆˆØ&6Ð&6Ð&6¸¸¸Ø&7Ð&7Ð&7ð9ˆˆà:@¸&¸&ÐBˆØ�]Š]˜6Ñ"Ô"ˆð	'Ø”Z—_’_ R¸Ø6Bð %ñ Dô DˆFˆFøåð 	'ð 	'ð 	'Ý˜+Ñ&Ô&Ð&ð	'øøøà˜FÐ"Ð"s   Á:B ÂB2c                 óÀ  — |                       |j        ¦  «        \  }}g }d|i}g }|j        D ][}|                       |¦  «        \  }}	dt          |¦  «        ›�}
|	||
<   |                     |
¦  «         |                     |¦  «         Œ\|j        D ]r}|                       |j        ¦  «        \  }}	dt          |¦  «        ›�}
|	||
<   d|j        z  }|                     ||
fz  ¦  «         |                     ||fz  ¦  «         Œs|j        rT|                       |j        ¦  «        \  }}	d}
|	||
<   |                     d|
›�¦  «         |                     d|›�¦  «         |j	        rT|                       |j	        ¦  «        \  }}	d}
|	||
<   |                     d|
›�¦  «         |                     d|›�¦  «         d 
                    |¦  «        }|›d	|›d
�}d 
                    |¦  «        }d|›d
�}|                      |¦  «        }	  | j        j        |fi |¤Ž}n# t          $ r t          |¦  «        ‚w xY wd}| j                             |¦  «        }||||fz  }||fS )NÚ__exprinfo_funcÚ__exprinfo_z%s=%%sÚ__exprinfo_starrF   Ú__exprinfo_kwdsrK   z, r…   r†   z__exprinfo_func(ú%s
{%s = %s
})r&   ÚfuncÚargsÚlenr;   Úkeywordsr>   ÚargÚstarargsÚkwargsr<   rS   r)   rT   rU   r   rV   )r   ÚcallÚfunc_explanationr¤   Úarg_explanationsÚnsÚ	argumentsr¨   Úarg_explanationÚ
arg_resultÚarg_nameÚkeywordÚkeyword_sourceÚargs_explainedr   r¥   r(   rZ   r[   r“   Úreps                        r   Ú
visit_CallzDebugInterpreter.visit_CallÖ   sÎ  € Ø!%§¢¨D¬IÑ!6Ô!6ÑÐ˜$ØÐØ $Ð'ˆØˆ	Ø”9ð 	5ð 	5ˆCØ*.¯*ª*°S©/¬/Ñ'ˆO˜Z˜ZÝ*-¨b©'¬'¨'Ð3ˆHØ%ˆBˆx‰LØ×Ò˜XÑ&Ô&Ð&Ø×#Ò# OÑ4Ô4Ð4Ð4Ø”}ð 	Ið 	IˆGØ*.¯*ª*°W´]Ñ*CÔ*CÑ'ˆO˜Z˜ZÝ*-¨b©'¬'¨'Ð3ˆHØ%ˆBˆx‰LØ%¨¬Ñ5ˆNØ×Ò˜^¨x¨kÑ9Ñ:Ô:Ð:Ø×#Ò# N°oÐ5GÑ$GÑHÔHÐHÐHØŒ=ð 	@Ø*.¯*ª*°T´]Ñ*CÔ*CÑ'ˆO˜ZØ(ˆHØ%ˆBˆx‰LØ×ÒÐ h hÐ0Ñ1Ô1Ð1Ø×#Ò#Ð#¨_¨_Ð$>Ñ?Ô?Ð?ØŒ;ð 	AØ*.¯*ª*°T´[Ñ*AÔ*AÑ'ˆO˜ZØ(ˆHØ%ˆBˆx‰LØ×ÒÐ x xÐ1Ñ2Ô2Ð2Ø×#Ò#Ð#¨o¨oÐ$?Ñ@Ô@Ð@ØŸšÐ#3Ñ4Ô4ˆØ"2Ð"2Ð"2°N°N°NÐCˆØ�yŠy˜Ñ#Ô#ˆˆØ*.¨$¨$Ð0ˆØ�]Š]˜6Ñ"Ô"ˆð	'Ø$�T”Z”_ RÐ.Ð.¨2Ð.Ð.ˆFˆFøÝð 	'ð 	'ð 	'Ý˜+Ñ&Ô&Ð&ð	'øøøà#ˆØŒj�oŠo˜fÑ%Ô%ˆØ  c¨;Ð 7Ñ7ˆØ˜FÐ"Ð"s   ÈH ÈH5c                 óª   — d}||j         |j         fz  }|                      |¦  «        }	 | j                             |¦  «        S # t          $ r Y dS w xY w)Nz*%r not in globals() and %r not in locals()F)rf   rS   r)   rT   rU   )r   rg   r“   r(   rZ   s        r   Ú_is_builtin_namez!DebugInterpreter._is_builtin_name  sf   € Ø>ˆØ˜DœG T¤WÐ-Ñ-ˆØ�]Š]˜6Ñ"Ô"ˆð	Ø”:—?’? 2Ñ&Ô&Ð&øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ªA Á
AÁAc                 óî  — t          |j        t          j        ¦  «        s|                      |¦  «        S |                      |j        ¦  «        \  }}|›d|j        ›�}d|j        ›�}|                      |¦  «        }	 | j	         
                    ||¬¦  «        }n# t          $ r t          |¦  «        ‚w xY w| j	                             |¦  «        ›d| j	                             |¦  «        ›d|›d|j        ›d�}d}||j        fz  }|                      |¦  «        }	 | j	         
                    ||¬¦  «        }n# t          $ r d}Y nw xY w|r$| j	                             |¦  «        }	d	}
|
|	|	|fz  }||fS )
Nú.z__exprinfo_expr.r�   z
{z = z
}z.%r in getattr(__exprinfo_expr, '__dict__', {})Tr£   )r   Úctxr   ÚLoadr\   r&   r>   ÚattrrS   r)   rT   rU   r   rV   )r   r¾   Úsource_explanationÚsource_resultr   r(   rZ   r[   Úfrom_instancer¶   r“   s              r   Úvisit_Attributez DebugInterpreter.visit_Attribute  s«  € Ý˜$œ(¥C¤HÑ-Ô-ð 	,Ø×%Ò% dÑ+Ô+Ð+Ø,0¯JªJ°t´zÑ,BÔ,BÑ)Ð˜MØ!3Ð!3Ð!3°T´Y°YÐ?ˆˆØ)-¬¨Ð4ˆØ�]Š]˜6Ñ"Ô"ˆð	'Ø”Z—_’_ R¸�_ÑGÔGˆFˆFøÝð 	'ð 	'ð 	'Ý˜+Ñ&Ô&Ð&ð	'øøøà.2¬j¯oªo¸fÑ.EÔ.EÐ.EÐ.EØ.2¬j¯oªo¸fÑ.EÔ.EÐ.EÐ.EØ.@Ð.@Ð.@À$Ä)À)À)ðMˆð BˆØ˜4œ9˜,Ñ&ˆØ�]Š]˜6Ñ"Ô"ˆð	!Ø œJŸOšO¨BÀ˜OÑNÔNˆMˆMøÝð 	!ð 	!ð 	!Ø ˆMˆMˆMð	!øøøàð 	<Ø”*—/’/ &Ñ)Ô)ˆCØ'ˆGØ! S¨#¨{Ð$;Ñ;ˆKØ˜FÐ"Ð"s   Á>B ÂB5ÄD; Ä;E
Å	E
c                 ó  — |                       |j        ¦  «        \  }}|                     d¦  «        r|                     d¦  «        r
|dd…         }d|›�}|s%	 t          ‚# t
          $ r t          |¦  «        ‚w xY w||fS )NzFalse
{False =r7   é   éþÿÿÿzassert )r&   Útestr=   Úendswithr   rU   r   )r   ÚassrtÚtest_explanationÚtest_resultr   s        r   Úvisit_AssertzDebugInterpreter.visit_Assert'  sª   € Ø(,¯
ª
°5´:Ñ(>Ô(>Ñ%Ð˜+Ø×&Ò&Ð'8Ñ9Ô9ð 	7Ø ×)Ò)¨$Ñ/Ô/ð	7à/°°2°Ô6ÐøØ%5Ð%5Ð7ˆØð 	+ð+Ý+Ð+øÝð +ð +ð +Ý˜kÑ*Ô*Ð*ð+øøøà˜KÐ'Ð's   ÁA! Á!A;c                 óâ  — |                       |j        ¦  «        \  }}d|›�}t          j        dt          j        ¦   «         |j        j        |j        j        ¬¦  «        }t          j        |j        ||j        |j        ¬¦  «        }t          j	        |g¦  «        }|  
                    |d¦  «        }	 | j                             ||¬¦  «         n# t          $ r t          |¦  «        ‚w xY w||fS )Nz... = r�   )ÚlinenoÚ
col_offsetrQ   r�   )r&   r>   r   ÚNamer½   rÍ   rÎ   ÚAssignÚtargetsrW   rS   r)   rX   rU   r   )	r   ÚassignÚvalue_explanationÚvalue_resultr   rg   Ú
new_assignr+   rZ   s	            r   Úvisit_AssignzDebugInterpreter.visit_Assign4  sü   € Ø*.¯*ª*°V´\Ñ*BÔ*BÑ'Ð˜<˜<Ø$5Ð$5Ð7ˆÝŒxÐ)­3¬8©:¬:Ø%œ|Ô2Ø#)¤<Ô#:ð<ñ <ô <ˆõ ”Z ¤°¸V¼]Ø+1Ô+<ð>ñ >ô >ˆ
åŒj˜*˜Ñ&Ô&ˆØ�]Š]˜3 Ñ'Ô'ˆð	'ØŒJ×Ò˜R°ÐÑ>Ô>Ð>Ð>øÝð 	'ð 	'ð 	'Ý˜+Ñ&Ô&Ð&ð	'øøøà˜LÐ(Ð(s   Â3C ÃC*N)rT   )r   r   r   r    r   r\   rS   ra   rd   ri   rƒ   r�   r–   r�   r·   r¹   rÂ   rË   rÖ   r!   r   r   r%   r%   ]   s  € € € € € ØEÐEðð ð ð=ð =ð =ð,Cð Cð Cð Cð&ð &ð &ðð ð ð#ð #ð #ð#ð #ð #ð>
#ð 
#ð 
#ð	#ð 	#ð 	#ð#ð #ð #ð*#ð *#ð *#ðXð ð ð#ð #ð #ð8(ð (ð (ð)ð )ð )ð )ð )r   r%   )Fr   ),r    r   r   r0   Úpy._code.assertionr   r   r   r   rU   r   r.   r5   r'   ÚBitOrÚBitXorÚBitAndÚLShiftÚRShiftÚAddÚSubÚMultÚDivÚFloorDivÚModÚEqÚNotEqÚLtÚLtEÚGtÚGtEÚPowÚIsÚIsNotÚInÚNotInru   ÚNotÚInvertÚUSubÚUAddr‘   ÚNodeVisitorr%   r!   r   r   ú<module>ró      sL  ððð ð
 €
€
€
Ø 
€
€
€
à 	€	€	€	Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ið&ð &ð &ð&ð &ð &ð'ð 'ð 'ð 'ð 'ˆiñ 'ô 'ð 'ðSð Sð Sð Sð,ð ,ð ,ð ,ð
ð ð ðØ„I�ðà„J�ðð „J�ðð „J�ð	ð
 „J�ðð „Gˆcðð „Gˆcðð „Hˆsðð „Gˆcðð „L�4ðð „Gˆcðð „FˆTðð „I�ðð „FˆSðð „Gˆdðð  „FˆSð!ð" „Gˆdð#ð$ „GˆdØ„FˆTØ„I�Ø„FˆTØ„I�ð-ð €ð4 „GˆhØ„J�Ø„HˆuØ„Hˆuð	€	ðe)ð e)ð e)ð e)ð e)�s”ñ e)ô e)ð e)ð e)ð e)r   