
    IR-e@|                     @   d dl Z 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 d dlmZ d dlmZ ej                            e d          Zd Z G d	 d
          Zej                            dd           G d de                      Zej                            dd           G d de                      Zej                            dd           G d de                      Zej                            dd           G d d                      Zd ZdS )    N)Time)day_frac)ARRAY_FUNCTION_ENABLED)iersz Needs __array_function__ support)reasonc                 ^    | j         |j         k    sJ t          j        | |k              sJ dS )z%Checks equality of shape and content.N)shapenpall)t1t2s     ?lib/python3.11/site-packages/astropy/time/tests/test_methods.pyassert_time_all_equalr      s7    8rx6"(    c                       e Zd Zd Zd ZdS )
ShapeSetupc                    t          j        dd          }t          j        ddd          }t           j                            |          }t           j        j        |d<   t          |d d t           j        f         |z   dd	          t          |d d t           j        f         |z   dd	          d
| _        t          |d d t           j        f         |z   ddd          t          |d d t           j        f         |z   ddd          d
| _        t          |d d t           j        f         |z   ddt          j        t          |                    t          j        t          |                    f          t          |d d t           j        f         |z   ddt          j        t          |                    t          j        t          |                    f          d
| _
        d S )NP  iZ  g        g+?g?   mjdutcformatscale
not_maskedmasked)45d50dr   r   location)r
   arangemaarrayr   r   newaxist0r   lenr   clsr   fracfrac_maskeds       r   setup_classzShapeSetup.setup_class   s   iu%%yeS))ekk$''A s111bj=1D8eTTT3qqq"*}-;EQVWWW
 

 AAArzM"T)'	   AAArzM"[0'	  
 
 AAArzM"T))CII..	#d))0D0DE	   AAArzM"[0)C$4$455ry[AQAQ7R7RS	  
 
r   c                     | j         j        |         | _        | j         j        |         | _        | j         j        |         | _        d S N)	__class__r&   r   r   selfuse_masks     r   create_datazShapeSetup.create_dataC   s9    .#H-.#H-.#H-r   N)__name__
__module____qualname__r,   r3    r   r   r   r      s3        %
 %
 %
N. . . . .r   r   r2   )r   r   c                   N    e 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S )TestManipulationzEManipulation of Time objects, ensuring attributes are done correctly.c                 R   |                      |           | j                                        }|j        | j        j        fk    sJ t          j        |j        | j        j                                        k              sJ t          j        |j        | j        j                  sJ |j	        J | j
                                        }|j        | j
        j        fk    sJ t          j        |j        | j
        j                                        k              sJ t          j        |j        | j
        j                  sJ |j	        | j
        j	        u sJ | j                                        }|j        | j        j        fk    sJ t          j        |j        | j        j                                        k              sJ t          j        |j        | j        j                  sJ |j	        j        |j        k    sJ t          j        |j	        | j        j	                  rJ d S r.   )r3   r&   ravelr	   sizer
   r   jd1may_share_memoryr!   r   r   )r1   r2   t0_ravelt1_ravelt2_ravels        r   
