o
    �¨Êhi ã                   @   sŒ	  d Z ddlmZmZmZmZ ddlmZ ddlmZ	 ddl
ZddlZddlZddlmZ ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  ej! "d¡Z#ej! $d¡Z%ej! $d¡Z&e%dd„ ƒZ'e%dd„ ƒZ(e%dd„ ƒZ)ej! *dddg¡dd„ ƒZ+ej! *de,e-eeg¡ej! *dddg¡dd„ ƒƒZ.ej! *dddg¡dd „ ƒZ/d!d"„ Z0d#d$„ Z1d%d&„ Z2e%d'd(„ ƒZ3ej! *d)d*ddggd+fd,d-ddgid.fg¡d/d0„ ƒZ4d1d2„ Z5e%d3d4„ ƒZ6e&d5d6„ ƒZ7e&d7d8„ ƒZ8e%d9d:„ ƒZ9ej!j:d;d<�ej! *d=d>d?ggddggg¡d@dA„ ƒƒZ;e%ej! *d=ddgdBdCgg¡dDdE„ ƒƒZ<e%ej! *dFddgddgg¡dGdH„ ƒƒZ=e%ej! *dIdJdidKdig¡dLdM„ ƒƒZ>dNdO„ Z?e%ej! *dPdQddgidQfdQddgidfddggdfg¡dRdS„ ƒƒZ@e%dTdU„ ƒZAdVdW„ ZBdXdY„ ZCej! *dIi dFdZig¡d[d\„ ƒZDej! *d=d]e Ed^d_g¡dd`hg¡dadb„ ƒZFej! *dcddg¡ej! *dddedfg¡dgdh„ ƒƒZGej! *dcddg¡ej! *dddig¡djdk„ ƒƒZHe%dldm„ ƒZIej! *dndodpg¡dqdr„ ƒZJej! *dndodpg¡dsdt„ ƒZKe%ej! *dudvd=dBgieedwd^dxƒgdBgdy�fdvdddzœeed{gdBd|�g d}�fd~d=dBdgieedwd^dxƒed€d�d‚ƒggdBdgdy�fd~dddgdzœeejLedwd^dxƒed€d�d‚ƒfgdBdgdƒ�g d}�fg¡d„d…„ ƒƒZMe%d†d‡„ ƒZNej! *dudˆdd‰ddgidŠœeed‹dd_dŒddƒd�dŒged‹dd_dddƒdŽd�ggg d�¢dy�fd‘dddgdd`gd’œdŠœeed“dd”d•dƒed“dd”d–d—ƒd˜d™ged“dd”dšdƒed“dd”d•d—ƒd˜d›ged“dd”dœdƒed“dd”dšd—ƒd˜d�ged“dd”dœdƒed“dd”dœd–ƒd˜džged“dd”dŸdƒed“dd”dœd—ƒd˜d�ged“dd”d dƒed“dd”dŸd—ƒd˜d�ggg d¡¢dy�fg¡d¢d£„ ƒZOd¤d¥„ ZPej! *d¦d§d¨d©„ eQfdªg¡d«d¬„ ƒZRej! *d¦d§d­d©„ eQfd®g¡d¯d°„ ƒZSd±d²„ ZTe%d³d´„ ƒZUdµd¶„ ZVej! *d·d¸edBd¹dºgid»d¼�fd½edBg d¾¢id»d¼�fg¡ej! *d=ddg¡d¿dÀ„ ƒƒZWdÁdÂ„ ZXe&ej! *dÃg dÄ¢¡dÅdÆ„ ƒƒZYej! *dÇdÈdedÉddÊƒfdËdedÉddÊƒfdÌdedÉdd^ƒfg¡dÍdÎ„ ƒZZe&ej! *dÇdÈdedÉddÊƒfdËdedÉddÊƒfg¡dÏdÐ„ ƒƒZ[dÑdÒ„ Z\e&ej! *dÓddÔgd>d?gdÕfddÔgdd?gd?fddÔgd>d?ggdÕfddÔgdd?ggd?fddÔgd>dd?gid?fddÔgd>d>d?gidÕfddÔgd>d?gd>gdÕfg dÖ¢dd>d?gdÕfg dÖ¢d×dØgd×d?gd?fg	¡dÙdÚ„ ƒƒZ]e%dÛdÜ„ ƒZ^e%dÝdÞ„ ƒZ_e%ej! *dßdàdággdâfdãdàdágidãfg¡dädå„ ƒƒZ`dædç„ Zae%dèdé„ ƒZbdêdë„ Zcej! *dìejddíddîdï�ejddðddñdï�g¡dòdó„ ƒZee&dôdõ„ ƒZfe%ej! *d¦d§död©„ eQfd÷g¡dødù„ ƒƒZge%dúdû„ ƒZhdüdý„ Zidþdÿ„ Zjej! *�d �dddggf�d�dddgifg¡�d�d„ ƒZke%�d�d„ ƒZl�d�d„ Zme%�d	�d
„ ƒZndS (  zO
Tests date parsing functionality for all of the
parsers defined in parsers.py
é    )ÚdateÚdatetimeÚ	timedeltaÚtimezone)ÚStringIO)ÚparseN)Úparsing)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	Timestamp)Ú
date_range)Ústart_caching_at)Úread_csvz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningÚpyarrow_xfailÚpyarrow_skipc              	   C   sx   dd„ }t dƒ}| jtd|dd|dd�}g d¢}tjd	d
„ |D ƒdd�}tg d¢g d¢g d¢dœ|d�}t ||¡ d S )Nc                 S   ó$   |   tj¡} |   t¡} tj| dd�S ©NÚs©Úunit©ÚastypeÚnpÚfloat64ÚintÚpdÚto_timedelta©Útime© r"   úY/var/www/html/env/lib/python3.10/site-packages/pandas/tests/io/parser/test_parse_dates.pyÚ__custom_date_parser/   ó   
zCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parsera  time e n h
        41047.00 -98573.7297 871458.0640 389.0089
        41048.00 -98573.7299 871458.0640 389.0089
        41049.00 -98573.7300 871458.0642 389.0088
        41050.00 -98573.7299 871458.0643 389.0088
        41051.00 -98573.7302 871458.0640 389.0086
        ú Please use 'date_format' insteadTr!   ©Údelim_whitespaceÚparse_datesÚdate_parserÚ	index_col)iW   iX   iY   iZ   i[   c                 S   s   g | ]	}t j|d d�‘qS )r   r   )r   r   )Ú.0Úir"   r"   r#   Ú
