
    d:                        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 Z  ej!        g d	
          d             Z"ej!        d             Z#ej$        %                    d          d             Z&ej$        %                    d          d             Z'ej$        (                    dg d          d             Z)ej!        d             Z*ej$        j+        d             Z,ej$        j-        ej$        j+        ej$        %                    d           G 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                 6    i }|dk    r||d<   | dk    r| |d<   |S )Ndefaultexcelsep )r   r   kwargss      Z/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/test_clipboard.pybuild_kwargsr   (   s4    F	w
iuM    )
delimsutf8utf16stringlongnonasciicolwidthmixedfloatint)paramsc           	         | 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    rt          ddgddgd          S |dk    rt          j        ddddd gd g          S |dk    r0t	          d          }t          j        |dz   dd ddd gd g          S |dk    r6t          d                                d                                d          S |dk    r2t	          d           dz   t          j        ddfd!ddd gd g          S |d"k    rft          t          j        d#d$          d%z   t          j        dd&                              t          j	                  t          d'          d(          S |d)k    rt          j        ddd* ddd gd g          S |d+k    rt          j        ddd, ddd gd g          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                  @    t           j                            d          S N   nprandomrandintargss    r   <lambda>zdf.<locals>.<lambda>S       RY%6%6q%9%9 r   )
data_gen_fr1   r2   r3   r4   r"   z
in Englishu   en español)enesr#   zdisplay.max_colwidthc                      dz  S )Nxr   )r>   _cws    r   r?   zdf.<locals>.<lambda>`   s    S3Y r   r$         ?g      @{Gz?   abcde)r)   r*   cr%   c                 &    t          |           dz   S )NrH   )r%   )rrK   s     r   r?   zdf.<locals>.<lambda>r   s    E!HHtO r   r&   c                  @    t           j                            d          S r7   r9   r=   s    r   r?   zdf.<locals>.<lambda>|   r@   r   )paramr
   tmmakeCustomDataframer   splitr:   arangeastypeint64list
ValueError)request	data_typemax_rowsrF   s      @r   dfr[   1   s    IHY7vw>OPPQQQ	f		5]K<XYYZZZ	g		)+AB%QVXX
 
 	
 
h		%qSStfSWRX
 
 
 	
 
f		011%qL99
 
 
 	
 
j	 	  2 2 4 4M<O<O<Q<QRRSSS	j	 	 /0014%....
 
 
 	
 
g		YsC((4/Yq!__++BH55']] 
 
 	
 
g		%33
 
 
 	
 
e		%99
 
 
 	
 r   c              #      K   d }|                                  5 }|                    d|d           dV  ddd           dS # 1 swxY w Y   dS )z<
    Mocks WinError to help with testing the clipboard.
    c                      dS )NzWindow Errorr   r   r   r   _mock_win_errorz$mock_ctypes.<locals>._mock_win_error   s    ~r   zctypes.WinErrorF)raisingN)contextsetattr)monkeypatchr^   ms      r   mock_ctypesrd      s         
				 !			#_e	DDD                 s   AAArd   c                     d }|                      dd            d|j         d}t          j        t          |          5   t          |                       ddd           dS # 1 swxY 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                      dS NFr   r   r   r   _return_falsez6test_checked_call_with_bad_call.<locals>._return_false   s    ur   pandas.io.clipboard.get_errnoc                      dS NTr   r   r   r   r?   z1test_checked_call_with_bad_call.<locals>.<lambda>   s     r   zError calling z \(Window Error\)matchN)ra   __name__pytestraisesr   r   )rb   rh   msgs      r   test_checked_call_with_bad_callrr      s       7FFF
