
    Owg3                        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!  ejF                  d        ejF                  d	      Z$ejJ                  jL                  d
        Z'd Z( G d d      Z) G d d      Z* G d d      Z+ G d d      Z,ejJ                  j[                  dg d      d        Z.y# e"$ r Y w xY w)    )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                  X    d} t         j                  d| g}t        j                  |       y )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     [/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/plotting/test_converter.pytest_registry_mpl_resetsr   0   s,    	/ 	 NND$'DD!    c                  ^    t        j                  d      t        j                  d      k(  sJ y )Nz00:01)r   time2num r    r   test_timtetonum_accepts_unicoder$   @   s&    g&)*<*<W*EEEEr    c                   b    e Zd Zej                  j
                  d        Zd Zd Zd Z	d Z
d Zy)TestRegistrationc                 b    d}t         j                  d|g}t        j                  |      dk(  sJ y )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   s7    / 	 d+$$T*a///r    c                    t        j                  d      }t        t        d      t	        dd            }|j                         \  }}t                |j                  |j                  |j                         |j                          y )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59Jvr$BC2 	'(
"		r    c                 R   t        j                  d      }t        t        d      t	        dd            }t        j                  d       5 }|j                          d d d        	 t              dk(  sJ 	 |j                          y # 1 sw Y   ,xY w# |j                          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59Jvr$BC''- 	FFH		q6Q;;IIK	 	 IIKs   B&B BB&c                 .   t        j                  d      }t        j                  dd      5  t        j                  dd      5  t        |j
                  vsJ 	 d d d        t        |j
                  v sJ 	 d d d        y # 1 sw Y   'xY w# 1 sw Y   y xY w)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 H$O 	/""#LeT 7 6667...	/ 	/7 7	/ 	/s#   BA?B?B	BBc                    t        j                  d       t        j                  dd      }t        j                  d      }t	        t        d      t        dd            }|j                         \  }}|5  |j                  |j                  |j                         d d d        t                |5  |j                  |j                  |j                         d d d        |j                          y # 1 sw Y   UxY w# 1 sw Y   &xY w)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   s    /0 I5Q!!"5659Jvr$BC2  	'GGAGGQXX&	' 	'( 	'GGAGGQXX&	'			' 	'
	' 	's   7'C22'C>2C;>Dc                    t        j                  d      }t        j                  d      }t        |j                        }	 |j                  j	                          |j                         }||j                  t        <   ||j                  t        <   t                |j                  t           |usJ t                |j                  t           |u sJ 	 |j                  j	                          |j                         D ]  \  }}||j                  |<    y # |j                  j	                          |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   s#   ##$67##$67 '	&NN  ""002N'5ENN8$#1ENN4 *,>>$'~===,.>>$'>999 NN  " ( &1$%q!& NN  " ( &1$%q!&s   BD AEN)__name__
__module____qualname__r2   mark
single_cpur*   r=   rC   rK   rN   rY   r#   r    r   r&   r&   D   s7    [[	0 	0

