
    P/Ph-                     t   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mZ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%d  Z& e
d!g"          d#             Z'd$ Z(d% Z)d& Z*d' Z+d( Z, G d) d*          Z-d+ Z.d, Z/dS )-    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)StrCategoryConverterUnitData)DateConverterc                   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      [/var/www/html/test/jupyter/venv/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/   r2    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 r6   )r#   r   ).0vunits     r   
<listcomp>z7quantity_converter.<locals>.convert.<locals>.<listcomp>:   s&    <<<T

,<<<r   c                     g | ]<}t          |                                                                        j        =S r6   )r   	get_unitsr#   r   )r:   r;   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>.convert5   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   )rA   r   r,   r-   )rC   r@   r;   s      r   default_unitsz)quantity_converter.<locals>.default_unitsA   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>K   s    "O!HMMM r   )rM   ConversionInterfacer   rD   axisinforF   )qcrD   rF   s      r   quantity_converterrU   /   s     
	#	%	%B
H 
H 
H   w///BJ )N )N O O OBK ];;;BIr   zplot_pint.pngmpl20x86_64gQ?)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rcParamsrM   registryr   r,   linspacesubplotssubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisrD   calledrS   rF   )rU   yxfigaxs        r   test_numpy_facaders   S   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.pngTg{Gz?)remove_textrX   rY   c                      t          j        dd          } t           j                            | | dk    | dk     z            }t	          |d          }t          j                    \  }}|                    |           d S )Nr]      )maskmeters)r,   re   maarrayr   rb   rf   rh   )r   data_maskeddata_masked_unitsrq   rr   s        r   test_plot_masked_unitsr   n   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 )Nrz      r      )rM   rd   r   rb   rf   set_xlimset_ylim)rU   rq   rr   s      r    test_empty_set_limits_with_unitsr   y   ss     2FOHlnnGCKKX&&H(=(=>>>KKW%%xG'<'<=====r   zjpl_bar_units.pngdpira   )savefig_kwargrX   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     @   rx              dt)bottomr   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   rb   rf   barr   r   dayrp   wbrq   rr   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   rx   r   r   r   r   r   r^   r   r   )r   r   r   r   r   r   r   r   rb   rf   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                  p   dd l mc m}  |                                  t	          ddd          }|                     d|          }t          j                            |          	                    |d d           }t          j                            |          	                    |d d           }||k    sJ d S )Nr   r   r   r   r   r   )
r   r   r   r   r   r   rM   rd   get_converterrD   )r   r   jpldt_convjpl_convs        r   "test_jpl_datetime_units_consistentr      s    000000000	NN	$2		B
++dr+
"
"Co++B//77D$GGG,,S1199#tTJJHhr   c                  |    t          j        t          j        g d          t          j        g                      d S )Nzdatetime64[ns]dtype)rb   scatterr,   r|   r6   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nanrb   rf   r   canvasdraw)timesro   rq   rr   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]   rx   r   )r   r:   is     r   r=   z-test_errorbar_mixed_units.<locals>.<listcomp>   s,    111!$1q519	%	%111r   g      ?)days)r,   r   rb   rf   errorbarr   r   r   )rp   ro   rq   rr   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)r3   r4   r5   r6   r   r   subdater      s        r   r   i  r   r   o)r   rf   rh   )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   rx   r   r   r   allsharexshareyr   r   )rM   rd   r   r,   re   rb   rf   rh   rm   r?   rk   rl   )rU   rp   y1y2rq   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   rx   T)r   r]   )r   )	rangerb   rf   rh   rk   rl   r   r   r   )r   r   rq   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   rx   rP   r   r   r   Tr   cd)
rb   rf   rh   keysvaluesrm   rl   r
   r?   _mapping)d1d2rq   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                  ~   ddd} t                      }t                      }t                      }t          j                    \  }}|j                            |           |j                                        |k    sJ |                    |                                 | 	                                           |j                                        |k    sJ |j                            |           t          j        t                    5  |j                            |           d d d            n# 1 swxY w Y   t          j                    \  }}|                    |                                 | 	                                           |j                            |           t          j                    \  }}	|	                    |                                 | 	                                           t          j                    5  |	j                            |           d d d            d S # 1 swxY w Y   d S )Nr   rx   r   )r	   r   rb   rf   rm   set_converterr   rh   r   r   pytestraisesRuntimeErrorwarns)
r   str_cat_converterstr_cat_converter_2date_converterfig1r   fig2r   fig3ax3s
             r   test_explicit_converterr      sX   q		B,...00"__N ID#I-...9""$$(99999HHRWWYY		$$$9""$$(99999I-...	|	$	$ 5 5	 34445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ID#HHRWWYY		$$$ I-...ID#HHRWWYY		$$$ 
 0 0	///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   D22D69D6
H22H69H6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   rI   r\   r   r   r   rx   r   )r   rx   )r   r\   )r   r   )g     <@g     ?@)rM   rd   r   rb   rf   rm   update_unitsdraw_without_renderingget_xlimrk   get_ylimri   rh   r,   r   rj   )rU   rq   r   rr   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                   2    e Zd Zd ZddZed             ZdS )Kernelc                 8    t          j        |          | _        d S r   )r,   
asanyarray_array)r   r|   s     r   r   zKernel.__init__=  s    mE**r   Nc                     |4|| j         j        k    r$|"|s t          d| j         j         d| d          t          j        | j         |          }|s|nt          j        |          S )NzConverting array from z to z requires a copyr   )r  r   
ValueErrorr,   r1   copy)r   r   r  arrs       r   r2   zKernel.__array__@  s    $+*;!;!; /T[-> / // / /  
 jE2221RWS\\2r   c                     | j         j        S r   )r  shaper%   s    r   r	  zKernel.shapeK  s    {  r   )NN)r3   r4   r5   r   r2   propertyr	  r6   r   r   r   r   <  sR        + + +	3 	3 	3 	3 ! ! X! ! !r   r   c                  P    t          g d          } t          j        |            d S )N)r   rx   r   r   r]   )r   rb   rh   )kernels    r   test_plot_kernelr  P  s)    OOO$$FHVr   c                 N   t          j        dd          \  }\  }}|                     d          }|                    |           d}|                    |           t          j        |dfd|fdd||          }|                    |           |                                 d S )	Nrx   )r   r]   )nrowsfigsizez2017-01-01T12z	test testr   r   )coordsAcoordsBaxesAaxesB)	rb   rf   	Timestamprj   ri   mpatchesConnectionPatch
add_artistr   )pdrq   r   r   rp   ro   r  s          r   test_connection_patch_unitsr  V  s    lG<<<OC#s
_%%AKKNNNAKKNNN

"Aq6Aq6+16),C9 9 9C NN3     r   )0r   r   r   platformunittest.mockr   matplotlib.pyplotpyplotrb   matplotlib.testing.decoratorsr   r   matplotlib.patchespatchesr  matplotlib.unitsr   rM   matplotlib.categoryr	   r
   matplotlib.datesr   numpyr,   r   r   fixturerU   machiners   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r6   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0 0 0B&) &) &)T! ! ! ! ! ! ! !(  ! ! ! ! !r   