<listcomp>G   s    z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>©Úname)g>èÙ¬ÛøÀçVŸ«­ÛøÀgáz®ÛøÀr1   gù1æ®ÛøÀ)ç¦›Ä D˜*Ar2   g‰ÒÞ D˜*Agúíë D˜*Ar2   )çóŽSt$Px@r3   çGx$Px@r4   gîëÀ9#Px@)ÚeÚnÚh©Úindex)r   Úread_csv_check_warningsÚFutureWarningr   ÚTimedeltaIndexr	   ÚtmÚassert_frame_equal©Úall_parsersr$   ÚtestdataÚresultr!   Úexpectedr"   r"   r#   Ú%test_read_csv_with_custom_date_parser,   s.   ÿ	ù	ýú	rD   c              	   C   s\   dd„ }t dƒ}| jtd|dd|dd�}tg d	¢dd
�}tdg d¢i|d�}t ||¡ d S )Nc                 S   r   r   r   r    r"   r"   r#   r$   W   r%   zUtest_read_csv_with_custom_date_parser_parse_dates_false.<locals>.__custom_date_parserz‡time e
        41047.00 -93.77
        41048.00 -95.79
        41049.00 -98.73
        41050.00 -93.99
        41051.00 -97.72
        r&   TFr!   r'   )g    à
ä@g     ä@g     ä@g    @ä@g    `ä@r/   r5   )gáz®GqWÀgÃõ(\�òWÀg…ëQ¸®XÀg�Âõ(\WÀg®GáznXÀr8   )r   r:   r;   r   r	   r=   r>   r?   r"   r"   r#   Ú7test_read_csv_with_custom_date_parser_parse_dates_falseT   s&   ÿ	ù	
þrE   c                 C   s�   | }d}t tddddddƒdggddgd	�}d
}tjt|dd�� |jt|ƒdddddgid d�}W d   ƒ n1 s;w   Y  t ||¡ d S )Nz06-02-2013;13:00;1-000.215éÝ  é   é   é   r   g…ëQ¸A�@ÚDate©ÚcolumnsúKSupport for nested sequences for 'parse_dates' in pd.read_csv is deprecatedF©ÚmatchÚcheck_stacklevelú;ú-é   )ÚsepÚ	thousandsr)   Úheader)r	   r   r=   Úassert_produces_warningr;   r   r   r>   )r@   ÚparserÚdatarC   Údepr_msgÚdfr"   r"   r#   Útest_separator_date_conflictw   s&   ÿÿÿ
ûý
r\   Úkeep_date_colTFc           
      C   sÚ  d}| }|r|j dkrtjjdd�}| |¡ dd„ }d |ddgdd	gd
œ|g d¢dœ}|jtdt|ƒfi |¤ddi¤Ž}tt	dddddƒt	dddddƒdddddddddgt	dddddƒt	dddddƒddd d!d"d#ddd$gt	dddd%dƒt	dddddƒddd&d'd(d#d)ddgt	dddd%dƒt	dddd%dƒddd&d*d+d,d-dd.gt	dddd/dƒt	dddd%dƒddd0d1d(d2d3dd4gt	dddd5dƒt	dddd/dƒddd6d7d(d2d8ddggg d9¢d:�}	|sà|	j
g d;¢dd<�}	||	j }t ||	¡ d S )=NáÌ  KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
ÚpyarrowúCpyarrow doesn't support disabling auto-inference on column numbers.©Úreasonc                  W   s   t jt  | ¡td�S )zË
        Test date parser.

        Parameters
        ----------
        date_cols : args
            The list of data columns to parse.

        Returns
        -------
        parsed : Series
        )rX   )r   Útry_parse_datesÚconcat_date_colsÚdu_parse)Ú	date_colsr"   r"   r#   r*   §   s   
ÿz2test_multiple_date_col_custom.<locals>.date_parserrS   rH   é   ©ÚactualÚnominal©	ÚX0ÚX1ÚX2ÚX3ÚX4ÚX5ÚX6ÚX7ÚX8)rV   r*   r)   r]   Únamesúuse 'date_format' insteadÚraise_on_extra_warningsFéÏ  é   é   r   é   é8   ÚKORDÚ19990127ú	 19:00:00ú	 18:56:00çìQ¸…ëé?ç{®Gáz@çÍÌÌÌÌÌ@ç        ç     €q@é   ú	 20:00:00ú	 19:56:00ç{®Gáz„?ç®Gáz®@ç     @p@é   ú	 21:00:00ú	 20:56:00çáz®Gáâ¿çÍÌÌÌÌÌ@ú	 21:18:00ç®Gáz®ï¿ç®Gáz @çÍÌÌÌÌÌ@ç     àp@é   ú	 22:00:00ú	 21:56:00ç\�Âõ(\û?çffffff@ç      r@é   ú	 23:00:00ú	 22:56:00çffffff@)ri   rj   rl   rm   rn   ro   rp   rq   rr   rs   rt   rK   ©rm   rn   ro   ©Úaxis)ÚengineÚpytestÚmarkÚxfailÚapplymarkerr:   r;   r   r	   r   ÚdroprL   r=   r>   )
r@   r]   ÚrequestrY   rX   r¥   r*   ÚkwdsrB   rC   r"   r"   r#   Útest_multiple_date_col_custom“   sÎ   ÿ
ûýüûõõõõõõ¾P¯`
r«   Ú	containerÚdimrS   rH   c                    sb   d}d‰t ‡ ‡fdd„t|ƒD ƒƒ}tjt|d�� t |¡ W d   ƒ d S 1 s*w   Y  d S )Nz0not all elements from date_cols are numpy arraysr~   c                 3   s   � | ]}ˆ ˆgƒV  qd S ©Nr"   )r,   Ú_©r¬   Úvaluer"   r#   Ú	<genexpr>7  s   € z,test_concat_date_col_fail.<locals>.<genexpr>©rO   )ÚtupleÚranger¤   ÚraisesÚ
ValueErrorr   rd   )r¬   r­   Úmsgrf   r"   r°   r#   Útest_concat_date_col_fail1  s   "ÿr¹   c           
      C   sð  d}| }|r|j dkrtjjdd�}| |¡ d}d ddgddgg|g d	¢d
œ}tjttf|dd�� |j	t
|ƒfi |¤Ž}W d   ƒ n1 sHw   Y  ttdddddƒtdddddƒdddddddddgtdddddƒtdddddƒdddddd ddd!gtdddd"dƒtdddddƒddd#d$d%d d&ddgtdddd"dƒtdddd"dƒddd#d'd(d)d*dd+gtdddd,dƒtdddd"dƒddd-d.d%d/d0dd1gtdddd2dƒtdddd,dƒddd3d4d%d/d5ddggg d6¢d7�}	|sð|	jg d8¢dd9�}	t ||	¡ d S ):Nr^   r_   r`   ra   ú8The 'keep_date_col' keyword in pd.read_csv is deprecatedrS   rH   rg   rk   )rV   r)   r]   ru   FrN   rx   ry   rz   r   r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   )ÚX1_X2ÚX1_X3rl   rm   rn   ro   rp   rq   rr   rs   rt   rK   r    r¡   )r£   r¤   r¥   r¦   r§   r=   rW   ÚDeprecationWarningr;   r   r   r	   r   r¨   r>   )
r@   r]   r©   rY   rX   r¥   rZ   rª   rB   rC   r"   r"   r#   Útest_multiple_date_col=  sÂ   ÿ
ü
ÿýõõõõõõ¾P¯`r¾   c                 C   sè   d}| }d dgdg d¢dœ}|j t|ƒfi |¤Ž}ttdddddƒtdddd	dƒtdddd
dƒtdddd
dƒtdddddƒgdd�}tg d¢g d¢g d¢g d¢g d¢gg d¢|d�}|jdkrlt d|d  ¡jj	|d< t
 ||¡ d S )Naz  KORD,19990127 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
