
    g3                        d dl mZ d dlZd dl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 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        d             Z$ej        j%        ej        j$        ej                            d          ej                            d           G d d                                                          Z&dS )    )dedentN)PyperclipExceptionPyperclipWindowsException)NA	DataFrameSeries
get_optionread_clipboard)ArrowStringArrayStringArray)CheckedCall_stringifyTextinit_qt_clipboardc                 6    i }|dk    r||d<   | dk    r| |d<   |S )Ndefaultexcelsep )r   r   kwargss      j/var/www/html/nodeJS/PythonScripts/venv3.11/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          t          j        d t	          d          D                                           dd          t          d                    S |dk    ret          d          }t          t          j        	                    d          
                    dd|dz   df          t          d                    S |dk    r6t          d                                d                                d           S |d!k    rot          d"          dz   t          t          j        fd#t	          d          D                                           dd          t          d                    S |d$k    rft          t          j        d%d&          d'z   t          j        dd(                              t          j                  t          d)          d*          S |d+k    rNt          t          j        	                    d                              d,          t          d                    S |d-k    rPt          t          j        	                    d          
                    ddd,          t          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   c                     g | ]}d | S )zi-r   ).0is     r   
<listcomp>zdf.<locals>.<listcomp>D   s    2221h1hh222r            )columnsr   zdisplay.max_rows   r   
      )sizer   z
in Englishu   en español)enesr   zdisplay.max_colwidthc                     g | ]}d z  S )xr   )r*   __cws     r   r,   zdf.<locals>.<listcomp>Q   s    333AcCi333r   r          ?g      @g{Gz?   abcde)r%   r&   cr!   )r.   r/   r"   )paramr   nparrayrangereshapelistr	   randomdefault_rngintegerssplitarangeastypeint64
ValueError)request	data_typemax_rowsr:   s      @r   dfrP   )   s    IHX6fg=NOOPPP	f		4M:;VWWXXX	g		)+AB%QVXX
 
 	
 
h		H22b		22233;;AqAA4PU;;
 
 
 	
 
f		011I!!!$$--a8a<:K-LLKK
 
 
 	
 
j	 	  2 2 4 4M<O<O<Q<QRRSSS	j	 	 /0014H3333r33344<<QBBDQVKK
 
 
 	
 
g		YsC((4/Yq!__++BH55']] 
 
 	
 
g		..q1188@@$u++VVVV	e		I!!!$$--aV<<d5kk
 
 
 	
 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_errork   s    ~r   zctypes.WinErrorF)raisingN)contextsetattr)monkeypatchrS   ms      r   mock_ctypesrY   e   s         
				 !			#_e	DDD                 s   AAArY   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   <lambda>z1test_checked_call_with_bad_call.<locals>.<lambda>~   s     r   zError calling z \(Window Error\)matchN)rV   __name__pytestraisesr   r   )rW   r]   msgs      r   test_checked_call_with_bad_callrh   t   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 r`   r   r   r   r   _return_truez7test_checked_call_with_valid_call.<locals>._return_true   s    tr   r^   c                      dS r\   r   r   r   r   ra   z3test_checked_call_with_valid_call.<locals>.<lambda>   s     r   TN)rV   r   )rW   rk   checked_calls      r   !test_checked_call_with_valid_callrn      sX       7GGG |,,L<>>T!!!!!!r   text)String_testTr3   r;   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 rb   )strr"   r!   bool
isinstancer   typerd   re   rf   r   )ro   valid_typesresultrg   s       r   test_stringify_textrx      s     UD)K$$$ 	!%%T""""""I37::3FI I 	 ]-S999 	! 	!4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B  B$'B$c              #   &  K   t                      \  }}|                                 5 }|                    t          j        j        d|           |                    t          j        j        d|           d V  d d d            d S # 1 swxY w Y   d S )Nclipboard_setclipboard_get)r   rU   rV   pdio	clipboard)rW   qt_cutqt_pasterX   s       r   set_pyqt_clipboardr      s      (**FH					 !			"%/?F;;;			"%/?H===                 s   ABB
B
c              #   b   K   |                                  }|V  |                                 d S )N)r~   clear)qappclips     r   r~   r~      s/      >>D
JJJJJLLLLLr   r   r~   c                      e Zd Zej                            dg d          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          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                            ddd g          d!             Zd" Zd# ZdS )$TestClipboardr   )N	,|encoding)NzUTF-8zutf-8r   c                     |                     d ||           t          |pdd|          }t          j        ||           d S )N)r   r   r   r   r   )r   	index_colr   )to_clipboardr
   tmassert_frame_equal)selfrP   r   r   rw   s        r   test_round_trip_frame_sepz'TestClipboard.test_round_trip_frame_sep   sM     	dh???CK41xPPP
