
    IR-eX                        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Zd dl	Z	d dl
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 d dlmZ  e j        ej        dd 	          Z e j        ej        dd	          Z e j        ej        dd
	          Zej        j         Z!d Z"d Z# G d d          Z$ G d d          Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-dS )    N)	timedelta)Decimal)units)Table)STANDARD_TIME_SCALESTIME_DELTA_SCALESTIME_SCALESOperandTypeErrorScaleValueErrorTime	TimeDeltaTimeDeltaMissingUnitWarning)iersg      <)rtolatolg     =c                 (    dt           j        _        dS )zUse offline IERS table only.FN)r   confauto_downloadmodules    =lib/python3.11/site-packages/astropy/time/tests/test_delta.pysetup_moduler   #   s    #DI    c                 2    t           t          j        _        dS )zRestore original setting.N)orig_auto_downloadr   r   r   r   s    r   teardown_moduler   (   s    0DIr   c                       e Zd ZdZd Zd Zd Zd Zd Ze	j
                            ddd	gd
gfg          d             Zd Zd Zd Zd Zd Zd Zd ZdS )TestTimeDeltazTest TimeDelta classc                    t          dd          | _        t          dd          | _        t          dddddd	t          j        z  d
t          j        z  dt          j        z  f          | _        t          dd          | _        t          dd          | _	        t          t          j        ddd          d          | _        d S )N
2010-01-01utcscalez2010-01-02 00:00:01z2010-01-03 01:02:03	   date_hmsdate_hmg     Rg      >@i  )r#   	precision	in_subfmt
out_subfmtlocationlocal      Y@secformatd   i  )r   tt2udegreemt3t4r   dtnparangedt_arrayselfs    r   setup_methodzTestTimeDelta.setup_method0   s    l%000,E:::!  ah&qxqsC
 
 
 |7333E%000!")Cs";";EJJJr   c                    | j         | j        z
  }t          |                              d          sJ t	          |j        d          sJ t          |j        d          sJ | j         |z
  }|j        | j        j        k    sJ || j	        z
  }t          |j        d          sJ t          j        t                    5  || j        z
   d d d            d S # 1 swxY w Y   d S )Nz><TimeDelta object: scale='tai' format='jd' value=1.00001157407ggP" ?    @g    @)r2   r1   repr
startswithallclose_jdjdallclose_secr-   isor8   pytestraisesr
   )r=   r8   r1   dt2s       r   test_subzTestTimeDelta.test_sub?   s9   WtvBxx""L
 
 	
 	
 	
 25"344444BFG,,,,, GbLu
