
    R1ij                     B   d dl Zd dlZd dl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mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d d	l m Z  d
ez  Zedz  Zg dZg dZ ddg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 Z0d Z1d  Z2g d!Z3d" Z4d# Z5d$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;d* Z<d+ Z=d, Z>d- Z?d. Z@d/ ZAd0 ZBd1 ZCd2 ZDd3 ZEd4 ZFd5 ZGd6 ZHd7 ZId8 ZJd9 ZKd: ZLd; ZMd< ZNd= ZOd> ZPd? ZQd@ ZRdA ZSdB ZTdC ZUdD ZVdE ZWdF ZXdG ZYdH ZZdI Z[dJ Z\dK Z]y)L    N)assert_raises)timezone)arrayinf)api)DAY_ST0)iers)	GREGORIAN_STARTGREGORIAN_START_ENGLANDTime	Timescalecalendar_tuplecompute_calendar_datejulian_date
julian_dayutc)datetime      ?g%?)taitttdbut1)r   r   r   r   r           r   #   g     B@  HBAc            	      `   t        dgdgg      } t        t         ddddt        g      }t        g d      }t        | ||      }|j                  dd	d	d
d
ddg      }|j                  j
                  j                         g dg dgk(  sJ |j                  dd	d	      }|j                  dk(  sJ y )Ng@BAgF7=F@g   2BAg   BAg   BA   @BA)
   r"   r"            r   r   r   r#   r$   )i  r$         ;   <   )r   r   r   r   r   r     )  r$   r&   r'   r(   2   )r   r   r   r   r   Ttolist)delta_t
leap_datesleap_offsetststs        _/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_timelib.py3test_timescale_with_old_fashioned_leap_second_tabler5      s     ()J<89GiIy#NOJ12L	7J	5B
tQ1a"b*A5577>>"     	tQA55....    c               #   L   K   t         j                  j                          y wNr   load	timescale r6   r4   r2   r2   *   s     
((


s   "$c               #      K   t         j                  j                          t         j                  j                  d       y w)NFbuiltinr9   r<   r6   r4   	ts_eitherr@   -   s3      ((



((

U

++s   AAc                  ,    t        j                  |       S r8   )npr   )argss    r4   arD   8   s    88D>r6   c              #     K   | j                  ddddg       | j                  ddddg       | j                  ddddg       | j                  ddddg       | j	                  ddddg       t        dd      }| j                  |       | j                  |       | j                  |       | j                  |       t        | |       t        dd      dfdt        dd      ft        dd      t        dd      ffD ]A  \  }}| j                  ||       | j                  ||       | j                  ||       C t        | |       y w)	N  r"      	   g   @BAg   BAg      ?        )r   r   r   r   r   rD   tai_jdtt_jdtdb_jdut1_jdr   )r2   jdfractions      r4   all_kinds_of_time_arrayrP   ;   sS    
&&rAq6
""
&&rAq6
""
%%b1a&
!!
&&rAq6
""
&&rAq6
""	
9i	 B
))B-
((2,
))B-
))B-
r2, y)$d+#t%y)$aTl3H
 iiH%%hhr8$$iiH%% r2x
  s   E!E#c                 T   t        | |      }t        |t              r || }n	 ||      }t        ||      dk(  sJ  t        ||dz                }|dk(  sJ t        ||dz         } |       }|d|j                         z   k(  sJ t        j
                  dk  ry  |d      }|d	k(  sJ y )
