o
    d:                     @   sd  d dl Z d dlZ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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_linux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   c/var/www/html/visualizacion-main/env/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|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      t jdS N   nprandomrandintargsr   r   r   <lambda>S       zdf.<locals>.<lambda>)
data_gen_fr-   r.   r/   r0   r   z
in Englishu   en español)enesr    zdisplay.max_colwidthc                     s   d  S )Nxr   r9   _cwr   r   r;   `   s    r!         ?g      @{Gz?   abcde)r%   r&   cr"   c                 S   s   t | d S )NrD   )r"   )rrG   r   r   r   r;   r   r<   r#   c                  W   r2   r3   r5   r9   r   r   r   r;   |   r<   )paramr	   tmmakeCustomDataframer   splitr6   arangeastypeint64list
ValueError)request	data_typemax_rowsr   rA   r   df1   s   	
		
rU   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)raisingN)contextsetattr)monkeypatchrW   mr   r   r   mock_ctypes   s   
"r^   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   rV   NFr   r   r   r   r   _return_false   rX   z6test_checked_call_with_bad_call.<locals>._return_falsepandas.io.clipboard.get_errnoc                   S   rV   NTr   r   r   r   r   r;          z1test_checked_call_with_bad_call.<locals>.<lambda>zError calling z \(Window Error\)matchN)r[   __name__pytestraisesr   r   )r\   r`   msgr   r   r   test_checked_call_with_bad_call   s   "rj   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   rV   rb   r   r   r   r   r   _return_true   rX   z7test_checked_call_with_valid_call.<locals>._return_truera   c                   S   rV   r_   r   r   r   r   r   r;      rc   z3test_checked_call_with_valid_call.<locals>.<lambda>TN)r[   r   )r\   rk   checked_callr   r   r   !test_checked_call_with_valid_call   s   rm   text)String_testTr1   rC   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 rd   )strr#   r"   bool
isinstancer   typerf   rg   rh   r   )rn   valid_typesresultri   r   r   r   test_stringify_text   s   

"rv   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
_mock_datarR   r   r   	_mock_set   s   z!mock_clipboard.<locals>._mock_setc                      s    j j S rw   rx   r   r}   r   r   	_mock_get   s   z!mock_clipboard.<locals>._mock_getz!pandas.io.clipboard.clipboard_setz!pandas.io.clipboard.clipboard_getN)r[   )r\   rR   r   r   r   r}   r   mock_clipboard   s   
r   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   )r   pandasru   r   r   r   test_mock_clipboard   s
   r   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 oe  d/d0d1d2d3 Zejd4d5d6gd7d8 Zd9d: ZdS )<TestClipboardNc                 C   s2   |j |||d t|pdd|d}t|| d S )N)r   r   encoding	r   )r   	index_colr   )to_clipboardr   rJ   assert_frame_equal)selfr|   r   r   r   ru   r   r   r   check_round_trip_frame   s   z$TestClipboard.check_round_trip_framec                 C   s   |  | d S rw   r   r   rU   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   rU   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   rU   ru   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)re   check_stacklevelTz\tr   )rJ   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   )rJ   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   ry   rz   to_csv)r   r   r   rU   rR   r   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   rU   r   ru   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 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
            r1   zHarry Carneyz@
            a	 b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            r   )r   stripry   rz   r   ilocrJ   r   )r   rR   r   clip_kwargsrn   rU   resexpr   r   r   test_read_clipboard_infer_excel2  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r1   Nr4   redbluegreencol1col2r{   ry   rz   r   r	   rJ   r   )r   rR   r   rn   rU   df_expectedr   r   r   test_infer_excel_with_nullsZ  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   r1   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   r1   )r|   indexr   )r   rR   r   r   rU   r   r   r   r    test_infer_excel_with_multiindexg  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 encodingrd   asciir   )rg   rh   rQ   r   NotImplementedErrorr   )r   rU   ri   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   rU   r   r   r   test_round_trip_valid_encodings  r   z-TestClipboard.test_round_trip_valid_encodingsr|   )u   👍...u   Ωœ∑´...zabcd...DISPLAYzBCannot be runed if a headless system is not put in place with XvfbT)reasonstrictc                 C   s@   t | |t ksJ t rt rtjg ddd d S d S d S )N)xselz--deletez--clipboardT)check)r   r   r   r   
subprocessrun)r   r|   r   r   r   test_raw_roundtrip  s
   	z TestClipboard.test_raw_roundtripr   rG   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 )Npyarrowr   r@   y)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   r1   r4   Int64g      @g      @Float64TFboolean)	r%   r&   rG   defghr,   r   )ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )T)from_pandas)array).0colr   expectedpar   r   
<dictcomp>  s    zCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>r   )rg   importorskipr   r6   r   object_r   r   ry   rz   pdoption_contextr   r	   r
   pandas.arraysr   columnsrJ   r   )
r   rR   r   string_storager   r   string_arraystring_array_narn   ru   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.rd   numpy)r   )rg   rh   rQ   r   )r   ri   r   r   r   test_invalid_dtype_backend  s
   "z(TestClipboard.test_invalid_dtype_backend)NNN)rf   
__module____qualname__r   r   rg   markparametrizer   r   r   r   r   r   r   r   joinr   r   r   
single_cpuxfailosenvirongetr   r   r   r   r   r   r   r   r      sZ    

	(


1r   )/r   r   textwrapr   r   r6   rg   pandas.compatr   r   r   pandas.errorsr   r   r   r   r   r	   r
   r   r   pandas._testing_testingrJ   pandas.core.arraysr   r   r   r   r   r   r   r   fixturerU   r^   r   usefixturesrj   rm   r   rv   r   r   r   r   r   r   r   r   r   <module>   sH    	
G






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