
    (?eZ$                     F   d dl m Z mZmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlZd dlZ G d d          Zej        d             Z ed	gd
 ej                    dk    rd nd          d             Z edgdd
 ej                    dk    rd nd          d             Zd Z edgddid
          d             Z edgddid
          d             Zd Zd Zd Z e
dg          d              Z d! Z!d" Z"d# Z#d$ Z$ G d% d&          Z%d' Z&dS )(    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)UnitDatac                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Quantityc                 "    || _         || _        d S N)	magnitudeunits)selfdatar   s      ;lib/python3.11/site-packages/matplotlib/tests/test_units.py__init__zQuantity.__init__   s    


    c                     ddddddd}| j         |k    r'|| j         |f         }t          || j        z  |          S t          | j        | j                   S )Ni  g?<   g0(?   i  ))hoursseconds)minutesr   )r   r   )feetmiles)r   inches)r   r   )r   r   r   )r   	new_unitsfactorsmults       r   tozQuantity.to   sj    )-V+-)')	K K :""4:y01DD4>19===DNDJ777r   c                 6    t          | j        | j                  S r   )r   r   r   r   s    r   __copy__zQuantity.__copy__   s    
333r   c                 ,    t          | j        |          S r   )getattrr   )r   attrs     r   __getattr__zQuantity.__getattr__    s    t~t,,,r   c                     t          j        | j                  r t          | j        |         | j                  S t          | j        | j                  S r   )npiterabler   r   r   )r   items     r   __getitem__zQuantity.__getitem__#   sC    ;t~&& 	8DN40$*===DNDJ777r   c                 4    t          j        | j                  S r   )r*   asarrayr   r#   s    r   	__array__zQuantity.__array__)   s    z$.)))r   N)	__name__
__module____qualname__r   r!   r$   r(   r-   r0    r   r   r   r      sn          8 8 84 4 4- - -8 8 8* * * * *r   r   c                      t          j                    } d }d }t          |          | _        t          d           | _        t          |          | _        | S )Nc                 R   t          | d          r|                               j        S t          j        |           r.	 fd| D             S # t
          $ r fd| D             cY S w xY wt          |                                                                         j        S )Nr   c                 D    g | ]}|                               j        S r4   )r!   r   ).0vunits     r   
<listcomp>z7quantity_converter.<locals>.convert.<locals>.<listcomp>8   s&    <<<T

,<<<r   c                     g | ]<}t          |                                                                        j        =S r4   )r   	get_unitsr!   r   )r8   r9   axisr:   s     r   r;   z7quantity_converter.<locals>.convert.<locals>.<listcomp>:   sN     ( ( ( !DNN$4$45588>>H ( ( (r   )hasattrr!   r   r*   r+   AttributeErrorr   r=   )valuer:   r>   s    ``r   convertz#quantity_converter.<locals>.convert3   s    5'"" 		H88D>>++[ 	H(<<<<e<<<<! ( ( (( ( ( ( (!&( ( ( ( ( (( E4>>#3#34477==GGs   A A,+A,c                     t          | d          r| j        S t          j        |           r | D ]}t          |d          r	|j        c S d S d S )Nr   )r?   r   r*   r+   )rA   r>   r9   s      r   default_unitsz)quantity_converter.<locals>.default_units?   sn    5'"" 	;[ 	 # #1g&& #7NNN#4		 	r   )side_effectc                 .    t          j        | d          S )Nr   d   )labeldefault_limits)munitsAxisInfo)uas     r   <lambda>z$quantity_converter.<locals>.<lambda>I   s    "O!HMMM r   )rK   ConversionInterfacer   rB   axisinforD   )qcrB   rD   s      r   quantity_converterrS   -   s     
	#	%	%B
H 
H 
H   w///BJ )N )N O O OBK ];;;BIr   zplot_pint.pngmpl20x86_64g{Gz?)styletolc                    dt           j        d<   | t          j        t          <   t	          t          j        dd          d          }t	          t          j        dd          d          }t          j                    \  }}|                    d	           |	                    ||d
           |
                    t	          dd          d           |                    t	          dd          d           |j                            d           |j                            d           | j        j        sJ | j        j        sJ | j        j        sJ d S )N)i   zaxes.formatter.limitsr      r      r   g333333?leftztab:bluei g  r   ztab:red)colorx   r   z	tab:greenr   r   )pltrcParamsrK   registryr   r*   linspacesubplotssubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisrB   calledrQ   rD   )rS   yxfigaxs        r   test_numpy_facaderq   Q   s;    -2CL() !3FOH 	Q##W--AQ""G,,AlnnGCT"""GGAq*JJxv&&iJ888JJxY''{J;;;Hx   Hy!!!%,,,,&----+222222r   zplot_masked_units.pngT)remove_textrV   rW   c                      t          j        dd          } t           j                            | | dk    | dk     z            }t	          |d          }t          j                    \  }}|                    |           d S )Nr[      )maskmeters)r*   rc   maarrayr   r`   rd   rf   )r   data_maskeddata_masked_unitsro   rp   s        r   test_plot_masked_unitsr}   l   sq     ;r1D%++d$)q)A+BBK h77lnnGCGGr   c                 "   | t           j        t          <   t          j                    \  }}|                    t          dd          t          dd                     |                    t          dd          t          dd                     d S )Nrx      r      )rK   rb   r   r`   rd   set_xlimset_ylim)rS   ro   rp   s      r    test_empty_set_limits_with_unitsr   w   ss     2FOHlnnGCKKX&&H(=(=>>>KKW%%xG'<'<=====r   zjpl_bar_units.pngdpir_   )savefig_kwargrV   c                     dd l mc m}  |                                  |                     dd          }d| j        z  d| j        z  d| j        z  g}d|z  d|z  d|z  g}|                     dt          ddd	          
          }t          j	                    \  }}|
                    |||           |                    |d|z  z
  ||d         z   d|z  z   g           d S )Nr   ET     @   rv              dt)bottomr   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   r`   rd   barr   r   dayrn   wbro   rp   s          r   test_jpl_bar_unitsr      s     100000000	NN
..1
2
2C	
UXq58|Q\2A	
S!c'1s7#ADXdAr2233AlnnGCFF1aFKKQWa!B%i5C-7899999r   zjpl_barh_units.pngc                     dd l mc m}  |                                  |                     dd          }d| j        z  d| j        z  d| j        z  g}d|z  d|z  d|z  g}|                     dt          ddd	          
          }t          j	                    \  }}|
                    |||           |                    |d|z  z
  ||d         z   d|z  z   g           d S )Nr   r   r   r   rv   r   r   r   r   r   r\   r   r   )r   r   r   r   r   r   r   r   r`   rd   barhr   r   s          r   test_jpl_barh_unitsr      s     100000000	NN
