o
    ôT·j`x  ã                   @   s®   d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z d dlmZ ejdd„ ƒZejdd„ ƒZejdd	„ ƒZejd
d„ ƒZejdd„ ƒZG dd„ dƒZG dd„ dƒZdS )é    N)Ú	DataFrameÚIndexÚSeriesÚjson_normalize©Únested_to_recordc                   C   sl   dddddœdddœgdœd	d
ddœdddœgdœgdœdddddœgdœddddœdddœgdœgdœgS )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!   úf/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/pandas/tests/io/json/test_normalize.pyÚdeep_nested   s.   þþþþøþþþþþìr#   c                   C   sL   dddœdddœdddœgdd	id
ddœdddœdddœgddidddœgS )NÚDader   ©r   Ú
populationÚBrowardé@œ  ú
Palm Beaché`ê  Úgovernorú
Rick ScottÚFLÚFlorida)ÚcountiesÚinfoÚ	shortnameÚstateÚSummitr   ÚCuyahogaé9  úJohn KasichÚOHr   r!   r!   r!   r!   r"   Ú
state_data8   s    ýøþùõr8   c                   C   s   dd idddœdddœdœgS )	Nr0   ú
11/08/1993ú
26/05/2012©Ú
created_atÚlast_updatedÚJaneÚDoe©ÚfirstÚ	last_name©r0   Úauthor_namer!   r!   r!   r!   r"   Úauthor_missing_dataQ   s
   þþrE   c                   C   sF   dddddddœgdd	d
igidœddddddœgdd	digidœgS )NÚAliceéZ%  ú
Morris St.Ú	Massillonr7   éf®  )ÚnumberÚstreetÚcityr2   Úzipr   Ú	city_nameúFoo York City)r   Ú	addressesÚprevious_residencesé!  ú
Spring St.ÚElizabethtonÚTNé“  Ú
Barmingham)rQ   rR   r!   r!   r!   r!   r"   Úmissing_metadata\   s(   ûÿ	õûÿ	öòrY   c                   C   s"   ddiddddœdœdd	id
œgS )z@
    input data to test json_normalize with max_level param
    ÚNameÚUser001ú	Some textÚID001ÚName001©ÚIdrZ   ©Ú	TextFieldÚ	UserFieldÚaÚb©Ú	CreatedByÚLookupÚImager!   r!   r!   r!   r"   Úmax_level_test_input_data{   s   þúÿrj   c                   @   s¢  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
did
digddfd
d
did
digid
dfdde
fdde
fg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zej 	d)dd*d+d,d-œd.d/id
d0id1œd*d+d,d-œd.d/id
d0id1œgfdd*d+d,d.d/id
d0id2œd*d+d,d.d/id
d0id2œgfg¡d3d4„ ƒZd5d6„ Zd7d8„ Zej 	d9g d:¢¡d;d<„ ƒZd=d>„ Zd?d@„ ZdAdB„ ZdS )CÚTestJSONNormalizec                 C   sL   ddddœddddœdd	d
dœddddœg}t |ƒ}t|ƒ}t ||¡ d S )Né   é   é   )rd   re   Úcé   é   é   é   é   é	   é
   é   é   ©r   r   ÚtmÚassert_frame_equal©ÚselfÚrecsÚresultÚexpectedr!   r!   r"   Útest_simple_records�   s   



