
    EVfZ$                        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&y)(    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)UnitDatac                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Quantityc                      || _         || _        y N)	magnitudeunits)selfdatar   s      d/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_units.py__init__zQuantity.__init__   s    
    c                     ddddddd}| j                   |k7  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   se    )-V+-)')	K ::"4::y01DD4>>19==DNNDJJ77r   c                 B    t        | j                  | j                        S r   )r   r   r   r   s    r   __copy__zQuantity.__copy__   s    

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__#   sA    ;;t~~&DNN40$**==DNNDJJ77r   c                 @    t        j                  | j                        S r   )r*   asarrayr   r#   s    r   	__array__zQuantity.__array__)   s    zz$..))r   N)	__name__
__module____qualname__r   r!   r$   r(   r-   r0    r   r   r   r      s     84-8*r   r   c                      t        j                         } d }d }t        |      | _        t        d       | _        t        |      | _        | S )Nc           	         t        | d      r| j                  |      j                  S t        j                  |       r*	 | D cg c]  }|j                  |      j                   c}S t        | |j                               j                  |      j                  S c c}w # t
        $ rJ | D cg c]5  }t        ||j                               j                  |      j                  7 nc c}w c}cY S w xY wNr   )hasattrr!   r   r*   r+   AttributeErrorr   	get_units)valueunitaxisvs       r   convertz#quantity_converter.<locals>.convert3   s    5'"88D>+++[[(6;<T
,,<<
 E4>>#3477=GGG =! (!&( !DNN$4588>HH ( ( ((s/   B "B$B B C2,:C'&	C21C2c                     t        | d      r| j                  S t        j                  |       r"| D ]  }t        |d      s|j                  c S  y y r7   )r8   r   r*   r+   )r;   r=   r>   s      r   default_unitsz)quantity_converter.<locals>.default_units?   sN    5'";;[[ #1g&77N# 	  r   )side_effectc                 0    t        j                  | d      S )Nr   d   )labeldefault_limits)munitsAxisInfo)uas     r   <lambda>z$quantity_converter.<locals>.<lambda>I   s    "OO!HM r   )rH   ConversionInterfacer   r?   axisinforA   )qcr?   rA   s      r   quantity_converterrP   -   sP     
	#	#	%B
H w/BJ )N 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                         \  }}|j                  d	       |j                  ||d
       |j                  t	        dd      d       |j                  t	        dd      d       |j                  j                  d       |j                  j                  d       | j                  j                   sJ | j"                  j                   sJ | j$                  j                   sJ y )N)i   zaxes.formatter.limitsr      r      r   g333333?leftztab:bluei g  r   ztab:red)colorx   r   z	tab:greenr   r   )pltrcParamsrH   registryr   r*   linspacesubplotssubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisr?   calledrN   rA   )rP   yxfigaxs        r   test_numpy_facadern   Q   s    -2CLL() !3FOOH 	Q#W-AQ"G,AllnGCT"GGAq*JJxv&iJ8JJxY'{J;HHx HHy!%%,,,,&&----++2222r   zplot_masked_units.pngT)remove_textrS   rT   c                      t        j                  dd      } t         j                  j                  | | dkD  | dk  z        }t	        |d      }t        j                         \  }}|j                  |       y )NrX      )maskmeters)r*   r`   maarrayr   r]   ra   rc   )r   data_maskeddata_masked_unitsrl   rm   s        r   test_plot_masked_unitsrz   l   s`     ;;r1D%%++d$)q)A+BK h7llnGCGGr   c                     | t         j                  t        <   t        j                         \  }}|j                  t        dd      t        dd             |j                  t        dd      t        dd             y )Nru      r      )rH   r_   r   r]   ra   set_xlimset_ylim)rP   rl   rm   s      r    test_empty_set_limits_with_unitsr   w   sW     2FOOHllnGCKKX&H(=>KKW%xG'<=r   zjpl_bar_units.pngdpir\   )savefig_kwargrS   c                     dd l mc m}  | j                          | j	                  dd      }d| j
                  z  d| j
                  z  d| j
                  z  g}d|z  d|z  d|z  g}| j                  dt        ddd	      
      }t        j                         \  }}|j                  |||       |j                  |d|z  z
  ||d   z   d|z  z   g       y )Nr   ET     @   rs              dt)bottomr|   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   r]   ra   barr   r   dayrk   wbrl   rm   s          r   test_jpl_bar_unitsr      s     10	NN