test_ravelzTestManipulation.test_ravelM   s   """7==??~$',0000vhldgk&7&7&9&99:::::"8<===== (((7==??~$',0000vhldgk&7&7&9&99:::::"8<===== DG$444447==??~$',0000vhldgk&7&7&9&99:::::"8<===== &(.8888&x'8$':JKKKKKKKr   c                    |                      |           | j                                        }|j        | j        j        fk    sJ |j        J t          j        |j        | j        j                  rJ | j	                                        }|j        | j	        j        fk    sJ t          j        |j        | j	        j                  rJ |j        | j	        j        usJ |j        | j	        j        k    sJ | j
                                        }|j        | j
        j        fk    sJ t          j        |j        | j
        j                  rJ |j        j        |j        k    sJ t          j        |j        | j
        j                  rJ d S r.   )r3   r&   flattenr	   r<   r!   r
   r>   r=   r   r   )r1   r2   
t0_flatten
t1_flatten
t2_flattens        r   test_flattenzTestManipulation.test_flattenb   sv   """W__&&
DGL?2222"***&z~tw{CCCCCW__&&
DGL?2222&z~tw{CCCCC"$'*:::::"dg&66666W__&&
DGL?2222&z~tw{CCCCC"(J,<<<<<&z':DG<LMMMMMMMr   c                 n   |                      |           | j                                        }|j        dk    sJ t	          j        |j        | j        j                                        k              sJ t	          j        |j        | j        j                  sJ |j        J | j	                                        }|j        dk    sJ t	          j        |j        | j	        j                                        k              sJ t	          j        |j        | j	        j                  sJ |j        | j	        j        u sJ | j
                                        }|j        dk    sJ t	          j        |j        | j
        j                                        k              sJ t	          j        |j        | j
        j                  sJ |j        j        |j        k    sJ t	          j        |j        | j
        j                  sJ | j
        j        }|j        dk    sJ t	          j        |j        | j
        j        j        k              sJ t	          j        |j        | j
        j                  sJ |j        j        |j        j        k    sJ t	          j        |j        | j
        j                  sJ d S )N   
   )r3   r&   	transposer	   r
   r   r=   r>   r!   r   r   T)r1   r2   t0_transposet1_transposet2_transposet2_Ts         r   test_transposezTestManipulation.test_transposeu   sw   """w((**!W,,,,vl&$'+*?*?*A*AABBBBB"<#3TW[AAAAA$,,,w((**!W,,,,vl&$'+*?*?*A*AABBBBB"<#3TW[AAAAA$(88888w((**!W,,,,vl&$'+*?*?*A*AABBBBB"<#3TW[AAAAA$*l.@@@@@"<#8$':JKKKKKwyzW$$$$vdh$'+-/00000"48TW[99999}"dm&99999"4=$'2BCCCCCCCr   c                    |                      |           | j                                        }|j        dk    sJ t	          j        |j        | j        j                                        k              sJ |j        J t	          j        |j        | j        j                  sJ | j	                                        }|j        dk    sJ t	          j        |j        | j	        j                                        k              sJ |j        | j	        j        u sJ t	          j        |j        | j	        j                  sJ | j
                                        }|j        dk    sJ t	          j        |j        | j
        j                                        k              sJ |j        j        |j        k    sJ t	          j        |j        | j
        j                  sJ t	          j        |j        | j
        j                  sJ d S )N)rK   )r3   r&   diagonalr	   r
   r   r=   r!   r>   r   r   )r1   r2   t0_diagonalt1_diagonalt2_diagonals        r   test_diagonalzTestManipulation.test_diagonal   s   """g&&(( D((((vko)=)=)?)??@@@@@#+++";?DGK@@@@@g&&(( D((((vko)=)=)?)??@@@@@#tw'77777";?DGK@@@@@g&&(( D((((vko)=)=)?)??@@@@@#)[->>>>>";?DGK@@@@@";#79IJJJJJJJr   c                 (   |                      |           | j                            dd          }|j        dk    sJ t	          j        |j        | j        j                            dd          k              sJ t	          j        |j        | j        j                  sJ |j        J | j	                            dd          }|j        dk    sJ t	          j        |j        | j	        j                            dd          k              sJ t	          j        |j        | j	        j                  sJ |j        | j	        j        u sJ | j
                            dd          }|j        dk    sJ t	          j        |j        | j
        j                            dd          k              sJ t	          j        |j        | j
        j                  sJ |j        j        |j        k    sJ t	          j        |j        | j
        j                  sJ d S )Nr   r   rJ   )r3   r&   swapaxesr	   r
   r   r=   r>   r!   r   r   )r1   r2   t0_swapaxest1_swapaxest2_swapaxess        r   test_swapaxeszTestManipulation.test_swapaxes   s   """g&&q!,, G++++vko)=)=a)C)CCDDDDD";?DGK@@@@@#+++g&&q!,, G++++vko)=)=a)C)CCDDDDD";?DGK@@@@@#tw'77777g&&q!,, G++++vko)=)=a)C)CCDDDDD";?DGK@@@@@#)[->>>>>";#79IJJJJJJJr   c                    |                      |           | j                            ddd          }|j        dk    sJ t	          j        |j        | j        j        j                            ddd          k              sJ t	          j        |j        | j        j        j                            ddd          k              sJ t	          j	        |j        | j        j                  sJ t	          j	        |j        | j        j                  sJ |j
        J | j                            ddd          }|j        dk    sJ t	          j        |j        | j        j                            ddd          k              sJ t	          j	        |j        | j        j                  sJ |j
        | j        j
        u sJ | j                            ddd          }|j        dk    sJ t	          j        |j        | j        j                            ddd          k              sJ t	          j	        |j        | j        j                  sJ |j
        j        |j        k    sJ t	          j	        |j
        | j        j
                  sJ | j                            ddd          }|j        dk    sJ t	          j        |j        | j        j                            ddd          k              sJ t	          j	        |j        | j        j                  sJ |j
        j        |j        k    sJ t	          j	        |j
        | j        j
                  rJ | j                            dd          j        }|j        dk    sJ t	          j	        |j        | j        j                  sJ |j
        j        |j        k    sJ t	          j	        |j
        | j        j
                  sJ |                    dd          }|j        dk    sJ t	          j	        |j        | j        j                  rJ |j
        j        |j        k    sJ t	          j	        |j
        |j
                  rJ d S )	NrK      rK   ra   rK   ra   rK   rK   )rK   rK   ra   rL   rJ   rL   rK   )r3   r&   reshaper	   r
   r   r=   _timejd2r>   r!   r   r   rN   )r1   r2   
t0_reshape
t1_reshape
t2_reshapet2_reshape2t2_reshape_tt2_reshape_t_reshapes           r   test_reshapezTestManipulation.test_reshape   s!   """W__Q1--
9,,,,vjn(9(A(A!Q(J(JJKKKKKvjn(9(A(A!Q(J(JJKKKKK":>47;?????":>47;?????"***W__Q1--
9,,,,vjn(;(;Aq!(D(DDEEEEE":>47;?????"dg&66666W__Q1--
9,,,,vjn(;(;Aq!(D(DDEEEEE":>47;?????"(J,<<<<<":#68HIIIIIgooaA.. I----vko)<)<Q1)E)EEFFFFF";?DGK@@@@@#)[->>>>>&{';TW=MNNNNNwr1--/!W,,,,"<#3TW[AAAAA$*l.@@@@@"<#8$':JKKKKK+33B::#)W4444&';'?MMMMM#,26J6PPPPP& )<+@
 
 	
 	
 	
 	
 	
r   c           	         |                      |           | j                            ddddd                                          }|j        dk    sJ t          j        |j        | j        j                            ddd          k              sJ t          j        |j        | j        j                  sJ |j	        J | j
                            ddddd                                          }|j        dk    sJ t          j        |j        | j
        j                            ddd          k              sJ t          j        |j        | j
        j                  sJ |j	        | j
        j	        u sJ | j                            ddddddd                                          }|j        dk    sJ t          j        |j        | j        j                            ddd          k              sJ t          j        |j        | j        j                  sJ |j	        j        |j        k    sJ t          j        |j	        | j        j	                  sJ d S )NrK   r   ra   rb   )r3   r&   re   squeezer	   r
   r   r=   r>   r!   r   r   )r1   r2   
t0_squeeze
t1_squeeze
t2_squeezes        r   test_squeezezTestManipulation.test_squeeze   s*   """W__Q1a33;;==
9,,,,vjn(;(;Aq!(D(DDEEEEE":>47;?????"***W__Q1a33;;==
9,,,,vjn(;(;Aq!(D(DDEEEEE":>47;?????"dg&66666W__Q1aAq99AACC
9,,,,vjn(;(;Aq!(D(DDEEEEE":>47;?????"(J,<<<<<":#68HIIIIIIIr   c                 L   |                      |           | j        d d t          j        d d f         }|j        dk    sJ t          j        |j        | j        j        d d t          j        d d f         k              sJ t          j        |j        | j        j                  sJ |j        J | j	        d d d d t          j        f         }|j        dk    sJ t          j        |j        | j	        j        d d d d t          j        f         k              sJ t          j        |j        | j	        j                  sJ |j        | j	        j        u sJ | j
        d d d d t          j        f         }|j        dk    sJ t          j        |j        | j
        j        d d d d t          j        f         k              sJ t          j        |j        | j
        j                  sJ |j        j        |j        k    sJ t          j        |j        | j
        j                  sJ d S )N)rL   r   rK   )rL   rK   r   )r3   r&   r
   r%   r	   r   r=   r>   r!   r   r   )r1   r2   	t0_adddim	t1_adddim	t2_adddims        r   test_add_dimensionz#TestManipulation.test_add_dimension   s   """GAAArz111,-	*,,,,vimtw{111bj!!!3C'DDEEEEE"9=$'+>>>>>!)))GAAAqqq"*,-	*,,,,vimtw{111aaa3C'DDEEEEE"9=$'+>>>>>!TW%55555GAAAqqq"*,-	*,,,,vimtw{111aaa3C'DDEEEEE"9=$'+>>>>>!'9?::::"9#5tw7GHHHHHHHr   c                    |                      |           | j                            d          }|j        dk    sJ t	          j        |j        | j        j        j                            d          k              sJ |j        J | j	                            dd          }|j        dk    sJ t	          j        |j        | j	        j                            dd          k              sJ |j        | j	        j        u sJ | j
                            dd          }|j        d	k    sJ t	          j        |j        | j
        j                            dd          k              sJ |j        j        |j        k    sJ | j
                            d
          }|j        dk    sJ t	          j        |j        | j
        j                            d
          k              sJ |j        j        |j        k    sJ d S )N)rK   ra   )ra   )ra      r   axis)rL   ra   )r         r   )r~   rK   )rK      )r3   r&   taker	   r
   r   r=   rf   r!   r   r   )r1   r2   t0_taket1_taket2_taket2_take2s         r   	test_takezTestManipulation.test_take  s   """',,v&&}$$$$vgkTW]%6%;%;F%C%CCDDDDD'''',,vA,..}''''vgkTW[%5%5f1%5%E%EEFFFFF47#33333',,yq,11}&&&&vgkTW[%5%5ia%5%H%HHIIIII%66667<<((~%%%%vhldgk&6&6w&?&??@@@@@ &(.888888r   c                    |                      |           | j                            t          j        d          }|j        dk    sJ t          j        |j        | j        j        k              sJ t          j        |j        | j        j                  sJ |j	        J | j
                            t          j        d          }|j        dk    sJ t          j        |j        | j
        j        k              sJ t          j        |j        | j
        j                  sJ |j	        | j
        j	        u sJ | j                            t          j        d          }|j        dk    sJ t          j        |j        | j        j        k              sJ t          j        |j        | j        j                  sJ |j	        j        |j        k    sJ t          j        |j	        | j        j	                  sJ dS )zTest using a callable method.r~   rL   rK   r	   N)r3   r&   _applyr
   broadcast_tor	   r   r=   r>   r!   r   r   r1   r2   t0_broadcastt1_broadcastt2_broadcasts        r   test_broadcast_via_applyz)TestManipulation.test_broadcast_via_apply  s   """w~~boZ~HH!Z////vl&$'+566666"<#3TW[AAAAA$,,,w~~boZ~HH!Z////vl&$'+566666"<#3TW[AAAAA$(88888w~~boZ~HH!Z////vl&$'+566666"<#3TW[AAAAA$*l.@@@@@"<#8$':JKKKKKKKr   N)r4   r5   r6   __doc__rB   rH   rS   rY   r_   rn   rt   ry   r   r   r7   r   r   r9   r9   I   s        OOL L L*N N N&D D D6K K K(K K K()
 )
 )
