
    bMh3                        d dl mZm Z  d dlZd dlZd dlZd dlZd dlmc m	Z
 d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ 	 d dl m!Z! n# e"$ r Y nw xY w ej#        d            ej#        d	          Z$ej%        j&        d
             Z'd Z( G d d          Z) G d d          Z* G d d          Z+ G d d          Z,ej%        -                    dg d          d             Z.dS )    )datedatetimeN)	to_offset)IndexPeriodPeriodIndexSeries	Timestamparrays
date_range) deregister_matplotlib_convertersregister_matplotlib_converters)DayMicroMilliSecond)	convertermatplotlib.pyplotmatplotlib.datesc                  P    d} t           j        d| g}t          j        |           d S )Nzimport matplotlib.units as units; import matplotlib.dates as mdates; n_conv = len(units.registry); import pandas as pd; pd.plotting.register_matplotlib_converters(); pd.plotting.deregister_matplotlib_converters(); assert len(units.registry) == n_conv-c)sys
executable
subprocesscheck_output)codecalls     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/plotting/test_converter.pytest_registry_mpl_resetsr   0   s3    	/ 	 ND$'DD!!!!!    c                  ^    t          j        d          t          j        d          k    sJ d S )Nz00:01)r   time2num r    r   test_timtetonum_accepts_unicoder$   @   s/    g&&)*<W*E*EEEEEEEr    c                   V    e Zd Zej        j        d             Zd Zd Zd Z	d Z
d ZdS )TestRegistrationc                 \    d}t           j        d|g}t          j        |          dk    sJ d S )Nzwimport matplotlib.units; import pandas as pd; units = dict(matplotlib.units.registry); assert pd.Timestamp not in unitsr   r   )r   r   r   
check_call)selfr   r   s      r   test_dont_register_by_defaultz.TestRegistration.test_dont_register_by_defaultE   s>    / 	 d+$T**a//////r    c                 :   t          j        d          }t          t          d          t	          dd                    }|                                \  }}t                       |                    |j        |j	                   |
                                 d S )Nr      2017periodsindex)pytestimportorskipr	   ranger   subplotsr   plotr1   valuesclose)r)   plts_axs        r   test_registering_no_warningz,TestRegistration.test_registering_no_warningQ   s    !"566599Jvr$B$B$BCCC2 	'(((