NrN   r   	_calendarr   	_strftimez1973-01-18 01:35:38    z%S.%fz	37.500000)getattr
isinstancetupleuppersysversion_info)r2   continuous_timescale
time_valuemethodr3   tupstrftimestrings           r4   test_time_creation_methodsrc   Z   s    R-.F*e$Jj!1*+/???? 9'!)K7
8
:C,,,,q.<=HZF+.B.H.H.JJJJJ
4gF[   r6   c                     | j                  dd      j                  d      dk(  sJ | j                  dd      j                  d      dk(  sJ | j                  dg d      j                  d      g dk(  sJ y )	NrF   z%Y-%m2019-11   2021-03)re   r   r   r%      rg   )rf   z2019-12z2020-01z2021-01z2021-02rh   )r   tt_strftimer2   s    r4   test_months_overflow_correctlyrl   q   sw    55r?&&w/9<<<55r?&&w/9<<<55-.::7C H   r6   c                    t        dd      }| j                  d|d      j                  d      g dk(  sJ | j                  d|d      j                  d      g dk(  sJ | j                  d|d	      j                  d      g d
k(  sJ y )Nr   r%   rF   re   z%Y-%m-%d)z
2019-12-30z
2020-01-30z
2020-02-28z
2020-03-30z
2020-04-29z
2020-05-30z
2020-06-29z
2020-07-30z
2020-08-30z
2020-09-29z
2020-10-30z
2020-11-29r   )z
2019-12-31z
2020-01-31z
2020-02-29z
2020-03-31z
2020-04-30z
2020-05-31z
2020-06-30z
2020-07-31z
2020-08-31z
2020-09-30z
2020-10-31z
2020-11-30    )z
2020-02-01z
2020-03-03z
2020-04-01z
2020-05-02z
2020-06-01z
2020-07-02z
2020-08-01z
2020-09-01z
2020-10-02z
2020-11-01z
2020-12-02z
2021-01-01)ranger   rj   )r2   monthss     r4   test_days_overflow_correctlyrq   x   s    1b\F55vr"..z: ?   
 55vq!--j9 >   
 55vr"..z: ?   r6   c                     | j                  ddd      }t        t              5  |D ]  } 	 d d d        t        t              5  t        |       d d d        y # 1 sw Y   -xY w# 1 sw Y   y xY w)Ni        )r   r   	TypeErrorlen)r2   r3   items      r4   1test_sequence_behaviors_of_time_that_is_not_arrayrx      sY    
tQA	y	!D  
"
 
y	!A 
"	! 
"	!
 
"	!s   AA$A!$A-c                 .    t        |       D ]  }|d    	 y )Nr   )rP   r2   r3   s     r4   test_time_can_be_indexedr{      s    $R(	! )r6   c                 :     t        | |      ddd      }|D ]  } y )NrF   rH   )      )rW   )r2   time_scale_namer3   rw   s       r4   test_is_time_iterabler      s&    $O$T1h7A r6   c                 `   t         j                  dk  ry | }|j                  ddd      }|j                  d      dk(  sJ |j	                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  ddddg      }|j                  d      dgdz  k(  sJ |j	                  d      dgdz  k(  sJ |j                  d      dgdz  k(  sJ |j                  d      dgdz  k(  sJ |j                  d      dgdz  k(  sJ y )	NrU   irt   r~   z%Y %Sz-746 18z-746 28z-746 00)r[   r\   r   utc_strftimeut1_strftimetai_strftimerj   tdb_strftimer@   r2   r3   s      r4   "test_strftime_on_prehistoric_datesr      sD   
4	B
dArA>>'"i///>>'"i///>>'"i///==!Y...>>'"i///
dABx A>>'"ykAo555>>'"ykAo555>>'"ykAo555==!i[1_444>>'"ykAo555r6   c                     t         j                  dk  ry t        j                  j	                  d      } | j                  ddd      }|j                  d      dk(  sJ |j                  d      d	k(  sJ |j                  d      d
k(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ | j                  ddddg      }|j                  d      dgdz  k(  sJ |j                  d      d	gdz  k(  sJ |j                  d      d
gdz  k(  sJ |j                  d      dgdz  k(  sJ |j                  d      dgdz  k(  sJ y )NrU   Fr>   i  rH   r$   z%Y %S %fz1980 08 816000z1980 08 892775z1980 27 816000z1980 00 000000z1980 59 998471rt   )r[   r\   r   r:   r;   r   r   r   r   rj   r   rz   s     r4   test_strftime_with_microsecondsr      sj   
4			E		*B
dArA>>*%)9999>>*%)9999>>*%)9999==$(8888>>*%)9999
dABx A>>*%*:);a)????>>*%*:);a)????>>*%*:);a)????==$)9(:Q(>>>>>>*%*:);a)????r6   c                 l    | j                  dd      }|j                  dk(  sJ |j                  dk(  sJ y N    BAgH?)rJ   wholetai_fractionrz   s     r4   $test_tai_fraction_loses_no_precisionr      6    
		)\*A77i>>\)))r6   c                 l    | j                  dd      }|j                  dk(  sJ |j                  dk(  sJ y r   )rL   r   tdb_fractionrz   s     r4   $test_tdb_fraction_loses_no_precisionr      r   r6   c                 ~    | j                  dddddd      }|j                         }|d d dk(  sJ d|d   z  d	k(  sJ y 
NrF         rt   g>>,R(@   )rF   r   r   rt   rt   z%.10fz12.0123456789)r   tai_calendarr2   r3   cs      r4   ?test_tai_seconds_preserve_10_decimal_places_in_calendar_secondsr      sQ    
tQ1a/A	ARa5&&&&QqT>_,,,r6   c                 ~    | j                  dddddd      }|j                         }|d d dk(  sJ d|d   z  d	k(  sJ y r   )r   tt_calendarr   s      r4   >test_tt_seconds_preserve_10_decimal_places_in_calendar_secondsr      sP    
dAq!Q.A	ARa5&&&&QqT>_,,,r6   )))    rF   rV   r}   r%   r   r"   )r   )rV   rs   r   r}   r%   r   r"   )r   rV   )r}   r~      r%   r   r"   )r   rV   r}   )r%   ri   rg   r   r"   )r   rV   r}   r%   r   rt   rV   r"   )r   rV   r}   r%   r   )r"   r#   r$   c                 X    t        |        t        | |      | }|j                          y r8   )printrW   utc_jpl)r2   r   time_params_with_arrayr3   s       r4   test_time_creation_with_arraysr      s'    	/$O$&<=AIIKr6   c           
         t        j                  ddd      }| j                  ddddd|      }|j                  |j                  k(  sJ t	        |      D ]7  \  }}|j
                  |   | j                  ddddd|      j
                  k(  r7J  y )	N      H@      M@r   r   r$      r'   r(   )rB   aranger   shape	enumerater   )r2   secondsr3   iseconds        r4   +test_timescale_utc_method_with_array_insider      s    iidC(G
