o
    û›h²-  ã                   @   s¬   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZmZm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S )z0Tests for the IPython tab-completion machinery.
é    N)Údatetime)ÚPath)ÚTemporaryDirectory)ÚConfig)ÚHistoryAccessorÚHistoryManagerÚextract_hist_rangesc                   C   s   t  ¡ dksJ ‚d S )Núutf-8)ÚsysÚgetdefaultencoding© r   r   úUc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/core/tests/test_history.pyÚtest_proper_default_encoding   s   r   c               
   C   s¸  t ƒ } tƒ ��Ê}t|ƒ}| j}|d }�z¤t| |d�| _g d¢}t|dd�D ]\}}| j ||¡ q&d| j_d| jjd< | j 	d¡ | jj
d	g| ksMJ ‚| jj}t|d
dd�ƒttdgd
g|dd… ƒƒksiJ ‚t|dd�ƒttddgd
dg|dd … ƒƒks‚J ‚t|dd�ƒttg d¢g d¢t|g d¢ƒƒƒksœJ ‚|  dd¡ |  dd|d  ¡ |  dd|d  ¡ |  dd|d  ¡ |  dd|d  ¡ | j ¡  g d¢}	t|	dd�D ]\}}
| j ||
¡ qÙ| jjddd�}t|ƒttg d¢g d¢|	ƒƒksÿJ ‚| j ddd¡}t|ƒttg d ¢g d¢|ƒƒk�sJ ‚d!d"„ t|	dƒD ƒ}| jjd#ddd$�}dd|d dffgd%d"„ |D ƒ }t|ƒ|k�sGJ ‚| j d
¡}|d&d… }t|ƒ|k�s\J ‚| j d'¡}t|ƒdd
|d fgk�sqJ ‚| j d(¡}t|ƒdd|d fdd
|d fdd|d
 f|d |d
 |d gk�s›J ‚| jjd(dd)�}t|ƒdd|d
 f|d |d
 |d gk�s»J ‚| jjd(dd*�}t|ƒdd|d fdd
|d fdd|d
 f|d
 |d gk�säJ ‚| jjd(ddd+�}t|ƒdd|d
 f|d
 |d gk�sJ ‚| jjd,dd�}t|ƒdd|d
 dffgk�sJ ‚|d-  ¡ }|  dt|ƒd. ¡ tj|d/d0��}| ¡ d1d2 |¡ d2 k�sCJ ‚W d   ƒ n	1 �sNw   Y  | j dd3¡ | j ¡  | jjdk�shJ ‚|d \}}}|dk�svJ ‚| j ¡  d}| j ||¡ | jjd(dd*�}t|ƒd }||d k �s›J ‚|dd … ||fk�s¨J ‚W | jj ¡  | jj ¡  || _n| jj ¡  | jj ¡  || _w W d   ƒ d S 1 �sÕw   Y  d S )4Núhistory.sqlite©ÚshellÚ	hist_file©úa=1z%def f():
    test = 1
    return testu   b='â‚¬Ã†Â¾Ã·ÃŸ'é   ©ÚstartTÚspamé   Ú é   éÿÿÿÿ)r   Ústopr   éþÿÿÿ)Úoutput)r   r   r   )r   r   r   )NNr   Úhistz2-500z-f %sZtest1z-pf %sZtest2z-nf %sZtest3Úsavez%s 1-10Ztest4)úz=5zclass X(object):
    passzk='p'r"   é   )r   r   r   c                 S   s   g | ]	\}}d ||f‘qS )r   r   )Ú.0ÚiÚcr   r   r   Ú
<listcomp>I   s    z test_history.<locals>.<listcomp>é   )r   Zinclude_latestc                 S   s    g | ]\}}}|||d ff‘qS )Nr   )r$   ÚsÚnr&   r   r   r   r'   O   s     éýÿÿÿz*test*z*=*©r*   )Úunique)r-   r*   zb*ztest.pyz ~1/1-3r	   )Úencodingz# coding: utf-8
Ú
Zrogue)Úget_ipythonr   r   Úhistory_managerr   Ú	enumerateÚstore_inputsZdb_log_outputZoutput_hist_reprsZstore_outputÚinput_hist_rawZ_get_range_sessionÚlistÚzipZrun_line_magicÚresetZ	get_rangeÚget_tailÚsearchÚresolveÚstrÚioÚopenÚreadÚjoinZwriteout_cacheZsession_numberÚsave_threadr   ÚdbÚclose)ÚipÚtmpdirÚtmp_pathÚhist_manager_orir   r    r%   ÚhZgrsZnewcmdsÚcmdZgothistZnewhistÚexpectedZtestfilenameZtestfileZsessidÚlinenoÚentryr   r   r   Útest_history   sÄ   
02
ÿ
$&
ÿÿú	üû*""ÿ