rS   )rl   rm   rn   ro   rp   rq   rr   rs   )rV   r)   r+   ru   rx   ry   rz   r   r†   rŒ   r–   rm   r/   )r}   r€   r�   r‚   rƒ   r„   r…   )r}   rˆ   r‰   rŠ   rƒ   r„   r‹   )r}   rŽ   r�   rŠ   r�   r„   r…   )r}   r‘   r’   r“   r”   r„   r•   )r}   r˜   r�   r™   rš   r„   r›   )rl   rn   ro   rp   rq   rr   rs   ©rL   r9   r_   ú
1970-01-01rn   )r   r   r   r   r	   r£   r   Úto_datetimeÚdtr!   r=   r>   )r@   rY   rX   rª   rB   r9   rC   r"   r"   r#   Útest_date_col_as_index_colÄ  s<   üûø
û÷
rÃ   c                 C   s@  d}ddgddgdœ}| }d |t jdœ}|jtdt|ƒfi |¤dd	i¤Ž}ttd
ddddƒtd
ddddƒddgtd
ddddƒtd
ddddƒddgtd
ddddƒtd
ddddƒddgtd
ddddƒtd
ddddƒddgtd
ddddƒtd
ddddƒddgtd
ddddƒtd
ddddƒddggg d¢d�}||j }t 	||¡ d S )NúÿKORD,19990127, 19:00:00, 18:56:00, 0.8100
KORD,19990127, 20:00:00, 19:56:00, 0.0100
KORD,19990127, 21:00:00, 20:56:00, -0.5900
KORD,19990127, 21:00:00, 21:18:00, -0.9900
KORD,19990127, 22:00:00, 21:56:00, -0.5900
KORD,19990127, 23:00:00, 22:56:00, -0.5900rS   rH   rg   rh   ©rV   r)   r*   rv   rw   Frx   ry   rz   r   r{   r|   r}   r�   r†   r‰   rŒ   r�   r’   r–   rœ   ©ri   rj   r   é   rK   )
r   rÁ   r:   r;   r   r	   r   rL   r=   r>   )r@   rY   r)   rX   rª   rB   rC   r"   r"   r#   Ú test_multiple_date_cols_int_castò  sZ   ÿýýüû""üüüüëã
#rÈ   c              	   C   sv   | }d}|j tdt|ƒddggd tdd�}ttdƒddd	dtjdgtdƒdd
d	dtjdggg d¢d�}t ||¡ d S )Nz]05/31/2012,15:30:00.029,1306.25,1,E,0,,1306.25
05/31/2012,15:30:00.029,1306.25,8,E,0,,1306.25rv   r   rS   F)r)   rV   r*   rw   z05/31/2012, 15:30:00.029g     i”@ÚEé   )Ú0_1rH   rg   rÇ   é   rG   é   rK   )	r:   r;   r   r   r	   r   Únanr=   r>   ©r@   rX   rY   rB   rC   r"   r"   r#   Ú&test_multiple_date_col_timestamp_parse2  s@   ù	ù
ùöërÐ   c                 C   s*  | }d}d}t jt|dd�� |jt|ƒdddgid�}W d   ƒ n1 s&w   Y  ttd	dd
ddƒdddddddgtd	dd
ddƒdddddddgtd	dd
ddƒdddddddgtd	dd
ddƒddddd dd!gtd	dd
d"dƒdd#dd$d%dd&gtd	dd
d'dƒdd(dd$d)ddggg d*¢d+�}t  ||¡ d S ),Na  ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000rM   FrN   rj   rS   rH   ©r)   rx   ry   rz   r   r}   r€   r�   r‚   rƒ   r„   r…   r†   rˆ   r‰   rŠ   r‹   rŒ   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r˜   r™   rš   r›   rœ   rž   rŸ   ©rj   ÚIDÚ
ActualTimeÚTDewÚTAirÚ	WindspeedÚPrecipÚWindDirrK   )r=   rW   r;   r   r   r	   r   r>   ©r@   rX   rY   rZ   rB   rC   r"   r"   r#   Ú#test_multiple_date_cols_with_headerZ  sˆ   
ÿÿýøøøøøøÍ>ÁJrÛ   zdata,parse_dates,msgzSdate_NominalTime,date,NominalTime
KORD1,19990127, 19:00:00
KORD2,19990127, 20:00:00z0New date column already in dict date_NominalTimezCID,date,nominalTime
KORD,19990127, 19:00:00
KORD,19990127, 20:00:00rÓ   zDate column ID already in dictc              	   C   s’   | }d}t jt|d��4 tjttf|dd�� |jt|ƒ|d� W d   ƒ n1 s*w   Y  W d   ƒ d S W d   ƒ d S 1 sBw   Y  d S )NrM   r³   FrN   rÑ   )	r¤   r¶   r·   r=   rW   r;   r½   r   r   )r@   rY   r)   r¸   rX   rZ   r"   r"   r#   Ú%test_multiple_date_col_name_collisionº  s   ÿ
ÿýÿ"ÿrÜ   c              	   C   s`   | }d}|j tdt|ƒddgdd„ dd�}tg d¢gg d	¢ttd
ƒgdd�d�}t ||¡ d S )Nz¶posix_timestamp,elapsed,sys,user,queries,query_time,rows,accountid,userid,contactid,level,silo,method
1343103150,0.062353,0,4,6,0.01690,3,12345,1,-1,3,invoice_InvoiceResource,search
rv   r   c                 S   s   t jt| ƒtjd�jd d�S )N)Útz)Útzinfo)r   Úfromtimestampr   r   ÚutcÚreplace©Úxr"   r"   r#   Ú<lambda>î  s    ÿz*test_date_parser_int_bug.<locals>.<lambda>F)r+   r)   r*   rw   )go�»ì¯?r   rÇ   rG   gX¨5Í;N‘?rg   i90  rS   éÿÿÿÿrg   Úinvoice_InvoiceResourceÚsearch)ÚelapsedÚsysÚuserÚqueriesÚ
query_timeÚrowsÚ	accountidÚuseridÚ	contactidÚlevelÚsiloÚmethodz2012-07-24 04:12:30Úposix_timestampr/   r¿   )r:   r;   r   r	   r   r   r=   r>   rÏ   r"   r"   r#   Útest_date_parser_int_bugÜ  s&   ÿõÿá!rõ   c                 C   s–   | }t tjddd�tdƒ d¡dœƒ}tj|jdd…d d …f< t d	¡�}| 	|¡ |j
|d
dgd�}t ||¡ W d   ƒ d S 1 sDw   Y  d S )Né
   r   ©ÚdtypeÚ20010101Úns)ÚAÚBrg   rG   z__nat_parse_.csvr   rü   ©r+   r)   )r	   r   Úaranger   Úas_unitrÎ   Úilocr=   Úensure_cleanÚto_csvr   r>   )r@   rX   r[   ÚpathrB   r"   r"   r#   Útest_nat_parse  s   þÿ
"ür  c                 C   sb   d}| }|j tdt|ƒdd„ d�}|jt|ƒdd�}t ||¡ |jt|ƒdd	�}t ||¡ d S )
Nú3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
rv   c                 S   s   t  | d¡S )Nú%Y%m%d)r   Ústrptimerâ   r"   r"   r#   rä   6  s    z(test_csv_custom_parser.<locals>.<lambda>)r*   TrÑ   r  )Údate_format)r:   r;   r   r   r=   r>   ©r@   rY   rX   rB   rC   r"   r"   r#   Útest_csv_custom_parser*  s   ür
  c                 C   s>   d}| }|j t|ƒdd�}|j t|ƒddd�}t ||¡ d S )Nr  TrÑ   r   rý   ©r   r   r=   r>   r	  r"   r"   r#   Ú#test_parse_dates_implicit_first_col>  s
   r  c                 C   sb   d}| }|j t|ƒddgd�}tdddd� d ¡}tg d¢g d¢g d	¢d