tRRW-A==AGG###w'	6uuQx266$BB?CCCCC (r6   c                     t        t              5 }| j                  t        dddddd             d d d        dt	        j
                        v sJ y # 1 sw Y   #xY w)Nr   r$   r   r'   r(   0   zimport timezone)r   
ValueErrorfrom_datetimer   str	exception)r2   infos     r4   <test_that_building_time_from_naive_datetime_raises_exceptionr      sN    	z	"d
$BB;< 
#DNN 3333 
#	"s    AAc                     | j                  t        ddddddt                    }|j                  dk(  sJ | j                  t        ddddddt                    }|j                  dk(  sJ y )	Nr   r$   r   r'   r(   r   tzinfo   @BA)r   r   r   r   rz   s     r4   +test_building_time_from_single_utc_datetimer      sf    
$BB3GHA55I
xb"b"b=>A55Ir6   c                     t        d      }| j                  |j                  t        ddddddd                  }|j	                         \  }}|t        dddd	dddt
        
      k(  sJ |dk(  sJ y )N
US/EasternrF   r   r"   r$   ,   r%   i,    r   r   )r   r   localizer   utc_datetime_and_leap_secondr   )r2   tzr3   dtleap_seconds        r4   9test_building_time_from_single_utc_datetime_with_timezoner      sw    	,	B
XdAr2r2v%NOPA446OB$2r2r6#FFFF!r6   c                    t        ddddddt              t        ddddddt              t        ddd	dddt              t        d
dddddt              t        d
dddddt              t        d
dddddt              g}| j                  |      }t        |j                        g dk(  sJ | j                  |      }t        |j                        g dk(  sJ y )Nr   r$   r   r'   r(   r   r      r&     r   /   rt   rV   )r   g   BAr!   g   BAg   @BAg   BA)r   r   from_datetimeslistr   )r2   	datetimesr3   s      r4   -test_building_time_from_list_of_utc_datetimesr      s    r2r2r#6r2r2r#6r2r2r#6q!RR4q!RR4q!RR4I 	)$A;     	yA;    r6   c                 v    t        j                  ddd      }| j                  |      }|j                  dk(  sJ y )NrF   r      )rF   r   r   r   r   rI   )	dt_moduledater   )r2   dr3   s      r4   #test_building_time_from_python_dater     s4    tQ#A
q	A55,,,,r6   c                     | j                  dddd      }| j                  dddd      }| j                  ||d      }|j                         D cg c]  }|D ]  }|  c}}g dk(  sJ y c c}}w )N  r#   rV   r   r   r   )r   r   r   r#   r#   r#   rV   rs   r   r   r$   r   r   r   r   r   r   r   )r   linspacer   )r2   t0t1r3   rD   ns         r4   test_timescale_linspacer     ss    	tRA	B	tRB	B
BAA}}2!1AA2 7   2s   A+c                 x   d}t         j                  |z
  }| j                  |      }|`t	        ||j                  z
         t        ||j                  z
        dk  sJ t         j                  |z   }| j                  |      }|`t	        ||j                  z
         t        ||j                  z
        dk  sJ y )Niб7 rR   g|=)r   r	   r   ut1_fractionr   abs)r2   ten_thousand_yearsrN   r3   s       r4   test_converting_ut1_to_ttr   $  s    $	$	$B