ü
$ƒrL   c                  C   s(   d} g d¢}t t| ƒƒ}||ksJ ‚d S )Nz%1 2/3 ~4/5-6 ~4/7-~4/9 ~9/2-~7/5 ~10/))r   r   r   )r   r   r#   )éüÿÿÿr(   é   )rM   rN   é
   )i÷ÿÿÿr   N)iøÿÿÿr   N)iùÿÿÿr   é   )iöÿÿÿr   N©r5   r   ©ÚinstrrI   Úactualr   r   r   Útest_extract_hist_ranges›   s   rU   c                  C   s&   d} dg}t t| ƒƒ}||ksJ ‚d S )Nr   )r   r   NrQ   rR   r   r   r   Ú"test_extract_hist_ranges_empty_str©   s   rV   c                  C   sX   t ƒ } | jddd� | jddd� | jd dksJ ‚| jddd� | jd dks*J ‚d	S )
z3Simple test for %rerun (no args -> rerun last line)za = 10T)Zstore_historyza += 1Úaé   z%reruné   N)r0   Zrun_cellZuser_ns)rC   r   r   r   Útest_magic_rerun°   s   rZ   c                  C   s&   t ƒ } | j ¡ }t|d tƒsJ ‚d S )Nr   )r0   r1   Zget_session_infoÚ
isinstancer   )rC   Úinfor   r   r   Útest_timestamp_type¹   s   
r]   c                  C   s”   t ƒ } tjdd�}t|jƒ| j_z&ttƒ | d�}|j| jjks!J ‚W z
t|jƒ ¡  W d S  t	y6   Y d S w z	t|jƒ ¡  W w  t	yI   Y w w )NF)Údelete©r   Úconfig)
r   ÚtempfileÚNamedTemporaryFiler   Únamer   r   r0   ÚunlinkÚOSError)ÚcfgZtfileZhmr   r   r   Útest_hist_file_config¾   s    üþürg   c               	   C   sà   t ƒ } d| j_tƒ }tƒ �Q}|j}t|ƒd }|| j_z7t|| d�|_g d¢}t	|dd�D ]\}}|j 
||¡ q-|jjdg| ksDJ ‚|j ¡  |j ¡  W ||_n||_w W d  ƒ n1 saw   Y  | ¡ du snJ ‚dS )	zDEnsure that disabling the history manager doesn't create a database.Fr   r_   r   r   r   r   N)r   r   Úenabledr0   r   r1   r   r   r   r2   r3   r4   r7   Zend_sessionÚexists)rf   rC   rD   rF   r   r    r%   rG   r   r   r   Útest_histmanager_disabledÎ   s$   
órj   c               	   C   sL  t ƒ } tƒ ��”}t|ƒ}|d }dd„ }d}d}d}�zSt| |d�}|j}t|d�}|j}	g d¢}
t|
dg d	d
�D ]
\}}| ||¡ q:tt	|| 
¡ ƒƒ|
ksRJ ‚tt	|| 
¡ ƒƒ|
ks_J ‚|ƒ }|dushJ ‚|	ƒ |ksoJ ‚t| |d�}|j}g d¢}t|dg d	d
�D ]
\}}| ||¡ q…|j
dd�}tt	||ƒƒ|ks¡J ‚|j
dd�}tt	||ƒƒ|ks²J ‚|ƒ }|dus»J ‚|	ƒ |ksÂJ ‚||ksÈJ ‚|ƒ |ksÏJ ‚|j
dd�}tt	||ƒƒ|
ksàJ ‚g d¢}t|dg dd
�D ]
\}}| ||¡ qí|j
dd�}tt	||ƒƒ|
dg | k�sJ ‚|j
dd�}tt	||ƒƒ|k�s!J ‚|j
dd�}tt	||ƒƒ|k�s3J ‚|ƒ |k�s;J ‚|ƒ |k�sCJ ‚|	ƒ |k�sKJ ‚W |�rY|j ¡  |j ¡  |�rf|j ¡  |j ¡  |�rn|j ¡  n$|�r||j ¡  |j ¡  |�r‰|j ¡  |j ¡  |�r’|j ¡  w w W d  ƒ dS 1 �sŸw   Y  dS )z˜Test .get_tail() is:
        - session specific in HistoryManager
        - session agnostic in HistoryAccessor
    same for .get_last_session_id()
    r   c                 S   s   | d S )Nr   r   )Úxr   r   r   Ú<lambda>ñ   s    z1test_get_tail_session_awareness.<locals>.<lambda>Nr   )r   )r   zb=1zc=1r   r   r   )za=2zb=2zc=2r   r,   )za=3zb=3zc=3r(   rN   )r0   r   r   r   Zget_last_session_idr   r2   r3   r5   Úmapr8   r@   r   rA   rB   )rC   rD   rE   r   Ú
get_sourceZhm1Zhm2ZhaZhm1_last_sidZha_last_sidZhist1r%   rG   Zsid1Zhm2_last_sidZhist2ÚtailZsid2Zhist3r   r   r   Útest_get_tail_session_awarenessç   sŠ   

"




€ù



ÿ€$½rp   )Ú__doc__r<   r
   ra   r   Úpathlibr   r   Ztraitlets.config.loaderr   ZIPython.core.historyr   r   r   r   rL   rU   rV   rZ   r]   rg   rj   rp   r   r   r   r   Ú<module>   s&    	