VJ J J(I I I(9 9 9(L L L L Lr   r9   c                       e Zd Zd ZdS )TestSetShapec                 z   |                      |           | j                                        }|j        }d|_        |j        dk    sJ |j        |j        j        k    sJ t          j        |j        | j        j        j        	                    ddd          k              sJ t          j        |j
        | j        j        j
        	                    ddd          k              sJ |j        J |j        }t          j        t                    5  d|_        d d d            n# 1 swxY w Y   t          j        t                     5  d|_        d d d            n# 1 swxY w Y   |j        |j        j        k    sJ |j        j        |j        j        k    sJ |j
        j        |j        j        k    sJ | j                                        }d|_        |j        dk    sJ t          j        |j        | j        j        	                    ddd          k              sJ |j        j        dk    sJ d| j        _        | j        j        dk    sJ | j        j        j        dk    sJ | j        j
        j        dk    sJ | j        j        j        dk    sJ | j        j        j        dk    sJ | j        j        }t          j        t                     5  d	| j        _        d d d            n# 1 swxY w Y   | j        j        j        |k    sJ | j        j
        j        |k    sJ | j        j        j        |k    sJ d S )
Nrb   rK   ra   )   rd   rc   r7   )r   r      )2   )r3   r&   copyr   r	   r
   r   r=   rf   re   rg   r!   rN   pytestraises
