U
    +ifG&                     @   s   d dl mZ d dlZd dlZd dlmZmZmZ d dl	m
Z d dlmZmZ dd Zejddd	d
ddddddg
ddd Zejdd Zejjdd ZejjejjejdG dd dZdS )    )dedentN)	DataFrame
get_optionread_clipboard)clipboard_getclipboard_setc                 C   s(   i }|dkr||d< | dkr$| |d< |S )Ndefaultexcelsep )r
   r	   kwargsr   r   Q/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/io/test_clipboard.pybuild_kwargs   s    r   delimsutf8utf16stringlongnonasciicolwidthmixedfloatint)paramsc              	      s  | j }|dkr$tddgddgdS |dkrBtdd	gd
dgdS |dkr`tddgddgdS |dkrtjddddd gd gdS |dkrtd}tj|d ddd ddd gd gdS |dkrtd d dS |d krtd!d  tjdd fd"dddd gd gdS |d#krHttd$d%d& tdd'tj	t
d(d)S |d*krrtjddd+d ddd gd gdS |d,krtjddd-d ddd gd gdS td S ).Nr   z"a,	"b|cu   d	ef´zhi'jzk''lm)abr   u   µasdu	   Ωœ∑´u   øπ∆˚¬u	   œ∑´®r   u   👍👍abcdefr         si)
c_idx_type
r_idx_typec_idx_namesr_idx_namesr   zdisplay.max_rows   c                  W   s   t jdS N   nprandomrandintargsr   r   r   <lambda>>       zdf.<locals>.<lambda>)Z
data_gen_fr"   r#   r$   r%   r   z
in Englishu   en español)enesr   zdisplay.max_colwidthc                     s   d  S )Nxr   r-   Z_cwr   r   r/   K   r0   r   g      ?g      @{Gz?   Zabcde)r   r   cr   c                 S   s   t | d S )Nr5   )r   )rr7   r   r   r   r/   ]   r0   r   c                  W   s   t jdS r'   r)   r-   r   r   r   r/   g   r0   )paramr   tmZmakeCustomDataframer   splitr*   ZarangeZastypeZint64list
ValueError)requestZ	data_typeZmax_rowsr   r4   r   df   s         	

	

	

r?   c                 #   sB   i   fdd} fdd}|  d| |  d|  V  dS )aM  Fixture mocking clipboard IO.

    This mocks pandas.io.clipboard.clipboard_get and
    pandas.io.clipboard.clipboard_set.

    This uses a local dict for storing data. The dictionary
    key used is the test ID, available with ``request.node.name``.

    This returns the local dictionary, for direct manipulation by
    tests.
    c                    s   |  j j< d S NnodenamedataZ
_mock_datar>   r   r   	_mock_set   s    z!mock_clipboard.<locals>._mock_setc                      s    j j S r@   rA   r   rF   r   r   	_mock_get   s    z!mock_clipboard.<locals>._mock_getz!pandas.io.clipboard.clipboard_setz!pandas.io.clipboard.clipboard_getN)setattr)Zmonkeypatchr>   rG   rH   r   rF   r   mock_clipboardq   s    rJ   c                 C   sF   dd l }|jjd dt|  ks*t|jj }|dksBtd S )Nr   r   )pandas.io.clipboardio	clipboardr   setvaluesAssertionErrorr   )rJ   pandasresultr   r   r   test_mock_clipboard   s
    rS   c                
   @   st  e Zd Zd>ddZdd Zejdddd	gd
d Zdd Z	dd Z
dd Zejddddgejddddgdd Zejdddgejddgdd Zdd Zdd Zejddd d!d"d#gd$d$d%gd&d'd&gdddggfdd(d)d*d+gd$d$d%gd&d'd&ggfgd,d- Zd.d/ Zejd0d1d2d3gd4d5 Zejd6d7d8d9gejjd:edd;d<d= ZdS )?TestClipboardNc                 C   s2   |j |||d t|pdd|d}t|| d S )N)r	   r
   encoding	r   )r
   Z	index_colrU   )to_clipboardr   r:   assert_frame_equal)selfrE   r	   r
   rU   rR   r   r   r   check_round_trip_frame   s    z$TestClipboard.check_round_trip_framec                 C   s   |  | d S r@   rZ   rY   r?   r   r   r   test_round_trip_frame   s    z#TestClipboard.test_round_trip_framer
   rV   ,|c                 C   s   | j ||d d S )Nr
   r[   )rY   r?   r
   r   r   r   test_round_trip_frame_sep   s    z'TestClipboard.test_round_trip_frame_sepc                 C   s<   |j dd d t }| | ks(t|j|jks8td S )NFr	   r
   )rW   r   	to_stringrP   shape)rY   r?   rR   r   r   r   test_round_trip_frame_string   s    z*TestClipboard.test_round_trip_frame_stringc              	   C   s&   t   |jddd W 5 Q R X d S )NTz\trb   r:   Zassert_produces_warningrW   r\   r   r   r   test_excel_sep_warning   s    
z$TestClipboard.test_excel_sep_warningc              	   C   s&   t   |jddd W 5 Q R X d S )NFrV   rb   rf   r\   r   r   r   test_copy_delim_warning   s    
z%TestClipboard.test_copy_delim_warningr   r	   Tc                 C   s6   t ||}|jf | ||jj |jddks2td S )NrV   r`   )r   rW   rB   rC   Zto_csvrP   )rY   r
   r	   r?   r>   rJ   r   r   r   r    test_clipboard_copy_tabs_default   s    