œ|d�}t ||¡ d S )Nz8date,A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r   rý   z1/1/2009rg   )Úperiodsr0   ©ÚaÚbÚc)rS   rg   rÇ   )rH   rÇ   rÌ   ©rû   rü   ÚCr8   )r   r   r   Ú
_with_freqr	   r=   r>   )r@   rY   rX   rB   r9   rC   r"   r"   r#   Útest_parse_dates_stringL  s   ÿr  z#yearfirst is not surfaced in read_*ra   r)   r   r!   c              
   C   sˆ   d}| }|j tdt|ƒd|d�}ttddddddƒtdd	d
dddƒtddddddƒgtdd�}tg d¢g d¢dœ|d�}t ||¡ d S )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
úCould not infer formatr   rý   éÙ  rS   é   rö   rH   é   r†   rg   rÊ   é   Ú	date_time©rø   r0   )rS   rg   rÌ   )rH   rÇ   rG   ©rü   r  r8   )	r:   ÚUserWarningr   r
   r   Úobjectr	   r=   r>   )r@   r)   rY   rX   rB   r9   rC   r"   r"   r#   Útest_yy_format_with_year_first`  s&   ûýù	r   r  r  c                 C   sf   d}| }t tdddƒgdgtdddƒgdœƒ}| ddg¡}|jt|ƒd	dg|d
d�}t ||¡ d S )Nza,b,c
01/01/2010,1,15/02/2010éÚ  rS   rH   é   r  r  r  r   T)r+   r)   Údayfirst)r	   r   Ú	set_indexr   r   r=   r>   )r@   r)   rY   rX   rC   rB   r"   r"   r#   Útest_parse_dates_column_list}  s    ÿÿr%  r+   c                 C   sÄ   d}| }t jtdddƒtdddƒtdddƒfdgddgd	�}|dd
gkr*| d
d¡}tg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g	g d¢|d�}|jtdt|ƒ|dd�}t 	||¡ d S )NzÅindex1,index2,A,B,C
20090101,one,a,1,2
20090101,two,b,3,4
20090101,three,c,4,5
20090102,one,a,1,2
20090102,two,b,3,4
20090102,three,c,4,5
20090103,one,a,1,2
20090103,two,b,3,4
20090103,three,c,4,5
r  rS   rH   rg   )ÚoneÚtwoÚthreeÚindex1Úindex2©ru   r   )r  rS   rH   )r  rg   rÇ   )r  rÇ   rÌ   r  r¿   r  Trý   )
r   Úfrom_productr   Ú	swaplevelr	   r:   r  r   r=   r>   )r@   r+   rY   rX   r9   rC   rB   r"   r"   r#   Útest_multi_index_parse_datesŽ  s@    þû	÷óûr.  Úkwargsr#  Ú	day_firstc                    s  | }d}dˆ v rN|j tdt|ƒg d¢‡ fdd„dddd	gd
�	}ttdddƒtdddƒtdddƒgdd�}tg d¢dtjdgdœ|ddgd�}t 	||¡ d S d}t
jt|d��! |j tdt|ƒg d¢‡ fdd„dgddd	gd�	 W d   ƒ d S 1 s{w   Y  d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r#  rv   )r!   ÚQÚNTUc                    ó   t | fi ˆ ¤ŽS r®   ©re   ©Úd©r/  r"   r#   rä   Ñ  ó    z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TÚNA)ru   r*   rV   r+   r)   Ú	na_valuesr!  rS   r  rH   r!   r/   )rS   rS   rS   )r1  r2  r1  r2  ©r9   rL   z.got an unexpected keyword argument 'day_first'r³   c                    r3  r®   r4  r5  r7  r"   r#   rä   é  r8  )ru   r*   Úskiprowsr+   r)   r:  )r:   r;   r   r   r   r	   r   rÎ   r=   r>   r¤   r¶   Ú	TypeError)r@   r/  rX   rY   r[   Ú	exp_indexrC   r¸   r"   r7  r#   Ú#test_parse_dates_custom_euro_formatÂ  sL   
÷ þý
÷"ÿr?  c                 C   sŒ   | }d}|j t|ƒddd�}|jdkr|j d¡|_tddgittd	ƒgd
d�d�}|jdkr3tj	}nt
j	}t ||¡ |jj|u sDJ ‚d S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Trý   r_   rú   rã   g      à?z2012-06-13 01:39:00+00:00rJ   r/   r8   )r   r   r£   r9   rÿ   r	   r   r   Úpytzrà   r   r=   r>   rÝ   )r@   rX   rY   rB   rC   Úexpected_tzr"   r"   r#   Útest_parse_tz_awareñ  s   
ÿ
rB  zparse_dates,index_colrj   c                 C   s@  | }d}t tdddddƒddd	d
dddgtdddddƒdddddddgtdddddƒdddddddgtdddddƒdddddddgtdddddƒd d!dd"d#dd$gtdddd%dƒd&d'dd"d(ddggg d)¢d*�}| d+¡}t|tƒstd,|j_d-}tjt	|d.d/�� |j
t|ƒ||d0�}W d   ƒ n1 s“w   Y  t ||¡ d S )1Na  
ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD1,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD2,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD3,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD4,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD5,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD6,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rx   rS   ry   rz   r   ÚKORD1r€   r�   r‚   rƒ   r„   r…   r†   ÚKORD2rˆ   r‰   rŠ   r‹   rŒ   ÚKORD3rŽ   r�   r�   ÚKORD4r‘   r’   r“   r”   r•   r–   ÚKORD5r˜   r™   rš   r›   rœ   ÚKORD6rž   rŸ   rÒ   rK   rj   Údate_NominalTimerM   FrN   ©r)   r+   )r	   r   r$  Ú
isinstanceÚdictr9   r0   r=   rW   r;   r   r   r>   )r@   r)   r+   rX   rY   rC   rZ   rB   r"   r"   r#   Útest_multiple_date_cols_index  s’   	øøøøøøÍ>Á
J
ÿÿ
ÿýrM  c                 C   sœ  | }d}t tdddddƒddd	d
dddgtdddddƒdddddddgtdddddƒdddddddgtdddddƒdddddddgtdddddƒddddddd gtdddd!dƒdd"ddd#ddggg d$¢d%�}| d&¡}d'}tjt|d(d)��+ |jt|ƒd&dd*gid&d*d+��}t|ƒ}W d   ƒ n1 s”w   Y  W d   ƒ n1 s£w   Y  t 	|d |d d*… ¡ t 	|d |d*d,… ¡ t 	|d* |d,d … ¡ d S )-Náõ  ID,date,nominalTime,actualTime,A,B,C,D,E
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rx   rS   ry   rz   r   r}   r€   r�   r‚   rƒ   r„   r…   r†   rˆ   r‰   rŠ   r‹   rŒ   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r˜   r™   rš   r›   rœ   rž   rŸ   )rj   rÓ   Ú
actualTimerû   rü   r  ÚDrÉ   rK   rj   rM   FrN   rH   )r)   r+   Ú	chunksizerÇ   )
r	   r   r$  r=   rW   r;   r   r   Úlistr>   )r@   rX   rY   rC   rZ   ÚreaderÚchunksr"   r"   r#   Útest_multiple_date_cols_chunkedp  s    
øøøøøøÍ>Á
Aÿÿ
ü
ú€ýrU  c                 C   s¼   | }d}d}t jttf|dd�� |jt|ƒdddgidd�}W d   ƒ n1 s)w   Y  t jttf|dd�� |jt|ƒddd	d
gid�}W d   ƒ n1 sQw   Y  t  ||¡ d S )NrN  rM   FrN   rj   rS   rH   rJ  r   ÚnominalTimerý   )r=   rW   r;   r½   r   r   r>   )r@   rX   rY   rZ   Úwith_indicesÚ
with_namesr"   r"   r#   Ú)test_multiple_date_col_named_index_compatÓ  s*   ÿ
ÿÿý
ÿ
ýýrY  c                 C   sÌ   | }d}d}t jttf|dd�� |jt|ƒddgdddgid	�}W d   ƒ n1 s+w   Y  t jttf|dd�� |jt|ƒdddgid
�}W d   ƒ n1 sRw   Y  | ddg¡}t  ||¡ d S )NrN  rM   FrN   rj   rÓ   rS   rH   rý   rÑ   )r=   rW   r;   r½   r   r   r$  r>   rÚ   r"   r"   r#   Ú,test_multiple_date_col_multiple_index_compatô  s$   
ÿ
ÿÿý
ÿýrZ  r  c                 C   sZ   | }d}d}t jt|d�� |jt|ƒfddi|¤Ž W d   ƒ d S 1 s&w   Y  d S )NúSOnly booleans, lists, and dictionaries are accepted for the 'parse_dates' parameterúA,B,C
    1,2,2003-11-1r³   r)   r  ©r¤   r¶   r=  r   r   )r@   r/  rX   r¸   rY   r"   r"   r#   Ú*test_read_with_parse_dates_scalar_non_bool  s   ÿ"ÿr^  ©rS   rÇ   rÌ   rg   c                 C   sR   | }d}d}t jt|d�� |jt|ƒdd� W d   ƒ d S 1 s"w   Y  d S )Nr[  r\  r³   r_  rÑ   r]  )r@   r)   rX   r¸   rY   r"   r"   r#   Ú'test_read_with_parse_dates_invalid_type   s   ÿ"ÿr`  Úcache_datesr±   rÎ   Ú c                 C   s8   | }t |› d�td  ƒ}|j|d ddgdg|d� d S )Nú,
