o
    Ti9                     @   sX  d dl Z d dlmZ d dlZd dlZd dlmZmZ d dl	m
Z
mZ d dlZd dlmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ dd	 Zejg d
ddd Z ejdd Z!ej"#ddd Z$ej"#ddd Z%ej"&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 )    N)dedent)is_ci_environmentis_platform_mac)PyperclipExceptionPyperclipWindowsException)NA	DataFrameSeries
get_optionread_clipboard)ArrowStringArrayStringArray)CheckedCall_stringifyTextclipboard_getclipboard_setc                 C   s(   i }|dkr
||d< | dkr| |d< |S )Ndefaultexcelsep )r   r   kwargsr   r   ^/var/www/html/evchargy.com/venv/lib/python3.10/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r!tdd	gd
dgdS |dkr0tddgddgdS |dkrAtjddddd gd gdS |dkr[td}tj|d ddd ddd gd gdS |dkrjtd d dS |d krtd!d  tjdd fd"dddd gd gdS |d#krttd$d%d& tdd'tj	t
d(d)S |d*krt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).Nr   z"a,	"b|cz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      t jddS N   nprandomZdefault_rngZintegersargsr   r   r   <lambda>Q       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   r7   Z_cwr   r   r9   ^   s    r          ?g      @{Gz?   Zabcde)r$   r%   cr!   c                 S   s   t | d S )Nr@   )r!   )rrB   r   r   r   r9   p   s    r"   c                  W   r1   r2   r4   r7   r   r   r   r9   z   r:   )paramr   tmZmakeCustomDataframer
   splitr5   ZarangeZastypeZint64list
ValueError)requestZ	data_typeZmax_rowsr   r>   r   df/   s   	
		
rJ   c                 c   sN    dd }|   }|jd|dd dV  W d   dS 1 s w   Y  dS )z<
    Mocks WinError to help with testing the clipboard.
    c                   S      dS )NzWindow Errorr   r   r   r   r   _mock_win_error      z$mock_ctypes.<locals>._mock_win_errorzctypes.WinErrorF)ZraisingN)contextsetattr)monkeypatchrL   mr   r   r   mock_ctypes   s   
