o
    û›hŒ8  ã                   @   sè  d Z ddlmZ zddlZW n   dZY ddlZddlmZ ddlmZ ddl	m
Z
mZmZmZmZmZ ddlmZ G dd	„ d	eƒZG d
d„ deƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Z d$d%„ Z!d&d'„ Z"d(d)„ Z#d*d+„ Z$d,d-„ Z%d.d/„ Z&d0d1„ Z'd2d3„ Z(d4d5„ Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,d<d=„ Z-G d>d?„ d?eƒZ.d@dA„ Z/dBdC„ Z0dDdE„ Z1dFdG„ Z2dHdI„ Z3dJdK„ Z4dLdM„ Z5dNdO„ Z6dPdQ„ Z7dRdS„ Z8dTdU„ Z9dS )VzTests for the Formatters.é    )ÚpiN)Úget_ipython)ÚConfig)ÚPlainTextFormatterÚHTMLFormatterÚPDFFormatterÚ_mod_name_keyÚDisplayFormatterÚJSONFormatter)Úcapture_outputc                   @   ó   e Zd Zdd„ ZdS )ÚAc                 C   ó   dS )NúA()© ©Úselfr   r   úXc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/core/tests/test_formatters.pyÚ__repr__   ó   z
A.__repr__N©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      ó    r   c                   @   r   )ÚBc                 C   r   )NúB()r   r   r   r   r   r      r   z
B.__repr__Nr   r   r   r   r   r      r   r   c                   @   ó   e Zd ZdS )ÚCN©r   r   r   r   r   r   r   r      s    r   c                   @   r   )ÚBadReprc                 C   ó   t dƒ‚)Nzbad repr©Ú
ValueErrorr   r   r   r   r      ó   zBadRepr.__repr__Nr   r   r   r   r   r       r   r    c                   @   s   e Zd ZdZdS )Ú	BadPrettyN©r   r   r   Ú_repr_pretty_r   r   r   r   r%   "   s    r%   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )Ú
GoodPrettyc                 C   ó   |  d¡ d S ©NÚfoo©Útext)r   ÚppÚcycler   r   r   r'   &   ó   zGoodPretty._repr_pretty_c                 C   r   )NúGoodPretty()r   r   r   r   r   r   )   r   zGoodPretty.__repr__N)r   r   r   r'   r   r   r   r   r   r)   %   ó    r)   c                 C   r*   r+   r-   )Úobjr/   r0   r   r   r   Úfoo_printer,   r1   r5   c                  C   s’   t ƒ } |  tt¡ | tƒ ƒdksJ ‚| tƒ ƒdksJ ‚| tƒ ƒdks$J ‚| tƒ ƒ d| _| tƒ ƒdks5J ‚| tƒ ƒdks>J ‚| tƒ ƒdksGJ ‚d S )Nr,   r   Fr   r2   )r   Úfor_typer   r5   r   r)   r%   Úpprint©Úfr   r   r   Útest_pretty/   s   
r:   c                  C   s
   t ƒ } d S ©N)r   r8   r   r   r   Útest_deferred>   ó   