..1
2
2C	
UXq58|Q\2A	
S!c'1s7#ADXdAr2233AlnnGCGGAqqGKKQWa!B%i5C-7899999r   c                  |    t          j        t          j        g d          t          j        g                      d S )Nzdatetime64[ns]dtype)r`   scatterr*   rz   r4   r   r   test_empty_arraysr      s2    K#3444bhrllCCCCCr   c                  ,   t          j        ddd          } t          j        t          |           t                    }t           j        |d<   t          j                    \  }}|                    | |           |j        	                                 d S )Nz2005-02z2005-03zdatetime64[D]r   r   )
r*   arangelenfloatnanr`   rd   r   canvasdraw)timesrm   ro   rp   s       r   test_scatter_element0_maskedr      sx    Ii/BBBE
	#e**E***A6AaDlnnGCJJuaJOOr   c                      t          j        d          } d | D             }t          j                    \  }}|                    | |t          d                     |j                                         d S )N
   c                 <    g | ]}t          d d|dz  dz             S )  r[   rv   r   )r   r8   is     r   r;   z-test_errorbar_mixed_units.<locals>.<listcomp>   s,    111!$1q519	%	%111r   g      ?)days)r*   r   r`   rd   errorbarr   r   r   )rn   rm   ro   rp   s       r   test_errorbar_mixed_unitsr      sj    
	"A11q111AlnnGCKK1iS)))***JOOr   png)
