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
109
110
111
112
113
114
115
116
117
U
­ý°d·Hã@sÞddlmZddlmZddlmZddlZddlZddlm    Z    m
Z
ddl m Z ddlmZejdd„ƒZd    d
„Zd d „Zd d„Zdd„Zdd„Zdd„Zej dddg¡dd„ƒZdd„Zdd„Zdd„Zd d!„Zej dddg¡d"d#„ƒZej ddd$d%d&g¡d'd(„ƒZ ej dddd)g¡d*d+„ƒZ!d,d-„Z"ej d.dd)g¡d/d0„ƒZ#ej d1d2d3g¡d4d5„ƒZ$d6d7„Z%d8d9„Z&d:d;„Z'ej d<d=d>d?g¡d@dA„ƒZ(dBdC„Z)ej dDdEdFg¡dGdH„ƒZ*dIdJ„Z+dKdL„Z,dMdN„Z-dOdP„Z.dS)Qé)ÚStringIO)ÚPath)ÚIteratorN)Ú    DataFrameÚ    read_json)Ú
JsonReadercCs(tdddgdddgdœƒ}|jdd    d
S) Néééééé©ÚAÚBTÚrecords©ÚlinesÚorient)rÚto_json)Údf©rúZd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/json/test_readlines.pyÚ lines_json_dfsrcCs8tddd}tddgddggddgd}t ||¡dS)    Nz!{"a": 1, "b": 2}
{"b":2, "a" :1}
T©rrr    ÚaÚb©Úcolumns©rrÚtmÚassert_frame_equal)ÚresultÚexpectedrrrÚtest_read_jsonls r$cCsBt|ddddƒd|d}tddd    gd
d d gd œƒ}t ||¡dS)NÚioÚjsonÚdataúline_delimited.jsonT©rÚenginerr
r r    r r ©rrr)Údatapathr*r"r#rrrÚtest_read_jsonl_engine_pyarrows ýr-cCs’|dkr$d}|j tjj|td¡tddgddgdfgd    d
d gd }|jd dd}t||d}tdddgdddggd    d
d gd }t     
||¡dS)NÚpyarrowzEPyarrow only supports a file path as an input and line delimited json©ÚreasonÚraisesrr    z
2020-03-05z2020-04-08T09:58:49+00:00ZhectorZaccountsÚdateÚnamerTrr©r*) ÚnodeÚ
add_markerÚpytestÚmarkÚxfailÚ
ValueErrorrrrr r!)Úrequestr*r0rZ    json_liner"r#rrrÚtest_read_datetime(sþ þr<cCs|d}t|ƒ}t|dd}tddgddggddgd    }t ||¡d}t|dd}tddgddggddgd    }t ||¡dS)
Nu5{"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
Trufoo”ÚbarÚfoorrr)rrrr r!)r&r"r#rrrÚtest_read_jsonl_unicode_chars<s   r?cCsÚtddgddggddgd}|jddd}d    }||ks:t‚td
d gd d ggddgd}|jddd}d }||kstt‚t t|dd|¡tdd gd d ggddgd}|jddd}d}||ksÂt‚t t|dd|¡dS)Nrr    rrrrT©rrz{"a":1,"b":2}
{"a":1,"b":2}
zfoo}r=zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
rzfoo\za\z4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)rrÚAssertionErrorr r!r)rr"r#rrrÚ test_to_jsonlNs   rBcCsDtddgddggddgd}|jddd d    ¡}d}||ks@t‚dS)
Nrr    rrrrTr@Ú
)rrÚcountrA)rZactual_new_lines_countZexpected_new_lines_countrrrÚtest_to_jsonl_count_new_linescsrEÚ    chunksizergð?c    Csn|dkr$d}|j tjj|td¡tt|ƒdd}tt|ƒd||d}t     |¡}W5QRXt
  ||¡dS)Nr.úmPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r/Tr©rrFr*) r5r6r7r8r9r:rrÚpdÚconcatr r!)r;rrFr*r0Ú    unchunkedÚreaderÚchunkedrrrÚtest_readjson_chunksksÿÿrNc
