o
    5c>9                     @   sn   d dl mZmZ d dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlmZ G dd dZdS )    )OrderedDictdefaultdict)datetimeN)	DataFrameIndex
MultiIndexSeries	Timestampc                   @   s  e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	ejde
eeegdd Zejdeeg gdd Zdd Zejdddd fddd fddd fddd fddd fgdd Zd d! Zejd"e
d#d$d%d&d'd%d(d)d%d*feed+d#d$d%fd#d&d'd%fd&d(d)d%fgfee
ee
d#d$d%d&d'd%d(d)d%d*fgd,d- Zd.d/ Zd0d1 Zejd2g d3efed4d#d#ed5d&d&ed6d(d(gegg d7egg d8egg d9egfd:d; Zejd<ed&eged=ege d>ege!d?ege"d@egfdAdB Z#dCdD Z$ejddEe%dFdGge%dFdGgdHdIe&'dJdKge&j'dJdKgdLdMgdNgejdOdPdQge%dPdQge%dPdQgdRdIe&'dSdTge&j'dSdTgdUdVgdNgdWdX Z(ejdg dYejdZed#d#ed(ge d$d'e d)ge d$d&ed(ge d$d[ed(ge d$d[ged(ge d$d\ed(gd]eeegeeegeeegeeegeeegee)egd]fg d8g d^dJeeegeeegdJffd_d` Z*dES )aTestDataFrameToDictc           
      C   s\  t d}t||g||gd}t||gddgd}||d||dg}|dd|ddg}|jdd|ks8J |jdd|ksBJ t||gddt||gd	dd}t||gddtddgd	dd}t|jd
d| t|jd
d| ddg||g||ggdd	gd}ddg|dg|dggdd	gd}	t|jdd| t|jdd|	 d S )N20130101AB      recordsorientr   namer   seriesr   )indexdatacolumnssplit)r	   r   to_dictr   tmassert_dict_equal)
selftsmp	test_datatest_data_mixedexpected_recordsexpected_records_mixedexpected_seriesexpected_series_mixedexpected_splitexpected_split_mixed r(   ]/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/frame/methods/test_to_dict.pytest_to_dict_timestamp   s:   z*TestDataFrameToDict.test_to_dict_timestampc                 C   sb   t ddgddgdddgd}d}tjt|d	 |jd
d W d    d S 1 s*w   Y  d S )Nr   r   g      ?g      ?abr   r   z1DataFrame index must be unique for orient='index'matchr   r   r   pytestraises
ValueErrorr   r   dfmsgr(   r(   r)   /test_to_dict_index_not_unique_with_index_orientD   s
   "zCTestDataFrameToDict.test_to_dict_index_not_unique_with_index_orientc                 C   sT   t dddgi}d}tjt|d |jdd W d    d S 1 s#w   Y  d S )Nr   r   r   z orient 'xinvalid' not understoodr/   xinvalidr   r1   r5   r(   r(   r)   test_to_dict_invalid_orientL   s
   "z/TestDataFrameToDict.test_to_dict_invalid_orientr   )dlrspsic                 C   sT   t dddgi}d}tjt|d |j|d W d    d S 1 s#w   Y  d S )Nr   r   r   z+Using short name for 'orient' is deprecatedr/   r   )r   r   assert_produces_warningFutureWarningr   )r   r   r6   r7   r(   r(   r)   test_to_dict_short_orient_warnsR   s
   "z3TestDataFrameToDict.test_to_dict_short_orient_warnsmappingc                 C   sn  dddddddd}t |j|d	}| D ]\}}| D ]\}}||| | ks.J q qt |d
|}| D ]\}}| D ]\}}||| t|d  ksVJ qDq<t |d|}| D ]\}}| D ]\}}||| | kszJ qlqdt |d|}ddgg dddgddgtjdggd}t|| t |d|}ddddddtjddg}	t|t	sJ t
|dksJ t||	D ]
\}
}t|
| qt |d}| D ]\}}| D ]\}}||| | ksJ qqt |}||jd  |d< |d}| }||jd  |d< | D ]\}}| D ]\}}||| | ks1J q"qd S )Nr   r   )12rE   rF   3)rE   rF   rG   r   intolistr   r   r   r         ?       @)r   r   r   r      r   r   duped)r   r   itemsintnpnanr   r   
isinstancerJ   lenzipr   copy)r   rD   r    recons_datakvk2v2r&   r"   leftrightr6   	comp_datar(   r(   r)   test_to_dictZ   s\   