/"&r    r&   c                      e Zd Zej                  d        Zd Zd Zd Zej                  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                  j                  dg d      d        Zej                  j                  dd      d        Zej                  j                  d e        e        ed      g      d        Zd Zy)TestDateTimeConverterc                 *    t        j                         S N)r   DatetimeConverterr)   s    r   dtczTestDateTimeConverter.dtc   s    **,,r    c                 h    |j                  dd d       }|j                  dd d       }||k(  sJ d       y )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   s:    [[+T48[[+T48RxJJJxr    c                    |j                  dgd d       d   }t        j                  t        ddd            }||k(  sJ |j                  dd d       }||k(  sJ |j                  t	        ddd      d d       }||k(  sJ |j                  dd d       }||k(  sJ |j                  t        d      d d       }||k(  sJ |j                  dd d       }||k(  sJ |j                  dd d       }||k(  sJ |j                  t        j                  ddg      d d       }|d   |k(  sJ t        d      j                  d      j                  d	      }|j                  |d d       }||k(  sJ |j                  |j                         d d       }||k(  sJ |j                  t        |t        d      z
  |g      d d       }|d   |k(  sJ |j                  t        |t        d      z
  |g      j                         d d       }|d   |k(  sJ y )
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   s   [[*tT215^^HT1a01Rxx[[T40Rxx[[dAq)46Rxx[[T40Rxx[[:.d;Rxx [[tT2Rxx[[3T4@Rxx[[HH02LMN

 !u{{ |$007BB<P[[T4(Rxx[[))+T48Rxx[[SVR014>!u{{[[SVR01??A4N!u{{r    c           
         d}|j                  t        dd      d d       }t        j                  j	                  t        dd            }t        j                  |||       |j                  t        dd      d d       }t        j                  |||       |j                  t        dd	d	d	d
d      d d       }t        j                  |||       y )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A4N&&y1D'OP
r2D1[[).>?t
 	r2D1[[$1aA6dC
r2D1r    r7   i  ro   r   r,   c                    |j                  |d d       }t        j                  j                  |      }t	        j
                  ||       |j                  |d   d d       }t        j                  j                  |d         }||k(  sJ y )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   sw     [[t,&&v.
##B+[[D$/&&vay1Rxxr    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                 H     t        j                  d       |      }||k(  sJ y rb   )r   TimeFormatter)r)   timeformat_expectedresults       r   test_time_formatterz)TestDateTimeConverter.test_time_formatter   s)     /((.t4(((r    freq)Bmsr:   c                     d}t        dd|      }|j                  |d d       }t        j                  j	                  |j                               }t        j                  |||       y )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  sX    |RdC	[[D$/&&y':':'<=
r2D1r    offset2   c                     t        d      }||z   }|j                  |d d       }|j                  |d d       }||k  st        | d| d      y )Nrm   z is not less than .)r
   rh   AssertionError)r)   r   re   ts1ts2val1val2s          r   test_resolutionz%TestDateTimeConverter.test_resolution  s`     
#Fl{{3d+{{3d+d{ D6);D6!CDD r    c                     t        d      t        d      g}||g}|j                  |d d       }|D cg c]  }|j                  |d d        }}t        j                  |      |k(  j	                         sJ y c c}w )Nz
2017-01-01z
2017-01-02)r
   rh   rt   ru   all)r)   re   innerdatar   xexpecteds          r   test_convert_nestedz)TestDateTimeConverter.test_convert_nested  sv    <()L*ABu~T4.8<=1CKK4.== H,11333 >s   A7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
,\2 [[$1tD!Q/0dAq"%xaB'?@	
 [[	
	)	)
 [[V%562 72 [[X%'59'EFE GE4r    r`   c                   l    e Zd Zej                  d        Zej                  d        Zd Zd Zd Z	d Z
y)TestPeriodConverterc                 *    t        j                         S rb   )r   PeriodConverterrd   s    r   pczTestPeriodConverter.pc   s    ((**r    c                 6     G d d      } |       }d|_         |S )Nc                       e Zd Zy)&TestPeriodConverter.axis.<locals>.AxisN)rZ   r[   r\   r#   r    r   Axisr   &  s    r    r   D)r   )r)   r   axiss      r   r   zTestPeriodConverter.axis$  s!    	 	 v	r    c                 ^    |j                  dd |      }|j                  dd |      }||k(  sJ y )Nrm   rg   )r)   r   r   ri   rj   s        r   rk   z0TestPeriodConverter.test_convert_accepts_unicode-  s1    ZZ
D$/ZZ
D$/Rxxr    c                    |j                  dgd |      d   }t        d      j                  }||k(  sJ |j                  dd |      }||k(  sJ |j                  t        ddd      gd |      d   }||k(  sJ |j                  t        ddd      d |      }||k(  sJ |j                  t	        d      gd |      d   }||k(  sJ |j                  t	        d      d |      }||k(  sJ |j                  dd |      }||k(  sJ |j                  dd |      }||k(  sJ |j                  t        j                  ddgd	
      d |      }|d   |k(  sJ y )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  sn   ZZdD1!4J''RxxZZ
D$/RxxZZdAq)*D$7:RxxZZT1a($5RxxZZ:./t<Q?RxxZZ	*-tT:RxxZZdD1RxxZZ2D$?RxxZZHH&(=>& 
 !u{{r    c                 D    |j                  ddgd |      }ddg}||k(  sJ y )Nr   ro   rg   r   s        r   test_integer_passthroughz,TestPeriodConverter.test_integer_passthroughV  s,    ZZAd+VRxxr    c                     ddg}|j                  ||gd |      }t        d      D cg c]  }|j                  |d |       }}||k(  sJ y c c}w )Nrm   z2012-1-2r   )rh   r4   )r)   r   r   r   ri   r;   rj   s          r   r   z'TestPeriodConverter.test_convert_nested\  sV    J'ZZtdD149!H=qbjjtT*==Rxx >s   AN)rZ   r[   r\   r2   r   r   r   rk   r|   r   r   r#   r    r   r   r     sE    ^^+ + ^^ 
"Hr    r   c                       e Zd ZdZej
                  j                  dg d      d        Zej
                  j                  dddg      d        Zy	)
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                 Z    t         j                  }|j                  |d |      }||k(  sJ y )N)pos
n_decimals)r   TimeSeries_TimedeltaFormatterformat_timedelta_ticks)r)   r   decimalr   tdcr   s         r   test_format_timedelta_ticksz2TestTimeDeltaConverter.test_format_timedelta_ticksf  s4     55++A4G+L(((r    view_interval)ro   r   )r   ro   c                      G fdd      }t        j                         }|j                  |d |               |dd       y )Nc                       e Zd Z fdZy)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  s:    	% 	% 557C5Cr    N)	rZ   r[   r\   __doc__r2   r]   r   r   r   r#   r    r   r   r   c  sY    "[[%	
))
 [[_vv.>? @r    r   	year_span)	g     &@   P      i  i   i  i	  i  c                 d   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 cg c]  }|d   	 c}      d	            }	t        j                  |D cg c]  }|d   	 c}      }
t        j                  |D cg c]  }|d
   	 c}      }|	|
   }|	|   }|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 y c c}w c c}w c c}w )Nir   ro   -   z9the quarterly finder is only invoked if the span is >= 45QEr   z	period[Q]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   r   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byOPAXF(DDVLZ((tYt_EF2886$:aQqT$:;;OH XXV,qt,-FXXV,qt,-Ff%Nf%N&++j8A=&++j8A=)11Q6)11Q666#$$$66#$$$66&'''66&''' %;,,s   F#F('F-)/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   ' (./ " "FW& W&t~4 ~4BA AH : &VW( X(y
  	 		s   C+ +C32C3