rS   ÚfooÚbar)rV   ru   r)   ra  )r   r   r   )r@   ra  r±   rX   r   r"   r"   r#   Útest_bad_date_parse.  s   
ûrf  Ú0c              
   C   sX   | }t |› d�d ƒ}|jdkrd }n|rd }nt}|j|d|d ddgdg|dd� d S )	Nrc  iPÃ  r_   r  rd  re  F)rV   ru   r)   ra  rw   )r   r£   r  r:   )r@   ra  r±   rX   r   Úwarnr"   r"   r#   Ú test_bad_date_parse_with_warning?  s"   

øri  c                 C   sT   | }d}|j t|ƒdgdd�}ttdddƒdgtjdggddgd	�}t ||¡ d S )
NúDate,test
2012-01-01,1
,2rJ   F)r)   Ú	na_filteriÜ  rS   rH   ÚtestrK   )r   r   r	   r   r   ÚNaTr=   r>   rÏ   r"   r"   r#   Útest_parse_dates_empty_string_  s   ÿrn  rS  r:   Úread_table_check_warningsc              	   C   s.   | }d}t ||ƒtdt|ƒdgdddd� d S )Nrj  z2The argument 'infer_datetime_format' is deprecatedrJ   Tú,F)r)   Úinfer_datetime_formatrT   rw   )Úgetattrr;   r   )r@   rS  rX   rY   r"   r"   r#   Ú.test_parse_dates_infer_datetime_format_warningl  s   
ùrs  c              
   C   sd   | }d}d}t jt|d�� t||ƒtdt|ƒdgtjddd� W d   ƒ d S 1 s+w   Y  d S )	Nrj  z/Cannot use both 'date_parser' and 'date_format'r³   rv   rJ   ÚISO8601rp  )r)   r*   r  rT   )r¤   r¶   r=  rr  r;   r   r   rÁ   )r@   rS  rX   rY   r¸   r"   r"   r#   Ú,test_parse_dates_date_parser_and_date_format  s   ù"ÿru  zdata,kwargs,expectedza
