
    g-                     2   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j6                  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/y)-    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)StrCategoryConverterUnitData)DateConverterc                   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      X/var/www/dash_apps/app1/venv/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/   r2    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>.convert5   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 r9   )r:   r   r,   r-   )r=   r?   r@   s      r   default_unitsz)quantity_converter.<locals>.default_unitsA   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>K   s    "OO!HM r   )rJ   ConversionInterfacer   rA   axisinforC   )qcrA   rC   s      r   quantity_converterrR   /   sP     
	#	#	%B
H w/BJ )N 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                         \  }}|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rcParamsrJ   registryr   r,   linspacesubplotssubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisrA   calledrP   rC   )rR   yxfigaxs        r   test_numpy_facaderp   S   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.pngTg{Gz?)remove_textrU   rV   c                      t        j                  dd      } t         j                  j                  | | dkD  | dk  z        }t	        |d      }t        j                         \  }}|j                  |       y )NrZ      )maskmeters)r,   rb   maarrayr   r_   rc   re   )r   data_maskeddata_masked_unitsrn   ro   s        r   test_plot_masked_unitsr|   n   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 )Nrw      r      )rJ   ra   r   r_   rc   set_xlimset_ylim)rR   rn   ro   s      r    test_empty_set_limits_with_unitsr   y   sW     2FOOHllnGCKKX&H(=>KKW%xG'<=r   zjpl_bar_units.pngdpir^   )savefig_kwargrU   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     @   ru              dt)bottomr~   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   r_   rc   barr   r   dayrm   wbrn   ro   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   ru   r   r   r   r   r   r[   r~   r   )r   r   r   r   r   r   r   r   r_   rc   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                  D   dd l mc m}  | j                          t	        ddd      }| j                  d|      }t        j                  j                  |      j                  |d d       }t        j                  j                  |      j                  |d d       }||k(  sJ y )Nr   r   r   r   r   r   )
r   r   r   r   r   r   rJ   ra   get_converterrA   )r   r   jpldt_convjpl_convs        r   "test_jpl_datetime_units_consistentr      s    00	NN	$2	B
++dr+
"Coo++B/77D$GG,,S199#tTJHhr   c                      t        j                  t        j                  g d      t        j                  g              y )Nzdatetime64[ns]dtype)r_   scatterr,   ry   r6   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_   rc   r   canvasdraw)timesrl   rn   ro   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
     rZ   ru   r   g      ?)days)	r,   r   r   r_   rc   errorbarr   r   r   )rm   irl   rn   ro   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)r3   r4   r5   r6   r   r   subdater      s    r   r   i  r   r   o)r   rc   re   )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   ru   r   r   r   allsharexshareyr   r   )rJ   ra   r   r,   rb   r_   rc   re   rj   r<   rh   ri   )rR   rm   y1y2rn   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  ru   T)r   rZ   )r   )ranger   r   utcr_   rc   re   rh   ri   r   r   )r   r   r   rn   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   ru   rM   r   r   r   Tr   cd)
r_   rc   re   keysvaluesrj   ri   r
   r<   _mapping)d1d2rn   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                      ddd} t               }t               }t               }t        j                         \  }}|j                  j                  |       |j                  j                         |k(  sJ |j                  | j                         | j                                |j                  j                         |k(  sJ |j                  j                  |       t        j                  t              5  |j                  j                  |       d d d        t        j                         \  }}|j                  | j                         | j                                |j                  j                  |       t        j                         \  }}	|	j                  | j                         | j                                t        j                         5  |	j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   ru   r   )r	   r   r_   rc   rj   set_converterr   re   r   r   pytestraisesRuntimeErrorwarns)
r   str_cat_converterstr_cat_converter_2date_converterfig1r   fig2r   fig3ax3s
             r   test_explicit_converterr      s   q	B,..0"_N ID#II-.99""$(9999HHRWWY		$99""$(9999II-.	|	$ 5		 345 ID#HHRWWY		$ II-.ID#HHRWWY		$ 
 0		/0 05 50 0s   6G8H8HH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   rF   rY   r   r   r   ru   r   )r   ru   )r   rY   )r   r   )g     <@g     ?@)rJ   ra   r   r_   rc   rj   update_unitsdraw_without_renderingget_xlimrh   get_ylimrf   re   r,   r   rg   )rR   rn   r   ro   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dZed        Zy)Kernelc                 8    t        j                  |      | _        y r   )r,   
asanyarray_array)r   ry   s     r   r   zKernel.__init__=  s    mmE*r   Nc                     |C|| j                   j                  k7  r*|(|s&t        d| j                   j                   d| d      t        j                  | j                   |      }|s|S 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__@  sz    $++*;*;!; ,T[[->->,?tg-/ 
 jjE22RWWS\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   <  s     +	3 ! !r   r   c                  H    t        g d      } t        j                  |        y )N)r   ru   r   r   rZ   )r   r_   re   )kernels    r   test_plot_kernelr  P  s    O$FHHVr   c                 (   t        j                  dd      \  }\  }}| j                  d      }|j                  |       d}|j	                  |       t        j                  |dfd|fdd||      }|j                  |       |j                          y )	Nru   )r   rZ   )nrowsfigsizez2017-01-01T12z	test testr   r   )coordsAcoordsBaxesAaxesB)	r_   rc   	Timestamprg   rf   mpatchesConnectionPatch
add_artistr   )pdrn   r   r   rm   rl   r   s          r   test_connection_patch_unitsr  V  s    llG<OC#s
_%AKKNAKKN

"
"Aq6Aq6+16),C9C NN3 r   )0r   r   r   platformunittest.mockr   matplotlib.pyplotpyplotr_   matplotlib.testing.decoratorsr   r   matplotlib.patchespatchesr  matplotlib.unitsr   rJ   matplotlib.categoryr	   r
   matplotlib.datesr   numpyr,   r   r   fixturerR   machinerp   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r6   r   r   <module>r     sv   2 2  #  O % ! > *  * *>  F ?#7+8++-9atE3E32 *+W+8++-9atEE> &'!&G=
:=
: '(!&G=:=:D
 (: ):F ;80B&)T! !(!r   