o
    Û­j$3  ã                   @   s6  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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dd„ ƒZ!ejj"ejj!ej d¡ej d¡G dd„ dƒƒƒƒƒZ#dS )é    )ÚdedentN)ÚPyperclipExceptionÚPyperclipWindowsException)ÚNAÚ	DataFrameÚSeriesÚ
get_optionÚread_clipboard)ÚCheckedCallÚ_stringifyTextÚinit_qt_clipboardc                 C   s(   i }|dkr
||d< | dkr| |d< |S )NÚdefaultÚexcelÚsep© )r   r   Úkwargsr   r   ú[/var/www/html/CropPilot/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rJtt dd„ tdƒD ƒ¡ dd¡tdƒd�S |dkrhtdƒ}ttj 	d¡j
dd|d dfd�tdƒd�S |dkrwtd ¡ d  ¡ d!œƒS |d"kr™td#ƒd ‰ tt ‡ fd$d„tdƒD ƒ¡ dd¡tdƒd�S |d%krµtt d&d'¡d( t dd)¡ tj¡td*ƒd+œƒS |d,krÈttj 	d¡ d-¡tdƒd�S |d.krÝttj 	d¡ 
ddd-¡tdƒ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                 S   s   g | ]}d |› �‘qS )zi-r   )Ú.0Úir   r   r   Ú
<listcomp>@   s    zdf.<locals>.<listcomp>é   é   é   )Úcolumnsr   zdisplay.max_rowsé   r   é
   é   )Úsizer   z
in Englishu   en espaÃ±ol)ÚenÚesr   zdisplay.max_colwidthc                    s   g | ]}d ˆ  ‘qS )Úxr   )r#   Ú_©Ú_cwr   r   r%   M   s    r   ç      ð?g      @g{®Gáz„?é   Ú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   r2   r   Údf%   sP   ÿ$ÿþ(ÿýÿÿrI   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_errorg   ó   z$mock_ctypes.<locals>._mock_win_errorzctypes.WinErrorF)ÚraisingN)ÚcontextÚsetattr)ÚmonkeypatchrK   Úmr   r   r   Úmock_ctypesa   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   rJ   ©NFr   r   r   r   r   Ú_return_falsew   rL   z6test_checked_call_with_bad_call.<locals>._return_falseúpandas.io.clipboard.get_errnoc                   S   rJ   ©NTr   r   r   r   r   Ú<lambda>z   ó    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_callp   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   rJ   rV   r   r   r   r   r   Ú_return_true‰   rL   z7test_checked_call_with_valid_call.<locals>._return_truerU   c                   S   rJ   rS   r   r   r   r   r   rW   Œ   rX   z3test_checked_call_with_valid_call.<locals>.<lambda>TN)rO   r
   )rP   r`   Úchecked_callr   r   r   Ú!test_checked_call_with_valid_call�   s   rb   Útext)ÚString_testTr,   r4   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 rY   )Ústrr   r   ÚboolÚ
isinstancer   Útyper[   r\   r]   r   )rc   Úvalid_typesÚresultr^   r   r   r   Útest_stringify_text“   s   
ÿÿ
"ÿrk   c                 c   sd   � t ƒ \}}|  ¡ �}| tjjd|¡ | tjjd|¡ d V  W d   ƒ d S 1 s+w   Y  d S )NÚclipboard_setÚclipboard_get)r   rN   rO   ÚpdÚioÚ	clipboard)rP   Úqt_cutÚqt_pasterQ   r   r   r   Úset_pyqt_clipboard¬   s   €

"ýrs   c                 c   s   � |   ¡ }|V  | ¡  d S )N)rp   Úclear)ÚqappÚclipr   r   r   rp   µ   s   €rp   c                   @   sF  e Zd Zej dg d¢¡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¡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 d)d*d+g¡d,d-„ ƒZd.d/„ Zd0d1„ ZdS )2ÚTestClipboardr   )Nú	ú,ú|Úencoding)NzUTF-8zutf-8r   c                 C   s2   |j d ||d� t|pdd|d�}t ||¡ d S )N)r   r   r{   rx   r   )r   Ú	index_colr{   )Úto_clipboardr	   ÚtmÚassert_frame_equal)ÚselfrI   r   r{   rj   r   r   r   Útest_round_trip_frame_sepÃ   s   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€   rI   rj   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)rZ   Úcheck_stacklevelTz\tr‚   )r~   Úassert_produces_warningÚUserWarningr}   ©r€   rI   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 )NFrx   r‚   )r~   r‡   r}   r‰   r   r   r   Útest_copy_delim_warningÜ   s   
"ÿz%TestClipboard.test_copy_delim_warning)rx   Nr   r   )TNr   c                 C   s6   t ||ƒ}|jdi |¤Ž | ¡ |jdd�ksJ ‚d S )Nrx   ©r   r   )r   r}   rc   Úto_csv)r€   r   r   rI   rp   r   r   r   r   Ú test_clipboard_copy_tabs_defaultâ   s   
z.TestClipboard.test_clipboard_copy_tabs_defaultNr   c                 C   sL   t |dƒ}|jdi |¤Ž tdd�}| ¡ | ¡ ksJ ‚|j|jks$J ‚d S )NFz\s+rŒ   r   )r   r}   r	   rƒ   r„   )r€   r   rI   r   rj   r   r   r   Útest_clipboard_copy_stringsê   s
   

z)TestClipboard.test_clipboard_copy_stringsc                 C   s–   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 ||¡ d S )	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€   rp   Úclip_kwargsrc   rI   ÚresÚexpr   r   r   Útest_read_clipboard_infer_excelò   s*   û
û
û
z-TestClipboard.test_read_clipboard_infer_excelc                 C   s<   d}|  |¡ tƒ }tg d¢g d¢dœd�}t ||¡ d S )Nzcol1	col2
1	red
	blue
2	green©r,   Nr*   ©ÚredÚblueÚgreen©Úcol1Úcol2)Údata©r“   r	   r   r~   r   )r€   rp   rc   rI   Údf_expectedr   r   r   Útest_infer_excel_with_nulls  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   r,   r   )TTF)z		col1	col2z	A	0	1	redz	A	1		bluezB	0	2	greenc                 C   sB   |  |d ¡ tƒ }tg d¢g d¢dœ|d d�}t ||¡ d S )Nr   r™   rš   rž   r,   )r¡   Úindexr¢   )r€   rp   r¥   rI   r£   r   r   r   Ú test_infer_excel_with_multiindex'  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 encodingrY   Úascii)r{   )r\   r]   rE   r}   ÚNotImplementedErrorr	   ©r€   rI   r^   r   r   r   Útest_invalid_encodingJ  s   ÿ"ÿz#TestClipboard.test_invalid_encodingr¡   )u   ðŸ‘�...u   Î©Å“âˆ‘`...zabcd...c                 C   s,   t d|giƒ}| ¡  tƒ }t ||¡ d S )Nr¡   )r   r}   r	   r~   r   )r€   r¡   rI   rj   r   r   r   Útest_raw_roundtripR  s   z TestClipboard.test_raw_roundtripr�   r7   r‘   c           	         s�  |dkr!t  d¡‰|dkr|dkrt ˆ ¡ ¡}nt ˆ ¡ ¡}nt |¡}d}| |¡ t d|¡� t	d||d�}W d   ƒ n1 sEw   Y  t
tddg|d	�td
dgdd	�tddgdd	�tdd g|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r±ddlm‰  t
‡ ‡‡fdd„ˆjD ƒƒ‰ˆ ˆ d d g¡ƒˆd< |rÀˆj tj|tjd�¡ˆ_t |ˆ¡ d S )NÚpyarrowr7   z@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_storagery   )r   Údtype_backendr�   r0   Úy)Údtyper,   r*   ÚInt64g      @g      @ÚFloat64TFÚboolean)	r   r    r7   ÚdÚeÚfÚgÚhr$   r   )ÚArrowExtensionArrayc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T)Úfrom_pandas)r:   )r#   Úcol©r¼   ÚexpectedÚpar   r   Ú
<dictcomp>‚  s    ÿÿzCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>rº   )Úna_value)r\   Úimportorskiprn   Ú
ArrowDtypeÚlarge_stringr   ÚStringDtyper“   Úoption_contextr	   r   r   r   Úpandas.arraysr¼   r)   r:   rC   r9   Únanr~   r   )	r€   rp   Ústring_storager±   r�   Úusing_infer_stringÚstring_dtyperc   rj   r   r¿   r   Ú!test_read_clipboard_dtype_backendZ  sH   


