zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
­ý°dÿyã@s®ddlZddlZddlZddlmZmZmZmZddl    m
Z ddl m Z ejdd„ƒZejdd„ƒZejdd    „ƒZejd
d „ƒZejd d „ƒZGdd„dƒZGdd„dƒZdS)éN)Ú    DataFrameÚIndexÚSeriesÚjson_normalize)Únested_to_recordcCsldddddœdddœgdœd    d
d dœd d dœgdœgdœdddddœgdœddddœdddœgdœgdœgS)NÚUSAÚ
Californiaú San Franciscoé90)ÚnameÚpopú Los Angelesé:0)r ÚcitiesÚOhioÚColumbuséÒÚ    ClevelandéÔ)ÚcountryÚstatesÚGermanyÚBayernÚMuniché;0úNordrhein-WestfalenÚ DuesseldorféÖÚKoelnéשr r r úZd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/json/test_normalize.pyÚ deep_nesteds.þþþþøþþþþþìr"cCsLdddœdddœdddœgdd    id
d d œd ddœdddœgddiddd œgS)NÚDader
©r Ú
populationÚBrowardé@œú
Palm Beaché`êÚgovernorú
Rick ScottÚFLÚFlorida)ÚcountiesÚinfoÚ    shortnameÚstateÚSummitrÚCuyahogaé9ú John KasichÚOHrr r r r r!Ú
state_data8s ýø þùõr7cCsddidddœdddœdœgS)    Nr/ú
11/08/1993ú
26/05/2012©Z
created_atZ last_updatedÚJaneÚDoe©ÚfirstÚ    last_name©r/Z author_namer r r r r!Úauthor_missing_dataQs
þþrAcCsFdddddddœgdd    d
igid œd d ddddœgdd    digidœgS)NÚAliceéZ%ú
Morris St.Ú    Massillonr6éf®)ÚnumberÚstreetÚcityr1ÚziprÚ    city_nameú Foo York City)r Ú    addressesÚprevious_residencesé!ú
Spring St.Ú ElizabethtonÚTNé “Ú
Barmingham)rMrNr r r r r!Úmissing_metadata\s(ûÿ     õûÿ     öòrUcCs"ddiddddœdœdd    id
œgS) z@
    input data to test json_normalize with max_level param
    ÚNameÚUser001ú    Some textÚID001ÚName001©ZIdrV©Ú    TextFieldÚ    UserFieldÚaÚb©Ú    CreatedByÚLookupÚImager r r r r!Úmax_level_test_input_data{sþúÿrec @s eZdZdd„Zdd„Zdd„Zej ddd    idd
igd d fddd    idd
igidd fd d e    fd d e    fg¡d d„ƒZ
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zej d'd    d(d)d*d+œd,d-idd.id/œd(d)d*d+œd,d-idd.id/œgfd
d(d)d*d,d-idd.id0œd(d)d*d,d-idd.id0œgfg¡d1d2„ƒZd3d4„Zd5d6„Zej d7d8d9d:d;d<g¡d=d>„ƒZd?d@„ZdAdB„ZdCdD„Zd S)EÚTestJSONNormalizecCsLddddœddddœdd    d
dœd d d dœg}t|ƒ}t|ƒ}t ||¡dS)Nééé)r_r`Úcéééééé    é
é é ©rrÚtmÚassert_frame_equal©ÚselfZrecsÚresultÚexpectedr r r!Útest_simple_recordss
 
 
 
üz%TestJSONNormalize.test_simple_recordscCsžt|ddƒ}t|ddƒ}t ||¡t|dƒ}g}|D]}| |d¡q<t|ƒ}t ||¡t|ddd}t ddg¡ ddg¡|d<t ||¡dS)    Nrr.r1©Úmetar-rrirh)rrrurvÚextendÚnpÚarrayÚrepeat©rxr7ryrzÚrecr r r!Útest_simple_normalizešs 
 z'TestJSONNormalize.test_simple_normalizecCstgƒ}tƒ}t ||¡dS)Nrt©rxryrzr r r!Útest_empty_array­sz"TestJSONNormalize.test_empty_arrayz!data, record_path, exception_typer_rrgNz{"a": [{"a": 0}, {"a": 1}]}c    Cs`|dk    r2tj|tjdt||dW5QRXn*t||d}tddgdgd}t ||¡dS)N©Úmatch©Ú record_pathrrgr_©Úcolumns)ÚpytestÚraisesruZEMPTY_STRING_PATTERNrrrv)rxÚdatarŠZexception_typeryrzr r r!Útest_accepted_input²s
 z%TestJSONNormalize.test_accepted_inputcCsþtddddœiƒ}tddggddgd}t | |¡|¡tddddœidd    }tddggd