F=1
F
F
FC	0	<	<	< % %"M""$$$% % % % % % % % % % % % % % % % % %s   A&&A*-A*c                 t    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                      dS rk   r   r   r   r   _return_truez7test_checked_call_with_valid_call.<locals>._return_true   s    tr   ri   c                      dS rg   r   r   r   r   r?   z3test_checked_call_with_valid_call.<locals>.<lambda>   s     r   TN)ra   r   )rb   ru   checked_calls      r   !test_checked_call_with_valid_callrx      sX       7GGG |,,L<>>T!!!!!!r   text)String_testTr5   rG   y              ?c                 Z   t           t          t          t          f}t	          | |          r&t          |           }|t          |           k    sJ d S dt          |           j         }t          j	        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S )NzJonly str, int, float, and bool values can be copied to the clipboard, not rl   )strr&   r%   bool
isinstancer   typern   ro   rp   r   )ry   valid_typesresultrq   s       r   test_stringify_textr      s     UD)K$$$ 	!%%T""""""I37::3FI I 	 ]-S999 	! 	!4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B  B$'B$c              #      K   i fd}f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                 &    | j         j        <   d S Nnodename)data
_mock_datarX   s    r   	_mock_setz!mock_clipboard.<locals>._mock_set   s    (,
7<$%%%r   c                  (     j         j                 S r   r   )r   rX   s   r   	_mock_getz!mock_clipboard.<locals>._mock_get   s    ',+,,r   z!pandas.io.clipboard.clipboard_setz!pandas.io.clipboard.clipboard_getN)ra   )rb   rX   r   r   r   s    `  @r   mock_clipboardr      s       J- - - - - -- - - - - - ;YGGG;YGGG
r   c                     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   pandasr   s      r   test_mock_clipboardr      ss    
I%%e,,,C--//000000Y ..00FU??????r   r   c                      e Zd Zd+dZd Zej                            dg d          d             Zd Z	d Z
d	 Zej                            dg d
          ej                            dg d          d                         Zej                            dddg          ej                            ddg          d                         Zd Z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             Zd Zej                            dg d          d             Zej        j        ej                            dg d           ej                            ej                            d!          du o
 e             d"d#$          d%                                     Zej                            d&d'd(g          d)             Zd* ZdS ),TestClipboardNc                     |                     |||           t          |pdd|          }t          j        ||           d S )N)r   r   encoding	r   )r   	index_colr   )to_clipboardr   rP   assert_frame_equal)selfr   r   r   r   r   s         r   check_round_trip_framez$TestClipboard.check_round_trip_frame   sN    3BBBCK41xPPP
dF+++++r   c                 0    |                      |           d S r   r   r   r[   s     r   test_round_trip_framez#TestClipboard.test_round_trip_frame  s    ##B'''''r   r   )r   ,|c                 4    |                      ||           d S )Nr   r   )r   r[   r   s      r   test_round_trip_frame_sepz'TestClipboard.test_round_trip_frame_sep  s!    ##BC#00000r   c                     |                     dd            t                      }|                                |                                k    sJ |j        |j        k    sJ d S )NFr   r   )r   r   	to_stringshape)r   r[   r   s      r   test_round_trip_frame_stringz*TestClipboard.test_round_trip_frame_string
  sc    
e...!!||~~!1!1!3!33333x6<''''''r   c                     t          j        t          dd          5  |                    dd           d d d            d S # 1 swxY w Y   d S )NzAto_clipboard in excel mode requires a single character separator.F)rm   check_stacklevelTz\tr   )rP   assert_produces_warningUserWarningr   r   s     r   test_excel_sep_warningz$TestClipboard.test_excel_sep_warning  s    'U"
 
 
 	3 	3
 OO$EO222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   AA	Ac                     t          j                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )NFr   r   )rP   r   r   r   s     r   test_copy_delim_warningz%TestClipboard.test_copy_delim_warning  s    ')) 	3 	3OO%TO222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   9= =)r   Nr   r   )TNr   c                     t          ||          } |j        di | ||j        j                 |                    d          k    sJ d S )Nr   r   r   )r   r   r   r   to_csv)r   r   r   r[   rX   r   r   s          r    test_clipboard_copy_tabs_defaultz.TestClipboard.test_clipboard_copy_tabs_default!  sZ     c5))!!&!!!gl/0BII$I4G4GGGGGGGr   r   Fc                     t          ||          } |j        di | t          d          }|                                |                                k    sJ |j        |j        k    sJ d S )Nz\s+r   r   )r   r   r   r   r   )r   r   r   r[   r   r   s         r   test_clipboard_copy_stringsz)TestClipboard.test_clipboard_copy_strings)  s{     c5))!!&!!!F+++!!R\\^^3333x6<''''''r   c                    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          j        ||           d S )	Nenginepythonz^
            John James	Charlie Mingus
            1	2
            4	Harry Carney
            r5   zHarry Carneyz@
            a	 b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            r   )r   stripr   r   r   ilocrP   r   )r   rX   r   clip_kwargsry   r[   resexps           r   test_read_clipboard_infer_excelz-TestClipboard.test_read_clipboard_infer_excel2  s   * 
 
 -1w|()**k** wqz!}....  
 
 -1w|()++{++ 
 
 -1w|()++{++
c3'''''r   c                     d}|||j         j        <   t                      }t          g dg dd          }t	          j        ||           d S )Nzcol1	col2
1	red
	blue
2	greenr5   Nr8   redbluegreencol1col2)r   r   r   r   r
   rP   r   )r   rX   r   ry   r[   df_expecteds         r   test_infer_excel_with_nullsz)TestClipboard.test_infer_excel_with_nullsZ  sf    5,0w|()&,,0H0H0HII
 
 

 	b+.....r   