üz%TestJSONNormalize.test_simple_recordsc                 C   sž   t |d dƒ}t|d d ƒ}t ||¡ t |dƒ}g }|D ]	}| |d ¡ qt|ƒ}t ||¡ t |ddd�}t ddg¡ ddg¡|d< t ||¡ d S )	Nr   r/   r2   ©Úmetar.   r   rn   rm   )r   r   rz   r{   ÚextendÚnpÚarrayÚrepeat©r}   r8   r   r€   Úrecr!   r!   r"   Útest_simple_normalizeš   s   
z'TestJSONNormalize.test_simple_normalizec                 C   sb   g d¢dddgidœg}t |dgddggd�}tg d¢ddgddgddggd	œƒ}t ||¡ d S )
N©rl   rm   rn   Úlistdatarl   rm   )ÚvaluesÚmetadatar�   rŽ   ©Úrecord_pathrƒ   )r   zmetadata.listdatary   )r}   Úparse_metadata_fields_list_typer   r€   r!   r!   r"   Útest_fields_list_type_normalize­   s   ÿýÿz1TestJSONNormalize.test_fields_list_type_normalizec                 C   s   t g ƒ}tƒ }t ||¡ d S )Nry   ©r}   r   r€   r!   r!   r"   Útest_empty_array»   s   z"TestJSONNormalize.test_empty_arrayz!data, record_path, exception_typerd   r   rl   Nz{"a": [{"a": 0}, {"a": 1}]}c                 C   sv   |d ur$t j|dd�� t||d� W d   ƒ d S 1 sw   Y  d S t||d�}tddgdgd�}t ||¡ d S )NÚ ©Úmatch©r�   r   rl   rd   ©Úcolumns)ÚpytestÚraisesr   r   rz   r{   )r}   Údatar�   Úexception_typer   r€   r!   r!   r"   Útest_accepted_inputÀ   s   
"ÿz%TestJSONNormalize.test_accepted_inputc                 C   sú   t ddddœiƒ}tddggddgd�}t | |¡|¡ t ddddœidd	�}tddggd
dgd�}t | |¡|¡ t ddddœidd	�}tddggddgd�}t | |¡|¡ t |ddgdddggdd�}tg d¢ƒ ¡ }|j ¡  |¡s{J ‚d S )NÚArl   rm   )r    ÚBzA.AzA.Br™   Ú_©ÚsepÚA_AÚA_Bu   Ïƒu   AÏƒAu   AÏƒBr   r   r   r   )rƒ   r¤   )r   r   r   Ústates_name)	r   r   rz   r{   Úreindex_liker   Úsort_valuesrš   Úequals)r}   r#   r   r€   r!   r!   r"   Ú$test_simple_normalize_with_separatorÒ   s"   
üz6TestJSONNormalize.test_simple_normalize_with_separatorc                 C   sL   ddgdddœdœ}t |dd�}tddgddggg d¢d	�}t ||¡ d S )
Nrl   rm   )rn   rp   )Úb_1Úb_2)rd   re   Ú__r£   )rd   Úb__b_1Úb__b_2r™   ry   ©r}   r�   r   r€   r!   r!   r"   Ú'test_normalize_with_multichar_separatoré   s   z9TestJSONNormalize.test_normalize_with_multichar_separatorc                 C   s<   t dddgiddd�}tdgdggdgd�}t ||¡ d S )Nr    rl   rm   zPrefix.)Úrecord_prefixzPrefix.0r™   ry   r“   r!   r!   r"   Útest_value_array_record_prefixð   s   z0TestJSONNormalize.test_value_array_record_prefixc                 C   sj   dddddœdddœdd	dœgd
œdœ}t |ddgd�}tddgddgdd	ggddgd�}t ||¡ d S )Nr.   r,   r$   r   r%   r'   r(   r)   r*   )r+   r/   ©r2   r0   r0   r/   r˜   r   r&   r™   ry   r±   r!   r!   r"   Útest_nested_object_record_pathö   s   ýþþþz0TestJSONNormalize.test_nested_object_record_pathc                 C   sb   t |ddgdddggd�}dgd dgd	  g d
¢g d¢g d¢dœ}t||jd�}t ||¡ d S )Nr   r   r   r   r‚   r   rp   r   rn   )r	   r	   r   r   r   r   r   )r
   r   r   r   r   r   r   )r   r   r   r   r   r   r    )r   zstates.namer   r   r™   ©r   r   rš   rz   r{   )r}   r#   r   Úex_datar€   r!   r!   r"   Útest_more_deeply_nested
  s   ÿ		ìz)TestJSONNormalize.test_more_deeply_nestedc                 C   s¼   ddddidddœdd	dœd