04.15.2016ià  r"  rK   rJ  z
2016-04-15r/   r;  za,b
04.15.2016,09.16.2013r  rF   é	   é   r+  c                 C   s.   | }|j t|ƒfddi|¤Ž}t ||¡ d S )NrU   Ú.r  ©r@   rY   r/  rC   rX   rB   r"   r"   r#   Ú%test_parse_dates_no_convert_thousands“  s   #rz  c                 C   s€   d}| }|j tdt|ƒddgdddgitjd�}tdddd	ddƒd
dgtddddddƒddgg}t|g d¢d�}t ||¡ d S )NzUD,T,A,B
date, time,a,b
2001-01-05, 09:00:00, 0.0, 10.
2001-01-06, 00:00:00, 1.0, 11.
rv   r   rS   r  rÅ   éÑ  rÌ   rv  r„   ç      $@rG   ç      ð?ç      &@)r  )rû   r  )rü   r  rK   )	r:   r;   r   r   rÁ   r   r	   r=   r>   )r@   rY   rX   rB   Úexpected_datarC   r"   r"   r#   Ú,test_parse_date_time_multi_level_column_name¼  s   
ú
þr€  zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r  ©rV   r)   r{  rö   r„   r}  r~  )r  r  r  rÄ   rh   rx   ry   rz   r{   r|   r}   r�   r†   r‰   rŒ   r�   r’   r–   rœ   rÆ   c                 C   sF   | }|j tdt|ƒfdtji|¤ddi¤Ž}||j }t ||¡ d S )Nrv   r*   rw   F)r:   r;   r   r   rÁ   rL   r=   r>   ry  r"   r"   r#   Útest_parse_date_timeÖ  s   Iýüûú
r‚  c              	   C   sl   | }d}|j tdt|ƒddg d¢idd„ dd	�}ttd
ddƒdgtd
ddƒdggddgd�}t ||¡ d S )Nú-year,month,day,a
2001,01,10,10.
2001,02,1,11.rv   r   Úymd)r   rS   rH   c                 S   s   | S r®   r"   râ   r"   r"   r#   rä   9  s    z(test_parse_date_fields.<locals>.<lambda>F©rV   r)   r*   rw   r{  rS   rö   r|  rH   r~  r  rK   )r:   r;   r   r	   r   r=   r>   rÏ   r"   r"   r#   Útest_parse_date_fields0  s    
ù
þr†  )Úkeyr±   rh  r*   c                 C   ó   t j| dd�S )Nú%Y %m %d %H %M %S©Úformat©r   rÁ   râ   r"   r"   r#   rä   I  ó    rä   )r  r‰  Nc              	   C   sˆ   | }d}|j |dt|ƒfddg d¢idœ||i¤ddi¤Ž}ttd	d
ddddƒddgtd	d
ddddƒddggg d¢d�}t ||¡ d S )NzZyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0,0.0,10.
2001,01,5,10,0,00,1.,11.
rv   r   ÚymdHMS©r   rS   rH   rg   rÇ   rÌ   r�  rw   Fr{  rS   rÌ   rö   r„   r|  r}  r~  ©rŽ  r  r  rK   ©r:   r   r	   r   r=   r>   ©r@   r‡  r±   rh  rX   rY   rB   rC   r"   r"   r#   Útest_parse_date_all_fieldsD  s*   ý
ûúù	þûr“  c                 C   rˆ  )Nú%Y %m %d %H %M %S.%frŠ  rŒ  râ   r"   r"   r#   rä   n  r�  )r  r”  Nc                 C   s�   | }d}|j |dt|ƒfddg d¢idœ||i¤ddi¤Ž}ttd	d
dddddd�ddgtd	d
dddddd�ddggg d¢d�}t ||¡ d S )Nzgyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0.123456,0.0,10.
2001,01,5,10,0,0.500000,1.,11.
rv   r   rŽ  r�  r�  rw   Fr{  rS   rÌ   rö   i@â )Úmicrosecondr„   r|  i ¡ r}  r~  r�  rK   r‘  r’  r"   r"   r#   Ú test_datetime_fractional_secondsi  s*   ý
ûúù	þûr–  c              	   C   s†   | }d}dd„ }|j tdt|ƒddddgi|dd	�}ttd
ddƒddgtd
ddƒddggg d¢d�}|d  d¡|d< t ||¡ d S )Nrƒ  c                 S   s   dd„ t | |ƒD ƒS )Nc                 S   s&   g | ]\}}t t|ƒt|ƒd d�‘qS )rS   )ÚyearÚmonthÚday)r   r   )r,   ÚyÚmr"   r"   r#   r.   “  s   & z8test_generic.<locals>.parse_function.<locals>.<listcomp>)Úzip)ÚyyÚmmr"   r"   r#   Úparse_function’  s   z$test_generic.<locals>.parse_functionrv   r   ÚymrS   Fr…  r{  rö   r|  rH   r~  )r   r™  r  rK   údatetime64[ns])r:   r;   r   r	   r   r   r=   r>   )r@   rX   rY   rŸ  rB   rC   r"   r"   r#   Útest_genericŽ  s$   
ù	"þr¢  c                 C   s†   | }d}dd„ }|j tdt|ƒ|dddgiddgd	�}tjd
gd dd�}tddgd itj|g d¢gddgd�d�}t 	||¡ d S )Nzxdate,time,prn,rxstatus
2013-11-03,19:00:00,126,00E80000
2013-11-03,19:00:00,23,00E80000
2013-11-03,19:00:00,13,00E80000
c                 S   sF   z| d | }W n t y   dd„ t| |ƒD ƒ}Y nw tj|dd�S )NÚTc                 S   s   g | ]
\}}t  ||¡‘qS r"   )r   Úcombine)r,   r6  Útr"   r"   r#   r.   ¶  s    zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>údatetime64[s]r÷   )r=  rœ  r   Úarray)rÂ   r!   Úarrr"   r"   r#   r*   ±  s   þz:test_date_parser_resolution_if_not_ns.<locals>.date_parserrv   r   r   r!   Úprn)r*   r)   r+   z2013-11-03T19:00:00rg   r¦  r÷   ÚrxstatusÚ00E80000)é~   rœ   rI   r+  )rY   r9   )
r:   r;   r   r   r§  r	   r   Úfrom_arraysr=   r>   )r@   rX   rY   r*   rB   Ú	datetimesrC   r"   r"   r#   Ú%test_date_parser_resolution_if_not_ns¦  s(   
ú	
þþr¯  c                 C   sR   | }d}|j t|ƒdgd�}ddgddgddgg}t|d	dgd
�}t ||¡ d S )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, ÚopdaterÑ   rÍ   z
10/18/2006z
10/18/2008im  ú ÚcaserK   ©r   r   r	   r=   r>   )r@   rX   rY   rB   r  rC   r"   r"   r#   Ú(test_parse_date_column_with_empty_stringÍ  s   r´  zdata,expectedz"a
135217135789158401
1352171357E+5l   0„l    H®bêk r   r÷   z%a
99999999999
123456789012345
1234E+0)l   ÿgí] l   y_"A iÒ  c                 C   s&   | }|j t|ƒ|d�}t ||¡ d S )NrÑ   r  )r@   rY   rC   r)   rX   rB   r"   r"   r#   Útest_parse_date_floatØ  s   rµ  c                 C   sb   | }d}|j t|ƒdgd�}tdddttdd�ƒd	� d ¡}|g d
¢dœ}t|ƒ}t ||¡ d S )Nzìdt,val
              2018-01-04 09:01:00+09:00,23350
              2018-01-04 09:02:00+09:00,23400
              2018-01-04 09:03:00+09:00,23400
              2018-01-04 09:04:00+09:00,23400
              2018-01-04 09:05:00+09:00,23400rÂ   rÑ   z2018-01-04 09:01:00z2018-01-04 09:05:00Ú1mini  )Úminutes)ÚstartÚendÚfreqrÝ   )i6[  éh[  r»  r»  r»  )rÂ   Úval)	r   r   r   r   r   r  r	   r=   r>   )r@   rX   rY   rB   Údtir  rC   r"   r"   r#   Útest_parse_timezoneñ  s   üûr¾  Údate_string)z