ValueErrorAttributeErrorr   r   strides)r1   r2   rh   r   t0_reshape_tri   oldshapes          r   test_shape_settingzTestSetShape.test_shape_setting7  s    	"""W\\^^
n$
9,,,,yJN00000vjn(9(A(A!Q(J(JJKKKKKvjn(9(A(A!Q(J(JJKKKKK"***!|]:&& 	' 	'!&L	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']>** 	) 	)!(L	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) !Z\%77777%);;;;;%);;;;;W\\^^
$
9,,,,vjn(;(;Aq!(D(DDEEEEE"(B.... "w}	))))w{ I----w{ I----w%2222w':5555 7=]>** 	" 	"!DGM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" w{ H,,,,w{ H,,,,w%111111s6   D$$D(+D(EE #E K++K/2K/N)r4   r5   r6   r   r7   r   r   r   r   5  s#        /2 /2 /2 /2 /2r   r   c                       e Zd Zed             Zed             Zed             Zed             Zd Zd Z	ed             Z
ed             Zed	             Zed
             ZdS )TestShapeFunctionsc                    |                      |           t          j        | j        d          }|j        dk    sJ t          j        |j        | j        j        k              sJ t          j        |j        | j        j                  sJ |j        J t          j        | j	        d          }|j        dk    sJ t          j        |j        | j	        j        k              sJ t          j        |j        | j	        j                  sJ |j        | j	        j        u sJ t          j        | j
        d          }|j        dk    sJ t          j        |j        | j
        j        k              sJ t          j        |j        | j
        j                  sJ |j        j        |j        k    sJ t          j        |j        | j
        j                  sJ dS )z!Test as supported numpy function.r   r   N)r3   r
   r   r&   r	   r   r=   r>   r!   r   r   r   s        r   test_broadcastz!TestShapeFunctions.test_broadcastk  s    	"""twjAAA!Z////vl&$'+566666"<#3TW[AAAAA$,,,twjAAA!Z////vl&$'+566666"<#3TW[AAAAA$(88888twjAAA!Z////vl&$'+566666"<#3TW[AAAAA$*l.@@@@@"<#8$':JKKKKKKKr   c                 `   |                      |           | j                                        d         }|j        dk    sJ t	          j        |          }|j        dk    sJ t          |t          j                 |           t	          j        |j	        j
        |j	        j
                  sJ d S Nr   r   )r3   r&   r;   ndimr
   