"""" 47lCGW----- ]+,, 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =CCCc                    t          j        t                    5  | j        | j        z    d d d            n# 1 swxY w Y   | j        | j        z
  }| j        |z   }|j        | j        j        k    sJ || j        z   }t          |j        d          sJ | j        | j        z
  }|| j        z   }|j        | j        j        k    sJ d S )Ng    P@)	rG   rH   r
   r2   r1   rF   r8   rE   r-   )r=   r8   r2   rI   s       r   test_addzTestTimeDelta.test_addT   s   ]+,, 	 	Gdf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 WtvVb[v$$$$ 47lCGW----- Wtv$&[v$$$$$$s   6::c                 L   t          ddd          }t          ddgdd          }t          dd          }t          dd	gd          }||z   }t          |j        d          sJ |j        sJ ||z   }t          |j        dd	g          sJ |j        rJ ||z   }t          |j        dd
g          sJ |j        rJ ||z   }t          |j        d	          sJ |j        sJ ||z   }t          |j        d	dg          sJ |j        rJ ||z   }t          |j        d          sJ |j        sJ ||z   }t          |j        dd	g          sJ |j        rJ ||z   }t          |j        dd
g          sJ |j        rJ ||z   }t          |j        d	dg          sJ |j        rJ dS )iCheck time arithmetic as well as properly keeping track of whether
        a time is a scalar or a vector        mjdtair/   r#         ?r,   rD   r.         i@g     @Y@g     r@Nr   r   rC   rP   isscalarrD   r=   r1   r2   r8   rI   outs         r   test_add_vectorzTestTimeDelta.test_add_vectorg   s    U%0003*U%888uT***t444"f37E*****|#g37UEN33333<2g37UEN33333<2g365)))))|3h36E5>22222< 1f37E*****|Ag37UEN33333<2g37UEN33333<Bh36E5>22222<r   c                    t          ddd          }t          ddgdd          }t          dd          }t          dd	gd          }||z
  }t          |j        d
          sJ |j        sJ ||z
  }t          |j        d
dg          sJ |j        rJ ||z
  }t          |j        d
dg          sJ |j        rJ ||z
  }t          |j        d          sJ |j        sJ ||z
  }t          |j        dd
g          sJ |j        rJ dS )rN   rO   rP   rQ   rR   rS   r,   rD   r.   rT   g      Yg      ig     XNrU   rW   s         r   test_sub_vectorzTestTimeDelta.test_sub_vector   sV    U%0003*U%888uT***t444"f37F+++++|#g37VV$455555<2g37VUO44444<2g363'''''|3h36C=11111<r   values)   NBA   @OBAr]   r^   c                 V   |\  }}t          |dd          }t          |dd          }||z
  }t          |d          }t          j        |j        |j        k              sJ |j        j        |j        j        u sJ |j        j        |j        j        u sJ t          |d          }t          j        |j        |j        k              sJ |j        j        |j        j        usJ |j        j        |j        j        usJ t          |d          }t          |j	        d	          sJ d
S )zgTest copying the values of a TimeDelta object by passing it into the
        Time initializer.
        rD   r!   rR   F)copyTr-   r.        @N)
r   r   r9   allrD   _timejd1jd2rE   value)r=   r\   val1val2r1   r2   r8   rI   s           r   test_copy_timedeltaz!TestTimeDelta.test_copy_timedelta   s4    
dd%000$t5111!V'''vbesvo&&&&&x|sy},,,,x|sy},,,,&&&vbesvo&&&&&x|39=0000x|39=0000 5)))CIw///////r   c                 D   | j         | j        fD ]}| }t          j        |j        |j         k              sJ t          |          }t          j        |j        |j        k              sJ t          |          }t          j        |j        |j        k              sJ d S N)r8   r;   r9   rb   rD   abs)r=   r8   rI   dt3dt4s        r   test_neg_abszTestTimeDelta.test_neg_abs   s    7DM* 	+ 	+B#C6#&RUF*+++++b''C6#&BE/*****c((C6#&BE/******	+ 	+r   c                    | j         | j        fD ]L}||z   |z   }d|z  }t          |j        |j                  sJ |dz  }t          |j        |j                  sJ M| j         t	          j        d          z  }|d         j        dk    sJ |d         j        | j         | j         z   j        k    sJ | j         g dz  }t	          j        |j        |j        k              sJ t          j        t                    5  | j         | j
        z   d d d            n# 1 swxY w Y   t          j        t                    5  | j         t                      z   d d d            d S # 1 swxY w Y   d S )Ng      @   r   rO   )r         )r8   r;   rC   rD   r9   r:   rb   rG   rH   r
   r1   	TypeErrorobject)r=   r8   rI   rm   rn   dt5dt6s          r   test_mul_divzTestTimeDelta.test_mul_div   s   7DM* 	. 	.Br'B,C(Csvsv.....)Csvru------g	!$1vyC2wzdg/33333g			!vcf&''''']+,, 	 	Gdf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	 	Gfhh	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   9DDD9EE!$E!c                 d    dt           fd} || j                  sJ  || j                  sJ d S )N
time_deltac                     t          j        | j                  t          j        | j                  z   | j        z  }|                                 j        |                                 j        z   }||k    S rk   )r9   sumrd   re   sizemean)r{   mean_expected	mean_tests      r   is_consistentz.TestTimeDelta.test_mean.<locals>.is_consistent   s_    z~&&
)?)?? M #))-
0A0A0EEI--r   )r   r8   r;   )r=   r   s     r   	test_meanzTestTimeDelta.test_mean   sU    	.i 	. 	. 	. 	. }TW%%%%%}T]+++++++r   c                 n   t          dd          }| j        | j        fD ]}||z   }|j        |j        u sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ ||z   }|j        |j        u sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ ||z
  }|j        |j        u sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ | j        j        }t          |d          sJ t          |d          rJ |j	        }t          |d          sJ t          |d          sJ |j
        }t          |d          sJ t          |d          sJ t          j        t          j        fD ]}	 |	||          }
t          |
d          rJ t          |
d          rJ  |	||          }t          |d          rJ t          |d          rJ  |	||          }t          |d          rJ t          |d          rJ d S )N     @@r-   r.   _delta_tdb_tt_delta_ut1_utc)r   r1   r6   r*   r'   r(   r)   tdbhasattrut1r!   operatoraddsub)r=   r8   r1   tatrtst_tdb	t_tdb_ut1t_tdb_ut1_utcopt1r2   r6   s                r   test_keep_propertiesz"TestTimeDelta.test_keep_properties   s   ve,,,&$'" 	1 	1ARB;!*,,,,<1;....<1;....=AL0000aB;!*,,,,<1;....<1;....=AL0000RB;!*,,,,<1;....<1;....=AL00000
uo.....5"233333I	y/22222y"233333!}o66666}&677777 <. 		5 		5BE2Br?33333r#344444Ir""Br?33333r#344444M2&&Br?33333r#3444444		5 		5r   c                     t          dd          }|j        dk    sJ |j        dk    sJ d|_        |j        dk    sJ |j        dk    sJ d|_        |j        t          d          k    sJ |j        dk    sJ d	S )
z:
        Test basics of setting format attribute.
        ra   r-   r.   rD   rS   datetimers   daysN)r   rf   r/   r   r=   r8   s     r   test_set_formatzTestTimeDelta.test_set_format  s     wu---x7""""yE!!!!	x3yD    	x9!,,,,,,,yJ&&&&&&r   c                     t          dd          }|t          dd          k    sJ |t          ddd          k    sJ t          t          d          d          }||k    sJ d S )Nz1.000000000000001rD   r.   g     ?rs   gV瞯<)r   r   )r=   r8   rI   s      r   test_from_non_floatz!TestTimeDelta.test_from_non_float+  s    *4888Y0>>>>>>>Yq"3DAAAAAAA 344TBBBbyyyyyyr   c                    t          dd          }|                    d          dk    sJ |                    dd          dk    sJ |                    dd          d	k    sJ t          j        t          d
          5  |                    d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                                 d d d            d S # 1 swxY w Y   d S )Nra   r-   r.   rD   rS   strz1.0)subfmtz86400.0z7not one of the known formats.*failed to parse as a unit)matchjulianzmissing required format or unit)r   to_valuerG   rH   