z TestDataFrameToDict.test_to_dictc                 C   s`   t tjdd}dddg}tjt|d |j|d W d    d S 1 s)w   Y  d S )NrM   |z unsupported type: <class 'list'>z1to_dict\(\) only accepts initialized defaultdictsr/   rH   )	r   rQ   randomrandnjoinr2   r3   	TypeErrorr   )r   rD   r6   r7   r(   r(   r)   test_to_dict_errors   s   "z'TestDataFrameToDict.test_to_dict_errorsc                 C   sN   t g dgg dd}tt |  W d    d S 1 s w   Y  d S )Nr   r   rM   )r,   r,   r-   r   )r   r   rA   UserWarningr   )r   r6   r(   r(   r)   test_to_dict_not_unique_warning   s   
"z3TestDataFrameToDict.test_to_dict_not_unique_warningzorient,item_getterdictc                 C      | | | S Nr(   r;   colidxr(   r(   r)   <lambda>       zTestDataFrameToDict.<lambda>r   c                 C      | | | S rl   r(   rm   r(   r(   r)   rp      rq   rJ   c                 C   rk   rl   r(   rm   r(   r(   r)   rp      rq   r   c                 C   s   | d | | d  | S )Nr   r   r.   rm   r(   r(   r)   rp          r   c                 C   rr   rl   r(   rm   r(   r(   r)   rp      rq   c                 C   sR   t ddgddgd}|j|d}t||ddtsJ t||d	dts'J d S )
Nr   r   g?g?r+   r   r,   r   r-   )r   r   rS   rP   float)r   r   item_getterr6   resultr(   r(   r)   test_to_dict_box_scalars   s   z,TestDataFrameToDict.test_to_dict_box_scalarsc                 C   s   t dddddddtjdft dddd	d
ddtjdfg}tt|dgd}|jdd}dtdtjdidtdtjdig}t|d |d  t|d |d  d S )Ni           5   r   iYX )tzinfo         ir  r;   rg   r   r   z2017-11-18 21:53:00.219225+0000)tzz2017-11-18 22:06:30.061810+0000r   )	r   pytzutcr   rJ   r   r	   r   r   )r   r   r6   rv   expectedr(   r(   r)   test_to_dict_tz   s   z#TestDataFrameToDict.test_to_dict_tzzinto, expectedr   rK   int_col	float_colr   rL   rM         @)r   r   r   r   c                 C   s`   t g dg dd}|jd|d}ddg}t j|dd| }t j|dd| }t|| d S )	Nrf   rK   rL   r   r   r   )r   rI   r   r   r   )r   r   	from_dictr   assert_frame_equal)r   rI   r   r6   rv   colsr(   r(   r)   test_to_dict_index_dtypes   s   'z-TestDataFrameToDict.test_to_dict_index_dtypesc                 C   sF   t dd tdD }t|dd  }t|j}||ks!J d S )Nc                 S   s   i | ]}t ||gqS r(   )str.0r@   r(   r(   r)   
<dictcomp>  s    zBTestDataFrameToDict.test_to_dict_numeric_names.<locals>.<dictcomp>   r   r   )r   rangesetr   keysr   r   r6   rv   r   r(   r(   r)   test_to_dict_numeric_names   s   
z.TestDataFrameToDict.test_to_dict_numeric_namesc                 C   sF   t dd tdD }|dd }dd tdD }||ks!J d S )Nc                 S   s   i | ]
}d |d|gqS A_r;   r(   r   r(   r(   r)   r     s    z9TestDataFrameToDict.test_to_dict_wide.<locals>.<dictcomp>   r   r   c                 S   s   i | ]	}d |d|qS r   r(   r   r(   r(   r)   r   
  rs   )r   r   r   r   r(   r(   r)   test_to_dict_wide  s   z%TestDataFrameToDict.test_to_dict_widez
data,dtype)TTFi  i  i  r   rf   )XYZc                    s6   t d|i}|jdd}t fdd|D sJ d S )Nr,   r   r   c                 3   s     | ]}t |d   u V  qdS )r,   N)type)r   recorddtyper(   r)   	<genexpr>#  s    z@TestDataFrameToDict.test_to_dict_orient_dtype.<locals>.<genexpr>)r   r   all)r   r   r   r6   r;   r(   r   r)   test_to_dict_orient_dtype  s   z-TestDataFrameToDict.test_to_dict_orient_dtypezdata,expected_dtypei皙?Tz
2005-02-25c                 C   s>   t d|idgd}|jdd}t|d d }||u sJ d S )Nr,   r   r.   r   r   )r   r   r   )r   r   expected_dtyper6   r;   rv   r(   r(   r)   ,test_to_dict_scalar_constructor_orient_dtype%  s   z@TestDataFrameToDict.test_to_dict_scalar_constructor_orient_dtypec                 C   s>   t dgdgd}| d}ddddg}||ksJ d S )NrK   g      "@r+   r   r   )r   r,   r-   )r   reset_indexr   r   r(   r(   r)    test_to_dict_mixed_numeric_frame7  s   z4TestDataFrameToDict.test_to_dict_mixed_numeric_frameNaabbccr   r+   )r,   cn1n2)namesr   xyz)r   r   )r   r   z1z2c                 C   sB   t jddgddgg||d}t j|jdddd}t|| d S )Nr   rM   r      )r   r   tightr   )r   from_recordsr   r   r   r   )r   r   r   r6   	roundtripr(   r(   r)   test_to_dict_orient_tight>  s   z-TestDataFrameToDict.test_to_dict_orient_tight)rj   rJ   r   r   r   r   zdata,expected_typesr,   )r,   )r,   r-   r   r;   ef)r   g@gffffff
@c           	         s   t |}|| |dkrdd   D }n9|dkr%dd   D }n+|dv r5 fdd d D }n|d	krCd
d t D }n|dkrPdd   D }|D ]\}}}||| | ksaJ t||| | u smJ qRd S )Nrj   c                 s   s0    | ]\}}|  D ]
\}}|||fV  q
qd S rl   rO   )r   keyindex_value_mapr@   valuer(   r(   r)   r         zHTestDataFrameToDict.test_to_dict_returns_native_types.<locals>.<genexpr>rJ   c                 s   s0    | ]\}}t |D ]
\}}|||fV  q
qd S rl   	enumerate)r   r   valuesr@   r   r(   r(   r)   r     r   >   r   r   c                 3   s<    | ]}t  d  D ]\}}|| d | | fV  q
qdS )r   r   Nr   )r   r@   jr   rv   r(   r)   r     s    
r   r   c                 s   0    | ]\}}|  D ]
\}}|||fV  q
qd S rl   r   r   r@   r   r   r   r(   r(   r)   r     r   c                 s   r   rl   r   r   r(   r(   r)   r     r   )r   r   rO   r   r   )	r   r   r   expected_typesr6   assertion_iteratorr@   r   r   r(   r   r)   !test_to_dict_returns_native_types\  s4   (

z5TestDataFrameToDict.test_to_dict_returns_native_types)+__name__
__module____qualname__r*   r8   r:   r2   markparametrizerC   rj   r   rJ   r   r_   re   ri   rw   r   r   r   r   boolr   r	   rt   rP   r   r   rQ   uint64int64float64bool_
datetime64r   r   r   r   from_tuplesr   tupler   r(   r(   r(   r)   r
      s    .

;








	
"














	!r
   )collectionsr   r   r   numpyrQ   r2   r   pandasr   r   r   r   r	   pandas._testing_testingr   r
   r(   r(   r(   r)   <module>   s    