1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
U
­ý°dú;ã @szddlZddlZddlmZddlZddlZddlmZm    Z    m
Z
ddl m Z m Z ddlZddlmZmZmZmZmZddlmZddlmZmZddlmZmZmZmZdd    „Z ej!d
d d d ddddddg
ddd„ƒZ"ej!dd„ƒZ#ej$ %d¡dd„ƒZ&ej$ %d¡dd„ƒZ'ej$ (dddd d!d"g¡d#d$„ƒZ)ej!d%d&„ƒZ*ej$j+d'd(„ƒZ,ej$j-ej$j+ej$ %d&¡Gd)d*„d*ƒƒƒƒZ.dS)+é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_setcCs(i}|dkr||d<|dkr$||d<|S)NÚdefaultÚexcelÚsep©)rrÚkwargsrrúUd:\z\workplace\vscode\pyvenv\venv\Lib\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}|dkr$tddgddgdœƒS|dkrBtdd    gd
d gdœƒS|d kr`td d gddgdœƒS|dkr‚tjdddddgdgdS|dkr¶tdƒ}tj|dddd„dddgdgdS|dkrÔtd ¡d ¡dœƒS|d krtd!ƒd‰tjdd‡fd"d„dddgdgdS|d#krHtt d$d%¡d&t dd'¡ tj    ¡t
d(ƒd)œƒS|d*krrtjddd+d„dddgdgdS|d,krœtjddd-d„dddgdgdSt ‚dS).Nrz"a,    "b|cud    ef´zhi'jzk''lm)ÚaÚbruµasdu    Î©Å“∑´u øπ∆˚¬u    Å“∑´®ru👍👍ÚabcÚdefrééÚsÚi)Ú
c_idx_typeÚ
r_idx_typeÚ c_idx_namesÚ r_idx_namesrzdisplay.max_rowsécWs tj d¡S©Né©ÚnpÚrandomÚrandint©ÚargsrrrÚ<lambda>Sózdf.<locals>.<lambda>)Z
data_gen_fr-r.r/r0rz
in Englishu en español)ÚenÚesr zdisplay.max_colwidthcsdˆS)NÚxrr8©Z_cwrrr:`r;r!çð?g@ç{®Gáz„?éZabcde)r%r&Úcr"cSs t|ƒdS)NrA)r")ÚrrCrrrr:rr;r#cWs tj d¡Sr2r4r8rrrr:|r;) Úparamr    ÚtmZmakeCustomDataframer Úsplitr5ZarangeZastypeÚint64ÚlistÚ
ValueError)ÚrequestZ    data_typeZmax_rowsrr?rÚdf1sŒÿÿù    
 
ù    
ýÿ
ù    
ù
rLc    cs6dd„}| ¡}|jd|dddVW5QRXdS)z<
    Mocks WinError to help with testing the clipboard.
    cSsdS)Nz Window ErrorrrrrrÚ_mock_win_errorŒsz$mock_ctypes.<locals>._mock_win_errorzctypes.WinErrorF)ZraisingN)ÚcontextÚsetattr)Ú monkeypatchrMÚmrrrÚ mock_ctypes†s
rRc    CsNdd„}| ddd„¡d|j›d}tjt|dt|ƒƒW5QRXd    S)
    Give CheckCall a function that returns a falsey value and
    mock get_errno so it returns false so an exception is raised.
    cSsdS©NFrrrrrÚ _return_falseœsz6test_checked_call_with_bad_call.<locals>._return_falseúpandas.io.clipboard.get_errnocSsdS©NTrrrrrr:Ÿr;z1test_checked_call_with_bad_call.<locals>.<lambda>zError calling z \(Window Error\)©ÚmatchN)rOÚ__name__ÚpytestÚraisesrr)rPrTÚmsgrrrÚtest_checked_call_with_bad_call•s