"A		"quu*rAEEz?U"""	$	$B
"A		"quu*rAEEz?U"""r6   c                    | j                  ddt        dd            }|j                  dk(  sJ |d   }|j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ |j
                  d   |j
                  k(  sJ |j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ y )Nr   r"   r   r   r   r   )r   ro   r   r   r   r   r   r/   )r2   r3   r   s      r4   test_indexing_timer   3  s    
tRq!%A77d??	
1B558rvv447bee558rvv558rvv99Q<2::%%%r6   c                 D   | j                  ddt        dd            }|j                  dk(  sJ |dd }|j                  dk(  sJ |j                  dd |j                  k(  j	                         sJ |j
                  dd |j
                  k(  j	                         sJ |j                  dd |j                  k(  j	                         sJ |j                  dd |j                  k(  j	                         sJ |j                  dd |j                  k(  j	                         sJ y )	Nr   r"   r   r   r   rt   rs   )rt   )	r   ro   r   r   allr   r   r   r/   )r2   r3   t24s      r4   test_slicing_timer   =  s    
tRq!%A77d??
Aa&C99EE!AJ#''!&&(((DD1I$$&&&EE!AJ#''!&&(((EE!AJ#''!&&(((IIaNckk)..000r6   c                     | }|j                  dddddd      }t        |j                  dz
        t        k  sJ |j	                         dk(  sJ y )	N{  r$   rt   rV   rs   ݅@g,m0xBA1915-12-02T03:04:06Z)r   r   r   epsilonutc_isor   s      r4   test_early_utcr   H  sQ    	B
tRAq),Aqtt(()G33399;0000r6   c                     | j                  ddddd      }t        d      }|j                  |      }||j                  t	        ddddddd            k(  sJ y Nr+   r      r   r   r   r   )r   r   
astimezoner   r   )r2   r3   r   r   s       r4   test_astimezoner   N  sX    
tQB#A	,	B	
b	BXdAr2r1a@AAAAr6   c                     | j                  ddddd      }t        d      }|j                  |      \  }}||j                  t	        ddddddd            k(  sJ |dk(  sJ y r   )r   r   astimezone_and_leap_secondr   r   )r2   r3   r   r   r   s        r4   test_astimezone_and_leap_secondr   T  sl    
tQB#A	,	B2226OBXdAr2r1a@AAAA!r6   c                 Z    | j                  dddddd      }|j                         dk(  sJ y )Nr   r$   r&   r#   r(   r)   g    %A)r   	toordinalrz   s     r4   test_toordinalr   [  s.    
tRRR(A;;=H$$$r6   c                     | j                  dddddd      }|j                         }|t        dddddddt               k(  sJ y )Nr+   r   r   r   g2;E@*   io )r   utc_datetimer   )r2   r3   r   s      r4   test_utc_datetimer  _  sG    
tQBI.A	
	B$2r2r63????r6   c                     | j                  ddddd      }|j                         \  }}|t        dddddddt               k(  sJ |dk(  sJ y )Nr+   r   r   r   r   )r   r   r   )r2   r3   r   r   s       r4   !test_utc_datetime_and_leap_secondr  d  sY    
tQB#A446OB$2r2q!S9999!r6   c           
          t        dddddddt              }| j                  |      }|j                         \  }}||k(  sJ |d	k(  sJ y )
NrF   r   r"   r#   r,   rH   i r   r   )r   r   r   r   )r2   r   r3   dt2r   s        r4   )test_utc_datetime_microseconds_round_tripr  j  sW    	$2r2q&	=B
A557C"99!r6   c                     | j                  dddddd      }|j                   d d dk(  sJ |j                  d      d	k(  sJ y )
Nr   r   r'   r(   g
?WM@r   )r   r   r   r'   r(   %j001r   r   rz   s     r4   .test_utc_datetime_agrees_with_public_utc_tupler  q  sM     	tQ2r#9:A55!9,,,,>>$5(((r6   c                    | j                  dddddd      }|j                  d      d	k(  sJ |j                  d
      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )Nr   r$   rt   rV   rs   r   r   placesr   r   z1915-12-02T03:04:05.7Zz1915-12-02T03:04:05.68Zz1915-12-02T03:04:05.679Zz1915-12-02T03:04:05.6787Zr   r   rz   s     r4   "test_iso_of_decimal_that_rounds_upr  x  s    