..1
2C	
UXXq588|Q\2A	
S!c'1s7#ADXdAr23AllnGCFF1aFKKQWa!B%i5C-789r   zjpl_barh_units.pngc                     dd l mc m}  | j                          | j	                  dd      }d| j
                  z  d| j
                  z  d| j
                  z  g}d|z  d|z  d|z  g}| j                  dt        ddd	      
      }t        j                         \  }}|j                  |||       |j                  |d|z  z
  ||d   z   d|z  z   g       y )Nr   r   r   r   rs   r   r   r   r   r   rY   r|   r   )r   r   r   r   r   r   r   r   r]   ra   barhr   r   s          r   test_jpl_barh_unitsr      s     10	NN
..1
2C	
UXXq588|Q\2A	
S!c'1s7#ADXdAr23AllnGCGGAqqGKKQWa!B%i5C-789r   c                      t        j                  t        j                  g d      t        j                  g              y )Nzdatetime64[ns]dtype)r]   scatterr*   rw   r4   r   r   test_empty_arraysr      s$    KK#34bhhrlCr   c                  (   t        j                  ddd      } t        j                  t        |       t              }t         j                  |d<   t        j                         \  }}|j                  | |       |j                  j                          y )Nz2005-02z2005-03zdatetime64[D]r   r   )
r*   arangelenfloatnanr]   ra   r   canvasdraw)timesrj   rl   rm   s       r   test_scatter_element0_maskedr      s`    IIi/BE
		#e*E*A66AaDllnGCJJuaJJOOr   c            	         t        j                  d      } | D cg c]  }t        dd|dz  dz          }}t        j                         \  }}|j                  | |t        d             |j                  j                          y c c}w )N
     rX   rs   r   g      ?)days)	r*   r   r   r]   ra   errorbarr   r   r   )rk   irj   rl   rm   s        r   test_errorbar_mixed_unitsr      sj    
		"A/01!$1q519	%1A1llnGCKK1iS)*JJOO 	2s   Bpng)
extensionsc                      G d dt               }| j                         j                   |ddd      dd       |j                         j                  t        ddd      dd       y )Nc                       e Zd Zy)test_subclass.<locals>.subdateN)r1   r2   r3   r4   r   r   subdater      s    r   r   i  r   r   o)r   ra   rc   )fig_testfig_refr   s      r   test_subclassr      sX    (  WT1a0!S9HT1a0!S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                  ||       |j                  j                         |j                  j                         cxk(  rdk(  sJ  J |j                  j                         |j                  j                         cxk(  rdk(  sJ  J |j                  j                  d       |j                  j                  d       |j                  j                         |j                  j                         cxk(  rdk(  sJ  J |j                  j                         |j                  j                         cxk(  rdk(  sJ  J y )Nr   r   r   r   rs   r   r   r   allsharexshareyr   r   )rH   r_   r   r*   r`   r]   ra   rc   rh   r:   rf   rg   )rP   rk   y1y2rl   ax1ax2s          r   test_shared_axis_quantityr      s    2FOOHQ2&0A	"++aB'	0B	"++aB'	0Bll1aeDOC#sHHQOHHQO99 CII$7$7$9DWDDDDD99 CII$7$7$9CVCCCCCII	"II!99 CII$7$7$9FYFFFFF99 CII$7$7$9EXEEEEEr   c            	          t        dd      D  cg c]  } t        d| dt        j                        ! }} t        dd      D  cg c]  } t        d| dt        j                        ! }} t	        j
                  ddd      \  }\  }}|j                  |       |j                  |       |j                  j                  t        t        d	
                   |j                  j                  t        t        d	
            k(  sJ y c c} w c c} w )Nr      r   )tzinfoi  rs   T)r   rX   )r   )ranger   r   utcr]   ra   rc   rf   rg   r   r   )r   r   r   rl   r   r   s         r   test_shared_axis_datetimer      s    =B1b\	J(4Ahll
3	JB	J=B1b\	J(4Ahll
3	JB	Jll1a5OC#sHHRLHHRLII!34599??hyq'9:::: 
K	Js   $D$Dc                     ddd} ddd}t        j                  dddd      \  }\  }}|j                  | j                         | j	                                |j                  |j                         |j	                                |j
                  j                  t        dd	g             d|j
                  j                         j                  j                         v sJ y )