r<   c                  C   s   t ƒ } | tƒttƒksJ ‚d| _trt ¡ }|d dksJ ‚| tƒdks&J ‚d| _tr7t ¡ }|d dks7J ‚| tƒdks?J ‚d| _trPt ¡ }|d dksPJ ‚| tƒdksXJ ‚d| _| tƒd	kscJ ‚d
| _trtt ¡ }|d dkstJ ‚| tƒttƒks~J ‚dS )z(test various values for float_precision.r   Ú	precisionÚ3é   z3.14z%gz3.14159z%ez3.141593e+00Ú é   N)r   r   ÚreprÚfloat_precisionÚnumpyZget_printoptions)r9   Úpor   r   r   Útest_precisionA   s0   rG   c                     sN   t ƒ ‰ ‡ fdd„} t t| d¡ t t| d¡ t t| d¡ t t| d¡ dS )z0test various invalid values for float_precision.c                    s
   | ˆ _ d S r;   )rD   )Úpr8   r   r   Úset_fp`   r=   z"test_bad_precision.<locals>.set_fpú%z%.3f%ir,   éÿÿÿÿN)r   ÚpytestÚraisesr#   )rI   r   r8   r   Útest_bad_precision]   s   rN   c                  C   sj   t ƒ } |  tt¡d u sJ ‚|  t¡tu sJ ‚|  t¡tu sJ ‚|  td ¡tu s)J ‚|  td ¡tu s3J ‚d S r;   )r   r6   r   r5   r8   r   r   r   Útest_for_typeh   s   rO   c                  C   s‚   t ƒ } dtjdf }|  |t¡d u sJ ‚|  |¡tu sJ ‚ttƒ| jv s&J ‚|  t¡tu s/J ‚ttƒ| jvs8J ‚t| jv s?J ‚d S ©Nz%s.%sr   )r   r   r   r6   r5   r   Údeferred_printersÚtype_printers©r9   Ztype_strr   r   r   Útest_for_type_stringu   s   rT   c                  C   sz   t ƒ } tj}|  |dt¡d u sJ ‚|  |d¡tu sJ ‚|  |d¡tu s%J ‚|  |dd ¡tu s0J ‚|  |dd ¡tu s;J ‚d S )Nr   )r   r   r   Zfor_type_by_namer5   )r9   Úmodr   r   r   Útest_for_type_by_nameƒ   s   rV   c                  C   sb   t ƒ } |  tt¡ |  tƒ ¡tu sJ ‚t t¡� |  tƒ ¡ W d   ƒ d S 1 s*w   Y  d S r;   )	r   r6   r   r5   ÚlookuprL   rM   ÚKeyErrorr   r8   r   r   r   Útest_lookup“   s   "ÿrY   c                  C   sX   t ƒ } dtjdf }|  |t¡ |  tƒ ¡tu sJ ‚ttƒ| jvs#J ‚t| jv s*J ‚d S rP   )	r   r   r   r6   r5   rW   r   rQ   rR   rS   r   r   r   Útest_lookup_string›   s   rZ   c                  C   s^   t ƒ } |  tt¡ |  t¡tu sJ ‚t t¡� |  t¡ W d   ƒ d S 1 s(w   Y  d S r;   )	r   r6   r   r5   Úlookup_by_typerL   rM   rX   r   r8   r   r   r   Útest_lookup_by_type¥   s   "ÿr\   c                  C   s¨   t ƒ } dtjdf }|  |t¡ ttƒ| jv sJ ‚t| jvs J ‚|  |¡tu s)J ‚ttƒ| jv s2J ‚t| jvs9J ‚|  t¡tu sBJ ‚ttƒ| jvsKJ ‚t| jv sRJ ‚d S rP   )	r   r   r   r6   r5   r   rQ   rR   r[   rS   r   r   r   Útest_lookup_by_type_string¬   s   r]   c                  C   s<   t ƒ } |  tt¡ dtjdf }t| v sJ ‚|| v sJ ‚d S rP   )r   r6   r   r5   r   rS   r   r   r   Útest_in_formatter¿   s
   r^   c                  C   s<   t ƒ } dtjdf }|  |t¡ || v sJ ‚t| v sJ ‚d S rP   )r   r   r   r6   r5   rS   r   r   r   Útest_string_in_formatterÆ   s
   r_   c                  C   s
  t ƒ } |  tt¡ |  t¡tu sJ ‚|  td ¡tu sJ ‚|  tt¡ |  t¡tu s+J ‚t t¡� |  t¡ W d   ƒ n1 s@w   Y  t t¡� |  t¡ W d   ƒ n1 sZw   Y  t t¡� |  t	¡ W d   ƒ n1 stw   Y  |  t	d ¡d u sƒJ ‚d S r;   )
r   r6   r   r5   r[   ÚpoprL   rM   rX   r   r8   r   r   r   Útest_popÍ   s    ÿÿÿra   c                  C   sf  t ƒ } dtjdf }t t¡� |  |¡ W d   ƒ n1 sw   Y  |  |t¡ |  |¡ t t¡� |  	t¡ W d   ƒ n1 sDw   Y  t t¡� |  |¡ W d   ƒ n1 s^w   Y  |  tt¡ |  |d ¡tu ssJ ‚t t¡� |  	t¡ W d   ƒ n1 sˆw   Y  t t¡� |  |¡ W d   ƒ n1 s¢w   Y  |  |d ¡d u s±J ‚d S rP   )
r   r   r   rL   rM   rX   r`   r6   r5   r[   rS   r   r   r   Útest_pop_stringÜ   s,   ÿ
ÿÿÿÿrb   c                  C   s„   t ƒ } G dd„ dtƒ}|ƒ }tƒ �}| |ƒ}W d   ƒ n1 s w   Y  |d u s+J ‚d|jv s2J ‚d|jv s9J ‚d|jv s@J ‚d S )Nc                   @   r   )z"test_error_method.<locals>.BadHTMLc                 S   r!   )NúBad HTMLr"   r   r   r   r   Ú_repr_html_ö   r$   z.test_error_method.<locals>.BadHTML._repr_html_N©r   r   r   rd   r   r   r   r   ÚBadHTMLõ   r   rf   Ú	Tracebackrc   rd   )r   Úobjectr   Ústdout)r9   rf   ÚbadÚcapturedÚresultr   r   r   Útest_error_methodó   s   
ÿrm   c                  C   sv   t ƒ } G dd„ dtƒ}|ƒ }tƒ �}| |ƒ}W d   ƒ n1 s w   Y  |d u s+J ‚d|jks2J ‚d|jks9J ‚d S )Nc                   @   r   )z6test_nowarn_notimplemented.<locals>.HTMLNotImplementedc                 S   ó   t ‚r;   ©ÚNotImplementedErrorr   r   r   r   rd     r   zBtest_nowarn_notimplemented.<locals>.HTMLNotImplemented._repr_html_Nre   r   r   r   r   ÚHTMLNotImplemented  r   rq   rA   )r   rh   r   Ústderrri   )r9   rq   Úhrk   rl   r   r   r   Útest_nowarn_notimplemented   s   
ÿrt   c                  C   s~   t ƒ } |  tdd„ ¡ tƒ �}| dƒ}W d   ƒ n1 sw   Y  |d u s(J ‚d|jv s/J ‚d|jv s6J ‚d|jv s=J ‚d S )Nc                 S   s   t S r;   )Ú
name_error)Úir   r   r   Ú<lambda>  ó    z*test_warn_error_for_type.<locals>.<lambda>é   rg   Ú	NameErrorru   )r   r6   Úintr   ri   )r9   rk   rl   r   r   r   Útest_warn_error_for_type  s   
ÿr|   c                  C   s’   t ƒ } G dd„ dtƒ}|ƒ }tƒ �}| |ƒ}W d   ƒ n1 s w   Y  |d u s+J ‚d|jv s2J ‚d|jv s9J ‚d|jv s@J ‚d|jv sGJ ‚d S )Nc                   @   r   )z+test_error_pretty_method.<locals>.BadPrettyc                 S   r   ©NÚhellor   r   r   r   r   r'     r   z9test_error_pretty_method.<locals>.BadPretty._repr_pretty_Nr&   r   r   r   r   r%     r   r%   rg   r'   ÚgivenZargument)r   rh   r   ri   )r9   r%   rj   rk   rl   r   r   r   Útest_error_pretty_method  s   
ÿr€   c                  C   st   t ƒ } tƒ }tƒ �}| |ƒ}W d   ƒ n1 sw   Y  |d u s#J ‚d|jv s*J ‚d|jv s1J ‚d|jv s8J ‚d S )Nrg   r   r#   )r   r    r   ri   )r9   rj   rk   rl   r   r   r   Útest_bad_repr_traceback&  s   
ÿr�   c                   @   r   )ÚMakePDFc                 C   r   ©NZPDFr   r   r   r   r   Ú
_repr_pdf_3  r   zMakePDF._repr_pdf_N)r   r   r   r„   r   r   r   r   r‚   2  r   r‚   c                  C   s    t ƒ } tƒ }|| ƒdksJ ‚d S rƒ   )r‚   r   )Zpdfr9   r   r   r   Útest_pdf_formatter6  s   r…   c                  C   s¬   t ƒ } G dd„ dtƒ}tƒ �}| |ƒ}W d   ƒ n1 sw   Y  |d u s(J ‚d|jvs/J ‚tƒ �}| |ƒ ƒ}W d   ƒ n1 sBw   Y  |dksMJ ‚|jdksTJ ‚d S )Nc                   @   r   )z'test_print_method_bound.<locals>.MyHTMLc                 S   r   r}   r   r   r   r   r   rd   ?  r   z3test_print_method_bound.<locals>.MyHTML._repr_html_Nre   r   r   r   r   ÚMyHTML>  r   r†   ÚFormatterWarningr~   rA   )r   rh   r   rr   )r9   r†   rk   rl   r   r   r   Útest_print_method_bound<  s   
ÿÿrˆ   c            	      C   s$  G dd„ dt ƒ} tƒ }| ƒ }|jdksJ ‚tƒ �}||ƒ}W d   ƒ n1 s'w   Y  |d u s2J ‚d|jvs9J ‚G dd„ dt ƒ}|ƒ }tƒ �}||ƒ}W d   ƒ n1 sVw   Y  |d u saJ ‚G dd„ dt ƒ}|ƒ }tƒ �}||ƒ}W d   ƒ n1 s~w   Y  |d u s‰J ‚d|jvs�J ‚d S )	Nc                   @   r   )z-test_print_method_weird.<locals>.TextMagicHatc                 S   s   |S r;   r   ©r   Úkeyr   r   r   Ú__getattr__O  r   z9test_print_method_weird.<locals>.TextMagicHat.__getattr__N©r   r   r   r‹   r   r   r   r   ÚTextMagicHatN  r   r�   rd   r‡   c                   @   r   )z1test_print_method_weird.<locals>.CallableMagicHatc                    s   ‡ fdd„S )Nc                      s   ˆ S r;   r   r   ©rŠ   r   r   rw   ^  rx   zOtest_print_method_weird.<locals>.CallableMagicHat.__getattr__.<locals>.<lambda>r   r‰   r   rŽ   r   r‹   ]  s   z=test_print_method_weird.<locals>.CallableMagicHat.__getattr__NrŒ   r   r   r   r   ÚCallableMagicHat\  r   r�   c                   @   r   )z,test_print_method_weird.<locals>.BadReprArgsc                 S   r   )NÚhtmlr   )r   ÚextraÚargsr   r   r   rd   g  r   z8test_print_method_weird.<locals>.BadReprArgs._repr_html_Nre   r   r   r   r   ÚBadReprArgsf  r   r“   )rh   r   rd   r   rr   )	r�   r9   Ztext_hatrk   rl   r�   Zcall_hatr“   rj   r   r   r   Útest_print_method_weirdL  s,   
ÿ
ÿ
ÿr”   c                  C   s    t ƒ } tƒ }tƒ �}| |ƒ}W d  ƒ n1 sw   Y  |du s#J ‚|jdks*J ‚tƒ �}| tƒ}W d  ƒ n1 s<w   Y  |du sGJ ‚|jdksNJ ‚dS )zCconfig objects don't pretend to support fancy reprs with lazy attrsNrA   )r   r   r   rr   )r9   Úcfgrk   rl   r   r   r   Útest_format_configr  s   
ÿ
ÿr–   c                  C   sp   t dd�} ttdƒƒ}| |ƒ}|dksJ ‚d| _| |ƒ}|dks"J ‚| ttdƒƒƒ}| ¡ }t|ƒdks6J ‚d S )Né   )Úmax_seq_lengthé   z[0, ...]r   z	[0, 1, 2]i   )r   ÚlistÚranger˜   Ú
splitlinesÚlen)r9   Zlisr.   Úlinesr   r   r   Útest_pretty_max_seq_length�  s   
rŸ   c                     sÆ   t ƒ j} g ‰ G ‡ fdd„dtƒ}G dd„ dtƒ}| jj}d| j_|ƒ }|ƒ }|  |¡\}}|dt|ƒiks7J ‚|i ks=J ‚ˆ g ksCJ ‚|  |¡\}}|i ksPJ ‚|i ksVJ ‚ˆ |gks]J ‚|| j_dS )z>Objects with _ipython_display_ defined bypass other formattersc                       s   e Zd Z‡ fdd„ZdS )z6test_ipython_display_formatter.<locals>.SelfDisplayingc                    s   ˆ   | ¡ d S r;   )Úappendr   ©Zcatcherr   r   Ú_ipython_display_“  r1   zHtest_ipython_display_formatter.<locals>.SelfDisplaying._ipython_display_N)r   r   r   r¢   r   r¡   r   r   ÚSelfDisplaying’  s    r£   c                   @   r(   )z9test_ipython_display_formatter.<locals>.NotSelfDisplayingc                 S   r   )NÚNotSelfDisplayingr   r   r   r   r   r   —  r   zBtest_ipython_display_formatter.<locals>.NotSelfDisplaying.__repr__c                 S   rn   r;   ro   r   r   r   r   r¢   š  r   zKtest_ipython_display_formatter.<locals>.NotSelfDisplaying._ipython_display_N)r   r   r   r   r¢   r   r   r   r   r¤   –  r3   r¤   Tú
text/plainN)r   Údisplay_formatterrh   Zipython_display_formatterÚenabledÚformatrC   )r9   r£   r¤   Úsave_enabledÚyesÚnoÚdÚmdr   r¡   r   Útest_ipython_display_formatterŽ  s"   r®   c                  C   s®   G dd„ dt ƒ} tƒ j}|jd }|j}d|_| ƒ }| |¡\}}||_t|ƒg d¢ks.J ‚|i ks4J ‚|j|dhd�\}}t| ¡ ƒdgksKJ dƒ‚|d d	ksUJ d
ƒ‚d S )Nc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	z#test_repr_mime.<locals>.HasReprMimeNc                 S   s   ddidddœS )NÚxÚyz<HasReprMime>úi-overwrite)úapplication/json+test.v2ú
plain/textú	image/pngr   ©r   ÚincludeÚexcluder   r   r   Ú_repr_mimebundle_²  s
   ÿûz5test_repr_mime.<locals>.HasReprMime._repr_mimebundle_c                 S   r   )Nzshould-be-overwrittenr   r   r   r   r   Ú