ValueErrorru   r   s     r   test_to_valuezTestTimeDelta.test_to_value2  s   wu---{{4  C''''{{4''50000{{5{//9<<<<]K
 
 
 	" 	" KK!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ]9,MNNN 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   B##B'*B'	C++C/2C/N)__name__
__module____qualname____doc__r>   rJ   rL   rY   r[   rG   markparametrizeri   ro   ry   r   r   r   r   r    r   r   r   r   -   s       K K K  *% % %&+  +  + Z     8 [)YK)+EF 0 0 0.+ + +  "	, 	, 	,*5 *5 *5X' ' '       r   r   c            
       z   e Zd ZdZd Zd Zej                            d e	 e
j        ee                              d             Zd Zd Zej                            d e	 e
j        eej        ej        f                              d	             Zej                            d
e          d             ZdS )TestTimeDeltaScaleszfTest scale conversion for Time Delta.
    Go through @taldcroft's list of expected behavior from #1932c                 z     g d _          fdt          D              _         fdt          D              _        d S )N)z2012-06-30 12:00:00z2012-06-30 23:59:59z2012-07-01 00:00:00z2012-07-01 12:00:00c                 @    i | ]}|t          j        |d           S )r$   )r#   r'   )r   	iso_times.0r#   r=   s     r   
<dictcomp>z4TestTimeDeltaScales.setup_method.<locals>.<dictcomp>M  s<     
 
 
 4eqAAA
 
 
r   c                 T    i | ]$}|j         |         j         |         d          z
  %S )r   r1   r   s     r   r   z4TestTimeDeltaScales.setup_method.<locals>.<dictcomp>Q  s1    TTTu5$&-$&-*::TTTr   )r   r	   r1   r8   r<   s   `r   r>   z TestTimeDeltaScales.setup_methodE  sb    
 
 

 
 
 
$
 
 
 UTTTTTTr   c                     t          t                    d gz   D ]}t          g dd|           t          j        t
                    5  t          g ddd           d d d            d S # 1 swxY w Y   d S )N)rO   rS         $@r-   rR   r!   )listr   r   rG   rH   r   )r=   r#   s     r   test_delta_scales_definitionz0TestTimeDeltaScales.test_delta_scales_definitionS  s    +,,v5 	C 	CE&&&uEBBBBB]?++ 	C 	C&&&uEBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   	A++A/2A/)scale1scale2c                    | j         |         }| j         |         }||z
  }|t          v r|j        |k    sJ n|dk    sJ |j        dk    sJ ||z   }|j        |k    sJ t          ||          }t	          |j        |j                  sJ ||z
  }|j        |k    sJ t          ||          }	t	          |	j        |j                  sJ dS )aX  T(X) - T2(Y)  -- does T(X) - T2(Y).X and return dT(X)
        and T(X) +/- dT(Y)  -- does (in essence) (T(X).Y +/- dT(Y)).X

        I.e., time differences of two times should have the scale of the
        first time.  The one exception is UTC, which returns TAI.

        There are no standard timescales for which this does not work.
        r!   rQ   N)r1   r   r#   getattrrC   rD   )
r=   r   r   r   r2   r8   t1_recover_t2_scale
t1_recovert2_recover_t1_scale
t2_recovers
             r   (test_standard_scales_for_time_minus_timez<TestTimeDeltaScales.test_standard_scales_for_time_minus_timeZ  s     VF^VF^"W&&&8v%%%%%U????8u$$$$ !2g"(F22220&99
:="%00000 2g"(F22220&99
:="%0000000r   c                    | j         d         }t          dd          }||z
  }|j        dk    sJ ||z   }|j        dk    sJ t          |j        |j                  sJ t          dgdd          }||z
  }|j        |j        k    sJ dt          j        z  }||z
  j        ||z
  j        k    sJ | j         d         }t          D ]}| j         |         }t          j        t                    5  ||z
   ddd           n# 1 swxY w Y   t          j        t                    5  ||z
   ddd           n# 1 swxY w Y   t          j        t                    5  ||z
   ddd           n# 1 swxY w Y   t          j        t                    5  ||z    ddd           n# 1 swxY w Y   t          j        t                    5  ||z    ddd           n# 1 swxY w Y    dS )	a  T1(local) - T2(local) should return dT(local)
        T1(local) +/- dT(local) or T1(local) +/- Quantity(time-like) should
        also return T(local)

        I.e. Tests that time differences of two local scale times should
        return delta time with local timescale. Furthermore, checks that
        arithmetic of T(local) with dT(None) or time-like quantity does work.

        Also tests that subtracting two Time objects, one having local time
        scale and other having standard time scale should raise TypeError.
        r+   r    r"   r   r-   NrR   
   )r1   r   r#   rC   rD   r   r3   srf   r   rG   rH   ru   )	r=   r   r2   r8   r   rI   r6   qr#   s	            r   %test_local_scales_for_time_minus_timez9TestTimeDeltaScales.test_local_scales_for_time_minus_timez  s+    VG_,g..."Wx7"""" "W
7****:="%00000uD999#Xx28####HQ~"s(!11111 VG_) 	 	EBy))  R              y))  R              y))  R              y))  R              y))  R              	 	sZ   -C??D	D	#D55D9	<D9	E++E/	2E/	F!!F%	(F%	GG	G	c                    | j         d         }| j         d         }||z
  }|j        dk    sJ t          |j        d          sJ | j         d         }||z
  }|j        dk    sJ t          |j        d          rJ | j        d         j        }||d         z
  }||z
  }|j        dk    sJ t          |j        d          sJ ||z
  }	|	j        dk    sJ t          |	j        d          sJ dD ]C}
t          j        t                    5  || j         |
         z
   ddd           n# 1 swxY w Y   D| j         d         }| j         d	         }||z
  }|j        dk    sJ t          |j        d          rJ | j        d         j	        }||d         z
  }||z
  }|j        dk    sJ t          |j        d          sJ d
D ]C}
t          j        t                    5  || j         |
         z
   ddd           n# 1 swxY w Y   D| j         d         }||d         z
  }|j        dk    sJ |d         j        dk    sJ dD ]C}
t          j        t                    5  || j         |
         z
   ddd           n# 1 swxY w Y   D| j         d         }||d         z
  }|j        dk    sJ |d         j        dk    sJ dD ]C}
t          j        t                    5  || j         |
         z
   ddd           n# 1 swxY w Y   DdS )zdT(X) +/- dT2(Y) -- Add/subtract JDs for dT(X) and dT(Y).X

        I.e. this will succeed if dT(Y) can be converted to scale X.
        Returns delta time in scale X
        rQ   ttrO   tcgr   )r   tcbr   Nr   r   )r!   rQ   r   r   r   r   rr   )r!   rQ   r   r   r   r   r+   )r!   rQ   r   r   r   r   r   )
r8   r#   rE   r-   r1   r   rG   rH   ru   r   )r=   dt_taidt_ttdt0dt_tcgdt1	t_tai_tcg
dt_tai_tcgrI   rm   r#   dt_tcbdt_tdbrn   	t_tcb_tdb
dt_tcb_tdbrw   dt_ut1dt_localrx   s                       r   !test_scales_for_delta_minus_deltaz5TestTimeDeltaScales.test_scales_for_delta_minus_delta  s]    unyE!!!!CGS)))))voyE!!!!-----F5M%	1-
z!yE!!!!CGS)))))6!yE!!!!CGS)))))( 	( 	(Ey)) ( (''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( voyE!!!!-----F5M%	1-
z!yE!!!!CGS)))))5 	( 	(Ey)) ( (''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( vbz!yE!!!!2w{c!!!!< 	( 	(Ey)) ( (''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 77#"%yG####2w{c!!!!C 	* 	*Ey)) * *475>))* * * * * * * * * * * * * * *	* 	*sH   D##D'	*D'	G22G6	9G6	I00I4	7I4	K..K2	5K2	)r#   r   c                    t          g dd          }|j        J |                    d          }| j        |         } |||          }|j        |j        k    sJ t	          |j         ||j        |j                            sJ  |||          }|j        |j        k    sJ t	          |j         ||j        |j                            sJ  |||          }|j        |j        k    sJ t	          |j        |j                  sJ | j        |         }	 ||	|          }
|
j        |	j        k    sJ t	          |
j         ||	j        |j                            sJ |t          j        u r: |||	          }|j        |	j        k    sJ t	          |j        |
j                  sJ  ||	|          }|j        |	j        k    sJ t	          |j        |
j                  sJ dS )aI  T(X) +/- dT(None) or T(X) +/- Quantity(time-like)

        This is always allowed and just adds JDs, i.e., the scale of
        the TimeDelta or time-like Quantity will be taken to be X.
        The one exception is again for X=UTC, where TAI is assumed instead,
        so that a day is always defined as 86400 seconds.
        )rO   rS   g      r   r-   r.   Nr   )	r   r#   tor8   rC   rD   r1   r   r   )r=   r#   r   dt_noneq_timer8   r   rI   rm   r1   r   r2   r6   s                r   #test_scales_for_delta_scale_is_nonez7TestTimeDeltaScales.test_scales_for_delta_scale_is_none  s    444UCCC}$$$CWU^bWooyBH$$$$3622beWZ#8#899999b"ooyBH$$$$3622gj"%#8#899999bnnyBH$$$$3636*****F5MR7^^x17""""25""QT7:"6"677777GQB8qw&&&&rube,,,,,R6]]x17""""25"%(((((((r   r#   c                 t   | j         |         }t          dd          }|                    d          }|d         |d         z
  }t          |j        |j                  |dk    z  sJ |d         |z   }t          |j        |d         j                  |dk    z  sJ ||d         z   }t          |j        |d         j                  |dk    z  sJ |d         |z
  }t          |j        |d         j                  |dk    z  sJ |d         |z
  }	t          |	j        |d         j                  |dk    z  sJ dS )	zTimeDelta or Quantity holding 1 day always means 24*60*60 seconds

        This holds true for all timescales but UTC, for which leap-second
        days are longer or shorter by one second.
        rS   rD   r.   dayrr   r   r!   N)r1   r   r   rC   rD   )
r=   r#   r1   dt_dayq_daydt_day_leapr   r2   r6   r7   s
             r   test_delta_day_is_86400_secondsz3TestTimeDeltaScales.test_delta_day_is_86400_seconds  s<    F5M3t,,,		%  eadl;>6955%HHHHqTF]25!B%(++u~>>>>QqT\25!B%(++u~>>>>rUV^25!A$'**eun====rUU]25!A$'**eun======r   N)r   r   r   r   r>   r   rG   r   r   r   	itertoolsproductr   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   A  sA       D DU U UC C C [Y35IJJKK 1 1	 18* * *XF* F* F*P [Y{X\8<,HIIJJ !) !)	 !)F [Wk22> > 32> > >r   r   c                  ,   t          g dt          j        z  d          } d| d<   t          | j        g d          sJ d| dd <   t          | j        g d	          sJ d
t          j        z  | d d <   t          | j        g d          sJ t          dd          | d<   t          | j        g d          sJ t          j        t                    5 }dt          j	        z  | d<   d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nrs   rt   rq   rD   r.         ?r   r   rt   rq         @rs   r   r   r   Q )rs   rs   rs   rt   )rs   rt   rs   .cannot convert value to a compatible TimeDelta)r   r3   drC   rf   r   rG   rH   r   r5   r   r1   errs     r   test_timedelta_setitemr   .  s]   )))ac/$///AAaDqw,,,,,AabbEqw0000013;AaaaDqw			*****Qt$$$AaDqw			*****	z	"	" c13w!              ;s39~~MMMMMMs   C11C58C5c                     t          g dd          } d| d<   t          | j        g d          sJ d| dd <   t          | j        g d	          sJ dt          j        z  | d d <   t          | j        g d
          sJ t          dd          | d<   t          | j        g d          sJ t          j        t                    5 }dt          j        z  | d<   d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr   r-   r.   r   r   r   r   rs   r   )r   r   r   rt   rD   )r   i  r   r   )
r   rC   rf   r3   r   rG   rH   r   r5   r   r   s     r   test_timedelta_setitem_secr   B  s]   )))E***AAaDqw,,,,,AabbEqw00000qu9AaaaDqw 5 5 566666Qt$$$AaDqw 9 9 9:::::	z	"	" c13w!              ;s39~~MMMMMMs   C$$C(+C(c                  *   t          ddgt          j        z  d          } t          j        j        | d<   t          j        | j        ddgk              sJ t          | d         j	        d          sJ | j	        d         t          j        j        u sJ d S )Nrs   rt   rD   r.   FTr   )
r   r3   r   r9   mamaskedrb   maskrC   rf   r   s    r   test_timedelta_maskr   V  s    1a&13,t,,,A5<AaD6!&UDM)*****qtz1%%%%%71:%%%%%%r   c                      t          dd          } t          | d          }|j        dk    sJ t          dd          }|j        | k    sJ d S )Nrs   )r   secondsr   r.   r@   r-   )r   r   r-   r   tdtd1td2s      r   test_python_timedelta_scalarr  ^  sd    	1	%	%	%B
Bz
*
*
*C7g
GE
*
*
*C<2r   c                  ^   t          d          t          d          gt          d          t          d          gg} t          | d          }t          j        |j        ddgddggk              sJ t          ddgddggd          }t          j        |j        | k              sJ d S )	Nrs   r   rt   rq      r   r.   rD   )r   r   r9   rb   rD   r   r   s      r   test_python_timedelta_vectorr  h  s    				I1---.				I1---.
B
 Bz
*
*
*C6#&aVaV,,-----
aVaV$T
2
2
2C6#,"$%%%%%%%r   c                  ~   t          dd          } |                                 t          d          k    sJ t          ddgddggd          }t          d          t          d          gt          d          t          d          gg} t          j        |                                | k              sJ d S )Nrs   rD   r.   r   rt   rq   r  )r   to_datetimer   r9   rb   )r   r  s     r   test_timedelta_to_datetimer  v  s    	1T	"	"	"B>>ya0000000
aVaV$T
2
2
2C				I1---.				I1---.
B
 6#//##r)*******r   c                      t          ddgd          } |                     dt          ddgd                    }t          j        |t          g dd          k              sJ d S )Nrs   rt   r-   r.   r      )rs   r   r
  rt   )r   insertr9   rb   )tmtm2s     r   test_insert_timedeltar    sp    	Aq6%	(	(	(B ))Ay"b%888
9
9C6#>>>%@@@@AAAAAAAr   c                  b   t          j        t                    5  t          d          } |                     t
          j                  dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          dg di          }t          |d                   } t          j	        |                     t
          j                  g dk              sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j
        g d                    } t          j	        |                     t
          j                  g dk              sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          d          dz   }|j        d d         dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          g dd          d	k    }t          j	        |g d
k              sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          dt
          j        z            d	k    du sJ 	 d d d            n# 1 swxY w Y   t          dt
          j        z                                t
          j                  dk    sJ t          dd                              t
          j                  dk    sJ t          dd                              t
          j                  dk    sJ t          dg dt
          j        z  i          }t          j	        t          |d                                       t
          j                  g dk              sJ d S )Nrs   r1   r   z
2012-01-01r   z
2012-01-02rD   r.   rt   )FTT   Fr-   )rG   warnsr   r   r   r3   r   r   r9   rb   arrayr   isotr   )deltatabler1   comps       r   test_no_units_warningr    s   	1	2	2 * *!~~ae$$)))))* * * * * * * * * * * * * * * 
1	2	2 : :sIII&''%*%%vennQU++yyy8999999: : : : : : : : : : : : : : :
 
1	2	2 : :"(999--..vennQU++yyy8999999: : : : : : : : : : : : : : : 
1	2	2 + +"vcrc{l*****+ + + + + + + + + + + + + + + 
1	2	2 3 34000A5vd11112222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
1	2	2 1 1!ac'""Q&5000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 QW&&qs++q0000 Qu%%%..qs33q8888Qt$$$--ae449999 3			AC())E6)E#J''0055BCCCCCCCsm   5AA #A  A"C//C36C3AE==FF!(GGG:4H;;H?H?%JJJ).	functoolsr   r   r   r   decimalr   numpyr9   rG   astropyr   r3   astropy.tabler   astropy.timer   r   r	   r
   r   r   r   r   astropy.utilsr   partialallcloserC   allclose_jd2rE   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   r   <module>r"     sz                                        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	      i(CCC y KhX   !y Kh%9   Y, $ $ $
1 1 1
Q Q Q Q Q Q Q Qhj> j> j> j> j> j> j> j>ZN N N(N N N(& & &  & & &+ + +B B B#D #D #D #D #Dr   