ddœgdœddddidddœdddœgdœg}t |dddddggƒ}g d¢dgd dgd  g d¢dgd dgd  g d¢dœ}t||jd�}t ||¡ d S )Nr.   r-   r+   r,   r$   r   r%   r'   r(   r)   r*   )r2   r1   r0   r/   r   r7   r6   r3   r   r4   r5   r/   r2   r1   r0   ©r$   r'   r)   r3   r4   rn   rm   )r-   r-   r-   r7   r7   ©r   r(   r*   r   r5   )r   r2   r1   úinfo.governorr&   r™   r·   )r}   r�   r   r¸   r€   r!   r!   r"   Útest_shallow_nested(  s6   ýüþüõÿûz%TestJSONNormalize.test_shallow_nestedc                 C   s|   t |dgddddggdd�}g d¢g d	¢d
gd dgd  dgd dgd  dgd dgd  dœ}t|ƒ}t ||¡ d S )Nr/   r2   r1   r0   r+   Úignore©r�   r�   rƒ   Úerrorsrº   r»   r.   rn   r   rm   r-   r7   r,   r6   )r   r&   r2   r1   r¼   ry   )r}   r8   r   r¸   r€   r!   r!   r"   Ú-test_nested_meta_path_with_nested_record_pathL  s   üûz?TestJSONNormalize.test_nested_meta_path_with_nested_record_pathc                 C   s�   dddddœdddœgdœg}d	}t jt|d
�� t|dddgd� W d   ƒ n1 s,w   Y  t|dddgdd�}dD ]}||v sEJ ‚q=d S )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ƒ   Úmeta_prefix©ÚmetafooÚmetabarrÇ   rÈ   )r›   rœ   Ú
ValueErrorr   )r}   r�   Úmsgr   Úvalr!   r!   r"   Útest_meta_name_conflict`  s   þýÿÿÿz)TestJSONNormalize.test_meta_name_conflictc                 C   s`   dddddœdddœgdœg}d	d
g}t |d|dd�}|d	d
gks#J ‚dD ]}||v s-J ‚q%d S )NrÂ   rÃ   rÄ   rÅ   rÆ   rÉ   rÊ   rË   rÇ   rÈ   r�   rƒ   rÌ   rÎ   )r   )r}   r�   ÚCOLUMNSr   rÓ   r!   r!   r"   Ú test_meta_parameter_not_modifiedu  s   þýÿÿz2TestJSONNormalize.test_meta_parameter_not_modifiedc                 C   sš   t |d dƒ}t|d d ƒ}t ||¡ t |dddd�}g }|D ]	}| |d ¡ q!t|ƒ}|jdd„ d�}t d	d
g¡ ddg¡|d< t ||¡ d S )Nr   r/   r2   Úcounty_)rƒ   r³   c                 S   s   d|  S )Nr×   r!   )Úxr!   r!   r"   Ú<lambda>–  s    z6TestJSONNormalize.test_record_prefix.<locals>.<lambda>r™   r.   r   rn   rm   )	r   r   rz   r{   r„   Úrenamer…   r†   r‡   rˆ   r!   r!   r"   Útest_record_prefix‰  s   ÿz$TestJSONNormalize.test_record_prefixc                 C   sR   d  d¡}d  d¡ddgdddgdd	d
gi}t|ƒ}tt |¡ƒ}t ||¡ d S )NsK   [{"ÃœnicÃ¸de":0,"sub":{"A":1, "B":2}},{"ÃœnicÃ¸de":1,"sub":{"A":3, "B":4}}]Úutf8s	   ÃœnicÃ¸der   rl   zsub.Arn   zsub.Brm   rp   )Údecoder   r   ÚjsonÚloadsrz   r{   )r}   ÚtestjsonÚtestdatar€   r   r!   r!   r"   Útest_non_ascii_key›  s   ýýz$TestJSONNormalize.test_non_ascii_keyc                 C   sJ   t |ƒ}tjtjtjtjtjdœd dddddœg}t|ƒ}t ||¡ d S )N)r0   úinfo.created_atúinfo.last_updatedúauthor_name.firstúauthor_name.last_namer9   r:   r>   r?   ©r   r…   Únanr   rz   r{   )r}   rE   r   r¸   r€   r!   r!   r"   Útest_missing_field«  s    ûûøz$TestJSONNormalize.test_missing_fieldzmax_level,expectedr\   r]   r^   r_   rZ   r[   re   )rb   rc   rg   ri   )rb   zUserField.IdzUserField.Namerg   ri   c                 C   s~   ddiddddœdœddddœdœgdd	id
ddœdddœgdœg}t |dgdgdgg|d�}t||jjd�}t ||¡ d S )NrZ   r[   r\   r]   r^   r_   ra   rd   re   rÄ   rÅ   rÆ   rÉ   rÊ   )rg   rh   ri   Útagsrh   rg   ri   )r�   rƒ   Ú	max_level)r�   rš   )r   r   rš   r�   rz   Úassert_equal)r}   rë   r€   Ú
test_inputr   Úexpected_dfr!   r!   r"   Ú test_max_level_with_records_pathÁ  s,   -þþû
þóÿ
üz2TestJSONNormalize.test_max_level_with_records_pathc                 C   s:   t dddiigƒ}t ddddiigidƒ}t ||¡ d S )Nr    r¡   rl   Údummy)r   rz   r{   )r}   Údf1Údf2r!   r!   r"   Ú!test_nested_flattening_consistent
  s   z3TestJSONNormalize.test_nested_flattening_consistentc                 C   sF   t d|dœdddigdœgdgd�}tddidgd	�}t ||¡ d S )