_repr_png_»  r   z.test_repr_mime.<locals>.HasReprMime._repr_png_c                 S   r   )Nz
<b>hi!</b>r   r   r   r   r   rd   ½  r   z/test_repr_mime.<locals>.HasReprMime._repr_html_©NN)r   r   r   r¸   r¹   rd   r   r   r   r   ÚHasReprMime±  s    
	r»   ú	text/htmlT)r²   r´   r³   r¼   r¥   r´   ©r¶   z:Include should filter out even things from repr_mimebundler±   z!_repr_mimebundle_ take precedence)	rh   r   r¦   Ú
formattersr§   r¨   Úsortedrš   Úkeys)r»   r9   Zhtml_fr©   r4   r¬   r­   r   r   r   Útest_repr_mime°  s"   

ÿþrÁ   c                  C   sl   G dd„ dt ƒ} h d£}h d£}tƒ j}|j| ||d�||d� |j| |d�|d� |j| |d�|d� d S )Nc                   @   s   e Zd Zddd„Zdd„ ZdS )z1test_pass_correct_include_exclude.<locals>.TesterNc                 S   s   || _ || _d S r;   ©r¶   r·   rµ   r   r   r   Ú__init__Ü  s   
z:test_pass_correct_include_exclude.<locals>.Tester.__init__c                 [   s0   |r|| j krtdƒ‚|r|| jkrtdƒ‚d S )Nz.include got modified: display() may be broken.z.exclude got modified: display() may be broken.)r¶   r#   r·   )r   r¶   r·   Úkwargsr   r   r   r¸   à  s
   zCtest_pass_correct_include_exclude.<locals>.Tester._repr_mimebundle_rº   )r   r   r   rÃ   r¸   r   r   r   r   ÚTesterÚ  s    