multiindex
)z			col1	col2zA	0	True	1	redzA	1	True		bluezB	0	False	2	green)Ar   B)r   r5   r   )TTF)z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                     |d         ||j         j        <   t                      }t          g dg dd|d                   }t	          j        ||           d S )Nr   r   r   r   r5   )r   indexr   )r   rX   r   r   r[   r   s         r    test_infer_excel_with_multiindexz.TestClipboard.test_infer_excel_with_multiindexg  sn    2 -7qMw|()&,,0H0H0HIIQ-
 
 
 	b+.....r   c                 $   d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d           d d d            d S # 1 swxY w Y   d S )Nz&clipboard only supports utf-8 encodingrl   asciir   )ro   rp   rW   r   NotImplementedErrorr   )r   r[   rq   s      r   test_invalid_encodingz#TestClipboard.test_invalid_encoding  s   6]:S111 	. 	.OOWO---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.].c::: 	- 	-G,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AAA'BB	B	enc)zUTF-8zutf-8r   c                 4    |                      ||           d S )Nr   r   )r   r   r[   s      r   test_round_trip_valid_encodingsz-TestClipboard.test_round_trip_valid_encodings  s!    ##B#55555r   r   )u   👍...u   Ωœ∑´...zabcd...DISPLAYzBCannot be runed if a headless system is not put in place with XvfbT)reasonstrictc                     t          |           |t                      k    sJ t                      r(t                      rt	          j        g dd           d S d S d S )N)xselz--deletez--clipboardT)check)r   r   r   r   
subprocessrun)r   r   s     r   test_raw_roundtripz TestClipboard.test_raw_roundtrip  s     	d}&&&& 	L#4#6#6 	LN>>>dKKKKKK	L 	L 	L 	Lr   r   rK   r   c                 n  
 |dk    s|dk    rt          j        d          |dk    rdt          t          j        ddgt          j                            }t          t          j        dt          gt          j                            }nHt                              ddg                    }t                              dd g                    }d}|||j        j	        <   t          j        d|          5  t          d||	          }	d d d            n# 1 swxY w Y   t          |t          d
dgd          t          ddgd          |t          dt          gd          t          dt          gd          t          t          t          gd          t          ddgd          t          dt          gd          d	          |dk    rKddlm
 t          
fdj        D                        
                    d d g                    d<   t%          j        |	           d S )Npyarrowr   rE   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   r5   r8   Int64g      @g      @Float64TFboolean)	r)   r*   rK   defghr0   r   )ArrowExtensionArrayc           	      ^    i | ])}|                      |         d                     *S )T)from_pandas)array).0colr   expectedpas     r   
<dictcomp>zCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>  sL        ,,RXXhsmQUX-V-VWW  r   r   )ro   importorskipr   r:   r   object_r	   r   r   r   pdoption_contextr   r
   r   pandas.arraysr   columnsrP   r   )r   rX   r   string_storager   r   string_arraystring_array_nary   r   r   r   r   s             @@@r   !test_read_clipboard_dtype_backendz/TestClipboard.test_read_clipboard_dtype_backend  s   
 Y&&-9*D*D$Y//BX%%&rxc
"*'M'M'MNNL)"(C9BJ*O*O*OPPOO ,BHHc3Z,@,@AAL.rxxd/D/DEEO -1w|()4nEE 	Y 	Y#=QWXXXF	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y !QF'222S#Ji888$QG7333S"IY777RHG444T5M;;;UBKy999
 

 
 I%%999999      '/   H 0/$0F0FGGHSM
fh/////s   <DD"Dc                     d}t          j        t          |          5  t          d           d d d            d S # 1 swxY w Y   d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rl   numpy)r   )ro   rp   rW   r   )r   rq   s     r   test_invalid_dtype_backendz(TestClipboard.test_invalid_dtype_backend  s    % 	 ]:S111 	2 	21111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   <A A )NNN)rn   
__module____qualname__r   r   ro   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      s3       , , , ,( ( ( [U$4$4$4551 1 651( ( (3 3 33 3 3 [U$;$;$;<<[W&=&=&=>>H H ?> =<H [UT9$566[Wug..( ( /. 76(&( &( &(P/ / / [ 		    !)))-@-@-@A
 		XXX  !))),		
 ,/ /- ,/- - - [U$>$>$>??6 6 @?6 [[V%Q%Q%QRR[

y!!T)C//2C2C.CS   
L L  SR L [XX77/0 /0 87/0b2 2 2 2 2r   r   )/r  r   textwrapr   r	  r:   ro   pandas.compatr   r   r   pandas.errorsr   r   r   r   r	   r
   r   r   r   pandas._testing_testingrP   pandas.core.arraysr   r   r   r   r   r   r   r   fixturer[   rd   r  usefixturesrr   rx   r  r   r   r   r   r  r   r   r   r   <module>r     s)   				                        
       
                              
                  D D DN    ''% % ('%  ''" " ('"" 
  	 	! !	 	!   6    )**c2 c2 c2 c2 c2 c2 c2 +*  c2 c2 c2r   