a
    f1b&                     @   s.  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 dZ
e e
je eje eje ejde jZe e
je eje eje ejde jZdQddZejddd	d
ieddddfdd	dieddddfgdd Zejddi eddddfdi eddddfgdd Zejdeddeddd fi ed!d"d#dfed$dd%ed$dd%d fi ed&d'dd(feddedd)d fi ed*d+d dfd,i edd-ddfeddeddd fi ed!d"d#dfed$dd%ed$dd%d fi ed&d'dd(fed$dd%ed$d.d%d fi ed/d0d d1fed$d2d%ed$d)d%d fd3d4ied5d6d7fed$d2d%ed$d)d%d fd3d8ied9d:dd;fg	d<d= Zejjd>eefeefgd?d@gdAejdBdCd4g dDfdCdEg dFfdCdGg dDfdCdHg dIfdCdJg dKfdCdg dLfdCdMg dNfgdOdP ZdS )R    N)FormatterDMSFormatterHMSselect_stepselect_step24select_step360a'  \$  # Mathtext
        (
            # The sign sometimes appears on a 0 when a fraction is shown.
            # Check later that there's only one.
            (?P<degree_sign>-)?
            (?P<degree>[0-9.]+)  # Degrees value
            {degree}  # Degree symbol (to be replaced by format.)
        )?
        (
            (?(degree)\\,)  # Separator if degrees are also visible.
            (?P<minute_sign>-)?
            (?P<minute>[0-9.]+)  # Minutes value
            {minute}  # Minute symbol (to be replaced by format.)
        )?
        (
            (?(minute)\\,)  # Separator if minutes are also visible.
            (?P<second_sign>-)?
            (?P<second>[0-9.]+)  # Seconds value
            {second}  # Second symbol (to be replaced by format.)
        )?
        \$  # Mathtext
    degreeminutesecondc                 C   s   | |d  |d  S )N      N@      @ )ZdegreesZminutessecondsr   r   Nlib/python3.9/site-packages/mpl_toolkits/tests/test_axisartist_angle_helper.py	dms2float,   s    r   z.args, kwargs, expected_levels, expected_factor)L   
   ZhourFr         g      ?)   r   Tr         c                 C   sB   t | i |\}}}|t|ks$J tj|| ||ks>J d S N)r   lennptestingassert_array_equalargskwargsZexpected_levelsZexpected_factorZlevelsnfactorr   r   r   test_select_step0   s    r$   ii     r   c                 C   sB   t | i |\}}}|t|ks$J tj|| ||ks>J d S r   )r   r   r   r   r   r   r   r   r   test_select_step24<   s    r&      3333335@   fffff@@   i  i     g     4@)r   i\  ik  r   gfffffJ@i  i  )r(   r*   r+   #   gffffff5@hp i}p g     Agffffff&@Zthreshold_factor<   0  i0  g     @   iP  i%P  g     @@c                 C   sB   t | i |\}}}|t|ks$J tj|| ||ks>J d S r   )r   r   r   r   r   r   r   r   r   test_select_step360H   s    r2   zFormatter, regexzDegree/Minute/SecondzHour/Minute/Second)Zidszdirection, factor, valuesleft)r   iiiX  )r0   i0  i0  i  i  )iC iC iC i@~ )r.   imp irp )-   .   /   g      $@)i  i  i  c                    s2  |  }||||}d  } }}	t ||D ]\}
}||
  d usRJ |
dt fdddD }|dksJ d|
d|dkrdnd	}t d
p|pd}t dp|pd}t dp|	pd}| tkrt|d | }nt|| }|t||| |ks J |
d|}|}|}	q(d S )Nz  is not an expected tick format.c                 3   s    | ]}  |d  duV  qdS )Z_signN)group).0signmr   r   	<genexpr>{   s   z"test_formatters.<locals>.<genexpr>r   r1   zOnly one element of tick z may have a sign.r   r   r	   r
   r,   z$ does not match expected tick value.)	zipmatchsumfloatr7   r   pytestZapproxr   )Z	FormatterZregex	directionr#   valuesZfmtresultZprev_degreeZprev_minuteZprev_secondZtickvaluer9   r   r	   r
   Zexpected_valuer   r:   r   test_formatterse   s.    
rG   )r   r   )reZnumpyr   rB   Z$mpl_toolkits.axisartist.angle_helperr   r   r   r   r   Z_MS_REcompileformatescapeZdeg_markZmin_markZsec_markVERBOSEZDMS_REZHMS_REr   ZmarkZparametrizeZaranger$   r&   r2   rG   r   r   r   r   <module>   s   







	