d gd}t | |¡|¡tddddœid d    }tddggd dgd}t | |¡|¡t|ddgdddggdd}tddddgƒ ¡}|j ¡ |¡sút    ‚dS)NÚArgrh)r‘ÚBzA.AzA.Br‹Ú_©ÚsepZA_AZA_BuσuAσAuAσBrrrr )r}r•r Z states_name)
rrrurvZ reindex_likerZ sort_valuesrŒÚequalsÚAssertionError)rxr"ryrzr r r!Ú$test_simple_normalize_with_separatorÄs"
üz6TestJSONNormalize.test_simple_normalize_with_separatorcCsNddgdddœdœ}t|dd}tddgddggdd    d
gd }t ||¡dS) Nrgrh)rirk)Zb_1Zb_2)r_r`Ú__r”r_Zb__b_1Zb__b_2r‹rt©rxrryrzr r r!Ú'test_normalize_with_multichar_separatorÛs z9TestJSONNormalize.test_normalize_with_multichar_separatorcCs<tdddgiddd}tdgdggdgd}t ||¡dS)Nr‘rgrhzPrefix.)Ú record_prefixzPrefix.0r‹rtr…r r r!Útest_value_array_record_prefixâsz0TestJSONNormalize.test_value_array_record_prefixcCsjdddddœdddœdd    dœgd
œd œ}t|d d gd}tddgddgdd    ggddgd}t ||¡dS)Nr-r+r#r
r$r&r'r(r))r*r.©r1r/r/r.r‰r r%r‹rtršr r r!Útest_nested_object_record_pathèsýþþ þz0TestJSONNormalize.test_nested_object_record_pathc
Cs€t|ddgdddggd}dgddgd    d
d
d d d d d gdddddddgdddddddgdœ}t||jd}t ||¡dS)Nrrrr r|rrkrrirrrrr    r rrrrrr
rrrrrr)rz states.namer r r‹©rrrŒrurv)rxr"ryÚex_datarzr r r!Útest_more_deeply_nestedüs4
ÿù
ù    ìz)TestJSONNormalize.test_more_deeply_nestedc    CsÎddddidddœdd    dœd
d dœgd œd dddidddœdddœgd œg}t|dddddggƒ}ddd
ddgdgdd gddddddgdgddgddd    d ddgdœ}t||jd}t ||¡dS)Nr-r,r*r+r#r
r$r&r'r(r))r1r0r/r.rr6r5r2rr3r4r.r1r0r/rirh)r r1r0ú info.governorr%r‹r )rxrryr¡rzr r r!Útest_shallow_nesteds:ýü þüõ ÿ   ûz%TestJSONNormalize.test_shallow_nestedcCsˆt|dgddddggdd}dd    d
d d gd ddddgdgddgddgddgddgddgddœ}t|ƒ}t ||¡dS)Nr.r1r0r/r*Úignore©rrŠr}Úerrorsr#r&r(r2r3r
r'r)rr4r-rirrhr,r6r+r5)r r%r1r0r£rt)rxr7ryr¡rzr r r!Ú-test_nested_meta_path_with_nested_record_path>s ü  ûz?TestJSONNormalize.test_nested_meta_path_with_nested_record_pathc    Cs|dddddœdddœgdœg}d    }tjt|d
t|d d d gdW5QRXt|d d d gdd}dD]}||ksft‚qfdS)NÚhelloÚthereÚ    somethingÚelse©ÚfooÚbarÚ
something2Úelse2©r®r¯rz?Conflicting metadata name (foo|bar), need distinguishing prefixr‡rr®r¯r|r}©r}Z meta_prefix©ZmetafooZmetabarr®r¯)rrŽÚ
ValueErrorrr—)rxrÚmsgryÚvalr r r!Útest_meta_name_conflictRsþýÿ z)TestJSONNormalize.test_meta_name_conflictcCs`dddddœdddœgdœg}d    d
g}t|d |d d }|d    d
gksFt‚dD]}||ksJt‚qJdS)Nr©rªr«r¬r­r°r±r²r®r¯rr}r³r´)rr—)rxrÚCOLUMNSryr·r r r!Ú test_meta_parameter_not_modifiedgsþýÿ z2TestJSONNormalize.test_meta_parameter_not_modifiedcCsšt|ddƒ}t|ddƒ}t ||¡t|dddd}g}|D]}| |d¡qBt|ƒ}|jdd„d}t d    d
g¡ d d g¡|d<t ||¡dS) Nrr.r1Úcounty_)r}rœcSsd|S)Nr»r )Úxr r r!Ú<lambda>ˆóz6TestJSONNormalize.test_record_prefix.<locals>.<lambda>r‹r-rrirh)    rrrurvr~Úrenamerr€rr‚r r r!Útest_record_prefix{s  ÿz$TestJSONNormalize.test_record_prefixcCsRd d¡}d d¡ddgdddgdd    d
gi}t|ƒ}tt |¡ƒ}t ||¡dS) NsK[{"Ünicøde":0,"sub":{"A":1, "B":2}},{"Ünicøde":1,"sub":{"A":3, "B":4}}]Úutf8s    Ãœnicøderrgzsub.Arizsub.Brhrk)ÚdecoderrÚjsonÚloadsrurv)rxZtestjsonZtestdatarzryr r r!Útest_non_ascii_keysÿýýz$TestJSONNormalize.test_non_ascii_keycCsJt|ƒ}tjtjtjtjtjdœddddddœg}t|ƒ}t ||¡dS)N)r/úinfo.created_atúinfo.last_updatedúauthor_name.firstúauthor_name.last_namer8r9r;r<©rrÚnanrrurv)rxrAryr¡rzr r r!Útest_missing_fields ûûøz$TestJSONNormalize.test_missing_fieldzmax_level,expectedrXrYrZr[rVrWr`)r]r^rbrd)r]z UserField.IdzUserField.NamerbrdcCs~ddiddddœdœddddœdœgdd    id
d d œd dd œgdœg}t|dgdgdgg|d}t||jjd}t ||¡dS)NrVrWrXrYrZr[r\r_r`r«r¬r­r°r±)rbrcrdÚtagsrcrbrd)rŠr}Ú    max_level)rrŒ)rrrŒÚvaluesruÚ assert_equal)rxrÎrzÚ
test_inputryZ expected_dfr r r!Ú test_max_level_with_records_path³s,-þþû
þóÿ
üz2TestJSONNormalize.test_max_level_with_records_pathcCs:tdddiigƒ}tddddiigidƒ}t ||¡dS)Nr‘r’rgÚdummy)rrurv)rxZdf1Zdf2r r r!Ú!test_nested_flattening_consistentüsz3TestJSONNormalize.test_nested_flattening_consistentcCsFtd|dœdddigdœgdgd}tddidgd    }t ||¡dS)
NÚTexasržr-Úirhr/r‰r)Úindex)rrrurÐ)rxZ nulls_fixtureryrzr r r!Útest_nonetype_record_pathsþûz+TestJSONNormalize.test_nonetype_record_pathÚvalueÚfalseÚtruez{}Ú1z"text"c    Cs\t |¡}d|dœ}d}|›d|›d|›d}tjt|dt|g|gdW5QRXdS)    NrÕržr/z has non list value z
 for path z. Must be list or null.r‡r‰)rÃrÄrrŽÚ    TypeErrorr)rxrÙZ parsed_valuerÑZ    test_pathr¶r r r!Ú test_non_list_record_path_errorss
 
