
    Owg3                        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j4                  g d	      d
        Zej4                  d        Zej:                  j=                  d      d        Zej:                  j=                  d      d        Z ej:                  jC                  dg d      d        Z"ej4                  d        Z#ej4                  d        Z$ej:                  jJ                  ej:                  jH                  ej:                  j=                  d      ej:                  j=                  d       G d d                                  Z&y)    )dedentN)PyperclipExceptionPyperclipWindowsException)NA	DataFrameSeries
get_optionread_clipboard)ArrowStringArrayStringArray)CheckedCall_stringifyTextinit_qt_clipboardc                 2    i }|dk7  r||d<   | dk7  r| |d<   |S )Ndefaultexcelsep )r   r   kwargss      U/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/test_clipboard.pybuild_kwargsr       s.    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(  rSt        t        j                  t	        d      D cg c]  }d| 	 c}      j                  dd      t        d            S |dk(  rUt        d      }t        t        j                  j                  d      j                  dd|dz   df      t        d            S |dk(  r*t        dj                         dj                         d       S |d!k(  rat        d"      dz   }t        t        j                  t	        d      D cg c]  }d#|z  	 c}      j                  dd      t        d            S |d$k(  r`t        t        j                  d%d&      d'z   t        j                  dd(      j                  t        j                        t        d)      d*      S |d+k(  rBt        t        j                  j                  d      j                  d,      t        d            S |d-k(  rDt        t        j                  j                  d      j                  ddd,      t        d            S t        c c}w c c}w ).Nr   z"a,	"b|czd	ef`zhi'jzk''lm)abr   u   µasdu   Ωœ∑`u   øπ∆˚¬u   œ∑`®r   u   👍👍abcdefr      zi-      )columnsr   zdisplay.max_rows   r   
      )sizer   z
in Englishu   en español)enesr   zdisplay.max_colwidthxr          ?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imax_rows_cw_s         r   dfrL   )   st    IHX6fg=NOPP	f	4M:;VWXX	g	)+AB%QVX
 	
 
h	HHb	211#h23;;AqA4PU;
 	
 
f	01II!!!$--a8a<:K-LK
 	
 
j	  2 2 4M<O<O<QRSS	j	 /014HHr3AcCi34<<QBDQVK
 	
 
g	YYsC(4/YYq!_++BHH5']
 	
 
g	..q188@$u+VV	e	II!!!$--aV<d5k
 	
 = 3 4s   8J'Jc              #      K   d }| j                         5 }|j                  d|d       d ddd       y# 1 sw Y   yxY ww)z<
    Mocks WinError to help with testing the clipboard.
    c                       y)NzWindow Errorr   r   r   r   _mock_win_errorz$mock_ctypes.<locals>._mock_win_errork   s    r   zctypes.WinErrorF)raisingN)contextsetattr)monkeypatchrO   ms      r   mock_ctypesrU   e   sE      
			 !			#_e	D  s   A8	AAArU   c                     d }| j                  dd        d|j                   d}t        j                  t        |      5   t        |              ddd       y# 1 sw Y   yxY w)z
    Give CheckCall a function that returns a falsey value and
    mock get_errno so it returns false so an exception is raised.
    c                       yNFr   r   r   r   _return_falsez6test_checked_call_with_bad_call.<locals>._return_false{   s    r   pandas.io.clipboard.get_errnoc                       yNTr   r   r   r   <lambda>z1test_checked_call_with_bad_call.<locals>.<lambda>~       r   zError calling z \(Window Error\)matchN)rR   __name__pytestraisesr   r   )rS   rY   msgs      r   test_checked_call_with_bad_callre   t   sa     7F=1122E