"rR   c                 C   sd   dd }|  ddd  d|j d}tjt|d t|  W d	   d	S 1 s+w   Y  d	S )
z
    Give CheckCall a function that returns a falsey value and
    mock get_errno so it returns false so an exception is raised.
    c                   S   rK   NFr   r   r   r   r   _return_false   rM   z6test_checked_call_with_bad_call.<locals>._return_falsepandas.io.clipboard.get_errnoc                   S   rK   NTr   r   r   r   r   r9          z1test_checked_call_with_bad_call.<locals>.<lambda>zError calling z \(Window Error\)matchN)rO   __name__pytestraisesr   r   )rP   rT   msgr   r   r   test_checked_call_with_bad_call   s   "r^   c                 C   s2   dd }|  ddd  t|}| du sJ dS )z
    Give CheckCall a function that returns a truthy value and
    mock get_errno so it returns true so an exception is not raised.
    The function should return the results from _return_true.
    c                   S   rK   rV   r   r   r   r   r   _return_true   rM   z7test_checked_call_with_valid_call.<locals>._return_truerU   c                   S   rK   rS   r   r   r   r   r   r9      rW   z3test_checked_call_with_valid_call.<locals>.<lambda>TN)rO   r   )rP   r_   Zchecked_callr   r   r   !test_checked_call_with_valid_call   s   r`   text)ZString_testTr0   r?   y              ?c                 C   s~   t tttf}t| |rt| }|t | ksJ d S dt| j }tj	t
|d t|  W d    d S 1 s8w   Y  d S )NzJonly str, int, float, and bool values can be copied to the clipboard, not rX   )strr"   r!   bool
isinstancer   typerZ   r[   r\   r   )ra   Zvalid_typesresultr]   r   r   r   test_stringify_text   s   

"rg   c                 #   sD    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_datarI   r   r   	_mock_set   s   z!mock_clipboard.<locals>._mock_setc                      s    j j S rh   ri   r   rn   r   r   	_mock_get   s   z!mock_clipboard.<locals>._mock_getz!pandas.io.clipboard.clipboard_setz!pandas.io.clipboard.clipboard_getN)rO   )rP   rI   ro   rp   r   rn   r   mock_clipboard   s   
rq   c                 C   sF   dd l }|jjd dt|  v sJ |jj }|dks!J d S )Nr   r&   )pandas.io.clipboardio	clipboardr   setvaluesr   )rq   pandasrf   r   r   r   test_mock_clipboard   s
   rx   c                   @   s  e Zd Zd:ddZdd Zejdg ddd	 Zd
d Z	dd Z
dd Zejdg dejdg d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g dg d g d!g d"gfdg d#g d g d!gfgd$d% Zd&d' Zejd(g d)d*d+ Zejjejd,g d-ejjejd.du re  pe d/e  d0d1d2 Zejd3d4d5gd6d7 Zd8d9 ZdS );TestClipboardNc                 C   s2   |j |||d t|pdd|d}t|| d S )N)r   r   encoding	r   )r   Z	index_colrz   )to_clipboardr   rE   assert_frame_equal)selfrm   r   r   rz   rf   r   r   r   check_round_trip_frame   s   z$TestClipboard.check_round_trip_framec                 C   s   |  | d S rh   r   r~   rJ   r   r   r   test_round_trip_frame   s   z#TestClipboard.test_round_trip_framer   )r{   ,|c                 C   s   | j ||d d S )Nr   r   )r~   rJ   r   r   r   r   test_round_trip_frame_sep     z'TestClipboard.test_round_trip_frame_sepc                 C   s<   |j dd d t }| | ksJ |j|jksJ d S )NFr   r   )r|   r   	to_stringshape)r~   rJ   rf   r   r   r   test_round_trip_frame_string  s   z*TestClipboard.test_round_trip_frame_stringc                 C   sD   t jtddd |jddd W d    d S 1 sw   Y  d S )NzAto_clipboard in excel mode requires a single character separator.F)rY   Zcheck_stacklevelTz\tr   )rE   assert_produces_warningUserWarningr|   r   r   r   r   test_excel_sep_warning  s   "z$TestClipboard.test_excel_sep_warningc                 C   s<   t   |jddd W d    d S 1 sw   Y  d S )NFr{   r   )rE   r   r|   r   r   r   r   test_copy_delim_warning  s   
"z%TestClipboard.test_copy_delim_warning)r{   Nr   r   )TNr   c                 C   s:   t ||}|jdi | ||jj |jddksJ d S )Nr{   r   r   )r   r|   rj   rk   Zto_csv)r~   r   r   rJ   rI   rq   r   r   r   r    test_clipboard_copy_tabs_default  s   
 z.TestClipboard.test_clipboard_copy_tabs_defaultr   Fc                 C   sL   t ||}|jdi | tdd}| | ksJ |j|jks$J d S )Nz\s+r   r   )r   r|   r   r   r   )r~   r   r   rJ   r   rf   r   r   r   test_clipboard_copy_strings'  s
   

z)TestClipboard.test_clipboard_copy_stringsc                 C   s   ddi}t d }|||jj< tdi |}|jd dks J t d }|||jj< tdi |}t d }|||jj< tdi |}t|| d S )	Nenginepythonz^
            John James	Charlie Mingus
            1	2
            4	Harry Carney
            )r0   r0   zHarry Carneyz@
            a	 b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            r   )r   striprj   rk   r   ZilocrE   r}   )r~   rI   rq   Zclip_kwargsra   rJ   resexpr   r   r   test_read_clipboard_infer_excel0  s*   z-TestClipboard.test_read_clipboard_infer_excelc                 C   s>   d}|||j j< t }tg dg ddd}t|| d S )Nzcol1	col2
1	red
	blue
2	greenr0   Nr3   redbluegreenZcol1Zcol2rl   rj   rk   r   r   rE   r}   )r~   rI   rq   ra   rJ   df_expectedr   r   r   test_infer_excel_with_nullsX  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)Ar   B)r   r0   r   )TTF)z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                 C   sD   |d ||j j< t }tg dg dd|d d}t|| d S )Nr   r   r   r   r0   )rm   indexr   )r~   rI   rq   r   rJ   r   r   r   r    test_infer_excel_with_multiindexe  s   z.TestClipboard.test_infer_excel_with_multiindexc                 C   s|   d}t jt|d |jdd W d    n1 sw   Y  t jt|d tdd W d    d S 1 s7w   Y  d S )Nz&clipboard only supports utf-8 encodingrX   asciirz   )r[   r\   rH   r|   NotImplementedErrorr   )r~   rJ   r]   r   r   r   test_invalid_encoding  s   "z#TestClipboard.test_invalid_encodingenc)zUTF-8zutf-8r   c                 C   s   | j ||d d S )Nr   r   )r~   r   rJ   r   r   r   test_round_trip_valid_encodings  r   z-TestClipboard.test_round_trip_valid_encodingsrm   )u   👍...u   Ωœ∑`...zabcd...ZDISPLAYz>Cannot pass if a headless system is not put in place with Xvfb)reasonstrictc                 C   s   t | |t ksJ d S rh   )r   r   )r~   rm   r   r   r   test_raw_roundtrip  s   
z TestClipboard.test_raw_roundtripr   rB   r   c           
         s  |dks|dkrt d|dkr*ttjddgtjd}ttjdtgtjd}ntddg}tdd g}d}|||jj	< t
