o
    ôT·jÐH  ã                	   @   s²   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mZmZmZmZ d dlmZ G dd„ dƒZej dedd	d	ƒed	ƒed
ƒed	dƒg¡dd„ ƒZdS )é    )ÚOrderedDictÚdefaultdict)ÚdatetimeN)	ÚNAÚ	DataFrameÚIndexÚIntervalÚ
MultiIndexÚPeriodÚSeriesÚ	TimedeltaÚ	Timestampc                   @   sT  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¡ej ddddgddgdœfddddœdddœdœfg¡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d0d/œdd1d/œd2œfeed3d-d.d/œfd-dd0d/œfddd1d/œfgƒfee
ƒee
d-d.d/œdd0d/œdd1d/œd2œƒfg¡d4d5„ ƒZd6d7„ Zd8d9„ Zej d:g d;¢efed<d-d-ƒed=ddƒed>ddƒgegg d?¢egg d@¢egg dA¢egf¡dBdC„ ƒZej dDe  d¡ege !dE¡ege "dF¡ege #dG¡ege $dH¡egf¡dIdJ„ ƒZ%dKdL„ Z&ej d&dMe'dNdOgƒe'dNdOgdPdQ�e( )dRdSg¡e(j)dRdSgdTdUgdV�g¡ej dWdXdYge'dXdYgƒe'dXdYgdZdQ�e( )d[d\g¡e(j)d[d\gd]d^gdV�g¡d_d`„ ƒƒZ*ej dg da¢¡ej dbe !d-¡d-e !d¡ge "d.¡d0e "d1¡ge "d.¡de !d¡ge "d.¡dce !d¡ge "d.¡dcge !d¡ge "d.¡dde !d¡gdeœeeegeeegeeegeeegeeegee+egdeœfg d@¢g df¢dRœeeegeeegdRœfg dg¢g dh¢dRœeeegeeegdRœff¡didj„ ƒƒZ,ej dg dk¢¡dldm„ ƒZ-ej dnd$dodpgd-dgddqggdrœfdsdodpgd-dgddqggdMgdtœfg¡dudv„ ƒZ.ej dnddcd-dMdœifddcd-dMgifd$d3d-gdcgd-gdMggdwœfdsd3d-gdcgd-gdMggdMgdMgdxœfd!dcd-idcdMigfd&dcd-idcdMidœfg¡dydz„ ƒZ/d{d|„ Z0d}d~„ Z1dMS )Ú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,   új/home/dinkstrade/pdmp-scanner/venv/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_orientG   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 understoodr3   Úxinvalidr   r5   r9   r,   r,   r-   Útest_to_dict_invalid_orientO   s
   "ÿz/TestDataFrameToDict.test_to_dict_invalid_orientr   )ÚdÚlÚrÚspÚsÚic                 C   sP   t dddgiƒ}tjtdd�� |j|d� W d   ƒ d S 1 s!w   Y  d S )Nr   r   r   znot understoodr3   r   r5   )r"   r   r:   r,   r,   r-   Ú test_to_dict_short_orient_raisesU   s   "ÿz4TestDataFrameToDict.test_to_dict_short_orient_raisesÚmappingc                 C   sv  dddœddddœdœ}t |ƒj|d	�}| ¡ D ]\}}| ¡ D ]\}}||| | ks.J ‚q qt |ƒjd