"""		r    c                    t          j        d          }t          t          d          t	          dd                    }t          j        d           5 }|                                 d d d            n# 1 swxY w Y   	 t          |          dk    sJ 	 |	                                 d S # |	                                 w xY w)Nr   r,   r-   r.   r0   r   )
r2   r3   r	   r4   r   tmassert_produces_warningr6   lenr8   )r)   r9   r:   ws       r   test_pandas_plots_registerz+TestRegistration.test_pandas_plots_register[   s    !"566599Jvr$B$B$BCCC'-- 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 		q66Q;;;;;IIKKKKKCIIKKKKs   A77A;>A;B/ /Cc                 (   t          j        d          }t          j        dd          5  t          j        dd          5  t          |j        vsJ 	 d d d            n# 1 swxY w Y   t          |j        v sJ 	 d d d            d S # 1 swxY w Y   d S )Nmatplotlib.units'plotting.matplotlib.register_convertersTF)r2   r3   cfoption_contextr
   registry)r)   unitss     r   test_matplotlib_formattersz+TestRegistration.test_matplotlib_formattersg   s"   #$677 H$OO 	/ 	/"#LeTT 7 7 666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s5   B ABA"	"B%A"	&BBBc                 4   t          j        d           t          j        dd          }t          j        d          }t	          t          d          t          dd                    }|                                \  }}|5  |                    |j	        |j
                   d d d            n# 1 swxY w Y   t                       |5  |                    |j	        |j
                   d d d            n# 1 swxY w Y   |                                 d S )Nr   rF   Fr,   r-   r.   r0   )r2   r3   rG   rH   r	   r4   r   r5   r6   r1   r7   r   r8   )r)   ctxr9   r:   r;   r<   s         r   test_option_no_warningz'TestRegistration.test_option_no_warnings   su   /000 I5QQ!"566599Jvr$B$B$BCCC2  	' 	'GGAGQX&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'((( 	' 	'GGAGQX&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'		s$   !B11B58B5!C99C= C=c                    t          j        d          }t          j        d          }t          |j                  }	 |j                                         |                                }||j        t          <   ||j        t          <   t                       |j        t                   |usJ t                       |j        t                   |u sJ 	 |j                                         |
                                D ]\  }}||j        |<   d S # |j                                         |
                                D ]\  }}||j        |<   w xY w)NrE   r   )r2   r3   dictrI   clearDateConverterr   r   r   r   items)r)   rJ   datesoriginaldate_converterkvs          r   test_registry_resetsz%TestRegistration.test_registry_resets   sY   #$677#$677 ''	&N  """"0022N'5EN8$#1EN4 *,,,>$'~====,...>$'>99999 N  """ (( & &1$%q!!& & N  """ (( & &1$%q!!&s   BD ?EN)__name__
__module____qualname__r2   mark
single_cpur*   r=   rC   rK   rN   rY   r#   r    r   r&   r&   D   s~        [	0 	0 	0  
 
 

/ 
/ 
/  "& & & & &r    r&   c                   
   e Zd Zej        d             Zd Zd Zd Zej	        
                    d eddd           eddd          g edddd	           edddd	          gg          d
             Zej	        
                    dg d          d             Zej	        
                    dd          d             Zej	        
                    d e             e             ed          g          d             Zd ZdS )TestDateTimeConverterc                 (    t          j                    S N)r   DatetimeConverterr)   s    r   dtczTestDateTimeConverter.dtc   s    *,,,r    c                     |                     dd d           }|                     dd d           }||k    s
J d            d S )Nz2000-01-01 12:22z/DatetimeConverter.convert should accept unicodeconvert)r)   re   r1r2s       r   test_convert_accepts_unicodez2TestDateTimeConverter.test_convert_accepts_unicode   sF    [[+T488[[+T488RxxxJxxxxxr    c                     |                     dgd d           d         }t                              t          ddd                    }||k    sJ |                     dd d           }||k    sJ |                     t	          ddd          d d           }||k    sJ |                     dd d           }||k    sJ |                     t          d          d d           }||k    sJ |                     dd d           }||k    sJ |                     dd d           }||k    sJ |                     t          j        ddg          d d           }|d         |k    sJ t          d                              d          	                    d	          }|                     |d d           }||k    sJ |                     |
                                d d           }||k    sJ |                     t          |t          d          z
  |g          d d           }|d         |k    sJ |                     t          |t          d          z
  |g          
                                d d           }|d         |k    sJ d S )
N2012-1-1r        
2012-01-012012-01-01 00:00:00+0000z2012-01-02 00:00:00+0000UTCz
US/Eastern)rh   rT   date2numr   r   r
   nparraytz_localize
tz_convertto_pydatetimer   r   )r)   re   rsxptss        r   test_conversionz%TestDateTimeConverter.test_conversion   sp   [[*tT2215^^HT1a0011Rxxxx[[T400Rxxxx[[dAq))466Rxxxx[[T400Rxxxx[[:..d;;Rxxxx [[tT22Rxxxx[[3T4@@Rxxxx[[H02LMNN
 

 !u{{{{ |$$0077BB<PP[[T4((Rxxxx[[))++T488Rxxxx[[SVVR0114>>!u{{{{[[SVVR011??AA4NN!u{{{{{{r    c           
         d}|                     t          dd          d d           }t          j                            t          dd                    }t          j        |||           |                     t          dd          d d           }t          j        |||           |                     t          dd	d	d	d
d          d d           }t          j        |||           d S )Ng&.>z2012-1-1 01:02:03rr   )tzrtolz2012-1-1 09:02:03zAsia/Hong_Kongrn   ro         )rh   r
   r   mdatesrs   r?   assert_almost_equalr   )r)   re   r   ry   rz   s        r   test_conversion_floatz+TestDateTimeConverter.test_conversion_float   s    [[#65AAA4NN&&y1D'O'O'OPP
r2D1111[[).>???t
 
 	r2D1111[[$1aA66dCC
r2D111111r    r7   i  ro   r   r,   c                 0   |                     |d d           }t          j                            |          }t	          j        ||           |                     |d         d d           }t          j                            |d                   }||k    sJ d S )Nr   )rh   r   r   rs   r?   assert_numpy_array_equal)r)   re   r7   ry   rz   s        r   $test_conversion_outofbounds_datetimez:TestDateTimeConverter.test_conversion_outofbounds_datetime   s     [[t,,&&v..
#B+++[[D$//&&vay11Rxxxxxxr    ztime,format_expected))r   z00:00)g@z23:59:59.999999)i_ z01:00)i  z01:02:03)gfffffe@z11:02:03.200c                 P     t          j        d           |          }||k    sJ d S rb   )r   TimeFormatter)r)   timeformat_expectedresults       r   test_time_formatterz)TestDateTimeConverter.test_time_formatter   s5     /(..t44((((((r    freq)Bmsr:   c                     d}t          dd|          }|                    |d d           }t          j                            |                                          }t          j        |||           d S )Ng&.>z
2020-01-01
   )r/   r   r   )r   rh   r   r   rs   	_mpl_reprr?   r   )r)   r   re   r   	dateindexry   rz   s          r   test_dateindex_conversionz/TestDateTimeConverter.test_dateindex_conversion  sp    |RdCCC	[[D$//&&y':':'<'<==
r2D111111r    offset2   c                     t          d          }||z   }|                    |d d           }|                    |d d           }||k     st          | d| d          d S )Nrm   z is not less than .)r
   rh   AssertionError)r)   r   re   ts1ts2val1val2s          r   test_resolutionz%TestDateTimeConverter.test_resolution  ss     
##Fl{{3d++{{3d++d{{ D!C!CD!C!C!CDDD {r    c                     t          d          t          d          g}||g}                    |d d           }fd|D             }t          j        |          |k                                    sJ d S )Nz
2017-01-01z
2017-01-02c                 >    g | ]}                     |d d           S rb   rg   ).0xre   s     r   
<listcomp>z=TestDateTimeConverter.test_convert_nested.<locals>.<listcomp>  s)    ===1CKK4..===r    )r
   rh   rt   ru   all)r)   re   innerdatar   expecteds    `    r   test_convert_nestedz)TestDateTimeConverter.test_convert_nested  s    <(()L*A*ABu~T4..=======  H,113333333r    N)rZ   r[   r\   r2   fixturere   rk   r|   r   r]   parametrizer   r   r   r   r   r   r   r   r   r   r#   r    r   r`   r`      s       ^- - ^-K K K
, , ,\2 2 2 [T$1ttD!Q//0XdAq"%%xxaB'?'?@	
    [	
 	
 	
	 	) )	 	)
 [V%5662 2 762 [X%%''5599'EFFE E GFE4 4 4 4 4r    r`   c                   f    e Zd Zej        d             Zej        d             Zd Zd Zd Z	d Z
dS )TestPeriodConverterc                 (    t          j                    S rb   )r   PeriodConverterrd   s    r   pczTestPeriodConverter.pc   s    (***r    c                 B     G d d          } |            }d|_         |S )Nc                       e Zd ZdS )&TestPeriodConverter.axis.<locals>.AxisN)rZ   r[   r\   r#   r    r   Axisr   &  s        Dr    r   D)r   )r)   r   axiss      r   r   zTestPeriodConverter.axis$  sC    	 	 	 	 	 	 	 	 tvv	r    c                 r    |                     dd |          }|                     dd |          }||k    sJ d S )Nrm   rg   )r)   r   r   ri   rj   s        r   rk   z0TestPeriodConverter.test_convert_accepts_unicode-  s=    ZZ
D$//ZZ
D$//Rxxxxxxr    c                 .   |                     dgd |          d         }t          d          j        }||k    sJ |                     dd |          }||k    sJ |                     t          ddd          gd |          d         }||k    sJ |                     t          ddd          d |          }||k    sJ |                     t	          d          gd |          d         }||k    sJ |                     t	          d          d |          }||k    sJ |                     dd |          }||k    sJ |                     dd |          }||k    sJ |                     t          j        ddgd	
          d |          }|d         |k    sJ d S )Nrm   r   rn   ro   rp   rq   z2012-01-01 00:00:00z2012-01-02 00:00:00zdatetime64[ns]dtype)rh   r   ordinalr   r
   rt   ru   r)   r   r   ry   rz   s        r   r|   z#TestPeriodConverter.test_conversion2  s   ZZdD11!4J'RxxxxZZ
D$//RxxxxZZdAq))*D$77:RxxxxZZT1a(($55RxxxxZZ:../t<<Q?RxxxxZZ	*--tT::RxxxxZZdD11RxxxxZZ2D$??RxxxxZZH&(=>&   
 
 !u{{{{{{r    c                 P    |                     ddgd |          }ddg}||k    sJ d S )Nr   ro   rg   r   s        r   test_integer_passthroughz,TestPeriodConverter.test_integer_passthroughV  s5    ZZAd++VRxxxxxxr    c                     ddg                     gd           }fdt          d          D             }||k    sJ d S )Nrm   z2012-1-2c                 >    g | ]}                     d           S rb   rg   )r   r;   r   r   r   s     r   r   z;TestPeriodConverter.test_convert_nested.<locals>.<listcomp>_  s)    ===qbjjtT**===r    r   )rh   r4   )r)   r   r   ri   rj   r   s    ``  @r   r   z'TestPeriodConverter.test_convert_nested\  s^    J'ZZtdD11======E!HH===Rxxxxxxr    N)rZ   r[   r\   r2   r   r   r   rk   r|   r   r   r#   r    r   r   r     s        ^+ + ^+ ^  ^  
" " "H      r    r   c                       e Zd ZdZej                            dg d          d             Zej                            dddg          d             Zd	S )
TestTimeDeltaConverterzTest timedelta converterzx, decimal, format_expected))        r   z00:00:00)l    xqAsro   z
01:06:12.3)l    62" r   z8 days 06:07:13.43)l    KVu   z09:00:23.4320c                 ^    t           j        }|                    |d |          }||k    sJ d S )N)pos
n_decimals)r   TimeSeries_TimedeltaFormatterformat_timedelta_ticks)r)   r   decimalr   tdcr   s         r   test_format_timedelta_ticksz2TestTimeDeltaConverter.test_format_timedelta_ticksf  s=     5++A4G+LL((((((r    view_interval)ro   r   )r   ro   c                      G fdd          }t          j                    }|                    |d |                        |dd           d S )Nc                       e Zd Z fdZdS )NTestTimeDeltaConverter.test_call_w_different_view_intervals.<locals>.mock_axisc                     S rb   r#   )r)   r   s    r   get_view_intervalz`TestTimeDeltaConverter.test_call_w_different_view_intervals.<locals>.mock_axis.get_view_intervalx  s	    $$r    N)rZ   r[   r\   r   )r   s   r   	mock_axisr   w  s.        % % % % % % %r    r   r   r   r   )r   r   setattr)r)   r   monkeypatchr   r   s    `   r   $test_call_w_different_view_intervalsz;TestTimeDeltaConverter.test_call_w_different_view_intervalst  sv    	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 577C555Cr    N)	rZ   r[   r\   __doc__r2   r]   r   r   r   r#   r    r   r   r   c  s        ""[%	
 	
 	
 ) ) )
 [_vv.>??  @?  r    r   	year_span)	g     &@   P      i  i   i  i	  i  c                    d}|| dz  z   }||z
  dz   }|dk     rt          j        d           |dz  }t          j        |          \  }}t          j        ||t          d                    }t          t          j        t          j
        d |D                       d	                    }t          j
        d
 |D                       }	t          j
        d |D                       }
||	         }||
         }|j        |z  dk    }|j        |z  dk    }|j        dk    }|j        dk    }t          j        |          sJ t          j        |          sJ t          j        |          sJ t          j        |          sJ d S )Nir   ro   -   z9the quarterly finder is only invoked if the span is >= 45QEc                     g | ]
}|d          S )r   r#   r   r   s     r   r   z)test_quarterly_finder.<locals>.<listcomp>  s    $:$:$:aQqT$:$:$:r    z	period[Q]r   c                     g | ]
}|d          S )ro   r#   r   s     r   r   z)test_quarterly_finder.<locals>.<listcomp>      ,,,qt,,,r    c                     g | ]
}|d          S )r   r#   r   s     r   r   z)test_quarterly_finder.<locals>.<listcomp>  r   r    r   )r2   skipr   _get_default_annual_spacing_quarterly_finderr   r   r   PeriodArrayrt   ru   yearquarterr   )r   vminvmaxspannyears
min_anndef
maj_anndefr   quartersmajorsminorsmajor_quartersminor_quarterscheck_major_yearscheck_minor_yearscheck_major_quarterscheck_minor_quarterss                    r   test_quarterly_finderr     s    D)a-D$;?DbyyOPPPAXF(DVLLZ(tYt__EEF28$:$:6$:$:$:;;;OOO H X,,V,,,--FX,,V,,,--Ff%Nf%N&+j8A=&+j8A=)1Q6)1Q66#$$$$$6#$$$$$6&'''''6&'''''''r    )/r   r   r   r   numpyrt   r2   pandas._config.config_configconfigrG   pandas._libs.tslibsr   pandasr   r   r   r	   r
   r   r   pandas._testing_testingr?   pandas.plottingr   r   pandas.tseries.offsetsr   r   r   r   pandas.plotting._matplotlibr   ImportErrorr3   rT   r]   r^   r   r$   r&   r`   r   r   r   r   r#   r    r   <module>r     s              



      " " " " " " " " " ) ) ) ) ) )                                         	5555555 	 	 	 	D	
  ' ( ( (.// " " "F F FW& W& W& W& W& W& W& W&t~4 ~4 ~4 ~4 ~4 ~4 ~4 ~4BA A A A A A A AH       : &V&V&VWW( ( XW( ( (s   A A$#A$