Nr   rs   )rK   r   r   r   Tr   cd)
r]   ra   rc   keysvaluesrh   rg   r	   r:   _mapping)d1d2rl   r   r   s        r   test_shared_axis_categoricalr      s    q	Bq	Bll1aTBOC#sHHRWWY		$HHRWWY		$II#s,-#))%%'00557777r   c           
      p   | t         j                  t        <   t        j                         \  }}|j
                  j                  t        dgd             |j                          |j                         dk(  sJ |j                  j                  t        dgd             |j                          |j                         dk(  sJ t        j                         \  }}|j                  d       |j                  t        t        j                  dd      d      t        t        j                  ddd      d	             |j                          |j                         d
k(  sJ |j                         dk(  sJ t        j                         \  }}|j                  d       |j                  t        t        j                  dd      d      t        t        j                  ddd      d	             |j                          |j                         dk(  sJ |j                         dk(  sJ t        j                         \  }}|j
                  j                  t        dgd             |j                  d       |j                          |j                         dk(  sJ |j                         dk(  sJ t        j                         \  }}|j                  j                  t        dgd             |j                  d       |j                          |j                         dk(  sJ |j                         dk(  sJ y )Nr   r   rD   rW   r   r   r}   rs   r   )r   rs   )r   rW   )r   r   )g     <@g     ?@)rH   r_   r   r]   ra   rh   update_unitsdraw_without_renderingget_xlimrf   get_ylimrd   rc   r*   r   re   )rP   rl   r   rm   s       r   test_empty_default_limitsr      so    2FOOH||~HCII8RD'23 <<>X%%%II8RD'23 <<>X%%%llnGCJJrNGGHRYYq!_g.RYYq!Q'02 ;;=F""";;=G###llnGCJJrNGGHRYYq!_g.RYYq!Q'02 ;;=G###;;=F"""llnGCHH(B412JJrN ;;=H$$$;;=L(((llnGCHH(B412JJrN ;;=H$$$;;=L(((r   c                   (    e Zd Zd Zd Zed        Zy)Kernelc                 8    t        j                  |      | _        y r   )r*   
asanyarray_array)r   rw   s     r   r   zKernel.__init__  s    mmE*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     s     + ! !r   r   c                  H    t        g d      } t        j                  |        y )N)r   rs   r   r   rX   )r   r]   rc   )kernels    r   test_plot_kernelr     s    O$FHHVr   )'r   r   r   platformunittest.mockr   matplotlib.pyplotpyplotr]   matplotlib.testing.decoratorsr   r   matplotlib.unitsr   rH   matplotlib.categoryr	   numpyr*   pytestr   fixturerP   machinern   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   <module>r      s`   2 2  #  O ! (  * *>  F ?#7+8++-9atE3E32 *+W+8++-9atEE> &'!&G=
:=
: '(!&G=:=:D
 (: ):F ;8&)T	! 	!r   