|d	�}| ¡ D ]\}}| ¡ D ]\}}||| t|ƒd  ksWJ ‚qEq=t |ƒjd|d	�}| ¡ D ]\}}| ¡ D ]\}}||| | ks|J ‚qnqft |ƒjd|d	�}ddgg d¢ddgddgtjdggdœ}t ||¡ t |ƒjd|d	�}dddœdddœtjddœg}	t|t	ƒsÀJ ‚t
|ƒdksÈJ ‚t||	ƒD ]
\}
}t |
|¡ qÍt |ƒ d¡}| ¡ D ]\}}| ¡ D ]\}}||| | ksùJ ‚qëqãt |ƒ}||jd  |d< | d¡}| ¡ }||jd  |d< | ¡ D ]\}}| ¡ D ]\}}||| | k�s5J ‚�q&�qd S )Nr   r   )Ú1Ú2rG   rH   Ú3)rG   rH   rI   r   ©ÚintoÚlistr   r   r   r   ç      ð?ç       @)r   r   r   r   é   r   r   Úduped)r   r   ÚitemsÚintÚnpÚnanr    r!   Ú
isinstancerL   ÚlenÚzipr   Úcopy)r"   rF   r$   Úrecons_dataÚkÚvÚk2Úv2r*   r&   ÚleftÚrightr:   Ú	comp_datar,   r,   r-   Útest_to_dict\   s\   ÿÿÿý
ýÿ
ÿÿz TestDataFrameToDict.test_to_dictc                 C   sd   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 )Nr   )rO   rO   ú|z unsupported type: <class 'list'>z1to_dict\(\) only accepts initialized defaultdictsr3   rJ   )
r   rS   ÚrandomÚdefault_rngÚstandard_normalÚjoinr6   r7   Ú	TypeErrorr   )r"   rF   r:   r;   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   rO   )r0   r0   r1   ©r   )r   r    Úassert_produces_warningÚUserWarningr   )r"   r:   r,   r,   r-   Útest_to_dict_not_unique_warning¥   s   
"ÿz3TestDataFrameToDict.test_to_dict_not_unique_warningzignore::UserWarningzorient,expectedrL   r   é   rO   é   r   Údict)r   r   c                 C   s6   t g d¢g d¢gg d¢d�}| |¡}||ksJ ‚d S )Nri   )é   rn   ro   )r   r   r   rj   ©r   r   ©r"   r   Úexpectedr:   Úresultr,   r,   r-   Útest_to_dict_not_unique¬   s   
z+TestDataFrameToDict.test_to_dict_not_uniquezorient,item_getterc                 C   ó   | | | S ©Nr,   ©r?   ÚcolÚidxr,   r,   r-   Ú<lambda>Á   ó    zTestDataFrameToDict.<lambda>r   c                 C   ó   | | | S rx   r,   ry   r,   r,   r-   r|   Â   r}   c                 C   rw   rx   r,   ry   r,   r,   r-   r|   Ã   r}   r   c                 C   s   | d | | d   |¡ S )Nr   r   r2   ry   r,   r,   r-   r|   Ä   ó    r   c                 C   r~   rx   r,   ry   r,   r,   r-   r|   Å   r}   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   r0   r   r1   )r   r   rU   rR   Úfloat)r"   r   Úitem_getterr:   ru   r,   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é   ro   é   irñ  r?   rj   r   r   z2017-11-18 21:53:00.219225+0000)Útzz2017-11-18 22:06:30.061810+0000r   )	r   ÚpytzÚutcr   rL   r   r   r    r!   )r"   r   r:   ru   rt   r,   r,   r-   Útest_to_dict_tzÐ   s   þþz#TestDataFrameToDict.test_to_dict_tzzinto, expectedr   rM   ©Úint_colÚ	float_colrN   ç      @)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 )	Nri   ©rM   rN   r‘   rŽ   r   )r   rK   r�   r�   r   )r   r   Ú	from_dictr    Úassert_frame_equal)r"   rK   rt   r:   ru   Ú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©Ú.0rD   r,   r,   r-   Ú
<dictcomp>  s    zBTestDataFrameToDict.test_to_dict_numeric_names.<locals>.<dictcomp>rn   r   r   )r   ÚrangeÚsetr   Úkeysr   ©r"   r:   ru   rt   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š     r   )r   r›   r   rž   r,   r,   r-   Útest_to_dict_wide  s   z%TestDataFrameToDict.test_to_dict_widez
data,dtype)TTFiâ  iã  éä  r’   ri   )ÚXÚYÚZc                    s6   t d|iƒ}|jdd�}t‡ fdd„|D ƒƒsJ ‚d S )Nr0   r   r   c                 3   s    � | ]}t |d  ƒˆ u V  qdS )r0   N)Útype)r™   Úrecord©Údtyper,   r-   Ú	<genexpr>4  s   € z@TestDataFrameToDict.test_to_dict_orient_dtype.<locals>.<genexpr>)r   r   Úall)r"   r   r«   r:   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 )Nr0   r   r2   r   r   )r   r   r¨   )r"   r   Úexpected_dtyper:   r?   ru   r,   r,   r-   Ú,test_to_dict_scalar_constructor_orient_dtype6  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 )NrM   g      "@r/   r   r   )r   r0   r1   )r   Úreset_indexr   rž   r,   r,   r-   Ú test_to_dict_mixed_numeric_frameH  s   z4TestDataFrameToDict.test_to_dict_mixed_numeric_frameNÚaaÚbbÚccr   r/   )r0   Ú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   rO   r   rq   )r   r   Útightr   )r   Úfrom_recordsr“   r   r    r”   )r"   r   r   r:   Ú	roundtripr,   r,   r-   Útest_to_dict_orient_tightO  s   ýz-TestDataFrameToDict.test_to_dict_orient_tight)rp   rL   r   r   r   rÀ   zdata,expected_typesr0   )r0   )r0   r1   r·   r?   ÚeÚf)r¯   gš™™™™™@çffffff
@)r   ÚhellorO   )r¯   ÚworldrÆ   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 )Nrp   c                 s   s0   � | ]\}}|  ¡ D ]
\}}|||fV  q
qd S rx   ©rQ   )r™   ÚkeyÚindex_value_maprD   Úvaluer,   r,   r-   r¬   ¢  ó   € ýþÿzHTestDataFrameToDict.test_to_dict_returns_native_types.<locals>.<genexpr>rL   c                 s   s0   � | ]\}}t |ƒD ]
\}}|||fV  q
qd S rx   ©Ú	enumerate)r™   rÊ   ÚvaluesrD   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™   rD   ÚjrÊ   ©ru   r,   r-   r¬   ®  s   € 
ýþÿr   r   c                 s   ó0   � | ]\}}|  ¡ D ]
\}}|||fV  q
qd S rx   rÉ   ©r™   rD   r©   rÊ   rÌ   r,   r,   r-   r¬   ´  rÍ   c                 s   rÓ   rx   rÉ   rÔ   r,   r,   r-   r¬   º  rÍ   )r   r   rQ   rÏ   r¨   )	r"   r   r   Úexpected_typesr:   Úassertion_iteratorrD   rÊ   rÌ   r,   rÒ   r-   Ú!test_to_dict_returns_native_typesm  s4   2
þþ
þþþþz5TestDataFrameToDict.test_to_dict_returns_native_types)rp   rL   r   r   r   c                 C   sd   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   rO   rq   ©Úcol1Úcol2Úrow1Úrow2r2   z?'index=False' is only valid when 'orient' is 'split' or 'tight'r3   F©r   r   r5   )r"   r   r:   r;   r,   r,   r-   Útest_to_dict_index_false_errorÄ  s
   "ÿz2TestDataFrameToDict.test_to_dict_index_false_errorzorient, expectedrÙ   rÚ   rq   )r   r   rÀ   )r   r   Úcolumn_namesc                 C   s<   t ddgddgdœddgd�}|j|d	d