32/32/2019z
02/30/2019z
13/13/2019z13/2019z
a3/11/2018z
10/11/2o17c                 C   s<   | }t d|gidd�}|jt|ƒd dgd�}t ||¡ d S )Nr   r  r÷   r�  )r	   r   r   r=   r>   )r@   r¿  rX   rC   rB   r"   r"   r#   Ú!test_invalid_parse_delimited_date  s   ýrÀ  zdate_string,dayfirst,expectedz
13/02/2019iã  rI   z
02/13/2019z
04/02/2019c                 C   s¨   | }t d|gidd�}|jdkr@|stjdd� d}tjt|d�� |jt|ƒd |dgd	� W d   ƒ d S 1 s9w   Y  d S |jt|ƒd |dgd	�}t 	||¡ d S )
Nr   r¡  r÷   r_   z,https://github.com/apache/arrow/issues/38676ra   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer³   ©rV   r#  r)   )
r	   r£   r¤   Úskipr¶   r·   r   r   r=   r>   )r@   r¿  r#  rC   r©   rX   r¸   rB   r"   r"   r#   Ú)test_parse_delimited_date_swap_no_warning  s$   
ÿ
ÿüÿrÃ  c                 C   sF   | }t d|gidd�}d}|jt|t|ƒd |dgd�}t ||¡ d S )Nr   r¡  r÷   úzParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.rÁ  )r	   r:   r  r   r=   r>   )r@   r¿  r#  rC   rX   Úwarning_msgrB   r"   r"   r#   Ú+test_parse_delimited_date_swap_with_warning:  s   ÿúrÆ  c                   C   sB   t jtdd�� t g d¢¡ W d   ƒ d S 1 sw   Y  d S )Nz_^time data "31/05/2000" doesn\'t match format "%m/%d/%Y", at position 1. You might want to try:r³   )z
01/01/2000z
31/05/2000z
31/05/2001z
01/02/2000)r¤   r¶   r·   r   rÁ   r"   r"   r"   r#   Ú6test_parse_multiple_delimited_dates_with_swap_warningsX  s   ý"ùrÇ  z)names, usecols, parse_dates, missing_colsr¼  z
date, time)Údate1Útime1ÚtemperaturerÈ  rÊ  c           
   	   C   sÈ   | }t dƒ}d|› d�}d}t}	t|tƒr tdd„ |D ƒƒr d }	tjt|d��3 tj	|	|dd	�� |j
|d
|||d� W d   ƒ n1 sEw   Y  W d   ƒ d S W d   ƒ d S 1 s]w   Y  d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': 'ú'rM   c                 s   s   � | ]
}t |ttfƒV  qd S r®   )rK  r   Ústr)r,   rã   r"   r"   r#   r²   …  s   € 
ÿz9test_missing_parse_dates_column_raises.<locals>.<genexpr>r³   FrN   rp  )rT   ru   Úusecolsr)   )r   r;   rK  rR  Úallr¤   r¶   r·   r=   rW   r   )
r@   ru   rÍ  r)   Úmissing_colsrX   Úcontentr¸   rZ   rh  r"   r"   r#   Ú&test_missing_parse_dates_column_raisese  s&   ÿÿ
ÿÿÿ"ÿrÑ  c                 C   sb   | }t dƒ}t}|jdkrttf}|j|d|dgdgd�}tdddgidd	gd
�}t ||¡ d S )Nzx,y
1,2r_   r  rü   )r)   ru   rš  Ú2rã   Ú1r8   )r   r  r£   r½   r:   r	   r=   r>   )r@   rX   rY   rh  rB   rC   r"   r"   r#   Útest_date_parser_and_names‘  s   
ûrÔ  c                 C   sL   | }d}|j t|ƒdgddgd�}ttdƒ d¡dgd	œƒ}t ||¡ d S )
Nza,b
1,2
2019-12-31,6©r  rÓ  r   rS   ©r)   rV   ú
2019-12-31rú   rG   )rÕ  ©r  rÒ  )r   r   r	   r   rÿ   r=   r>   rÏ   r"   r"   r#   Ú#test_date_parser_multiindex_columns¥  s   ÿrÙ  zparse_spec, col_namerÕ  rØ  )Úa_bÚ1_2)rd  rÓ  c                 C   s€   | }d}d}t jt|dd�� |jt|ƒ|ddgd�}W d   ƒ n1 s%w   Y  t|tdƒ d	¡d
dgiƒ}t  ||¡ d S )Nza,b,c
1,2,3
2019-12,-31,6rM   FrN   r   rS   rÖ  r×  rú   )r  Ú3rG   )	r=   rW   r;   r   r   r	   r   rÿ   r>   )r@   Ú
parse_specÚcol_namerX   rY   rZ   rB   rC   r"   r"   r#   Ú0test_date_parser_multiindex_columns_combine_cols²  s"   	ÿÿýýÿrß  c                 C   s²   d}| }|j dkr3d}tjt|d�� |jt|ƒdgddgdd� W d   ƒ d S 1 s,w   Y  d S |jtd	t|ƒdgddgdd�}td
dgt	dƒgd dœƒ}t
 ||¡ d S )Nz2A,B,C
    1,3,20-09-01-01
    2,4,20-09-01-01
    r_   zAThe 'thousands' option is not supported with the 'pyarrow' enginer³   rS   rH   rR   )r)   rÍ  rU   r  rg   rÇ   z20-09-2001 01:00:00r  )r£   r¤   r¶   r·   r   r   r:   r  r	   r   r=   r>   )r@   rY   rX   r¸   rB   rC   r"   r"   r#   Ú"test_date_parser_usecols_thousandsÑ  s2   
ü
ÿùúrà  c                 C   s„   | }d}d}t jt|dd�� |jt|ƒddgidd�}W d   ƒ n1 s&w   Y  td	ƒtd
ƒg}t||dœƒ}t  ||¡ d S )NzA
20150908
20150909
rº   FrN   r   rû   T)r)   r]   z
2015-09-08z
2015-09-09)r   rû   )r=   rW   r;   r   r   r   r	   r>   )r@   rX   rY   rZ   rB   r  rC   r"   r"   r#   Ú)test_parse_dates_and_keep_original_columnò  s   ÿÿýrá  c                  C   s"  d} t ddgdd dd�}d}tt| ƒdgddd	�j}t ||¡ tjt|d
�� tt| ƒdgddd	�j}W d   ƒ n1 s>w   Y  t ||¡ d} tddgddd�}tt| ƒdgddd	�j}t ||¡ tjt|d
�� tt| ƒdgddd	�j}W d   ƒ n1 s„w   Y  t ||¡ d S )Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10r¡  r   ©rø   rº  r0   rÄ  T)r)   r#  r+   r³   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r  r  )	r
   r   r   r9   r=   Úassert_index_equalrW   r  r   )ÚinputrC   rÅ  Úres1Úres2Úres5Úres6r"   r"   r#   Útest_dayfirst_warnings  sH   ÿÿÿþÿþÿÿþÿþÿré  zdate_string, dayfirstz	31/1/2014zsecond date is single-digit)Úidz	1/31/2014zfirst date is single-digitc                 C   sv   d| › �}t dgdd dd�}d}tjt|d�� tt|ƒdgd|d�j}W d   ƒ n1 s.w   Y  t ||¡ d S )	Nzdate