NÚTexasrµ   r.   Úirm   r0   r˜   r   )Úindex)r   r   rz   rì   )r}   Únulls_fixturer   r€   r!   r!   r"   Útest_nonetype_record_path  s   þûz+TestJSONNormalize.test_nonetype_record_pathÚvalue)ÚfalseÚtruez{}Ú1z"text"c                 C   sr   t  |¡}d|dœ}d}|› d|› d|› d�}tjt|d�� t|g|gd� W d   ƒ d S 1 s2w   Y  d S )	Nrô   rµ   r0   z has non list value z
 for path z. Must be list or null.r–   r˜   )rÞ   rß   r›   rœ   Ú	TypeErrorr   )r}   rù   Úparsed_valuerí   Ú	test_pathrÒ   r!   r!   r"   Ú test_non_list_record_path_errors  s   

ÿ"ÿz2TestJSONNormalize.test_non_list_record_path_errorsc                 C   sL   d}t t |¡dgdgd�}tdgdgtjdgtd�d	œƒ}t ||¡ d S )
Nz,[{"id": 99, "data": [{"one": 1, "two": 2}]}]r�   Úidr�   rl   rm   éc   )Údtype)ÚoneÚtwor  )	r   rÞ   rß   r   r…   r†   Úobjectrz   r{   r±   r!   r!   r"   Útest_meta_non_iterable,  s   ÿz(TestJSONNormalize.test_meta_non_iterablec                    s6   ‡ fdd„}t |ƒ ƒ}tˆ d d ƒ}t ||¡ d S )Nc                   3   s   � ˆ d d E d H  d S )Nr   r/   r!   r!   ©r8   r!   r"   Úgenerator_data9  s   €z8TestJSONNormalize.test_generator.<locals>.generator_datar   r/   ry   )r}   r8   r	  r   r€   r!   r  r"   Útest_generator6  s   
z TestJSONNormalize.test_generatorc                 C   sF   dddidœddœ}t |dd�}tg d	¢gg d
¢d�}t ||¡ d S )Nrv   Úl3r   )Úa1Úl2rp   )Ú_idÚggr¢   r£   )rp   rv   r   )r  Ú_id_a1Ú	_id_l2_l3r™   ry   r±   r!   r!   r"   Ú'test_top_column_with_leading_underscoreA  s   z9TestJSONNormalize.test_top_column_with_leading_underscore)Ú__name__Ú
__module__Ú__qualname__r�   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"   rk   Œ   s„    üþ
		$üüùþûûøþîþ
) 