atleast_1dr   r%   r>   rf   r=   )r1   r2   t00t00_1ds       r   test_atleast_1dz"TestShapeFunctions.test_atleast_1d  s    """gmmooa x1}}}}s##{ac"*ov666"6<#3SY]CCCCCCCr   c                 @   |                      |           | j                                        }|j        dk    sJ t	          j        |          }|j        dk    sJ t          |t          j                 |           t	          j        |j	        |j	                  sJ d S )Nr   ra   )
r3   r&   r;   r   r
   
atleast_2dr   r%   r>   r=   )r1   r2   t0rt0r_2ds       r   test_atleast_2dz"TestShapeFunctions.test_atleast_2d  s    """gmmoox1}}}}s##{ac"*ov666"6:sw7777777r   c                    |                      |           | j        j        dk    sJ t          j        | j        | j                  \  }}|j        |j        cxk    rdk    sn J t          | j        d d d d t          j        f         |           t          | j        d d d d t          j        f         |           t          j        |j	        | j        j	                  sJ d S )Nra   r~   )
r3   r&   r   r
   
atleast_3dr   r   r%   r>   rg   )r1   r2   t0_3dt1_3ds       r   test_atleast_3dz"TestShapeFunctions.test_atleast_3d  s    """w|q    }TWdg66uzUZ,,,,1,,,,,,dgaaaBJ&67???dgaaaBJ&67???"59dgk:::::::r   c                 D   |                      |           t          j        | j        dd          }|j        | j        j        d         | j        j        d         fk    sJ t          | j        j        |           t          j        |j        | j        j                  sJ d S r   )	r3   r
   moveaxisr&   r	   r   rN   r>   r=   r1   r2   t0_10s      r   test_move_axisz!TestShapeFunctions.test_move_axis  s    """DGQ**{tw}Q/q1ABBBBBdgi///"59dgk:::::::r   c                 B   |                      |           t          j        | j        d          }|j        | j        j        d         | j        j        d         fk    sJ t          | j        j        |           t          j        |j        | j        j                  sJ d S )Nr   r   )	r3   r
   rollaxisr&   r	   r   rN   r>   r=   r   s      r   test_roll_axisz!TestShapeFunctions.test_roll_axis  s    """DGQ''{tw}Q/q1ABBBBBdgi///"59dgk:::::::r   c                     |                      |           t          j        | j                  }t	          | j        d d d d df         |           t          j        |j        | j        j                  sJ d S )N)r3   r
   fliplrr&   r   r>   rg   )r1   r2   t0_lrs      r   test_fliplrzTestShapeFunctions.test_fliplr  sq    """	$'""dgaaa2g.666"59dgk:::::::r   c                     |                      |           t          j        | j        d          }t	          | j        j        d d d d df         |           t          j        |j        | j        j                  sJ d S )Nr~   r   )r3   r
   rot90r&   r   rN   r>   rg   )r1   r2   t0_270s      r   
test_rot90zTestShapeFunctions.test_rot90  su    """$'1%%dgi44R40&999"6:tw{;;;;;;;r   c                     |                      |           t          j        | j        dd          }t	          |dd          | j        d d                    t	          |d         | j        d                    d S )Nr   r   r|   r   )r3   r
   rollr&   r   )r1   r2   r   s      r   	test_rollzTestShapeFunctions.test_roll  sp    """gdgqq)))c!""gtwss|444c!fdgbk22222r   c                     |                      |           t          j        | j        ddgd          }t	          |d d         | j        d d                    t	          |dd          | j        dd                     d S )Nra   r~   r   r|   r{   )r3   r
   deleter&   r   )r1   r2   t0ds      r   test_deletezTestShapeFunctions.test_delete  s|    """i!Qa000c"1"gtwrr{333c!""gtwqrr{33333r   N)r4   r5   r6   needs_array_functionr   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   i  s       L L L* 	D 	D 	D 8 8 8 ; ; ;; ; ;; ; ; ; ; ; < < < 3 3 3 4 4 4 4 4r   r   c            	          e Zd ZdZi ddiddiddiddifZdZd Zd	 Zej	        
                    d
 ej        ee                    d             Zej	        
                    d
 ej        ee                    d             Zd Zd Zd Zej	        
                    dej                  d             Zd Zd Zd Zd Zej	        
                    dg d          ej	        
                    dd ej        g d          dej        f         g          ej	        
                    dddg          d                                     Zd Zd Zd  Zd! Z dS )"TestArithmeticz/Arithmetic on Time objects, using both doubles.r}   Nr   r   ra   )minmaxsortc                    t          j        ddd                              ddd          }t          j        g d          }t           j                            |          }t           j        j        |d<   t          ||dd	
          t          ||dd	
          d| _        t          j        g d          }t           j                            |          }t           j        j        |d<   t          ||z   dd	
          t          ||z   dd	
          d| _        ||z   ||z   d| _	        t          ||z   dd	t          j        t          |                    t          j        t          |                    f          t          ||z   dd	t          j        t          |                    t          j        t          |                    f          d| _        d S )Nr   i  rL   ra   rK   r   )g?g♙?gR?g?g?r   r   r   r   )r   ra   r   r{   r~   r    )r
   r"   re   r$   r#   r   r   r&   r   jdr'   r   r(   s       r   r,   zTestArithmetic.setup_class  s   iub))11!Q::xOOOPPekk$''A sDeDDD3EGGG
 
 x((ekk$''A sTz%uEEE3,U%HHH
 
 !$d
cK6GHH d
)CII..	#d))0D0DE	   k!)C$4$455ry[AQAQ7R7RS	  
 
r   c                     | j         j        |         | _        | j         j        |         | _        | j         j        |         | _        | j         j        |         | _        d S r.   )r/   r&   r   r   r   r0   s     r   r3   zTestArithmetic.create_data  sJ    .#H-.#H-.#H-.#H-r   zkw, funcc                    |                      |            t          | j        d|z             di |} t          | j        d|z             di |} t          t          d|z             | j        fi |}| j        j        r|ddik    r|dk    rt          j                            || j        j	        
                    |j                  |                   }t          j                            || j        j	        
                    |j                  |                   }t          j                            || j        j	        
                    |j                  |                   }t	          j        ||k              sJ t	          j        ||k              sJ |j        |j        k    sJ |j        |j        k    sJ dS )a  
        Test that ``np.argfunc(jd, **kw)`` is the same as ``t0.argfunc(**kw)``
        where ``jd`` is a similarly shaped array with the same ordinal properties
        but all integer values.  Also test the same for t1 which has the same
        integral values as jd.
        argr}   Nr   )maskr7   )r3   getattrr&   r   r
   r   r   r#   r$   r   re   r	   r   )r1   kwfuncr2   t0vt1vjdvs          r   test_argfuncszTestArithmetic.test_argfuncs  s    	""",gdgut|,,22r22,gdgut|,,22r22'gb%$,''662667> 	NbVTN22tv~~%++c(<(<SY(G(G(L+MMC%++c(<(<SY(G(G(L+MMC%++c(<(<SY(G(G(L+MMCvcSj!!!!!vcSj!!!!!yCI%%%%yCI%%%%%%r   c                 
   |                      |            t          | j        |          di |} t          t          |          | j        fi |}t          j        |j        |k              sJ |j        |j        k    sJ dS )z
        Test that ``np.func(jd, **kw)`` is the same as ``t1.func(**kw)`` where
        ``jd`` is a similarly shaped array and the same integral values.
        Nr7   )r3   r   r   r
   r   r   valuer	   )r1   r   r   r2   r   r   s         r   
