
    R1i                         d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZ 	 ddlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed        Zed        Zy# e$ r dZY Dw xY w)zTests of whether units behave.    )assert_raises)arraynan)AngleDistanceVelocityUnpackingErrorWrongUnitError)unitsNc                     t         dS | S )z(Skip `test` if AstroPy is not available.N)u)tests    ]/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_units.pyneeds_astropyr      s    I4(D(    c                     d} t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              d	k(  sJ t        t        | d
z              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        d            dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ t        t        | dz              dk(  sJ y )Ng2.Z >g     Ƃdegreesz-00deg 01' 00.1"g     z-00deg 01' 00.0"g     g     z-00deg 00' 59.9"g      z-00deg 00' 00.2"g      z-00deg 00' 00.1"g      g      пz00deg 00' 00.0"g        g      ?g      ?z00deg 00' 00.1"      ?g      ?z00deg 00' 00.2"g     @z00deg 00' 59.9"g     @z00deg 01' 00.0"g     @g     Ƃ@z00deg 01' 00.1"strr   )tenths    r   test_degree_roundingr      s   EuUW_-.2EEEEuUW_-.2EEEEuUW_-.2EEEEuUW_-.2EEEEuUU]+,0CCCCuUU]+,0CCCCuUU]+,0CCCCuUU]+,0BBBBuS!"&8888uUT\*+/AAAAuUT\*+/AAAAuUT\*+/AAAAuUT\*+/AAAAuUV^,-1CCCCuUV^,-1CCCCuUV^,-1CCCCuUV^,-1CCCCr   c                      t        t        t        d                  dk(  sJ t        t        t        d      d            dk(  sJ t        t        t        d                  d	k(  sJ y )
N[   r   z91deg 00' 00.0"T)r   signedz+91deg 00' 00.0"   hours12h 00m 00.00s)r   r   r    r   r   test_angle_scalar_strsr"   +   s[    uU2Y'(,AAAAuU2Yt459OOOOu59%&*>>>>r   c                     t        t        dt        dg            } t        | j                        }t	        |       dk(  sJ t	        |      dk(  sJ t        t              5  | j                          |j                          d d d        | j                         |j                  d      cxk(  rg d	k(  sJ  J |j                         | j                  d      cxk(  rg d
k(  sJ  J t        g       }t	        |      dk(  sJ |j                  d      g k(  sJ |j                         g k(  sJ | j                  dd      g dk(  sJ |j                  dd      g dk(  sJ y # 1 sw Y   xY w)Ng      ?ir   r   z/3 values from 00h 30m 00.00s to -13h 00m 00.00sz23 values from 07deg 30' 00.0" to -195deg 00' 00.0"F)warn)z00h 30m 00.00sr   z-13h 00m 00.00s)z07deg 30' 00.0"r   z-195deg 00' 00.0"radianszAngle []z{0} {1} {2} {3} {4} {5}   )formatplaces)z 0 30 0 0 6r   z- 13 0 0 0 6)z 7 30 0 0 6r   z- 195 0 0 0 6)	r   r   r   _degreesr   r   r
   dstrhstr)hdemptys      r   test_angle_array_strsr0   0   s   E3S/*+Aajj!Aq6FFFFq6MMMM	~	&		 
' 668qvv5v)  .     
 668qvv5v)  .      "Eu:###::5:!R'''::<266216= B. . . .66216= B/ / / /- 
'	&s   "!E((E1c                  <   t        t        d            dk(  sJ t        t        d            dk(  sJ t        t        d            dk(  sJ t        t        d	            d
k(  sJ t        t        d            dk(  sJ t        t        d            dk(  sJ y )N)Z   r   z90deg 00' 00.0")r   r   r    )r2      z90deg 15' 00.0")r      z12h 30m 00.00s)r2   r3   r4   z90deg 15' 30.0")r   r4   r3   z12h 30m 15.00sr   r!   r   r   test_angle_sexagesimal_argsr5   P   s    uU#$(====u5!"&::::uX&'+@@@@u8$%)====u\*+/DDDDu<()-AAAAr   c                      t        d      } | j                         dk(  sJ | j                         dk(  sJ | j                         dk(  sJ y )N      ?r   <   i  i6 )r   
arcminutes
arcsecondsmas)angles    r   &test_arcminutes_and_arcseconds_and_masr=   Z   sN    #E###(((99;.(((r   c            	         t        d      t        d      t        d      t        d      t        j                  d      t        j                  d      t        j                  d      fD ]  } t	        | j                  dz
        dk  rJ  y )Nr7   aul   lZt) mgfff]]աAkmr   )r   r@   rB   rD   abs)r.   s    r   test_distance_input_unitsrF   `   sm    C< M"C

< M" 144#:!###r   c                  $   t        d      } t        d      }t        | j                  |j                  z
        dk  sJ t        j                  d      } t        j                  d      }t        | j                  |j                  z
        dk  sJ y )Ng       @au_per_dg|@km_per_sgHz>)r   rE   rI   rK   )v1v2s     r   test_velocity_input_unitsrN   l   sv    	3	B	9	%Br{{R[[()D000			3	B			9	%Br{{R[[()D000r   c                  n    t        ddg      } t        t        |             }d|v r|dk(  sJ y |dk(  sJ y )NgGz?g=
ףp=@r?   z[1z[1.23 4.56] auz[ 1.23  4.56] au)r   r   r   )ass     r   !test_stringifying_vector_distancerR   u   sE    tTlAHNAqy$$$$ &&&&r   c                     t        d      } d}t        t              5 }| \  }}}d d d        t        j                        |k(  sJ t        t              5 }| d    d d d        t        |j                        |k(  sJ t        d      }d}t        t              5 }|\  }}}d d d        t        |j                        |k(  sJ t        t              5 }|d    d d d        t        |j                        |k(  sJ t        d      }d}t        t              5 }|\  }}}d d d        t        |j                        |k(  sJ t        t              5 }|d    d d d        t        |j                        |k(  sJ y # 1 sw Y   UxY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w)NX9v?zmto use this Distance, ask for its value in a particular unit:

    distance.au
    distance.km
    distance.mr   zto use this Velocity, ask for its value in a particular unit:

    velocity.au_per_d
    velocity.km_per_s
    velocity.m_per_sr%   zoto use this Angle, ask for its value in a particular unit:

    angle.degrees
    angle.hours
    angle.radians)r   r   r	   r   	exceptionr   r   )distanceexpectrP   xyzvelocityr<   s           r   test_helpful_exceptionsr\      s   HF 
~	&!1a 
'q{{v%%%	~	&! 
'q{{v%%%HF 
~	&!1a 
'q{{v%%%	~	&! 
'q{{v%%%% EF 
~	&!1a 
'q{{v%%%	~	&!a 
'q{{v%%%M 
'	& 
'	& 
'	& 
'	& 
'	& 
'	&sG   E7FFFF)F57FFFF&)F25F>c                      t        g d       t        g d       t        g d       t        g d       t        g d       y )N)         r?   rC   rA   rH   rJ   )r   r   r!   r   r   $test_constructors_accept_plain_listsra      s*    wggr   c                  V    t        d      } t        | j                  dz
        dk  sJ y )NrT   rC        H@V瞯<)r   rE   rB   rV   s    r   test_converting_from_km_to_mrf      s(    5!HxzzF"#e+++r   c                  V    t        d      } t        | j                  dz
        dk  sJ y )Nrc   rA   rT   rd   )r   rE   rD   re   s    r   test_converting_from_m_to_kmrh      s(    &!Hx{{U"#e+++r   c                  P    t        j                  d      } | j                  dk(  sJ y )Nr   )r   from_aur@   re   s    r   test_deprecated_method_from_aurk      s$    %H;;$r   c                      t        d      } | j                  }| j                  t        j                        }d}t	        ||j
                  z
        |k  sJ y )NrT   r?   g{Gz?)r   rD   tor   rE   value)rV   value1value2epsilons       r   %test_converting_distance_with_astropyrr      sH    5!H[[F[[FGv$%///r   c                      t        d      } | j                  }| j                  t        j                  t        j
                  z        }d}t        ||j                  z
        |k  sJ y )NrT   rH   gư>)r   rK   rm   r   rD   rQ   rE   rn   )r[   ro   rp   rq   s       r   %test_converting_velocity_with_astropyrt      sR    'HF[[$FGv$%///r   ) __doc__assayr   numpyr   r   skyfield.unitsr   r   r   r	   r
   astropyr   r   ImportErrorr   r   r"   r0   r5   r=   rF   rN   rR   r\   ra   rf   rh   rk   rr   rt   r!   r   r   <module>r{      s    $   ")D2?
/@B)
$1'/&b,, 0 0 0 0C  As   A! !A+*A+