
    R1ih                         d Z ddlZddlmZ ddlmZmZ ddl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d Zd Zd Zy)z>Tests of the Skyfield `api` module and user-facing exceptions.    N)assert_raises)apipositionlib)Topos)EphemerisRangeErrorc               #   L   K   t         j                  j                          y w)N)r   load	timescale     [/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_api.pytsr   	   s     
((


s   "$c                      t        j                  d      d   } t        t        d      5  | j	                  d       d d d        y # 1 sw Y   y xY w)N	de421.bspearthzbplease provide the at\(\) method with a Time instance as its argument, instead of the value 'blah'blah)r   r	   r   
ValueErrorat)r   s    r   )test_sending_jd_that_is_not_a_julian_dater      sB    HH[!'*E	z $6 
7 	
7 
7 
7s   AAc           	          t        j                  d      }|d   j                  | j                  ddddd            j	                  |d         j                         }t        |t        j                        sJ y 	Nr   r        	      2   mars)	r   r	   r   utcobserveapparent
isinstancer   Apparentr   eps      r   test_apparent_position_classr&      sa    A	'
bffT1aR0199!F)DMMOAa--...r   c           	          t        j                  d      }|d   j                  | j                  ddddd            j	                  |d         }t        |t        j                        sJ y r   )r   r	   r   r   r   r!   r   Astrometricr#   s      r   test_astrometric_position_classr)      sX    A	'
bffT1aR0199!F)DAa00111r   c           	      P   t        j                  d      }|d   t         j                  j                  dd      z   }|j	                  | j                  ddddd	            j                  |d
         }t        t        d      5  |j                          d d d        y # 1 sw Y   y xY w)Nr   r   gAc][B@g'\r   r   r   r   r   r   zit is not useful to call .altaz)