ÿz2TestJSONNormalize.test_non_list_record_path_errorscCsLd}tt |¡dgdgd}tdgdgtjdgtdd    œƒ}t ||¡dS)
Nz,[{"id": 99, "data": [{"one": 1, "two": 2}]}]rÚid)rŠr}rgrhéc)Zdtype)ZoneZtworß)    rrÃrÄrrr€Úobjectrurvršr r r!Útest_meta_non_iterables ÿz(TestJSONNormalize.test_meta_non_iterablecs6‡fdd„}t|ƒƒ}tˆddƒ}t ||¡dS)Nc3sˆddEdHdS)Nrr.r r ©r7r r!Úgenerator_data+sz8TestJSONNormalize.test_generator.<locals>.generator_datarr.rt)rxr7räryrzr rãr!Útest_generator(s 
z TestJSONNormalize.test_generatorcCsJdddidœddœ}t|dd}tdddggd    d
d gd }t ||¡dS) NrqÚl3r)Za1Úl2rk)Z_idÚggr“r”rèZ_id_a1Z    _id_l2_l3r‹rtršr r r!Ú'test_top_column_with_leading_underscore3s z9TestJSONNormalize.test_top_column_with_leading_underscore)Ú__name__Ú
__module__Ú __qualname__r{r„r†rÚmarkÚ parametrizeÚNotImplementedErrorrr˜r›rrŸr¢r¤r¨r¸rºrÀrÅrÌrÒrÔrØrÞrârårér r r r!rfŒs€ üþ    
    $üüùþûûøþîþ)
  
 
 rfc @sÚeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z ej ddddddddœgfdd didddd!œd"œd#did$œgfd%ddddd!œdd&œgfg¡d'd(„ƒZd)d*„Zd+d,„ZdS)-ÚTestNestedToRecordcCs0dddœdddœg}t|ƒ}|}||ks,t‚dS)Nrgrh)Úflat1Úflat2rirk)Zflat3rò©rr—rwr r r!Útest_flat_stays_flat=sz'TestNestedToRecord.test_flat_stays_flatcCs4ddddœdœ}t|ƒ}ddddœ}||ks0t‚dS)Nrgrh©rjÚd)rñÚdict1)údict1.cúdict1.drñróršr r r!Útest_one_level_deep_flattensCs z/TestNestedToRecord.test_one_level_deep_flattenscCsHddddœdddœddœdœ}t|ƒ}dddddddœ}||ksDt‚dS)Nrgrhrõ)Úerö)rñr÷Únested)rørùrñznested.dz