rÅ   >   ÚaÚcÚb>   Úer9   rÇ   rÂ   )r·   r½   ©rh   r   r¦   r¨   )rÅ   r¶   r·   r9   r   r   r   Ú!test_pass_correct_include_excludeÙ  s   rË   c                  C   sZ   G dd„ dt ƒ} tƒ j}| ƒ }| |¡\}}t|ƒddgks J ‚|ddddœiks+J ‚d S )Nc                   @   ó   e Zd Zddd„ZdS )z,test_repr_mime_meta.<locals>.HasReprMimeMetaNc                 S   s   ddi}ddddœi}||fS )Nr´   zbase64-image-datary   é
   ©ÚwidthÚheightr   )r   r¶   r·   ÚdataÚmetadatar   r   r   r¸   ó  s   ÿþÿz>test_repr_mime_meta.<locals>.HasReprMimeMeta._repr_mimebundle_rº   ©r   r   r   r¸   r   r   r   r   ÚHasReprMimeMetaò  ó    rÔ   r´   r¥   ry   rÍ   rÎ   )rh   r   r¦   r¨   r¿   )rÔ   r9   r4   r¬   r­   r   r   r   Útest_repr_mime_metañ  s   þÿrÖ   c                  C   s<   G dd„ dt ƒ} tƒ j}| ƒ }| |¡\}}d|v sJ ‚d S )Nc                   @   rÌ   )z+test_repr_mime_failure.<locals>.BadReprMimeNc                 S   rn   r;   )ÚRuntimeErrorrµ   r   r   r   r¸     r   z=test_repr_mime_failure.<locals>.BadReprMime._repr_mimebundle_rº   rÓ   r   r   r   r   ÚBadReprMime  rÕ   rØ   r¥   rÊ   )rØ   r9   r4   r¬   r­   r   r   r   Útest_repr_mime_failure  s
   rÙ   c                  C   s`   ddl m}  ddlm} G dd„ d|ƒ}| dd„ ƒ|_|ƒ }tƒ }|js&J ‚||ƒdks.J ‚d S )	Nr   )Úpartialmethod)Ú
NamedTuplec                   @   r   )z6test_custom_repr_namedtuple_partialmethod.<locals>.FooNr   r   r   r   r   ÚFoo  s    rÜ   c                 S   r   )NúHello Worldr   )r4   r   r   r   rw     rx   z;test_custom_repr_namedtuple_partialmethod.<locals>.<lambda>rÝ   )Ú	functoolsrÚ   ÚtypingrÛ   r   r   r7   )rÚ   rÛ   rÜ   r,   r9   r   r   r   Ú)test_custom_repr_namedtuple_partialmethod  s   
rà   ):Ú__doc__Úmathr   rE   rL   ZIPythonr   Ztraitlets.configr   ÚIPython.core.formattersr   r   r   r   r	   r
   ZIPython.utils.ior   rh   r   r   r   r    r%   r)   r5   r:   r<   rG   rN   rO   rT   rV   rY   rZ   r\   r]   r^   r_   ra   rb   rm   rt   r|   r€   r�   r‚   r…   rˆ   r”   r–   rŸ   r®   rÁ   rË   rÖ   rÙ   rà   r   r   r   r   Ú<module>   sd     

&")