z.TestClipboard.test_clipboard_copy_tabs_defaultFc                 C   sH   t ||}|jf | tdd}| | ks4t|j|jksDtd S )Nz\s+r`   )r   rW   r   rc   rP   rd   )rY   r
   r	   r?   r   rR   r   r   r   test_clipboard_copy_strings   s
    

z)TestClipboard.test_clipboard_copy_stringsc                 C   s   ddi}t d }|||jj< tf |}|jd d dks@tt d }|||jj< tf |}t d }|||jj< tf |}t|| d S )NZenginepythonz^
            John James	Charlie Mingus
            1	2
            4	Harry Carney
            r&   zHarry Carneyz@
            a	 b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            )	r   striprB   rC   r   ZilocrP   r:   rX   )rY   r>   rJ   Zclip_kwargstextr?   resexpr   r   r   test_read_clipboard_infer_excel   s$    


z-TestClipboard.test_read_clipboard_infer_excelc                 C   sB   d}|||j j< t }tdd dgdddgdd}t|| d S )	Nzcol1	col2
1	red
	blue
2	greenr&   r(   redbluegreenZcol1Zcol2rD   rB   rC   r   r   r:   rX   )rY   r>   rJ   rm   r?   df_expectedr   r   r   test_infer_excel_with_nulls   s    z)TestClipboard.test_infer_excel_with_nulls
multiindex
z			col1	col2zA	0	True	1	redzA	1	True		bluezB	0	False	2	greenABr   r&   z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                 C   sH   |d ||j j< t }tdd dgdddgd|d d}t|| d S )	Nr   r&   r(   rq   rr   rs   rt   )rE   indexru   )rY   r>   rJ   rx   r?   rv   r   r   r    test_infer_excel_with_multiindex  s    z.TestClipboard.test_infer_excel_with_multiindexc              	   C   sR   d}t jt|d |jdd W 5 Q R X t jt|d tdd W 5 Q R X d S )Nz&clipboard only supports utf-8 encoding)matchasciirU   )pytestraisesr=   rW   NotImplementedErrorr   )rY   r?   msgr   r   r   test_invalid_encoding&  s
    z#TestClipboard.test_invalid_encodingenczUTF-8zutf-8r   c                 C   s   | j ||d d S )Nr   r[   )rY   r   r?   r   r   r   test_round_trip_valid_encodings.  s    z-TestClipboard.test_round_trip_valid_encodingsrE   u   👍...u   Ωœ∑´...zabcd...z4Flaky test in multi-process CI environment: GH 44584)reasonr   strictc                 C   s   t | |t kstd S r@   )r   r   rP   )rY   rE   r   r   r   test_raw_roundtrip2  s    z TestClipboard.test_raw_roundtrip)NNN)__name__
__module____qualname__rZ   r]   r   markZparametrizera   re   rg   rh   ri   rj   rp   rw   joinr}   r   r   ZxfailrP   r   r   r   r   r   rT      sX   

(


rT   )textwrapr   numpyr*   r   rQ   r   r   r   Zpandas._testingZ_testingr:   rK   r   r   r   Zfixturer?   rJ   r   rM   rS   Z
single_cpuZusefixturesrT   r   r   r   r   <module>   s8   	
G

	