r   r	   wgs84latlonr   r   r   r   r   altaz)r   r$   oas       r   .test_astrometric_position_does_not_allow_altazr0      s~    A	'
SYY%%gy99A	RVVD!QB'(006;A	z#D	E		 
F	E	Es   BB%c                     t        j                  d      }d|v du sJ d|v du sJ d|v du sJ d|v du sJ d|v du sJ d	|v du sJ y )
Nr   i  Ti  Fr   EarthEARTHceres)r   r	   )r   r$   s     r   test_ephemeris_contains_methodr5   $   s|    A1H1HqLT!!!qLT!!!qLT!!!qLU"""r   c                    t        j                  d      }d}t        t        |      5 }|d   j	                  | j                  d             d d d        j                  }|j                  |fk(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  dgk(  sJ |j                  |d   j                  d   j                  u sJ y # 1 sw Y   xY w)	Nr   zAephemeris segment only covers dates 1899-07-29 through 2053-10-09r   i   g   @lBAg   @BATr   )r   r	   r   r   r   tt	exceptionargs
start_timetdbend_time	time_masksegmentvector_functionsspk_segment)r   ephmessager/   r$   s        r   1test_exception_raised_for_dates_outside_ephemerisrC   -   s    
((;
CK  
*G	4Gd$ 
5 	
A66gZ<<y(((::>>Y&&&;;4&   99G55a8DDDDD 
5	4s   $C%%C.c           	          t        j                  d      }|d   j                  | j                  ddddd            }t	        |t
        j                        sJ y )Nr   r   r   r   r   r   r   )r   r	   r   r   r!   r   Barycentricr#   s      r   test_planet_position_classrF   <   sI    A	&	RVVD!QB/0Aa00111r   c           	          t        j                  d      }t        j                  dd      }|d   j                  | j	                  ddddd	            j                  |      }t        |t        j                        sJ y )
Nr   r   ra_hoursdec_degreesr   r   r   r         )	r   r	   Starr   r   r   r!   r   r(   )r   r$   starr%   s       r   test_star_position_classrO   A   sd    A88QA.D	'
bffT1aQ/088>Aa00111r   c                 $   | j                  t        j                        }t        j                  d      }|d   j	                  |      }t        j
                  ddgddg      }|j                  |      }|j                  j                  j                  dk(  sJ |j                  j                  j                  dk(  sJ |j                  j                  d	k(  sJ |j                  j                  t        j                  k(  j                         sJ |j                         }|j                  t        j
                  dd            j                         }|j                  t        j
                  dd            j                         }|j                  j                  |j                  j                  d d d
f   k(  j                         sJ |j                  j                  |j                  j                  d d df   k(  j                         sJ y )Nr   r         ?       @      @      @rH      r   r   r   rL   )tt_jdr   T0r	   r   rM   r   positionaushapevelocityau_per_dtr7   allr    )	r   r_   rA   r$   rN   r%   r/   a1a2s	            r   test_star_vector_from_earthrc   G   s{   
A
((;
CGA88c3ZdD\BD			$A::==&(((::$$...3399CCFFcff!!###	

A	
388Sd;	<	E	E	GB	
388Sd;	<	E	E	GBKKNNajjmmAaC0055777KKNNajjmmAaC0055777r   c                 B   | j                  t        j                        }t        j                  d      }|d   t	        dd      z   }|j                  |      }t        j                  ddgddg	      }|j                  |      }|j                  j                  j                  d
k(  sJ |j                  j                  j                  d
k(  sJ |j                  j                  dk(  sJ |j                  j                  t        j                  k(  j                         sJ |j!                         }|j                  t        j                  dd	            j!                         }|j                  t        j                  dd	            j!                         }	|j                  j                  |j                  j                  d d df   k(  j                         sJ |	j                  j                  |j                  j                  d d df   k(  j                         sJ y )Nr   r   z	42.3583 Nz	71.0636 WrQ   rR   rS   rT   rH   rU   rW   r   rL   )rX   r   rY   r	   r   r   rM   r   rZ   r[   r\   r]   r^   r_   r7   r`   r    )
r   r_   rA   bostonbrN   r%   r/   ra   rb   s
             r   test_star_vector_from_toposrg   Y   s   
A
((;
C\E+{;;F		!A88c3ZdD\BD			$A::==&(((::$$...3399CCFFcff!!###	

A	
388Sd;	<	E	E	GB	
388Sd;	<	E	E	GBKKNNajjmmAaC0055777KKNNajjmmAaC0055777r   c                 
   t        j                  d      }|d   }|d   }|j                  | j                  d            j	                  |      }t        t        d      5  |j                          d d d        y # 1 sw Y   y xY wNr   r   mooni  z&from a specific latitude and longitude)r   r	   r   r   r   r   r   hadecr   r$   r   rj   r    s        r   test_hadec_needs_a_longituderm   l   se    AgJEV9Dxxt%--d3H	z#K	L 
M	L	Ls   A99Bc                 &   t        j                  d      }|d   }|d   }|j                  | j                  d            j	                  |      j                         }t        t        d      5  |j                          d d d        y # 1 sw Y   y xY wri   )	r   r	   r   r   r   r    r   r   r-   rl   s        r   test_altaz_needs_toposro   t   sn    AgJEV9Dxxt%--d3<<>H	z#K	L 
M	L	Ls   -BBc                      t        j                  g d      } t        t        d      5  | j	                  dd       d d d        y # 1 sw Y   y xY w)N        rr   rr   zto compute altitude and azimuthr   )alt_degrees
az_degrees)r   ICRFr   r   
from_altaz)r%   s    r   test_from_altaz_needs_toposrw   |   s:    )A	z#D	E	q1 
F	E	Es   AAc                    t        ddd      }| j                  t        j                        }|j	                  |      }t        j
                  d      }t        j                  d	      }t        t        d
      5  |j                  ddd       d d d        t        t        d      5  |j                  ddd       d d d        |j                  |dd       |j                  |dd       t        |j                  ||      j                               dk(  sJ t        |j                  |||      j                               dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nz	38.9215 Nz	77.0669 Wg      W@)elevation_m)jdg      $@)degreesgʡE?)r[   z the alt= parameter with an Anglez	Bad valuer   )altrs   rt   zthe az= parameter with an Angle)azrs   rt   bad)r|   r}   z0.1 au)r|   r}   distancez0.234 au)r   r7   r   rY   r   AngleDistancer   r   rv   strr   )r   usnor_   r%   r/   ds         r   test_from_altaz_parametersr      s   kt<D
A
A		$AA	z#E	F	!B 
G	z#D	E	qA 
FLLQEaL8LLA1L7q||a|(1134@@@q||a!|4==?@JNNN 
G	F	E	Es   <E)EEE#c                 J    | j                  ddd      }||k(  sJ |dk(  du sJ y )Ni  rL   =   F)r   )r   r_   s     r   test_github_81r      s1    
tQA6M6Gr   c                 P   t        j                  g d      }| j                  ddd      }t        j                  |||d      }t        j                  d      |_        t        j                  d	      5  |j                         j                          d d d        y # 1 sw Y   y xY w)
Nrq   i     r   r   )r_   centerr   raise)r`   )nparrayr   r   r(   r   r	   
_ephemeriserrstater    radec)r   zero_vectorr_   r%   s       r   9test_github_500_does_zero_position_trigger_numpy_warningsr      sr    ((?+K
tRA[AaHA88K(AL		!	

 
"	!	!s   4BB%)__doc__numpyr   assayr   skyfieldr   r   skyfield.apir   skyfield.errorsr   r   r   r&   r)   r0   r5   rC   rF   rO   rc   rg   rm   ro   rw   r   r   r   r   r   r   <module>r      sn    D   %  //
2
#E2
28$8&2
O
r   