rk   c                   @   sÚ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zej ddddddddœgfdd didddd!œd"œd#did$œgfd%ddddd!œdd&œgfg¡d'd(„ ƒZd)d*„ Zd+d,„ ZdS )-ÚTestNestedToRecordc                 C   s0   dddœdddœg}t |ƒ}|}||ksJ ‚d S )Nrl   rm   )Úflat1Úflat2rn   rp   )Úflat3r  r   r|   r!   r!   r"   Útest_flat_stays_flatK  s   z'TestNestedToRecord.test_flat_stays_flatc                 C   s4   ddddœdœ}t |ƒ}ddddœ}||ksJ ‚d S )Nrl   rm   ©ro   Úd)r  Údict1)údict1.cúdict1.dr  r   r±   r!   r!   r"   Útest_one_level_deep_flattensQ  s   z/TestNestedToRecord.test_one_level_deep_flattensc                 C   sH   ddddœdddœddœdœ}t |ƒ}dddddddœ}||ks"J ‚d S )Nrl   rm   r  )Úer  )r  r   Únested)r!  r"  r  znested.dz
nested.e.cz
nested.e.dr   r±   r!   r!   r"   Útest_nested_flattensY  s   ýú	z'TestNestedToRecord.test_nested_flattensc                 C   sH   d}t jt|d�� t|dddd� W d   ƒ d S 1 sw   Y  d S )Nú^Key 'name' not found. To replace missing values of 'name' with np.nan, pass in errors='ignore'r–   rQ   r   Úraiser¿   ©r›   rœ   ÚKeyErrorr   ©r}   rY   rÒ   r!   r!   r"   Útest_json_normalize_errorsl  s   ÿü"ÿz-TestNestedToRecord.test_json_normalize_errorsc                 C   sN   t |dddd�}g d¢dddd	d
tjgg}g d¢}t||d�}t ||¡ d S )NrQ   r   r¾   r¿   )rG   rH   rI   r7   rJ   rF   rS   rT   rU   rV   rW   )rK   rL   rM   r2   rN   r   r™   rç   ©r}   rY   r   r¸   rš   r€   r!   r!   r"   Útest_missing_meta}  s   ÿþz$TestNestedToRecord.test_missing_metac                 C   s¾   dd ddiddigdœ}t |dddd	ggd
d�}ddtjgddtjgg}g d¢}t||d� dti¡}t ||¡ tj	t
dd�� t |dddd	ggdd� W d   ƒ d S 1 sXw   Y  d S )NrÇ   r‰   rl   rm   )rƒ   Únested_metarù   rù   rƒ   r/  Úleafr¾   )r�   rƒ   rÀ   )r‰   rƒ   únested_meta.leafr™   r1  z'leaf' not foundr–   r(  )r   r…   rè   r   Úastyper  rz   r{   r›   rœ   r*  )r}   r�   r   r¸   rš   r€   r!   r!   r"   Útest_missing_nested_metaŒ  s*   
üÿ
ü"ÿz+TestNestedToRecord.test_missing_nested_metac                 C   sL   d}t jt|d�� t|ddgddd� W d   ƒ d S 1 sw   Y  d S )Nr'  r–   rR   r   r   r(  r¿   r)  r+  r!   r!   r"   Ú5test_missing_meta_multilevel_record_path_errors_raise§  s   ÿü"ÿzHTestNestedToRecord.test_missing_meta_multilevel_record_path_errors_raisec                 C   sJ   t |ddgddd�}ddgdtjgg}d	dg}t||d
�}t ||¡ d S )NrR   r   r   r¾   r¿   rP   rF   rX   rO   r™   rç   r-  r!   r!   r"   Ú6test_missing_meta_multilevel_record_path_errors_ignore·  s   üþzITestNestedToRecord.test_missing_meta_multilevel_record_path_errors_ignorec                 C   sX   d dddœdœdddœdd	dœdœg}t |ƒ}d ddd
œdd	dddœg}||ks*J ‚d S )NÚSmithÚ	Appleseedr@   rC   r9   r:   r;   r>   r?   )r0   rå   ræ   )rå   ræ   rã   rä   r   r±   r!   r!   r"   Útest_donot_drop_nonevaluesÉ  s"   þþýüúz-TestNestedToRecord.test_donot_drop_nonevaluesc              
   C   sP   d ddd d d ddddœdœiidœ}t |ƒ}d d d d dddd	œ}||ks&J ‚d S )