tRAq),A99A9"888899A9"::::99A9";;;;99A9"<<<<99A9"====r6   c                    | j                  dddddd      }|j                  d      d	k(  sJ |j                  d
      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )Ni  r$      r   rV   gǙ&l?r   r  z2014-12-21T06:03:01Zr   z2014-12-21T06:03:01.2Zrt   z2014-12-21T06:03:01.23Zz2014-12-21T06:03:01.234Zrs   z2014-12-21T06:03:01.2342Zr  rz   s     r4   $test_iso_of_decimal_that_rounds_downr    s    
tRQ8,A99A9"888899A9"::::99A9";;;;99A9"<<<<99A9"====r6   c                    | j                  dddddd      }|j                  d      d	k(  sJ |j                  d
      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )Nr   r$   r&   r'   r(   g3N@r   r  1973-12-31T23:59:60Zr   z1973-12-31T23:59:60.1Zrt   z1973-12-31T23:59:60.12ZrV   z1973-12-31T23:59:60.123Zrs   z1973-12-31T23:59:60.1235Zr  rz   s     r4   %test_iso_of_leap_second_with_fractionr    s    
tRRX.A99A9"888899A9"::::99A9";;;;99A9"<<<<99A9"====r6   c                     | j                  dddddt        j                  ddd            }|j                  d	
      g dk(  sJ y )Nr   r$   r&   r'   r(        `M@̌O@      ?r   r  )	1973-12-31T23:59:59Zr  r  r  1974-01-01T00:00:00Zr  1974-01-01T00:00:01Zr  z1974-01-01T00:00:02Zr   rB   r   r   rz   s     r4   'test_iso_of_array_showing_whole_secondsr    sI    
tRRRYYudC%@AA99A9 
#
 

 

 

r6   c                     | j                  dddddt        j                  ddd            }|j                  d	
      g dk(  sJ y )Nr   r$   r&   r'   r(   r  r  r  rt   r  )	z1973-12-31T23:59:58.75Zz1973-12-31T23:59:59.25Zz1973-12-31T23:59:59.75Zz1973-12-31T23:59:60.25Zz1973-12-31T23:59:60.75Zz1974-01-01T00:00:00.25Zz1974-01-01T00:00:00.75Zz1974-01-01T00:00:01.25Zz1974-01-01T00:00:01.75Zr  rz   s     r4   #test_iso_of_array_showing_fractionsr!    sI    
tRRRYYudC%@AA99A9 
# 
 
 
r6   c                 n    | j                  t        ddd      dd      }|j                         g dk(  sJ y )Nii-  d   r   r   )z"B.C. 0301-Jul-01 00:00:00.0000 UTCz"B.C. 0201-Jul-01 00:00:00.0000 UTCz"B.C. 0101-Jul-01 00:00:00.0000 UTCz"B.C. 0001-Jul-01 00:00:00.0000 UTCz"A.D. 0100-Jul-01 00:00:00.0000 UTCz"A.D. 0200-Jul-01 00:00:00.0000 UTCz"A.D. 0300-Jul-01 00:00:00.0000 UTC)r   ro   r   rz   s     r4   test_jpl_formatr$    s:    
uT3$a+A99; 
 
 
 
r6   c                 \    | j                  dddddd      }|j                  d      dk(  sJ y )	Nr   r$   r&   r'   r(   r)   z%Y %m %d %H %M %Sz1973 12 31 23 59 60r
  rz   s     r4   test_strftime_of_a_leap_secondr&    s3    