b&)))))r   c                     |                     dd            t                      }|                                |                                k    sJ |j        |j        k    sJ d S )NFr   r   )r   r
   	to_stringshape)r   rP   rw   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)rc   check_stacklevelTz\tr   )r   assert_produces_warningUserWarningr   r   rP   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   )r   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 | |                                |                    d          k    sJ d S )Nr   r   r   )r   r   ro   to_csv)r   r   r   rP   r~   r   s         r    test_clipboard_copy_tabs_defaultz.TestClipboard.test_clipboard_copy_tabs_default   sZ     c5))!!&!!!~~2999#6#6666666r   Nr   c                     t          |d          } |j        di | t          d          }|                                |                                k    sJ |j        |j        k    sJ d S )NFz\s+r   r   )r   r   r
   r   r   )r   r   rP   r   rw   s        r   test_clipboard_copy_stringsz)TestClipboard.test_clipboard_copy_strings   sy    c5))!!&!!!F+++!!R\\^^3333x6<''''''r   c                    ddi}t          d                                          }|                    |           t          di |}|j        d         dk    sJ t          d                                          }|                    |           t          di |}t          d                                          }|                    |           t          di |}t          j        ||           d S )	Nenginepythonz^
            John James	Charlie Mingus
            1	2
            4	Harry Carney
            )r3   r3   zHarry Carneyz@
            a	 b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            r   )r   stripsetTextr
   ilocr   r   )r   r~   clip_kwargsro   rP   resexps          r   test_read_clipboard_infer_excelz-TestClipboard.test_read_clipboard_infer_excel   s   * 
 
 	$**k** wt}....  
 
 	$++{++ 
 
 	$++{++
c3'''''r   c                     d}|                     |           t                      }t          g dg dd          }t          j        ||           d S )Nzcol1	col2
1	red
	blue
2	greenr3   Nr1   redbluegreencol1col2)datar   r
   r   r   r   )r   r~   ro   rP   df_expecteds        r   test_infer_excel_with_nullsz)TestClipboard.test_infer_excel_with_nulls  sk    5$&,,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   r3   r   )TTF)z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                     |                     |d                    t                      }t          g dg dd|d                   }t          j        ||           d S )Nr   r   r   r   r3   )r   indexr   )r   r~   r   rP   r   s        r    test_infer_excel_with_multiindexz.TestClipboard.test_infer_excel_with_multiindex+  ss    2 	*Q-(((&,,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 encodingrb   ascii)r   )re   rf   rL   r   NotImplementedErrorr
   r   rP   rg   s      r   test_invalid_encodingz#TestClipboard.test_invalid_encodingN  s   6]:S111 	. 	.OOWO---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.].c::: 	- 	-G,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AAA'BB	B	r   )u   👍...u   Ωœ∑`...zabcd...c                     t          d|gi          }|                                 t                      }t          j        ||           d S )Nr   )r   r   r
   r   r   )r   r   rP   rw   s       r   test_raw_roundtripz TestClipboard.test_raw_roundtripV  sL     '((
!!
b&)))))r   r   r>   r   c                 H  	
 |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                            }n|dk    ra|dk    r[t          j        d          ddlm	  	                    ddg                    } 	                    dd g                    }nHt                              ddg                    }t                              dd g                    }d	}|
                    |           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   r8   y)dtyper>   r   )ArrowExtensionArrayz@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   r3   r1   Int64g      @g      @Float64TFboolean)	r%   r&   r>   defghr+   c           	      ^    i | ])}|                      |         d                     *S )T)from_pandas)rA   )r*   colr   expectedpas     r   
<dictcomp>zCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>  sL        ,,RXXhsmQUX-V-VWW  r   r   )re   importorskipr   r@   rA   object_r   pandas.arraysr   r   r   r|   option_contextr
   r   r   r0   r   r   )r   r~   string_storager   r   string_arraystring_array_naro   rw   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i''FcMM$Y//B999999..rxxc
/C/CDDL11"((C;2G2GHHOO ,BHHc3Z,@,@AAL.rxxd/D/DEEO 	$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   )FFF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.rb   numpy)r   )re   rf   rL   r
   )r   rg   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 c                     t          dg di          }d}t          j        t          |          5  |                    dd            d d d            d S # 1 swxY w Y   d S )Nr%   )r3   r1   r/   zTStarting with pandas version 3.0 all arguments of to_clipboard will be keyword-only.rb   T)r   r   r   FutureWarningr   r   s      r   &test_to_clipboard_pos_args_deprecationz4TestClipboard.test_to_clipboard_pos_args_deprecation  s    YYY'((% 	 'SAAA 	( 	(OOD$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAA)rd   
__module____qualname__re   markparametrizer   r   r   r   r   r   r   r   joinr   r   r   r   r   r   r   r   r   r   r      s        [U$:$:$:;;[Z)I)I)IJJ* * KJ <;*( ( (3 3 33 3 3 [U$;$;$;<<[W&=&=&=>>7 7 ?> =<7 [UT9$566( ( 76(&( &( &(P/ / / [ 		    !)))-@-@-@A
 		XXX  !))),		
 ,/ /- ,/- - - [V%P%P%PQQ* * RQ* [XX7760 60 8760p2 2 2( ( ( ( (r   r   )'textwrapr   r   r@   re   pandas.errorsr   r   pandasr|   r   r   r   r	   r
   pandas._testing_testingr   pandas.core.arraysr   r   pandas.io.clipboardr   r   r   r   fixturerP   rY   r   usefixturesrh   rn   r   rx   r   r~   
single_cpur   r   r   r   <module>r      s                    
                              
                + + +\    ''% % ('%  ''" " ('"" 
  	 	! !	 	!       -..%%c( c( c( c( c( c( c( &% /.  c( c( c(r   