CsBd}tjt|d&tt|ƒdd|d}W5QRXW5QRXdS)Nz*chunksize can only be passed if lines=True©ÚmatchFr    rH©r7r1r:rr)rr*ÚmsgÚ_rrrÚ&test_readjson_chunksize_requires_lines‚sÿrTc    Csž|dkr"d}|j tjj|d¡t dddœ¡}t|jddd    ƒ}t    |dd
|d }t|jddd    ƒ}t    |dd
d|d }t 
|¡}W5QRXt   ||¡dS) Nr.rG)r0rr    rTrrÚSeries)rÚtypr*)rrVrFr*) r5r6r7r8r9rIrUrrrrJr Zassert_series_equal)r;r*r0ÚsZstriorKrLrMrrrÚtest_readjson_chunks_series‹s$ÿÿrXc    Cst|dkr$d}|j tjj|td¡tt|ƒdd|d}t|ƒ}W5QRX|dj    dks^t
‚|d    j    d
kspt
‚dS) Nr.rGr/Tr    rHr©r    r    r)rr    ) r5r6r7r8r9r:rrÚlistÚshaperA)r;rr*r0rLÚchunksrrrÚtest_readjson_each_chunk£sÿÿr]c
Cs¨|dkr$d}|j tjj|td¡t d¡p}tdddgdd    d
gd œƒ}|j    |d d dt
|d d|d}t   |¡}W5QRXt
|d |d}t  ||¡W5QRXdS)Nr.rGr/ú    test.jsonrr    r
r r r rTrrrHr))r5r6r7r8r9r:r Ú ensure_cleanrrrrIrJr!)r;r*r0ÚpathrrLrMrKrrrÚtest_readjson_chunks_from_file¶sÿ racCs˜t d¡„}tdddgdddgdœƒ}|j|d    d
d t|dd d    d    d    d    d ddd    |ddd}|| ¡W5QRX|jjjsŠt    d|›ƒ‚W5QRXdS)Nr^rr    r
r r r rTrrÚframeF) rrVZdtypeZ convert_axesZ convert_datesZkeep_default_datesZ precise_floatZ    date_unitÚencodingrrFÚ compressionÚnrowsz%didn't close stream with chunksize = )
r r_rrrÚreadZhandlesÚhandleÚclosedrA)rFr`rrLrrrÚtest_readjson_chunks_closesÈs2 òÿþriéÿÿÿÿgš™™™™™@r>c
CsBd}tjt|d&tt|ƒd||d}W5QRXW5QRXdS)Nz"'chunksize' must be an integer >=1rOTrHrQ)rrFr*rRrSrrrÚtest_readjson_invalid_chunksizeäsÿrkr    c    Cshd}tdddgdddgdœƒ}t|d    |d
}|dk    rN|t |¡}W5QRXtj||d |›d dS) NzF
 
    {"A":1,"B":4}
 
 
 
    {"A":2,"B":5}
 
 
 
 
 
 
 
    {"A":3,"B":6}
    rr    r
r r r rT©rrFz chunksize: )Úobj)rrrIrJr r!)rFÚjÚorigÚtestrrrÚ)test_readjson_chunks_multiple_empty_linesïsrqc
Cs˜|dkr$d}|j tjj|td¡t d¡`}| ddd„¡t    |dd    d
}| 
d ¡W5QRXt ||d }t d dgiƒ}t  ||¡W5QRXdS)Nr.rGr/r^zlocale.getpreferredencodingcSsdS)NÚcp949r)Ú do_setlocalerrrÚ<lambda>óz'test_readjson_unicode.<locals>.<lambda>Úwzutf-8)rcu6{"£©µÀÆÖÞßéöÿ":["АБВГДабвгд가"]}r4u£©µÀÆÖÞßéöÿuАБВГДабвгд가)r5r6r7r8r9r:r r_ÚsetattrÚopenÚwriterrr!)r;Z monkeypatchr*r0r`Úfr"r#rrrÚtest_readjson_unicode    sÿ  r{recCsJd}t|d|d}tddddgdd    d
d gd œƒjd|…}t ||¡dS) Nú[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}T)rrerr
r ér    r r ér+)rrÚilocr r!)rer*Újsonlr"r#rrrÚtest_readjson_nrowss(rznrows,chunksizerY)r r    c        Csˆ|dkr$d}|j tjj|td¡d}t|d|||d}t |¡}W5QRXt    ddd    d
gd d d dgdœƒj
d|…}t   ||¡dS)Nr.rGr/r|T)rrerFr*rr
r r}r    r r r~r+) r5r6r7r8r9r:rrIrJrrr r!)    r;rerFr*r0r€rLrMr#rrrÚtest_readjson_nrows_chunks)s ÿÿ(r‚c    Cs6d}d}tjt|dt|dd|dW5QRXdS)Nr|z&nrows can only be passed if lines=TruerOFr    )rrer*)r7r1r:r)r*r€rRrrrÚ"test_readjson_nrows_requires_linesAsrƒc
    CsÌ|dkr$d}|j tjj|td¡tddggddgdgd    td