�}t ||¡ d S )Nr   r   rO   rq   rØ   rÛ   rÜ   r2   FrÝ   )r   r   r    r!   rs   r,   r,   r-   Útest_to_dict_index_falseÌ  s   z,TestDataFrameToDict.test_to_dict_index_false)r   r   r   )r   r   r   Úindex_namesrß   c                 C   s0   t ddtgidd�}|j|d�}||ksJ ‚d S )Nr0   r   ÚInt64rª   r   )r   r   r   rs   r,   r,   r-   Útest_to_dict_na_to_noneà  s   z+TestDataFrameToDict.test_to_dict_na_to_nonec                 C   s|   t tddgdd�ddœƒ}|jdd�}t|d d	 tƒsJ ‚t tdtgdd�ddœƒ}|jdd�}t|d d	 tƒs<J ‚d S )
Nr   r   râ   rª   )r0   r   r   r   r   r0   )r   r   r   rU   rR   r   )r"   r:   ru   r,   r,   r-   Ú!test_to_dict_masked_native_pythonú  s   z5TestDataFrameToDict.test_to_dict_masked_native_pythonc                 C   sT   t dg d¢iƒ}d}tjt|d�� | di ¡ W d   ƒ d S 1 s#w   Y  d S )Nr0   ri   zpStarting with pandas version 3.0 all arguments of to_dict except for the argument 'orient' will be keyword-only.r3   r   )r   r    rk   ÚFutureWarningr   r9   r,   r,   r-   Ú!test_to_dict_pos_args_deprecation  s   ÿ"ÿz5TestDataFrameToDict.test_to_dict_pos_args_deprecation)2Ú__name__Ú
__module__Ú__qualname__r.   r<   r>   r6   ÚmarkÚparametrizerE   rp   r   rL   r   ra   rh   rm   Úfilterwarningsrv   r‚   r�   r–   rŸ   r£   Úboolr   r   r€   rR   r—   r®   rS   Úuint64Úint64Úfloat64Úbool_Ú
datetime64r±   r³   r   r	   Úfrom_tuplesrÃ   Útupler×   rÞ   rà   rã   rä   ræ   r,   r,   r,   r-   r      sb   -

;

þþ





ûþ

ýþ	ýÿþýþþíþ
"



ýú


ôþ
ûþ


ûþ

ûþ

þú	ú÷þþûþþûãþ+(
ýþþþ

ûþ
ñþ

r   Úvalr¤   r   Ú2020r   c                 C   s4   t d| giƒ}|jdd�}d| gi}||ksJ ‚d S )Nr0   rL   r   rr   )rõ   r:   ru   rt   r,   r,   r-   Útest_to_dict_list_pd_scalars  s   
r÷   )Úcollectionsr   r   r   ÚnumpyrS   r6   r‹   Úpandasr   r   r   r   r	   r
   r   r   r   Úpandas._testingÚ_testingr    r   rê   rë   r÷   r,   r,   r,   r-   Ú<module>   s    ,   y"ÿ