Nr   r2   ç    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              	   C   sT   d d d d d ddddœdœdœdœdœ}t |ƒ}d d d d d dddd	œ}||ks(J ‚d S )
Nr9  r:  r;  )r<  rØ   r=  r>  r?  )r  r2   )r  r   r@  )r  zlocation.idzlocation.country.idrB  rC  rD  rE  rF  r   r±   r!   r!   r"   Útest_nonetype_multiple_levels  s0   üþþþþø
z0TestNestedToRecord.test_nonetype_multiple_levelszmax_level, expectedNr[   r\   r]   r^   re   )úCreatedBy.NameúLookup.TextFieldzLookup.UserField.IdzLookup.UserField.NameúImage.ar   rZ   r_   ra   rd   rf   rl   )rI  rJ  zLookup.UserFieldrK  c                 C   s   t ||d�}||ksJ ‚d S )N©rë   r   )r}   rë   r€   rj   Úoutputr!   r!   r"   Útest_with_max_level%  s   +z&TestNestedToRecord.test_with_max_levelc              	   C   sh   d}dddddœddd	d
ddidœdœdœidœiig}dddd	d
ddœg}t ||d�}||ks2J ‚d S )Néd   rg   ÚuserÚLeoÚThomson)Ú	firstnameÚLastNameÚfatherÚ	Father001Ú	Father002Ú	Father003rZ   Ú	Father004)r   rU  )rZ   rU  )r   Úfamily_tree)zCreatedBy.user.name.firstnamezCreatedBy.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.NamerL  r   )r}   rë   Ú
input_datar€   rM  r!   r!   r"   Útest_with_large_max_levelS  s6   þþþÿþÿÿÿúÿ
z,TestNestedToRecord.test_with_large_max_levelc                 C   s”   ddddidœddddidœdd	d
didœdœ}t |ƒ}g d¢|_t|ƒ}tg d¢g d¢dtjtjgtjdtjgtjtjdgdœƒ}t ||¡ d S )Nrl   ÚFoord   )r  r   Úelementsrm   ÚBarre   rn   ÚBazro   )r   rl   rm   r‹   )r]  r_  r`  g      ð?g       @g      @)r  r   z
elements.az
elements.bz
elements.c)r   rö   r   r   r…   rè   rz   r{   )r}   r�   Úsr   r€   r!   r!   r"   Útest_series_non_zero_indexx  s    ý
ûÿ	z-TestNestedToRecord.test_series_non_zero_index)r  r  r  r  r#  r&  r,  r.  r3  r4  r5  r8  rG  rH  r›   r  r  rN  r\  rb  r!   r!   r!   r"   r  J  sZ     "ûÿþþúÿþüÿþæþ
)%r  )rÞ   Únumpyr…   r›   Úpandasr   r   r   r   Úpandas._testingÚ_testingrz   Úpandas.io.json._normalizer   Úfixturer#   r8   rE   rY   rj   rk   r  r!   r!   r!   r"   Ú<module>   s*    
&




   A