d ggddgdgd    td d ggddgdgd    g}|ddddƒ}t|ƒ ¡}t    |dd|d(}t
|ƒD]\}}    t   |    ||¡q¤W5QRXdS)Nr.rGr/rr    rrr)rÚindexr
r r r r%r&r'r(TrH) r5r6r7r8r9r:rrÚas_urirÚ    enumerater r!)
r;r,r*r0Zdf_list_expectedZos_pathZfile_urlZ
url_readerr„ZchuckrrrÚ"test_readjson_lines_chunks_fileurlMsÿý r‡cCsNdd}Gdd„dƒ}||ƒ}ttt|dddƒƒdks<t‚|jd    ksJt‚dS)
Nz\{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}
ièc@s0eZdZddœdd„Zdd„Zedœdd„ZdS)    z/test_chunksize_is_incremental.<locals>.MyReaderN)ÚreturncSsd|_t|ƒ|_dS)Nr)Ú
read_countrÚstringio)ÚselfÚcontentsrrrÚ__init__osz8test_chunksize_is_incremental.<locals>.MyReader.__init__cWs|jd7_|jj|ŽS©Nr)r‰rŠrf)r‹Úargsrrrrfssz4test_chunksize_is_incremental.<locals>.MyReader.readcSs|jd7_t|jƒSrŽ)r‰ÚiterrŠ)r‹rrrÚ__iter__wsz8test_chunksize_is_incremental.<locals>.MyReader.__iter__)Ú__name__Ú
__module__Ú __qualname__rrfrr‘rrrrÚMyReadernsr•Tédrlré
)ÚlenrZrrAr‰)r€r•rLrrrÚtest_chunksize_is_incrementaldsüÿ r™Úorient_Úsplitr„Útablec    CsFtddgddgdœƒ}d}tjt|d|jd|dW5QRXdS)    Nrr    rr©Úcol1Úcol2úOmode='a' \(append\) is only supported whenlines is True and orient is 'records'rO)Úmoder©rr7r1r:r)ršrrRrrrÚtest_to_json_append_orient€s
ÿr£c    CsHtddgddgdœƒ}d}tjt|d|jddd    d
W5QRXdS) Nrr    rrrr rOFr©r¡rrr¢)rrRrrrÚtest_to_json_append_liness
ÿr¥Úmode_ÚrÚxc    CsPtddgddgdœƒ}d|›d}tjt|d|j|d    d
d W5QRXdS) Nrr    rrrzmode=z@ is not a valid option.Only 'w' and 'a' are currently supported.rOFrr¤r¢)r¦rrRrrrÚtest_to_json_append_mode™s
 
ÿr©c    Csžtddgddgdœƒ}tddgdd    gdœƒ}tddddgdddd    gdœƒ}t d
¡@}|j|d d d |j|dd d dt|d d}t ||¡W5QRXdS)Nrr    rrrr
r ÚcÚdr^Trrr¤r©rr r_rrr!)Údf1Údf2r#r`r"rrrÚ-test_to_json_append_output_consistent_columns¦s  r¯c    Csªtddgddgdœƒ}tddgdd    gd
œƒ}tddddgddddgdddd    gd œƒ}t d ¡B}|j|dd dd|j|dd ddt|d d}t ||¡W5QRXdS)Nrr    rrrÚerzú!ú#©rŸÚcol3)ržrŸr´r^Trr¤rr¬)r­Údf3r#r`r"rrrÚ/test_to_json_append_output_inconsistent_columns¸s
 
 
ýÿ  r¶c Cs(tddgddgdœƒ}tddgdd    gdœƒ}td
d gd d gdœƒ}tdddgiƒ}tddddddddgdddd    d
d ddgddddd d ddgddddddddgdœƒ ddi¡}t d¡f}|j|dddd|j|dddd|j|dddd|j|ddddt|dd}t ||¡W5QRXdS)Nrr    rrrr
r rªr«r°rzr±r²r³Úcol4TF)ržrŸr´r·Úfloatr^rr¤r©rZastyper r_rrr!©r­r®rµZdf4r#r`r"rrrÚ,test_to_json_append_output_different_columnsÐs(üÿù  r»c Cs(tddgddgdœƒ}tddgdd    gdœƒ}td
d gd d gdœƒ}tdddgiƒ}tddddddddgddd
d dd    ddgddd d ddddgddddddddgdœƒ ddi¡}t d¡f}|j|dddd|j|dddd|j|dddd|j|ddddt|dd}t ||¡W5QRXdS)Nrr    rrrr
r rªr«r°rzr±r²r³r·TF)r·rŸr´ržr¸r^rr¤rr¹rºrrrÚ6test_to_json_append_output_different_columns_reorderedís(üÿù  r¼)/r%rÚpathlibrÚtypingrr7ZpandasrIrrZpandas._testingZ_testingr Zpandas.io.json._jsonrZfixturerr$r-r<r?rBrEr8Z parametrizerNrTrXr]rarirkrqr{rr‚rƒr‡r™r£r¥r©r¯r¶r»r¼rrrrÚ<module>sX