d| td||d	}	W d    n1 s\w   Y  t|td
dgddtddgdd|tdtgddtdtgddtttgddtddgddtdtgddd	|dkrddlm  t fddjD  d d gd< t|	 d S )NZpyarrowr   r=   y)Zdtypez@a,b,c,d,e,f,g,h,i
x,1,4.0,x,2,4.0,,True,False
y,2,5.0,,,,,False,zmode.string_storager   )r   dtype_backendr   r0   r3   ZInt64g      @g      @ZFloat64TFboolean)	r$   r%   rB   defghr+   r   )ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )T)Zfrom_pandas)array).0colr   expectedpar   r   
<dictcomp>  s    zCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>r   )r[   Zimportorskipr   r5   r   Zobject_r   r   rj   rk   pdZoption_contextr   r   r	   Zpandas.arraysr   columnsrE   r}   )
r~   rI   rq   Zstring_storager   r   Zstring_arrayZstring_array_nara   rf   r   r   r   !test_read_clipboard_dtype_backend  sB   
z/TestClipboard.test_read_clipboard_dtype_backendc                 C   sB   d}t jt|d tdd W d    d S 1 sw   Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rX   numpy)r   )r[   r\   rH   r   )r~   r]   r   r   r   test_invalid_dtype_backend  s
   "z(TestClipboard.test_invalid_dtype_backend)NNN)rZ   
__module____qualname__r   r   r[   markparametrizer   r   r   r   r   r   r   r   joinr   r   r   
single_cpuZxfailosenvirongetr   r   r   r   r   r   r   r   r   ry      s\    

	(


1ry   )-r   textwrapr   r   r5   r[   Zpandas.compatr   r   Zpandas.errorsr   r   rw   r   r   r   r	   r
   r   Zpandas._testingZ_testingrE   Zpandas.core.arraysr   r   rr   r   r   r   r   r   ZfixturerJ   rR   r   Zusefixturesr^   r`   r   rg   rq   rt   rx   r   ry   r   r   r   r   <module>   sF    	
G








	