z
2014-01-31r¡  r   râ  rÄ  r³   )r)   r+   r#  )r
   r=   rW   r  r   r   r9   rã  )r¿  r#  Úinitial_valuerC   rÅ  Úresr"   r"   r#   Ú&test_dayfirst_warnings_no_leading_zero6  s"   

ÿÿüûÿrí  c                 C   sB   | }d}|j t|ƒdgd�}tddddœdgd	�}t ||¡ d S )
Nza,b,c
1970-01-01,2,3,4r  rÑ   rÒ  rg   rÇ   r  rÀ   r8   r³  rÏ   r"   r"   r#   Ú test_infer_first_column_as_indexY  s   þrî  c                 C   rˆ  )Nú%Y-%m-%drŠ  rŒ  râ   r"   r"   r#   rä   j  r�  )r  rï  Nc                 C   sl   | }d}|j |dt|ƒfdddgidgdœ||i¤Ž}tdtdƒtjtdƒtjtd	ƒgiƒ}t ||¡ d S )
Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
rv   ÚTestú#rg  )r:  r)   z
2012-10-01z
2015-05-15z
2017-09-09)r:   r   r	   r   r   rm  r=   r>   r’  r"   r"   r#   Ú&test_replace_nans_before_parsing_datesf  s.   
ý
ûúûÿÿrò  c                 C   sV   | }d}|j t|ƒddgd�}tdgtdƒgdœƒ}|d  d¡|d< t ||¡ d S )	Nza,b
1,2019-12-31
Ústringr  )rø   r)   rÓ  r×  ©r  r  r  )r   r   r	   r   r   r=   r>   rÏ   r"   r"   r#   Ú!test_parse_dates_and_string_dtypeŽ  s   rõ  c                 C   s‚   | }d}|j dkrtddgddd�}d }ntdd	gd
dd�}t}d}|j||t|ƒdddd�}tdddgi|d�}t ||¡ d S )Nz7a,b
27.03.2003 14:55:00.000,1
03.08.2003 15:20:00.000,2r_   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r  r  r  z2003-03-27 14:55:00z2003-08-03 15:20:00r¡  z1when dayfirst=False \(the default\) was specifiedTr   F)r)   r+   rw   r  rS   rH   r8   )	r£   r   r
   r  r:   r   r	   r=   r>   )r@   rX   rY   Úexpected_indexrh  r¸   rB   rC   r"   r"   r#   Útest_parse_dot_separated_dates›  s4   
ýýúr÷  c                 C   s\   | }d}|j t|ƒdddœddgd�}ttdƒtd	ƒgtdƒtd	ƒgdœƒ}t ||¡ d S )
Nú/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020rï  z%d-%m-%Yrô  r  r  ©r  r)   r×  ú
2020-12-31)r   r   r	   r   r=   r>   rÏ   r"   r"   r#   Útest_parse_dates_dict_format¼  s   ýþÿrû  zkey, parse_datesrÚ  rd  c                 C   s€   | }d}d}t jttf|dd�� |jt|ƒ|di|d�}W d   ƒ n1 s'w   Y  t|tdƒtdƒgiƒ}t  ||¡ d S )	Nza,b
31-,12-2019
31-,12-2020rM   FrN   z	%d- %m-%Yrù  r×  rú  )	r=   rW   r;   r½   r   r   r	   r   r>   )r@   r‡  r)   rX   rY   rZ   rB   rC   r"   r"   r#   Ú(test_parse_dates_dict_format_two_columnsÑ  s    ÿ
ÿÿýÿÿrü  c                 C   sZ   | }d}|j t|ƒddiddd�}tddd	gittd
ƒtdƒgdd�d�}t ||¡ d S )Nrø  r  rï  Tr   )r  r)   r+   r  z
31-12-2019z
31-12-2020r×  rú  r/   r8   )r   r   r	   r   r   r=   r>   rÏ   r"   r"   r#   Ú"test_parse_dates_dict_format_indexì  s   ÿÿürý  c                 C   sd   | }d}|j t|ƒdgd�}|jdkr|d j d¡|d< ttdƒtdƒgdd	œƒ}t ||¡ d S )
Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1r  rÑ   r_   rú   z2000-01-01 00:00:00z2000-01-01 00:00:01rS   rô  )	r   r   r£   rÂ   rÿ   r	   r   r=   r>   rÏ   r"   r"   r#   Útest_parse_dates_arrow_engine 	  s   
þûÿ	rþ  c                 C   sN   | }d}|j t|ƒdgd�d }ttdƒtdƒgdddgd�}t ||¡ d S )	Nz5a
2020-01-01T00:00:00+01:00
2020-01-01T00:00:00+00:00r  rÑ   z2020-01-01 00:00:00+01:00z2020-01-01 00:00:00+00:00r   rS   )r0   r9   )r   r   r   r   r=   Úassert_series_equalrÏ   r"   r"   r#   Ú test_from_csv_with_mixed_offsets	  s   þúr   )oÚ__doc__r   r   r   r   Úior   Údateutil.parserr   re   Únumpyr   r¤   r@  Úpandas._libs.tslibsr   Úpandasr   r	   r
   r   r   r   r   Úpandas._testingÚ_testingr=   Úpandas.core.indexes.datetimesr   Úpandas.core.tools.datetimesr   Úpandas.io.parsersr   r¥   ÚfilterwarningsÚ
pytestmarkÚusefixturesÚxfail_pyarrowÚskip_pyarrowrD   rE   r\   Úparametrizer«   rR  r´   r¹   r¾   rÃ   rÈ   rÐ   rÛ   rÜ   rõ   r  r
  r  r  r¦   r   r%  r.  r?  rB  rM  rU  rY  rZ  r^  r§  r`  rf  ri  rn  rs  ru  Úfrom_tuplesrz  r€  r‚  r†  r;   r“  r–  r¢  r¯  r´  rµ  r¾  rÀ  rÃ  rÆ  rÇ  rÑ  rÔ  rÙ  rß  rà  rá  ré  Úparamrí  rî  rò  rõ  r÷  rû  rü  rý  rþ  r   r"   r"   r"   r#   Ú<module>   s€    ÿ
'
"

 

 .@(
_ú	
ú÷þ
;



2-*þf
b!
 

ÿ
ÿ
ýý
ÿýÿüýîþ 
þûùüüüüüüá&Ùöðþ
Hýúþ
ýúþ

&þþûþþúþ
üþ	ü÷þ

þþ!
0ýýúþ

þþ 
!&ÿ