tRRR(A>>-.2GGGGr6   c                     | j                  dddddt        j                  ddd            }|j                  d	      g d
k(  sJ y )Nr   r$   r&   r'   r(        M@ǧN@r   z%a %Y %m %d %H %M %S)zMon 1973 12 31 23 59 59zMon 1973 12 31 23 59 60zTue 1974 01 01 00 00 00)r   rB   r   r   rz   s     r4   .test_strftime_of_date_array_over_a_leap_secondr)    sH    
tRRRYYtT3%?@A>>01 6   r6   c                    | j                  ddd      j                  d      dk(  sJ | j                  ddd      j                  d      dk(  sJ | j                  ddddd	      j                  d      dk(  sJ | j                  ddddd
      j                  d      dk(  sJ | j                  ddddg      j                  d      ddgk(  sJ y )Ni  rH   r   r  272r   273r'   r(   r)   274r
  rk   s    r4   test_strftime_day_of_yearr.    s    66$2++D1U:::66$2++D1U:::66$2r2&33D9UBBB66$2r2&33D9UBBB66$B8$11$7E5>IIIr6   c                    | j                  dddddd      j                  }|dk(  sJ | j                  dddddd      j                  }| j                  dddddd	      j                  }| j                  dddddd
      j                  }| j                  dddddd      j                  }| j                  dddddd      j                  }t        ||z
  dt        z  z
        t        k  sJ t        ||z
  t        z
        t        k  sJ t        ||z
  t        z
        t        k  sJ t        ||z
  t        z
        t        k  sJ t        ||z
  t        z
        t        k  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ | j                  |      j                         dk(  sJ y )Nr   r$   r&   r'   r(   r   r!   r   r(  g      N@r   r   r   rI   r   g       @rR   z1973-12-31T23:59:48Zz1973-12-31T23:59:58Zr  r  r  r  )r   r   r   
one_secondr   r   )r2   r   r   t2t3t4t5s          r4   test_leap_secondr5    s)    
b"b"d	+	/	/B?? 
b"b"d	+	/	/B	b"b"d	+	/	/B	b"b"d	+	/	/B	aAq#	&	*	*B	aAq#	&	*	*B
 rBwz))*W444 rBw#$w...rBw#$w...rBw#$w...rBw#$w... 66R6=  "&<<<<66R6=  "&<<<<66R6=  "&<<<<66R6=  "&<<<<66R6=  "&<<<<66R6=  "&<<<<r6   c                 N   | j                  dddddd      }|j                  |j                  }}| j                  ||      }|j	                  d      }|dk(  sJ t        j                  |d      }| j                  ||      }|j	                  d      }|d d dk(  sJ |d   d	kD  sJ y )
N  r   r   rI   )r7  r   r   r   r   rI   re   r   )i  r$   r&   r'   r(   gN@)r   r   r   rJ   
_utc_tuplerB   	nextafter)r2   r3   rD   br1  r`   r2  s          r4   test_leap_second_sensitivityr;    s    
tQ1a#A77ANNqA 
1aB
--
C)))) 	QA	1aB
--
Cr7,,,,q6N"""r6   c                    | j                  dddddd      }|j                  dk(  sJ | j                  d      }t        |j                  dz
        dk  sJ d	}| j                  d
|dz  z         }|j                  dd|dz  z  z   k(  sJ y )N  r   r   gO@i  yearg     @g     [@r   i!  r#  ig     @@@rt   )r   r/   r   J)r2   r3   	centuriess      r4   test_delta_trB    s     	tQ1a#A99
""" 	DAqyy6!"U*** I
TIO#$A99til22222r6   c                 $   | j                  ddd      }t        |j                        d d dk(  sJ | j                  ddd      }t        |j                        d d dk(  sJ | j                  d	d
d      }t        |j                        d d dk(  sJ y )Nr7  rV   r   z0.4r   rH   r  z0.0r   r   rt   rs   z-0.1)r   r   dut1rz   s     r4   	test_dut1rE    s    
tQAqvv;r?e###
tQAqvv;r?e###
tQAqvv;r?f$$$r6   c                     t         j                  j                  d      5 } t        j                  |       }d d d        t         j                  j                         }t        j                  |       d}|j                  ddddd|       }|j                         \  }}}|dkD  sJ |dkD  sJ |j                  ddddd|      }|j                         \  }}}|dk  sJ |dk  sJ y # 1 sw Y   xY w)	Nzfinals2000A.allg-C6?r   r   rV   r   g(yu?g`-]?)	r   r:   openr
   parse_x_y_dut1_from_finals_allr;   install_polar_motion_tabler   polar_motion_angles)ffinals_datar2   bumpr3   sprimexys           r4   test_polar_motion_tablerQ  !  s    	(	)Q99!< 
* 
			B##B4D