extensionsc                     G d dt                     }|                                                      |ddd          dd           |                                                    t          ddd          dd           d S )Nc                       e Zd ZdS )test_subclass.<locals>.subdateN)r1   r2   r3   r4   r   r   subdater      s        r   r   i  r   r   o)r   rd   rf   )fig_testfig_refr   s      r   test_subclassr      s        (    WWT1a00!S999HT1a00!S99999r   c                    | t           j        t          <   t          t          j        ddd          d          }t          t          j        ddd          d          }t          t          j        ddd          d          }t          j        ddd	d	
          \  }\  }}|                    ||           |                    ||           |j        	                                |j        	                                cxk    rdk    sn J |j
        	                                |j
        	                                cxk    rdk    sn J |j                            d           |j
                            d           |j        	                                |j        	                                cxk    rdk    sn J |j
        	                                |j
        	                                cxk    rdk    sn J d S )Nr   r   r   r   rv   r   r   r   allsharexshareyr   r   )rK   rb   r   r*   rc   r`   rd   rf   rk   r=   ri   rj   )rS   rn   y1y2ro   ax1ax2s          r   test_shared_axis_quantityr      s    2FOHQ2&&00A	"+aB''	0	0B	"+aB''	0	0Bl1aeDDDOC#sHHQOOOHHQOOO9  CI$7$7$9$9DDDDWDDDDDD9  CI$7$7$9$9CCCCVCCCCCCI	"""I!!!9  CI$7$7$9$9FFFFYFFFFFF9  CI$7$7$9$9EEEEXEEEEEEEEr   c                     d t          dd          D             } d t          dd          D             }t          j        ddd          \  }\  }}|                    |            |                    |           |j                            t          t          d	                               |j        j        t          t          d	                    k    sJ d S )
Nc                 H    g | ]}t          d |dt          j                   S )r   r   tzinfor   r   utcr   s     r   r;   z-test_shared_axis_datetime.<locals>.<listcomp>   +    	J	J	J(4Ahl
3
3
3	J	J	Jr   r      c                 H    g | ]}t          d |dt          j                   S )i  r   r   r   r   s     r   r;   z-test_shared_axis_datetime.<locals>.<listcomp>   r   r   rv   T)r   r[   )r   )	ranger`   rd   rf   ri   rj   r   r   r   )r   r   ro   r   r   s        r   test_shared_axis_datetimer      s    	J	JU1b\\	J	J	JB	J	JU1b\\	J	J	JBl1a555OC#sHHRLLLHHRLLLI!3!3!3445559?hyq'9'9'9::::::::r   c                     ddd} ddd}t          j        dddd          \  }\  }}|                    |                                 |                                            |                    |                                |                                           |j                            t          dd	g                     d|j                                        j	                                        v sJ d S )
Nr   rv   )rN   r   r   r   Tr   cd)
r`   rd   rf   keysvaluesrk   rj   r	   r=   _mapping)d1d2ro   r   r   s        r   test_shared_axis_categoricalr      s    q		Bq		Bl1aTBBBOC#sHHRWWYY		$$$HHRWWYY		$$$I#s,,---#)%%''05577777777r   c           
      V   | t           j        t          <   t          j                    \  }}|j                            t          dgd                     |                                 |                                dk    sJ |j	                            t          dgd                     |                                 |
                                dk    sJ t          j                    \  }}|                    d           |                    t          t          j        dd          d          t          t          j        ddd          d	                     |                                 |                                d
k    sJ |
                                dk    sJ t          j                    \  }}|                    d           |                    t          t          j        dd          d          t          t          j        ddd          d	                     |                                 |                                dk    sJ |
                                dk    sJ t          j                    \  }}|j                            t          dgd                     |                    d           |                                 |                                dk    sJ |
                                dk    sJ t          j                    \  }}|j	                            t          dgd                     |                    d           |                                 |
                                dk    sJ |                                dk    sJ d S )Nr   r   rG   rZ   r   r   r   rv   r   )r   rv   )r   rZ   )r   r   )g     <@g     ?@)rK   rb   r   r`   rd   rk   update_unitsdraw_without_renderingget_xlimri   get_ylimrg   rf   r*   r   rh   )rS   ro   r   rp   s       r   test_empty_default_limitsr      s    2FOH|~~HCI8RD'22333   <<>>X%%%%I8RD'22333   <<>>X%%%%lnnGCJJrNNNGGHRYq!__g..RYq!Q''002 2 2   ;;==F"""";;==G####lnnGCJJrNNNGGHRYq!__g..RYq!Q''002 2 2   ;;==G####;;==F""""lnnGCH(B411222JJrNNN   ;;==H$$$$;;==L((((lnnGCH(B411222JJrNNN   ;;==H$$$$;;==L((((((r   c                   0    e Zd Zd Zd Zed             ZdS )Kernelc                 8    t          j        |          | _        d S r   )r*   
asanyarray_array)r   rz   s     r   r   zKernel.__init__  s    mE**r   c                     | j         S r   )r   r#   s    r   r0   zKernel.__array__  s
    {r   c                     | j         j        S r   )r   shaper#   s    r   r   zKernel.shape  s    {  r   N)r1   r2   r3   r   r0   propertyr   r4   r   r   r   r     sM        + + +   ! ! X! ! !r   r   c                  P    t          g d          } t          j        |            d S )N)r   rv   r   r   r[   )r   r`   rf   )kernels    r   test_plot_kernelr     s)    OOO$$FHVr   )'r   r   r   platformunittest.mockr   matplotlib.pyplotpyplotr`   matplotlib.testing.decoratorsr   r   matplotlib.unitsr   rK   matplotlib.categoryr	   numpyr*   pytestr   fixturerS   machinerq   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   <module>r      s   2 2 2 2 2 2 2 2 2 2  # # # # # #       O O O O O O O O ! ! ! ! ! ! ( ( ( ( ( (     * * * * * * * *>   F ?#7+8+--99aatE E E3 3E E32 *+W+8+--99aatE E E E E> > > &'!&G= = =
: 
:= =
: '(!&G= = =: := =:D D D
     (((: : )(:F F F ; ; ;8 8 8&) &) &)T	! 	! 	! 	! 	! 	! 	! 	!    r   