nested.e.cz
nested.e.dróršr r r!Útest_nested_flattensKsýú    z'TestNestedToRecord.test_nested_flattensc    Cs2d}tjt|dt|ddddW5QRXdS)Nú^Key 'name' not found. To replace missing values of 'name' with np.nan, pass in errors='ignore'r‡rMr Úraiser¦©rrŽÚKeyErrorr©rxrUr¶r r r!Útest_json_normalize_errors^sÿüz-TestNestedToRecord.test_json_normalize_errorscCs^t|dddd}ddddd    d
gd d d ddtjgg}ddddddg}t||d}t ||¡dS)NrMr r¥r¦rCrDrEr6rFrBrOrPrQrRrSrGrHrIr1rJr‹rÊ©rxrUryr¡rŒrzr r r!Útest_missing_metaosÿþ z$TestNestedToRecord.test_missing_metac    Csªddddiddigdœ}t|dddd    ggd
d }ddtjgddtjgg}ddd g}t||d  d ti¡}t ||¡tj    t
ddt|dddd    ggdd W5QRXdS)Nr®rƒrgrh)r}Ú nested_metarÙrÙr}rZleafr¥)rŠr}r§znested_meta.leafr‹z'leaf' not foundr‡rÿ) rrrËrZastyperárurvrrŽr)rxrryr¡rŒrzr r r!Útest_missing_nested_meta~s(
ü
 ÿ 
üz+TestNestedToRecord.test_missing_nested_metac    Cs6d}tjt|dt|ddgdddW5QRXdS)Nrþr‡rNrr rÿr¦rrr r r!Ú5test_missing_meta_multilevel_record_path_errors_raise™sÿüzHTestNestedToRecord.test_missing_meta_multilevel_record_path_errors_raisecCsJt|ddgddd}ddgdtjgg}d    dg}t||d
}t ||¡dS) NrNrr r¥r¦rLrBrTrKr‹rÊrr r r!Ú6test_missing_meta_multilevel_record_path_errors_ignore©süþ zITestNestedToRecord.test_missing_meta_multilevel_record_path_errors_ignorecCsXddddœdœdddœdd    dœdœg}t|ƒ}dddd
œdd    ddd œg}||ksTt‚dS) NZSmithZ    Appleseedr=r@r8r9r:r;r<)r/rÈrÉ)rÈrÉrÆrÇróršr r r!Útest_donot_drop_nonevalues»s"þþýüúz-TestNestedToRecord.test_donot_drop_nonevaluesc
CsPddddddddddœdœiidœ}t|ƒ}dddddddd    œ}||ksLt‚dS)
Nrr1çg“H@çÀ“@À瀂’;@)rßÚregionr¼ÚyÚz©rßz    town.info©rßÚlocation)rßúlocation.country.state.idz#location.country.state.town.info.idú'location.country.state.town.info.regionú"location.country.state.town.info.xú"location.country.state.town.info.yú"location.country.state.town.info.zróršr r r!Ú$test_nonetype_top_level_bottom_levelÕs0ûþÿÿþù    z7TestNestedToRecord.test_nonetype_top_level_bottom_levelc    CsTdddddddddœdœdœdœdœ}t|ƒ}ddddddddd    œ}||ksPt‚dS)
Nr r r )rr¼rrr)rßr1)rßrr)rßz location.idzlocation.country.idrrrrrróršr r r!Útest_nonetype_multiple_levelsõs0üþþþþø
z0TestNestedToRecord.test_nonetype_multiple_levelszmax_level, expectedNrWrXrYrZr`)úCreatedBy.NameúLookup.TextFieldzLookup.UserField.IdzLookup.UserField.NameúImage.arrVr[r\r_rarg)rrzLookup.UserFieldrcCst||d}||kst‚dS)N©rÎró)rxrÎrzreÚoutputr r r!Útest_with_max_levels+ z&TestNestedToRecord.test_with_max_levelc    Cshd}dddddœddd    d
d d id œdœd œidœiig}dddd    d
d dœg}t||d}||ksdt‚dS)NédrbÚuserZLeoZThomson)Z    firstnameZLastNameÚfatherZ    Father001Z    Father002Z    Father003rVZ    Father004)r r#)rVr#)r Z family_tree)zCreatedBy.user.name.firstnamezCreatedBy.user.name.LastNamez&CreatedBy.user.family_tree.father.namez-CreatedBy.user.family_tree.father.father.Namez4CreatedBy.user.family_tree.father.father.father.namez;CreatedBy.user.family_tree.father.father.father.father.Namerró)rxrÎZ
input_datarzrr r r!Útest_with_large_max_levelEs6þþþÿþÿÿÿúÿ
z,TestNestedToRecord.test_with_large_max_levelcCsšddddidœddddidœdd    d
didœd œ}t|ƒ}dddg|_t|ƒ}tdddgddd    gd tjtjgtjd tjgtjtjdgdœƒ}t ||¡dS)NrgZFoor_)rßr ÚelementsrhÚBarr`riZBazrj)rrgrhgð?g@g@)rßr z
elements.az
elements.bz
elements.c)rr×rrrrËrurv)rxrÚsryrzr r r!Útest_series_non_zero_indexjs ý    ûÿ    z-TestNestedToRecord.test_series_non_zero_index)rêrërìrôrúrýrrrrr    r
rrrrírîr r$r(r r r r!rð<sX "ûÿþ þúÿþüÿþæþ)
%rð)rÃÚnumpyrrZpandasrrrrZpandas._testingZ_testingruZpandas.io.json._normalizerZfixturer"r7rArUrerfrðr r r r!Ú<module>s(  
&
 
 
 
 
3