tQ1a$'A((*LFAqx<<x<<
tQ1a$'A((*LFAqx<<x<<! 
*	)s   C''C0c                    | j                  d      j                  t        k(  sJ | j                  d      j                  t        dz
  k(  sJ | j                  ddg      j                  t        dz
  t        gk(  j                         sJ | j                  ddd      j                   dk(  sJ | j                  ddd      j                   dk(  sJ y )	Nr=  il  g    @r   g      ?g     @@r  g     @)r@  r   r	   r   rk   s    r4   test_JrS  4  s    44:==B44:==BL(((DD$!!b7lB%77<<>>>55q#  F***55q#  F***r6   c           
      F   t        t        | j                  d            t              sJ t        t        | j                  t	        dd                  t              sJ t        | j                  d            dk(  sJ t        | j                  g             dk(  sJ t        | j                  dg            dk(  sJ t        | j                  ddg            d	k(  sJ t        | j                  g d
            dk(  sJ t        | j                  g d            dk(  sJ y )Nr=  r>  i  r   z<Time tt=1.0>z<Time tt=[]>z<Time tt=[1.]>rt   z<Time tt=[1. 2.]>r   z<Time tt=[1. 2. 3.]>)r   rt   rV   rs   z<Time tt=[1.0 ... 4.0] len=4>)rX   reprr   r   ro   rK   rk   s    r4   test_time_reprrV  ;  s     d266t6,-s333 d266uT4'869:C@@@//////!"2222!Q !%8888#$(>>>>&'+JJJJr6   c                     d} d}t        |       }||k(  sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        | | k(  sJ | t        j                  d	      z   }t        |      }|d   d
k(  j                         sJ |d   dk(  j                         sJ |d   t        j                  dd      k(  j                         sJ |d   dk(  j                         sJ |d   dk(  j                         sJ |d   dk(  j                         sJ t        | |k(  j                         sJ y )Ng   ŞBA)r*   r   r   r   r   rI   r   r   rt   rV   rs   r   g      @r*   r   rI   )	r   rX   numbersIntegralRealr   rB   r   r   )jd_unixcal_unixcaljd_array	cal_arrays        r4   test_jd_calendarr`  K  s    G&H

!C (?? c!fg..///c!fg..///c!fg..///c!fg..///c!fg..///c!fgll+++ ''' 3'Hx(IaLD %%'''aLA""$$$aLBIIaO+00222aLA""$$$aLA""$$$aLC$$&&& #x/44666r6   c            	      f   d} t        | dz
  |       dk(  sJ t        | dz
  |       dk(  sJ t        | dz   |       dk(  sJ t        | dz   |       dk(  sJ t        j                  | dz
  | dz         }t        ||       D cg c]  }t        |       c}g d	g d
g dgk(  sJ t	        ddd|       | dz
  k(  sJ t	        ddd|       | dz
  k(  sJ t	        ddd|       | dz   k(  sJ t	        ddd|       | dz   k(  sJ g d}t        t	        ddt        j
                  |      |             g dk(  sJ y c c}w )N# rt   ).  r"   rV   r   rc  r"   rs   r   rc  r"   rg   )rc  r"   r   )rc  rc  rc  rc  )r"   r"   r"   r"   )rV   rs   rg   r   rc  r"   rV   rs   rg   r   )i# i# rb  i# )r   rB   r   r   r   r   )gregoryrN   rD   dayss       r4   !test_raw_julian_gregorian_cutoverrh  o  sq   G 1g6-GGG 1g6-GGG 1g6.HHH 1g6.HHH	7Q;!	,B22w?@?DG?@ E    dB7+!<<<dB7+!<<<dBG,1===dBG,1===D
4RXXd^W=> C    As   =D.c                     t         j                  dk  ry  fd}t        j                  j	                          |ddd      dk(  sJ  |ddd      dk(  sJ  |d	d
d      dk(  sJ  |d	d
d      dk(  sJ t
        _         |ddd      dk(  sJ  |ddd      dk(  sJ  |d	d
d      dk(  sJ  |d	d
d      dk(  sJ t        _         |ddd      dk(  sJ  |ddd      dk(  sJ  |d	d
d      dk(  sJ  |d	d
d      dk(  sJ y )NrU   c                      t              | ||      }dk(  r!t        |j                  d            t        z  S t        |      S )Nr   rI   )rW   sum_utc_secondsr   )rP  mr   r3   r   r2   s       r4   rN   z5test_constructor_julian_gregorian_cutover.<locals>.jd  sH    (GB(Aq1e#q~~c*+e33q/**r6   rc  r"   rs      AArg      @AA  rH   rt      BAri      BA   AA   @AA   @BAr[   r\   r   r:   r;   r   julian_calendar_cutoffr   )r   rN   r2   s   ` @r4   )test_constructor_julian_gregorian_cutoverrx    sH   
4+ 
			BdB?i'''dBy(((dAq>Y&&&dAr?i''' /BdB?i'''dBy(((dAq>Y&&&dAr?i''' 7BdB?i'''dBy(((dAq>Y&&&dAr?i'''r6   c                     t         j                  dk  ry  fd}t        j                  j	                          |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ t
        _         |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ t        _         |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ y )NrU   c                 ~    j                  | d      }dk(  r|j                  d d S  t        |dz                d d S )N皙?r   rV   rS   )rK   r   rW   rN   r3   r   r2   s     r4   ymdz9test_calendar_tuple_julian_gregorian_cutover.<locals>.ymd  sI    HHRe#55!98wq/K78:2A>>r6   rn  rd  ro  re  rq  )rp  rH   rt   rr  )rp  rH   ri   rs  rt  ru  rv  r   r}  r2   s   ` @r4   ,test_calendar_tuple_julian_gregorian_cutoverr    s   
4? 
			By>]***y>^+++y>\)))y>]*** /By>]***y>^+++y>\)))y>]*** 7By>]***y>^+++y>\)))y>]***r6   c                     t         j                  dk  ry  fd}t        j                  j	                          |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ t
        _         |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ t        _         |d      dk(  sJ  |d      dk(  sJ  |d      dk(  sJ  |d	      d
k(  sJ y )NrU   c                 R    j                  | d      } t        |dz         d      S )Nr{  rT   z%Y %m %d)rK   rW   r|  s     r4   r}  z3test_strftime_julian_gregorian_cutover.<locals>.ymd  s,    HHR8wq/K78DDr6   rn  z
1582 10 04ro  z
1582 10 15rq  z
1752 09 02rr  z
1752 09 14rs  rt  ru  rv  r~  s   ` @r4   &test_strftime_julian_gregorian_cutoverr    s   
4E 
			By>\)))y>\)))y>\)))y>\))) /By>\)))y>\)))y>\)))y>\))) 7By>\)))y>\)))y>\)))y>\)))r6   c                    | j                  dd      }| j                  dd      }||k(  sJ ||z
  dk(  sJ t        |      t        |      k(  sJ | j                  dd      }||k7  sJ ||z
  dkD  sJ t        |      t        |      k7  sJ y )N   @BA      ?r   g      ?rI   gX ?r   )rK   hash)r2   r   r   r1  s       r4   test_time_equalityr    s    	)U	#B	)U	#B8O87c>>8tBx	)V	$B8O87Q;;8tBxr6   c                    | j                  dd      }|dz
  j                         dk(  sJ |dz   j                         dk(  sJ |dz
  j                         dk(  sJ |dz   j                         dk(  sJ t        j                  dd	      }||z
  j                         d
k(  sJ ||z   j                         dk(  sJ t        j                  d      }||z
  j	                         dk(  sJ ||z   j	                         dk(  sJ y )Nr  r  r   z2020-06-07 03:00:00 TTz2020-06-09 03:00:00 TTg      ?z2020-06-06 21:00:00 TTz2020-06-09 09:00:00 TT)rg  r   z2020-06-07 02:59:59 TTz2020-06-09 03:00:01 TTi,  )microsecondsz"A.D. 2020-Jun-08 02:58:50.8157 UTCz"A.D. 2020-Jun-08 02:58:50.8163 UTC)rK   rj   r   	timedeltar   )r2   r3   rM  s      r4   test_time_mathr    s   
E"AE $<<<<E $<<<<H!!#'????H!!#'????Aq1DH!!#'????H!!#'????C0DH#GGGGH#GGGGr6   )^r   r   rX  numpyrB   r[   assayr   pytzr   r   r   skyfieldr   skyfield.constantsr   r	   skyfield.datar
   skyfield.timelibr   r   r   r   r   r   r   r   r   r0  r   r]   r   r^   r5   r2   r@   rD   rP   rc   rl   rq   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r$  r&  r)  r.  r5  r;  rB  rE  rQ  rS  rV  r`  rh  rx  r  r  r  r  r<   r6   r4   <module>r     s      
     (    5[

w
2 4(*:;
/$	,!>!.$
6&@&*
*
-- 
D4
$-
#&	11B%@
)>>>


HJ&=P#"3 	%&+K "7H0(>+>*:
 Hr6   