FC	0	< %"M"$% % %s   AA%c                 \    d }| j                  dd        t        |      } |       du sJ y)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                       yr\   r   r   r   r   _return_truez7test_checked_call_with_valid_call.<locals>._return_true   s    r   rZ   c                       yrX   r   r   r   r   r]   z3test_checked_call_with_valid_call.<locals>.<lambda>   r^   r   TN)rR   r   )rS   rh   checked_calls      r   !test_checked_call_with_valid_callrk      s6     7G |,L>T!!!r   text)String_testTr/   r4   y              ?c                 &   t         t        t        t        f}t	        | |      rt        |       }|t        |       k(  sJ y dt        |       j                   }t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)NzJonly str, int, float, and bool values can be copied to the clipboard, not r_   )strr"   r!   bool
isinstancer   typera   rb   rc   r   )rl   valid_typesresultrd   s       r   test_stringify_textru      s     UD)K$$%T"""337:3F3F2GI 	 ]]-S9 	!4 	! 	! 	!s   2BBc              #   $  K   t               \  }}| j                         5 }|j                  t        j                  j
                  d|       |j                  t        j                  j
                  d|       d  d d d        y # 1 sw Y   y xY ww)Nclipboard_setclipboard_get)r   rQ   rR   pdio	clipboard)rS   qt_cutqt_pasterT   s       r   set_pyqt_clipboardr~      sh     (*FH				 !			"%%//?F;			"%%//?H=  s   BAB;	BB	Bc              #   T   K   | j                         }| |j                          y w)N)r{   clear)qappclips     r   r{   r{      s      >>D
JJJLs   &(r~   r{   c                      e Zd Zej                  j                  dg d      ej                  j                  dg d      d               Zd Zd Zd Z	ej                  j                  dg d	      ej                  j                  d
g d      d               Z
ej                  j                  dddg      d        Zd Zd Zej                  j                  ddj                  g d      g dg dg dgfdj                  g d      g dg dgfg      d        Zd Zej                  j                  dg d      d        Zej                  j                  ddd g      d!        Zd" Zd# Zy)$TestClipboardr   )N	,|encoding)NzUTF-8zutf-8r   c                 |    |j                  d ||       t        |xs dd|      }t        j                  ||       y )N)r   r   r   r   r   )r   	index_colr   )to_clipboardr
   tmassert_frame_equal)selfrL   r   r   rt   s        r   test_round_trip_frame_sepz'TestClipboard.test_round_trip_frame_sep   s8     	dh?CK41xP
b&)r   c                     |j                  dd        t               }|j                         |j                         k(  sJ |j                  |j                  k(  sJ y )NFr   r   )r   r
   	to_stringshape)r   rL   rt   s      r   test_round_trip_frame_stringz*TestClipboard.test_round_trip_frame_string   sM    
e.!||~!1!1!3333xx6<<'''r   c                     t        j                  t        dd      5  |j                  dd       d d d        y # 1 sw Y   y xY w)NzAto_clipboard in excel mode requires a single character separator.F)r`   check_stacklevelTz\tr   )r   assert_produces_warningUserWarningr   r   rL   s     r   test_excel_sep_warningz$TestClipboard.test_excel_sep_warning   s@    ''U"
 	3
 OO$EO2	3 	3 	3s	   :Ac                 |    t        j                         5  |j                  dd       d d d        y # 1 sw Y   y xY w)NFr   r   )r   r   r   r   s     r   test_copy_delim_warningz%TestClipboard.test_copy_delim_warning   s3    '') 	3OO%TO2	3 	3 	3s   2;)r   Nr   r   )TNr   c                     t        ||      } |j                  di | |j                         |j                  d      k(  sJ y )Nr   r   r   )r   r   rl   to_csv)r   r   r   rL   r{   r   s         r    test_clipboard_copy_tabs_defaultz.TestClipboard.test_clipboard_copy_tabs_default   sA     c5)!&!~~2999#6666r   Nr   c                     t        |d      } |j                  di | t        d      }|j                         |j                         k(  sJ |j                  |j                  k(  sJ y )NFz\s+r   r   )r   r   r
   r   r   )r   r   rL   r   rt   s        r   test_clipboard_copy_stringsz)TestClipboard.test_clipboard_copy_strings   s\    c5)!&!F+!R\\^333xx6<<'''r   c                    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        j                  ||       y )	Nenginepythonz^
            John James	Charlie Mingus
            1	2
            4	Harry Carney
            )r/   r/   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_kwargsrl   rL   resexps          r   test_read_clipboard_infer_excelz-TestClipboard.test_read_clipboard_infer_excel   s    * 
 	$*k* wwt}...  
 	$+{+ 
 	$+{+
c3'r   c                     d}|j                  |       t               }t        g dg dd      }t        j                  ||       y )Nzcol1	col2
1	red
	blue
2	greenr/   Nr-   redbluegreencol1col2)datar   r
   r   r   r   )r   r{   rl   rL   df_expecteds        r   test_infer_excel_with_nullsz)TestClipboard.test_infer_excel_with_nulls  sB    5$&0HI

 	b+.r   
multiindex
)z			col1	col2zA	0	True	1	redzA	1	True		bluezB	0	False	2	green)Ar   B)r   r/   r   )TTF)z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                     |j                  |d          t               }t        g dg dd|d         }t        j                  ||       y )Nr   r   r   r   r/   )r   indexr   )r   r{   r   rL   r   s        r    test_infer_excel_with_multiindexz.TestClipboard.test_infer_excel_with_multiindex+  sJ    2 	*Q-(&0HIQ-
 	b+.r   c                    d}t        j                  t        |      5  |j                  d       d d d        t        j                  t        |      5  t        d       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nz&clipboard only supports utf-8 encodingr_   ascii)r   )rb   rc   rE   r   NotImplementedErrorr
   r   rL   rd   s      r   test_invalid_encodingz#TestClipboard.test_invalid_encodingN  si    6]]:S1 	.OOWO-	.]].c: 	-G,	- 	-	. 	.	- 	-s   A*A6*A36A?r   )u   👍...u   Ωœ∑`...zabcd...c                     t        d|gi      }|j                          t               }t        j                  ||       y )Nr   )r   r   r
   r   r   )r   r   rL   rt   s       r   test_raw_roundtripz TestClipboard.test_raw_roundtripV  s7     '(
!
b&)r   r   r7   r   c                    |dk(  s|dk(  rt        j                  d      }|dk(  ret        t        j                  ddgt        j
                              }t        t        j                  dt        gt        j
                              }n|dk(  rS|dk7  rNt        j                  d      }ddlm}  ||j	                  ddg            } ||j	                  dd g            }n8t        j	                  ddg            }t        |j	                  dd g            }d	}	|j                  |	       t        j                  d
|      5  t        d||      }
d d d        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(  r`ddlm} t        |j                   D ci c]  }| |j	                  ||   d            ! c}      } |j	                  d d g            |d<   t#        j$                  
|       y # 1 sw Y   
xY wc c}w )Npyarrowr   r3   y)dtyper7   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   r/   r-   Int64g      @g      @Float64TFboolean)	r%   r&   r7   defghrH   )from_pandasr   )rb   importorskipr   r9   r:   object_r   pandas.arraysr   r   r   ry   option_contextr
   r   r   r,   r   r   )r   r{   string_storager   r   pastring_arraystring_array_nar   rl   rt   expectedcols                r   !test_read_clipboard_dtype_backendz/TestClipboard.test_read_clipboard_dtype_backend^  s0   
 Y&-9*D$$Y/BX%&rxxc
"**'MNL)"((C9BJJ*OPOi'FcM$$Y/B9.rxxc
/CDL1"((C;2GHO ,BHHc3Z,@AL.rxxd/DEO 	$4nE 	Y#=QWXF	Y !QF'2S#Ji8$QG73S"IY7RHG4T5M;UBKy9

 I%9   (// ,RXXhsmQUX-VWWH 0$0FGHSM
fh/7	Y 	Y(s   I<$I'I$c                     d}t        j                  t        |      5  t        d       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r_   numpy)r   )rb   rc   rE   r
   )r   rd   s     r   test_invalid_dtype_backendz(TestClipboard.test_invalid_dtype_backend  s9    % 	 ]]:S1 	21	2 	2 	2s   4=c                     t        dg di      }d}t        j                  t        |      5  |j	                  dd        d d d        y # 1 sw Y   y xY w)Nr%   )r/   r-   r+   zTStarting with pandas version 3.0 all arguments of to_clipboard will be keyword-only.r_   T)r   r   r   FutureWarningr   r   s      r   &test_to_clipboard_pos_args_deprecationz4TestClipboard.test_to_clipboard_pos_args_deprecation  sP    Y'(% 	 ''SA 	(OOD$'	( 	( 	(s   A		A)ra   
__module____qualname__rb   markparametrizer   r   r   r   r   r   r   r   joinr   r   r   r   r   r   r   r   r   r   r      s    [[U$:;[[Z)IJ* K <*(33 [[U$;<[[W&=>7 ? =7 [[UT9$56( 7(&(P/ [[ 		 !)-@A
 		X !),		
,/-,/- [[V%PQ* R* [[XX760 860p2(r   r   )'textwrapr   r   r9   rb   pandas.errorsr   r   pandasry   r   r   r   r	   r
   pandas._testing_testingr   pandas.core.arraysr   r   pandas.io.clipboardr   r   r   r   fixturerL   rU   r   usefixturesre   rk   r   ru   r~   r{   
single_cpur   r   r   r   <module>r      s     
   
  ++\   '% (%  '" ("" 
	!	!     -.%c( c( & /  c(r   