ÿ÷ÿþÿÿ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.rY   Únumpy)r±   )r\   r]   rE   r	   )r€   r^   r   r   r   Útest_invalid_dtype_backend�  s
   ÿ"ÿz(TestClipboard.test_invalid_dtype_backendc                 C   sT   t dg d¢iƒ}d}tjt|d�� | dd ¡ W d   ƒ d S 1 s#w   Y  d S )Nr   )r,   r*   r(   zTStarting with pandas version 3.0 all arguments of to_clipboard will be keyword-only.rY   T)r   r~   r‡   ÚFutureWarningr}   r­   r   r   r   Ú&test_to_clipboard_pos_args_deprecation˜  s   ÿ"ÿz4TestClipboard.test_to_clipboard_pos_args_deprecation)r[   Ú
__module__Ú__qualname__r\   ÚmarkÚparametrizer�   r…   rŠ   r‹   rŽ   r�   r˜   r¤   Újoinrª   r®   r¯   rÎ   rÐ   rÒ   r   r   r   r   rw   ¼   sH    	
(ÿ÷ÿüôþ


5rw   )$Útextwrapr   rÏ   r9   r\   Úpandas.errorsr   r   Úpandasrn   r   r   r   r   r	   Úpandas._testingÚ_testingr~   Úpandas.io.clipboardr
   r   r   r   ÚfixturerI   rR   rÕ   Úusefixturesr_   rb   rÖ   rk   rs   rp   Ú
single_cpurw   r   r   r   r   Ú<module>   sB    	ÿ
.




þ