test_funcszTestArithmetic.test_funcs   s     	"""$gdgt$$**r**gb$..2..vci3&'''''yCI%%%%%%r   c                    |                      |           | j                                        dk    sJ t          j        | j                            d          dk              sJ t          j        | j                            d          dk              sJ t          j        | j                            d          dk              sJ d S )Nra   r   r|   r   )r3   r&   argminr
   r   r0   s     r   test_argminzTestArithmetic.test_argmin-  s    """w~~1$$$$vdgnn!n,,122222vdgnn!n,,122222vdgnn!n,,12222222r   c                    |                      |           | j                                        | j        j        dz
  k    sJ |dk    rkt	          j        | j                            d          g dk              sJ t	          j        | j                            d          g dk              sJ nft	          j        | j                            d          dk              sJ t	          j        | j                            d          dk              sJ t	          j        | j                            d          d	k              sJ d S )
Nra   r   r   r|   )r   r   r   r   r   r   )r{   r   r{   r{   r{   r{   r~   )r3   r&   argmaxr<   r
   r   r0   s     r   test_argmaxzTestArithmetic.test_argmax5  s/   """w~~47<!#33333x6$'..a.00OOOCDDDDD6$'..a.00OOOCDDDDDD6$'..a.00A5666666$'..a.00A566666vdgnn!n,,12222222r   c                    |                      |           |dk    rg dng d}t          j        | j                                        t          j        |          k              sJ t          j        | j                            d          t          j        d                              ddd          k              sJ t          j        | j                            d          t          j        d                              dd          k              sJ t          j        | j                            d          t          j        |          k              sJ t          j        d	                              d
d          d d |f                                         }|dk    rl| j                            d           }| j        j	                                        |         }||          }t          j        |d d         |k              sJ d S t          j        | j                            d           |k              sJ d S )Nr   ra   r   r{   r~   r   ra   r   r   r{   r~   r   r|   ra   r   rK   r   r   i)
r3   r
   r   r&   argsortr$   r"   re   r;   r   )r1   r2   orderr;   r   r   s         r   test_argsortzTestArithmetic.test_argsortB  s   """#+x#7#7___vdgoo''28E??:;;;;;vdgoo1o--11E1EaA1N1NNOOOOOvdgoo1o--11E1Ea1K1KKLLLLLvdgoo1o--%@AAAAA	"%%b!,,QQQX6<<>>x'//t/,,C 7<%%''.D4%LE6#dsd)u,-------6$'//t/44=>>>>>>>r   r   c                 2   |                      |           |dk    rt          j                     t          j        d          5 }t          g dd|                                           d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr   T)record)r   ra   r~   r   r   r   )r3   r   xfailwarningscatch_warningsr   r   r'   )r1   r2   r   wlists       r   test_argsort_warningz#TestArithmetic.test_argsort_warningV  s    """E>>LNNN$D111 	@U4u555==???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@5zzQs   'A77A;>A;c                    |                      |           | j                                        | j        d         k    sJ t          j        | j                            d          | j        d         k              sJ t          j        | j                            d          | j        d d df         k              sJ t          j        | j                            d          | j        d d d d df         k              sJ | j                            d          j        dk    sJ | j                            dd          j        dk    sJ | j                            d          j        d	k    sJ | j                            dd          j        d
k    sJ | j                            d          j        d	k    sJ | j                            dd          j        dk    sJ d S )N)r   r   ra   r   r   ra   rK   rK   Tkeepdimsr   rK   rK   )ra   rK   )ra   r   rK   )ra   rK   r   )r3   r&   r   r
   r   r	   r0   s     r   test_minzTestArithmetic.test_min`  s   """w{{}} 00000vdgkk!nn
233333vdgkk!nn1566666vdgkk!nn111a(8899999w{{1~~#v----w{{1t{,,2i????w{{1~~#v----w{{1t{,,2i????w{{1~~#v----w{{1t{,,2i??????r   c                    |                      |           | j                                        | j        d         k    sJ t          j        | j                            d          | j        d         k              sJ t          j        | j                            d          | j        d d df         k              sJ t          j        | j                            d          | j        d d d d df         k              sJ | j                            d          j        dk    sJ | j                            dd	          j        d
k    sJ d S )N)r   r   r   r   r{   ra   r~   r   Tr   r   )r3   r&   r   r
   r   r	   r0   s     r   test_maxzTestArithmetic.test_maxn  s"   """w{{}}
 33333vdgkk!nn
233333vdgkk!nn1566666vdgkk!nn111a(8899999w{{1~~#v----w{{1t{,,2i??????r   c                 2   |                      |           | j                                        | j                                        | j                                        z
  k    sJ t          j        | j                            d          | j                            d          | j                            d          z
  k              sJ | j                            d          j        dk    sJ | j                            dd          j        dk    sJ d S )Nr   r   Tr   r   )r3   r&   ptpr   r   r
   r   r	   r0   s     r   test_ptpzTestArithmetic.test_ptpx  s    """w{{}} =====vdgkk!nnAQ(GGHHHHHw{{1~~#v----w{{1t{,,2i??????r   c                 P   |                      |           |dk    rg dng d}t          j        | j                                        | j        d d d d |f         k              sJ t          j        | j                            d          | j        k              sJ t          j        | j                            d          | j        k              sJ t          j        | j                            d          | j        d d d d |f         k              sJ |dk    rt          j        | j                            d           | j        d d d d |f                                         k              sJ t          j        | j                            d          d d d d df         | j                            d          k              sJ t          j        | j                            d          d d d d df         | j                            d          k              sJ d S d S )	Nr   r   r   r   r   ra   r   r   )r3   r
   r   r&   r   r;   r   r   )r1   r2   r   s      r   	test_sortzTestArithmetic.test_sort  s   """#+x#7#7___vdgllnn111e(<<=====vdgll1oo011111vdgll1oo011111vdgll1ooAAAu)==>>>>>|##6$',,t,,111e0D0J0J0L0LLMMMMM6$',,r**111aaa73tw{{2FGGGGG6$',,r**111aaa84BGHHHHH	 $# IHr   )Nr   r   ra   )r   r   whereT)TFTTF.r   Fc                 h   |                      |           t                    fd} || j                    || j                   d dg}|v rFt	          j        t                    5   | j        j        di  d d d            d S # 1 swxY w Y   d S  || j                   d S )N)r}   r  r   c           
         	| j          z  }t          j        || j                  }                                }||d<   |                              }t          j        |dk              rAt          j        t                    5   | j
        di  d d d            d S # 1 swxY w Y   d S  | j
        di }t          t          t          j                            | j        j                  j        di |t          j                            | j        j                  j        di ||          ddd}|                    | j                   t          j        ||k              sJ d S )	Nr  )r}   r   r   )val1val2divisorr   tair   r7   )r   r
   r   r	   r   sumanyr   r   r   meanr   r   r#   getdatar  r=   rg   
_set_scaler   r   )
timewhere_expectedr   r
  	time_meantime_expectedr}   r   kwargsr  s
         r   is_consistentz/TestArithmetic.test_mean.<locals>.is_consistent  s   "diZ/N_^TZHHNB(BwK$((dX(FFGvgl## :]:.. ( (DI'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( &DI////	 $U]]48<88<BBrBBU]]48<88<BBrBB '  
  ! ! ! ((444vi=89999999s   B##B'*B'ra   r7   )	r3   dictr&   r   r   r   r   r   r  )r1   r2   r}   r  r   r  axes_location_not_constantr  s     ```  @r   	test_meanzTestArithmetic.test_mean  s<    	"""4ux@@@	: 	: 	: 	: 	: 	: 	: 	:6 	dgdg&*AY"---z** ' '&&v&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' M$'"""""s   5BBBc                 h   d}dt           j        z  }t          d|          }t          d|          }t          d|          }t          |||z   g          }|dk    r3t          j        j        |d<   |                                ||z   k    sJ d S |                                ||d	z  z   k    sJ d S )