r]cCs2dd„}| ddd„¡t|ƒ}|ƒdks.t‚dS)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.
    cSsdSrVrrrrrÚ _return_true®sz7test_checked_call_with_valid_call.<locals>._return_truerUcSsdSrSrrrrrr:±r;z3test_checked_call_with_valid_call.<locals>.<lambda>TN)rOrÚAssertionError)rPr^Z checked_callrrrÚ!test_checked_call_with_valid_call¦sr`ÚtextZ String_testTr1r@yð?c    Csfttttf}t||ƒr0t|ƒ}|t|ƒksbt‚n2dt|ƒj›}t    j
t |dt|ƒW5QRXdS)NzJonly str, int, float, and bool values can be copied to the clipboard, not rW) Ústrr#r"ÚboolÚ
isinstancerr_ÚtyperYrZr[r)raZ valid_typesÚresultr\rrrÚtest_stringify_text¸s 
ÿrgc#sBi‰‡‡fdd„}‡‡fdd„}| d|¡| d|¡ˆVdS)aMFixture 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.
    cs|ˆˆjj<dS©N©ÚnodeÚname©Údata©Z
_mock_datarKrrÚ    _mock_setász!mock_clipboard.<locals>._mock_setcs ˆˆjjSrhrirrnrrÚ    _mock_getäsz!mock_clipboard.<locals>._mock_getz!pandas.io.clipboard.clipboard_setz!pandas.io.clipboard.clipboard_getN)rO)rPrKrorprrnrÚmock_clipboardÑs   rqcCsFddl}|jj d¡dt| ¡ƒks*t‚|jj ¡}|dksBt‚dS)Nrr')Úpandas.io.clipboardÚioÚ    clipboardrÚsetÚvaluesr_r)rqÚpandasrfrrrÚtest_mock_clipboardís
 rxc
@s´eZdZdFdd„Zdd„Zej dddd    g¡d
d „ƒZd d „Z    dd„Z
dd„Z ej ddddg¡ej ddddg¡dd„ƒƒZ ej dddg¡ej ddg¡dd„ƒƒZ dd„Zdd„Zej dd d d!d"d#g¡d$d$d%gd&d'd&gdddggfd d(d)d*d+g¡d$d$d%gd&d'd&ggfg¡d,d-„ƒZd.d/„Zej d0d1d2d3g¡d4d5„ƒZejjej d6d7d8d9g¡ejjej d:¡dkoxeƒ d;dd<d=d>„ƒƒƒZej d?d@dAg¡dBdC„ƒZdDdE„ZdS)GÚ TestClipboardNcCs2|j|||dt|pdd|d}t ||¡dS)N)rrÚencodingú    r)rZ    index_colrz)Ú to_clipboardr rFÚassert_frame_equal)ÚselfrmrrrzrfrrrÚcheck_round_trip_frameûsz$TestClipboard.check_round_trip_framecCs| |¡dSrh©r©r~rLrrrÚtest_round_trip_framesz#TestClipboard.test_round_trip_framerr{ú,ú|cCs|j||ddS)N©rr€)r~rLrrrrÚtest_round_trip_frame_sepsz'TestClipboard.test_round_trip_frame_sepcCs<|jdddtƒ}| ¡| ¡ks(t‚|j|jks8t‚dS)NF©rr)r|r Ú    to_stringr_Úshape)r~rLrfrrrÚtest_round_trip_frame_string
sz*TestClipboard.test_round_trip_frame_stringc    Cs.tjtddd|jdddW5QRXdS)NzAto_clipboard in excel mode requires a single character separator.F)rXZcheck_stacklevelTz\tr‡)rFÚassert_produces_warningÚ UserWarningr|rrrrÚtest_excel_sep_warnings ýz$TestClipboard.test_excel_sep_warningc    Cs&t ¡|jdddW5QRXdS)NFr{r‡)rFr‹r|rrrrÚtest_copy_delim_warnings
z%TestClipboard.test_copy_delim_warningrrTcCs6t||ƒ}|jf|Ž||jj|jddks2t‚dS)Nr{r…)rr|rjrkZto_csvr_)r~rrrLrKrqrrrrÚ test_clipboard_copy_tabs_default!s
 z.TestClipboard.test_clipboard_copy_tabs_defaultFcCsHt||ƒ}|jf|Žtdd}| ¡| ¡ks4t‚|j|jksDt‚dS)Nz\s+r…)rr|r rˆr_r‰)r~rrrLrrfrrrÚtest_clipboard_copy_strings)s
 
 
z)TestClipboard.test_clipboard_copy_stringscCs”ddi}td ¡ƒ}|||jj<tf|Ž}|jdddks@t‚td ¡ƒ}|||jj<tf|Ž}td ¡ƒ}|||jj<tf|Ž}t ||¡dS)NÚengineÚpythonz^
            John James    Charlie Mingus
            1    2
            4    Harry Carney
            r1z Harry Carneyz@
            a     b
            1  2
            3  4
            z@
            a  b
            1  2
            3  4
            )    rÚstriprjrkr Zilocr_rFr})r~rKrqZ clip_kwargsrarLÚresÚexprrrÚtest_read_clipboard_infer_excel2s$ÿ 
ÿ 
ÿ 
z-TestClipboard.test_read_clipboard_infer_excelcCsBd}|||jj<tƒ}tdddgdddgdœd}t ||¡dS)    Nzcol1    col2
1    red
    blue
2    greenr1r3ÚredÚblueÚgreen©Zcol1Zcol2rl©rjrkr r    rFr})r~rKrqrarLÚ df_expectedrrrÚtest_infer_excel_with_nullsZs ÿz)TestClipboard.test_infer_excel_with_nullsÚ
multiindexÚ
z             col1    col2zA    0    True    1    redzA    1    True        bluezB    0    False    2    greenÚAÚBrr1z         col1    col2z    A    0    1    redz    A    1        bluez B    0    2    greencCsH|d||jj<tƒ}tdddgdddgdœ|dd}t ||¡dS)    Nrr1r3r—r˜r™rš)rmÚindexr›)r~rKrqržrLrœrrrÚ test_infer_excel_with_multiindexgsþz.TestClipboard.test_infer_excel_with_multiindexc    CsRd}tjt|d|jddW5QRXtjt|dtddW5QRXdS)Nz&clipboard only supports utf-8 encodingrWÚascii©rz)rZr[rJr|ÚNotImplementedErrorr )r~rLr\rrrÚtest_invalid_encodingŠs
z#TestClipboard.test_invalid_encodingÚenczUTF-8zutf-8rcCs|j||ddS)Nr¥r€)r~r¨rLrrrÚtest_round_trip_valid_encodings’sz-TestClipboard.test_round_trip_valid_encodingsrmu👍...u Ωœ∑´...zabcd...ZDISPLAYzBCannot be runed if a headless system is not put in place with Xvfb)ÚreasonÚstrictcCs:t|ƒ|tƒkst‚tƒr6tƒr6tjdddgdddS)NZxselz--deletez --clipboardT)Úcheck)rrr_rrÚ
subprocessÚrun)r~rmrrrÚtest_raw_roundtrip–s     z TestClipboard.test_raw_roundtripr‘rCr’c
sv|dks|dkrt d¡‰|dkrTttjddgtjdƒ}ttjdtgtjdƒ}n$tˆ ddg¡ƒ}tˆ ddg¡ƒ}d}|||jj    <t
  d|¡t d||d    }    W5QRXt |td
d gd dtd dgdd|td tgd dtd tgddtttgd dtddgddtdtgdddœ    ƒ‰|dkrfddlm‰t ‡‡‡fdd„ˆjDƒƒ‰ˆˆ ddg¡ƒˆd<t |    ˆ¡dS)NZpyarrowr’r>Úy)Zdtypez@a,b,c,d,e,f,g,h,i
x,1,4.0,x,2,4.0,,True,False
y,2,5.0,,,,,False,zmode.string_storagerƒ)rÚ dtype_backendr‘r1r3ZInt64g@g@ZFloat64TFÚboolean)    r%r&rCÚdÚeÚfÚgÚhr,r)ÚArrowExtensionArraycs$i|]}|ˆˆjˆ|ddƒ“qS)T)Z from_pandas)Úarray)Ú.0Úcol©r¸ÚexpectedÚparrÚ
<dictcomp>ÎsÿzCTestClipboard.test_read_clipboard_dtype_backend.<locals>.<dictcomp>r¶)rZZ importorskiprr5r¹Zobject_rr rjrkÚpdZoption_contextr r    r
Z pandas.arraysr¸ÚcolumnsrFr})
r~rKrqZstring_storager±r‘Z string_arrayZstring_array_nararfrr¼rÚ!test_read_clipboard_dtype_backend¥s@
 ÷ÿ
 þÿz/TestClipboard.test_read_clipboard_dtype_backendc    Cs,d}tjt|dtddW5QRXdS)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rWÚnumpy)r±)rZr[rJr )r~r\rrrÚtest_invalid_dtype_backend×sÿz(TestClipboard.test_invalid_dtype_backend)NNN)rYÚ
__module__Ú __qualname__rr‚rZÚmarkÚ parametrizer†rŠrrŽrrr–rÚjoinr£r§r©Ú
single_cpuZxfailÚosÚenvironÚgetrr¯rÂrÄrrrrry÷s`
 
      ( üÿ÷ 
ÿüôþ
 
ý
1ry)/rËr­ÚtextwraprrÃr5rZZ pandas.compatrrrZ pandas.errorsrrrwrÀrr    r
r r Zpandas._testingZ_testingrFZpandas.core.arraysr rrrrrrrrZfixturerLrRrÇZ usefixturesr]r`rÈrgrqrtrxrÊryrrrrÚ<module>sd      öÿ
G
 
 
 
 
ûþ