Nr  r   z2021-07-27T00:00:00)r   z2022-07-27T00:00:00z2023-07-27T00:00:00r   r   ra   )unsr   r
   r#   r   r  )r1   r2   r   epsilonr&   r   r   ts           r   test_mean_precisionz"TestArithmetic.test_mean_precision  s    ad('u555'u555'u555"b7l#$$x5<AaD6688W------ 6688Wq[ 0111111r   c                     |                      |           t          j        t                    5  | j                            t                     d d d            d S # 1 swxY w Y   d S )N)dtype)r3   r   r   r   r&   r  intr0   s     r   test_mean_dtypezTestArithmetic.test_mean_dtype  s    """]:&& 	$ 	$GLLsL###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   !AA!$A!c                     |                      |           t          j        t                    5  | j                            t          t          j        | j        j	                  d                     d d d            d S # 1 swxY w Y   d S )Nr   )r   )out)
r3   r   r   r   r&   r  r   r
   
zeros_liker=   r0   s     r   test_mean_outzTestArithmetic.test_mean_out  s    """]:&& 	L 	LGLLT"-"<"<TJJJLKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   ABB
Bc                 x   |dk    rt          ddg          }|d         |d         |d         z
  dz  z   }t          d          }|                                }||k    sJ ||k    sJ |t          t          |j                                        |j                                        d          d	d
ik    sJ d S d S )Nr   z2012-06-30 23:59:60.000z2012-07-01 00:00:01.000r   r   ra   z2012-07-01 00:00:00)r
  r   r   )r   r  r   r=   r  rg   )r1   r2   r  mean_expectedmean_expected_explicit	mean_tests         r   test_mean_leap_secondz$TestArithmetic.test_mean_leap_second  s     |##/1JKLLAaDAaD1Q4K1#44M%)*?%@%@"I $::::: I----!%))++quyy{{A>>>!GK! !     $# r   )!r4   r5   r6   r   r  	functionsr,   r3   r   markparametrize	itertoolsproductr   r   r   r   r   r   SCALESr   r   r   r  r  r
   r$   r%   r  r  r#  r'  r,  r7   r   r   r   r     s`       9964.61+{VQKHF&I#
 #
 #
J. . . [Z):):69)M)MNN& & ON&. [Z):):69)M)MNN
& 
& ON
&3 3 33 3 3? ? ?( [Wdk22  32@ @ @@ @ @@ @ @I I I [V%<%<%<==[$!A!A!ABB3
?ST  [Z%77(# (# 87  >=
(#T2 2 2"$ $ $
L L L
    r   r   c                     t           j                            dd          5  t          ddd          } | j        }t          j        |          }t          |j                  t          j
        u sJ |                                }t          |j                  t          j
        u sJ |                                }t          |j                  t          j
        u sJ |j        |j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nauto_downloadFg    5@r  r   )r   r   )r   confset_tempr   ut1r   deepcopytypedelta_ut1_utcr
   ndarrayrD   r;   )r  t_ut1
t_ut1_copyt_ut1_flattent_ut1_ravels        r   test_regressionr@    s8    
		OU	3	3 	? 	?e444]5))
J,--;;;;M/00BJ>>>>kkmmK-.."*<<<<'5+>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   CC==DD)r   r0  r   numpyr
   r   astropy.unitsunitsr  astropy.timer   astropy.time.utilsr   .astropy.units.quantity_helper.function_helpersr   astropy.utilsr   r.  r   r   r   r   r/  r9   r   r   r   r@  r7   r   r   <module>rH     sU                          ' ' ' ' ' ' Q Q Q Q Q Q      {(('I )   
  +. +. +. +. +. +. +. +.\ %=>>hL hL hL hL hLz hL hL ?>hLV %=>>02 02 02 02 02: 02 02 ?>02f %=>>i4 i4 i4 i4 i4 i4 i4 ?>i4X %=>>M M M M M M M ?>M`? ? ? ? ?r   