U
    e»{j?|  ã                   @   s  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je dd�Zdd	„ ZG d
d„ dƒZej dd¡G dd„ deƒƒZej dd¡G dd„ deƒƒZej dd¡G dd„ deƒƒZej dd¡G dd„ dƒƒZdd„ ZdS )é    N)ÚTime)Úday_frac)ÚARRAY_FUNCTION_ENABLED)Úiersz Needs __array_function__ support)Úreasonc                 C   s&   | j |j kst‚t | |k¡s"t‚dS )z%Checks equality of shape and content.N)ÚshapeÚAssertionErrorÚnpÚall)Út1Út2© r   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/time/tests/test_methods.pyÚassert_time_all_equal   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
ShapeSetupc              
   C   s:  t  dd¡}t  ddd¡}t j |¡}t jj|d< t|d d …t jf | ddd	�t|d d …t jf | ddd	�d
œ| _t|d d …t jf | dddd�t|d d …t jf | dddd�d
œ| _t|d d …t jf | ddt  t	|ƒ¡t  t	|ƒ¡fd�t|d d …t jf | ddt  t	|ƒ¡t  t	|ƒ¡fd�d
œ| _
d S )NéPÃ  iZÃ  g        g+‡ÙÎ÷ï?gš™™™™™É?é   ÚmjdÚutc©ÚformatÚscale©Ú
not_maskedÚmasked)Z45dZ50d©r   r   Úlocation)r	   ÚarangeÚmaÚarrayr   r   ÚnewaxisÚt0r   Úlenr   ©Úclsr   ÚfracZfrac_maskedr   r   r   Úsetup_class   sB    þüüùüüùzShapeSetup.setup_classc                 C   s.   | j j| | _| j j| | _| j j| | _d S ©N)Ú	__class__r!   r   r   ©ÚselfÚuse_maskr   r   r   Úcreate_dataC   s    zShapeSetup.create_dataN)Ú__name__Ú
__module__Ú__qualname__r&   r,   r   r   r   r   r      s   'r   r+   )r   r   c                   @   s`   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestManipulationzEManipulation of Time objects, ensuring attributes are done correctly.c                 C   sN  |   |¡ | j ¡ }|j| jjfks(t‚t |j| jj ¡ k¡sDt‚t 	|j| jj¡sZt‚|j
d ksht‚| j ¡ }|j| jjfks†t‚t |j| jj ¡ k¡s¢t‚t 	|j| jj¡s¸t‚|j
| jj
ksÊt‚| j ¡ }|j| jjfksèt‚t |j| jj ¡ k¡�st‚t 	|j| jj¡�st‚|j
j|jk�s2t‚t 	|j
| jj
¡�rJt‚d S r'   )r,   r!   Úravelr   Úsizer   r	   r
   Újd1Úmay_share_memoryr   r   r   )r*   r+   Zt0_ravelZt1_ravelZt2_ravelr   r   r   Ú
test_ravelM   s"    



zTestManipulation.test_ravelc                 C   s  |   |¡ | j ¡ }|j| jjfks(t‚|jd ks6t‚t |j	| jj	¡rLt‚| j
 ¡ }|j| j
jfksjt‚t |j	| j
j	¡r€t‚|j| j
jk	s’t‚|j| j
jks¤t‚| j ¡ }|j| jjfksÂt‚t |j	| jj	¡rØt‚|jj|jksêt‚t |j| jj¡�rt‚d S r'   )r,   r!   Úflattenr   r2   r   r   r	   r4   r3   r   r   )r*   r+   Z
t0_flattenZ
t1_flattenZ
t2_flattenr   r   r   Útest_flattenb   s    



zTestManipulation.test_flattenc                 C   s´  |   |¡ | j ¡ }|jdks"t‚t |j| jj ¡ k¡s>t‚t |j| jj¡sTt‚|j	d ksbt‚| j
 ¡ }|jdkszt‚t |j| j
j ¡ k¡s–t‚t |j| j
j¡s¬t‚|j	| j
j	ks¾t‚| j ¡ }|jdksÖt‚t |j| jj ¡ k¡sòt‚t |j| jj¡�s
t‚|j	j|jk�st‚t |j	| jj	¡�s6t‚| jj}|jdk�sNt‚t |j| jjjk¡�sjt‚t |j| jj¡�s‚t‚|j	j|j	jk�s˜t‚t |j	| jj	¡�s°t‚d S )N©é   é
   )r,   r!   Z	transposer   r   r	   r
   r3   r4   r   r   r   ÚT)r*   r+   Zt0_transposeZt1_transposeZt2_transposeZt2_Tr   r   r   Útest_transposeu   s.    



zTestManipulation.test_transposec                 C   s:  |   |¡ | j ¡ }|jdks"t‚t |j| jj ¡ k¡s>t‚|jd ksLt‚t 	|j| jj¡sbt‚| j
 ¡ }|jdkszt‚t |j| j
j ¡ k¡s–t‚|j| j
jks¨t‚t 	|j| j
j¡s¾t‚| j ¡ }|jdksÖt‚t |j| jj ¡ k¡sòt‚|jj|jk�st‚t 	|j| jj¡�st‚t 	|j| jj¡�s6t‚d S )N)r9   )r,   r!   Zdiagonalr   r   r	   r
   r3   r   r4   r   r   )r*   r+   Zt0_diagonalZt1_diagonalZt2_diagonalr   r   r   Útest_diagonal�   s"    



zTestManipulation.test_diagonalc                 C   sT  |   |¡ | j dd¡}|jdks&t‚t |j| jj dd¡k¡sFt‚t |j| jj¡s\t‚|j	d ksjt‚| j
 dd¡}|jdks†t‚t |j| j
j dd¡k¡s¦t‚t |j| j
j¡s¼t‚|j	| j
j	ksÎt‚| j dd¡}|jdksêt‚t |j| jj dd¡k¡�st‚t |j| jj¡�s$t‚|j	j|jk�s8t‚t |j	| jj	¡�sPt‚d S )Nr   r   r8   )r,   r!   Zswapaxesr   r   r	   r
   r3   r4   r   r   r   )r*   r+   Zt0_swapaxesZt1_swapaxesZt2_swapaxesr   r   r   Útest_swapaxes¤   s"    
  "zTestManipulation.test_swapaxesc                 C   sì  |   |¡ | j ddd¡}|jdks(t‚t |j| jjj ddd¡k¡sLt‚t |j	| jjj	 ddd¡k¡spt‚t 
|j| jj¡s†t‚t 
|j	| jj	¡sœt‚|jd ksªt‚| j ddd¡}|jdksÈt‚t |j| jj ddd¡k¡sêt‚t 
|j| jj¡�st‚|j| jjk�st‚| j ddd¡}|jdk�s6t‚t |j| jj ddd¡k¡�sZt‚t 
|j| jj¡�srt‚|jj|jk�s†t‚t 
|j| jj¡�sžt‚| j ddd¡}|jdk�s¾t‚t |j| jj ddd¡k¡�sât‚t 
|j| jj¡�sút‚|jj|jk�st‚t 
|j| jj¡�r&t‚| j dd¡j}|jdk�sFt‚t 
|j| jj¡�s^t‚|jj|jk�srt‚t 
|j| jj¡�sŠt‚| dd¡}|jdk�s¦t‚t 
|j| jj¡�r¾t‚|jj|jk�sÒt‚t 
|j|j¡�rèt‚d S )	Nr9   é   ©r9   r?   r9   ©r?   r9   r9   )r9   r9   r?   r:   r8   ©r:   r9   )r,   r!   Úreshaper   r   r	   r
   r3   Ú_timeÚjd2r4   r   r   r   r;   )r*   r+   Ú
t0_reshapeÚ
t1_reshapeZ
t2_reshapeZt2_reshape2Zt2_reshape_tZt2_reshape_t_reshaper   r   r   Útest_reshape¸   sL    
$$"$$ ÿzTestManipulation.test_reshapec              	   C   s~  |   |¡ | j ddddd¡ ¡ }|jdks0t‚t |j| jj ddd¡k¡sRt‚t 	|j| jj¡sht‚|j
d ksvt‚| j ddddd¡ ¡ }|jdksœt‚t |j| jj ddd¡k¡s¾t‚t 	|j| jj¡sÔt‚|j
| jj
ksæt‚| j ddddddd¡ ¡ }|jdk�st‚t |j| jj ddd¡k¡�s6t‚t 	|j| jj¡�sNt‚|j
j|jk�sbt‚t 	|j
| jj
¡�szt‚d S )Nr9   r   r?   r@   )r,   r!   rC   Zsqueezer   r   r	   r
   r3   r4   r   r   r   )r*   r+   Z
t0_squeezeZ
t1_squeezeZ
t2_squeezer   r   r   Útest_squeezeã   s"    
""$zTestManipulation.test_squeezec                 C   sž  |   |¡ | jd d …tjd d …f }|jdks2t‚t |j| jjd d …tjd d …f k¡s^t‚t |j| jj¡stt‚|j	d ks‚t‚| j
d d …d d …tjf }|jdksªt‚t |j| j
jd d …d d …tjf k¡sÖt‚t |j| j
j¡sìt‚|j	| j
j	ksþt‚| jd d …d d …tjf }|jdk�s(t‚t |j| jjd d …d d …tjf k¡�sVt‚t |j| jj¡�snt‚|j	j|jk�s‚t‚t |j	| jj	¡�sšt‚d S )N)r:   r   r9   )r:   r9   r   )r,   r!   r	   r    r   r   r
   r3   r4   r   r   r   )r*   r+   Z	t0_adddimZ	t1_adddimZ	t2_adddimr   r   r   Útest_add_dimension÷   s"    
,,.z#TestManipulation.test_add_dimensionc                 C   sJ  |   |¡ | j d¡}|jdks$t‚t |j| jjj d¡k¡sDt‚|j	d ksRt‚| j
jddd�}|jdkspt‚t |j| j
jjddd�k¡s’t‚|j	| j
j	ks¤t‚| jjddd�}|jd	ksÂt‚t |j| jjjddd�k¡sät‚|j	j|jksöt‚| j d
¡}|jdk�st‚t |j| jj d
¡k¡�s2t‚|j	j|jk�sFt‚d S )N)r9   r?   )r?   )r?   é   r   ©Úaxis)r:   r?   )r   é   é   r   )rN   r9   )r9   é   )r,   r!   Ztaker   r   r	   r
   r3   rD   r   r   r   )r*   r+   Zt0_takeZt1_takeZt2_takeZt2_take2r   r   r   Ú	test_take  s"    
 "" zTestManipulation.test_takec                 C   sF  |   |¡ | jjtjdd�}|jdks*t‚t |j| jjk¡sBt‚t 	|j| jj¡sXt‚|j
dksft‚| jjtjdd�}|jdks†t‚t |j| jjk¡sžt‚t 	|j| jj¡s´t‚|j
| jj
ksÆt‚| jjtjdd�}|jdksæt‚t |j| jjk¡sþt‚t 	|j| jj¡�st‚|j
j|jk�s*t‚t 	|j
| jj
¡�sBt‚dS )zTest using a callable method.©rN   r:   r9   ©r   N)r,   r!   Ú_applyr	   Úbroadcast_tor   r   r
   r3   r4   r   r   r   ©r*   r+   Zt0_broadcastZt1_broadcastZt2_broadcastr   r   r   Útest_broadcast_via_apply  s"    
z)TestManipulation.test_broadcast_via_applyN)r-   r.   r/   Ú__doc__r5   r7   r<   r=   r>   rH   rI   rJ   rQ   rW   r   r   r   r   r0   I   s   +r0   c                   @   s   e Zd Zdd„ ZdS )ÚTestSetShapec              	   C   s6  |   |¡ | j ¡ }|j}d|_|jdks.t‚|j|jjks@t‚t |j| jj	j 
ddd¡k¡sdt‚t |j| jj	j 
ddd¡k¡sˆt‚|jd ks–t‚|j}t t¡� d|_W 5 Q R X t t¡� d|_W 5 Q R X |j|jjksæt‚|jj|jjksút‚|jj|jjk�st‚| j ¡ }d|_|jdk�s0t‚t |j| jj 
ddd¡k¡�sTt‚|jjdk�sft‚d| j_| jjdk�s€t‚| jjjdk�s”t‚| jjjdk�s¨t‚| jjjdk�s¼t‚| jjjdk�sÐt‚| jj}t t¡� d	| j_W 5 Q R X | jjj|k�s
t‚| jjj|k�st‚| jjj|k�s2t‚d S )
Nr@   r9   r?   )é   rB   rA   r   )r   r   é   )é2   )r,   r!   Úcopyr   r   r   r	   r
   r3   rD   rC   rE   r   r;   ÚpytestÚraisesÚ
ValueErrorÚAttributeErrorr   r   Ústrides)r*   r+   rF   r   Zt0_reshape_trG   Zoldshaper   r   r   Útest_shape_setting7  sD    

$$
$zTestSetShape.test_shape_settingN)r-   r.   r/   rc   r   r   r   r   rY   5  s   rY   c                   @   s|   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZd	d
„ Zdd„ Z	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZdS )ÚTestShapeFunctionsc                 C   s@  |   |¡ tj| jdd�}|jdks(t‚t |j| jjk¡s@t‚t |j| jj¡sVt‚|j	dksdt‚tj| j
dd�}|jdks‚t‚t |j| j
jk¡sšt‚t |j| j
j¡s°t‚|j	| j
j	ksÂt‚tj| jdd�}|jdksàt‚t |j| jjk¡søt‚t |j| jj¡�st‚|j	j|jk�s$t‚t |j	| jj	¡�s<t‚dS )z!Test as supported numpy function.rR   rS   N)r,   r	   rU   r!   r   r   r
   r3   r4   r   r   r   rV   r   r   r   Útest_broadcastk  s"    
z!TestShapeFunctions.test_broadcastc                 C   sj   |   |¡ | j ¡ d }|jdks&t‚t |¡}|jdks>t‚t|tj |ƒ t 	|j
j|j
j¡sft‚d S ©Nr   r   )r,   r!   r1   Úndimr   r	   Z
atleast_1dr   r    r4   rD   r3   )r*   r+   Zt00Zt00_1dr   r   r   Útest_atleast_1d�  s    

z"TestShapeFunctions.test_atleast_1dc                 C   sb   |   |¡ | j ¡ }|jdks"t‚t |¡}|jdks:t‚t|tj |ƒ t 	|j
|j
¡s^t‚d S )Nr   r?   )r,   r!   r1   rg   r   r	   Z
atleast_2dr   r    r4   r3   )r*   r+   Út0rZt0r_2dr   r   r   Útest_atleast_2d�  s    


z"TestShapeFunctions.test_atleast_2dc                 C   s¦   |   |¡ | jjdkst‚t | j| j¡\}}|j|j  krFdksLn t‚t| jd d …d d …tjf |ƒ t| jd d …d d …tjf |ƒ t 	|j
| jj
¡s¢t‚d S )Nr?   rN   )r,   r!   rg   r   r	   Z
atleast_3dr   r   r    r4   rE   )r*   r+   Zt0_3dZt1_3dr   r   r   Útest_atleast_3d˜  s    
  z"TestShapeFunctions.test_atleast_3dc                 C   sd   |   |¡ t | jdd¡}|j| jjd | jjd fks<t‚t| jj|ƒ t |j	| jj	¡s`t‚d S rf   )
r,   r	   Zmoveaxisr!   r   r   r   r;   r4   r3   ©r*   r+   Zt0_10r   r   r   Útest_move_axis£  s
    
"z!TestShapeFunctions.test_move_axisc                 C   sb   |   |¡ t | jd¡}|j| jjd | jjd fks:t‚t| jj|ƒ t |j	| jj	¡s^t‚d S )Nr   r   )
r,   r	   Zrollaxisr!   r   r   r   r;   r4   r3   rl   r   r   r   Útest_roll_axis¬  s
    
"z!TestShapeFunctions.test_roll_axisc                 C   sN   |   |¡ t | j¡}t| jd d …d d d…f |ƒ t |j| jj¡sJt‚d S )Néÿÿÿÿ)r,   r	   Zfliplrr!   r   r4   rE   r   )r*   r+   Zt0_lrr   r   r   Útest_fliplrµ  s    
zTestShapeFunctions.test_fliplrc                 C   sR   |   |¡ t | jd¡}t| jjd d …d d d…f |ƒ t |j| jj¡sNt‚d S )NrN   ro   )	r,   r	   Zrot90r!   r   r;   r4   rE   r   )r*   r+   Zt0_270r   r   r   Ú
test_rot90½  s    
 zTestShapeFunctions.test_rot90c                 C   sP   |   |¡ tj| jddd�}t|dd … | jd d… ƒ t|d | jd ƒ d S )Nr   r   rL   ro   )r,   r	   Zrollr!   r   )r*   r+   ri   r   r   r   Ú	test_rollÅ  s    
zTestShapeFunctions.test_rollc                 C   s\   |   |¡ tj| jddgdd�}t|d d… | jd d… ƒ t|dd … | jdd … ƒ d S )Nr?   rN   r   rL   rK   )r,   r	   Údeleter!   r   )r*   r+   Zt0dr   r   r   Útest_deleteÍ  s    
zTestShapeFunctions.test_deleteN)r-   r.   r/   Úneeds_array_functionre   rh   rj   rk   rm   rn   rp   rq   rr   rt   r   r   r   r   rd   i  s$   





		


rd   c                   @   sL  e Zd ZdZi ddiddiddiddifZdZdd	„ Zd
d„ Zej	 
de ee¡¡dd„ ƒZej	 
de ee¡¡dd„ ƒZdd„ Zdd„ Zdd„ Zej	 
dej¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zej	 
dddddd"g¡ej	 
d#d$e d$d%d$d$d%g¡d&ejf g¡ej	 
d'd%d$g¡d(d)„ ƒƒƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z dS )2ÚTestArithmeticz/Arithmetic on Time objects, using both doubles.rM   Nr   r   r?   )ÚminÚmaxÚsortc              
   C   s0  t  ddd¡ ddd¡}t  ddd	d
dg¡}t j |¡}t jj|d< t||ddd�t||ddd�dœ| _t  dddddg¡}t j |¡}t jj|d< t|| ddd�t|| ddd�dœ| _|| || dœ| _	t|| ddt  t
|ƒ¡t  t
|ƒ¡fd�t|| ddt  t
|ƒ¡t  t
|ƒ¡fd�dœ| _d S )Nr   i´Ã  r:   r?   r9   r   gš™™™™™¹?gâ™™™™™¹?gR™™™™™¹?gÏÌÌÌÌÌì?gÍÌÌÌÌÌì?r   r   r   r   r   rK   rN   r   )r	   r   rC   r   r   r   r   r!   r   Újdr"   r   r#   r   r   r   r&   Ý  s6    þþüüùzTestArithmetic.setup_classc                 C   s<   | j j| | _| j j| | _| j j| | _| j j| | _d S r'   )r(   r!   r   r   rz   r)   r   r   r   r,     s    zTestArithmetic.create_datazkw, funcc                 C   s  |   |¡ t| jd| ƒf |Ž}t| jd| ƒf |Ž}ttd| ƒ| jf|Ž}| jjrÊ|ddikrÊ|dkrÊtjj|| jj	 
|j¡| d�}tjj|| jj	 
|j¡| d�}tjj|| jj	 
|j¡| d�}t ||k¡sÜt‚t ||k¡sît‚|j|jksþt‚|j|jk�st‚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.
        ÚargrM   Nry   )Úmask)r,   Úgetattrr!   r   r	   rz   r   r   r   r|   rC   r   r
   r   )r*   ÚkwÚfuncr+   Út0vÚt1vÚjdvr   r   r   Útest_argfuncs  s    
   zTestArithmetic.test_argfuncsc                 C   sX   |   |¡ t| j|ƒf |Ž}tt|ƒ| jf|Ž}t |j|k¡sDt‚|j|jksTt‚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.
        N)	r,   r}   r   r	   rz   r
   Úvaluer   r   )r*   r~   r   r+   r�   r‚   r   r   r   Ú
test_funcs   s
    
zTestArithmetic.test_funcsc                 C   st   |   |¡ | j ¡ dkst‚t | jjdd�dk¡s8t‚t | jjdd�dk¡sTt‚t | jjdd�dk¡spt‚d S )Nr?   r   rL   r   )r,   r!   Zargminr   r	   r
   r)   r   r   r   Útest_argmin-  s
    
zTestArithmetic.test_argminc                 C   sÒ   |   |¡ | j ¡ | jjd ks$t‚|dkrzt | jjdd�dddddgk¡sRt‚t | jjdd�dddddgk¡s²t‚n8t | jjdd�dk¡s–t‚t | jjdd�dk¡s²t‚t | jjdd�dk¡sÎt‚d S )Nr?   r   r   rL   r   rK   rN   )r,   r!   Zargmaxr2   r   r	   r
   r)   r   r   r   Útest_argmax5  s    
&(zTestArithmetic.test_argmaxc                 C   sX  |   |¡ |dkr dddddgndddddg}t | j ¡ t |¡k¡sLt‚t | jjdd�t d¡ ddd¡k¡sxt‚t | jjdd�t d¡ dd¡k¡s¢t‚t | jjdd�t |¡k¡sÄt‚t d	¡ d
d¡d d …|f  	¡ }|dk�r6| jjd d�}| jj
 	¡ | }||  }t |d d… |k¡�sTt‚nt | jjd d�|k¡�sTt‚d S )Nr   r?   r   rK   rN   r   rL   r9   r\   ro   iöÿÿÿ)r,   r	   r
   r!   Úargsortr   r   r   rC   r1   r|   )r*   r+   Úorderr1   r€   r|   r   r   r   Útest_argsortB  s    
$,*""

zTestArithmetic.test_argsortr   c              	   C   s^   |   |¡ |dkrt ¡  tjdd��}tdddgd|d� ¡  W 5 Q R X t|ƒd	ksZt‚d S )
Nr   T)Úrecordr   r?   rN   rz   r   r   )	r,   r^   ÚxfailÚwarningsÚcatch_warningsr   rˆ   r"   r   )r*   r+   r   Zwlistr   r   r   Útest_argsort_warningV  s    
"z#TestArithmetic.test_argsort_warningc                 C   s0  |   |¡ | j ¡ | jd ks"t‚t | j d¡| jd k¡sBt‚t | j d¡| jd d …df k¡sjt‚t | j d¡| jd d …d d …df k¡s˜t‚| j d¡jdks®t‚| jjddd�jdksÈt‚| j d¡jd	ksÞt‚| jjddd�jd
ksøt‚| j d¡jd	k�st‚| jjddd�jdk�s,t‚d S )N)r   r   r?   r   r   r?   ©r9   r9   T©Úkeepdims©r   r9   r9   )r?   r9   )r?   r   r9   )r?   r9   r   )r,   r!   rw   r   r	   r
   r   r)   r   r   r   Útest_min`  s    
 (.zTestArithmetic.test_minc                 C   sÌ   |   |¡ | j ¡ | jd ks"t‚t | j d¡| jd k¡sBt‚t | j d¡| jd d …df k¡sjt‚t | j d¡| jd d …d d …df k¡s˜t‚| j d¡jdks®t‚| jjddd	�jd
ksÈt‚d S )N)ro   ro   éþÿÿÿr   r   rK   r?   rN   r�   Tr‘   r“   )r,   r!   rx   r   r	   r
   r   r)   r   r   r   Útest_maxn  s    
 (.zTestArithmetic.test_maxc                 C   sŽ   |   |¡ | j ¡ | j ¡ | j ¡  ks,t‚t | j d¡| j d¡| j d¡ k¡sZt‚| j d¡jdkspt‚| jjddd�jdksŠt‚d S )Nr   r�   Tr‘   r“   )	r,   r!   Zptprx   rw   r   r	   r
   r   r)   r   r   r   Útest_ptpx  s
    
".zTestArithmetic.test_ptpc                 C   sl  |   |¡ |dkr dddddgndddddg}t | j ¡ | jd d …d d …|f k¡sZt‚t | j d¡| jk¡svt‚t | j d¡| jk¡s’t‚t | j d¡| jd d …d d …|f k¡sÀt‚|dk�rht | j d ¡| jd d …d d …|f  ¡ k¡süt‚t | j d¡d d …d d …df | j d¡k¡�s2t‚t | j d¡d d …d d …df | j d¡k¡�sht‚d S )	Nr   r?   r   rK   rN   r   r   ro   )	r,   r	   r
   r!   ry   r   r1   rw   rx   )r*   r+   r‰   r   r   r   Ú	test_sort€  s    
$,.
26zTestArithmetic.test_sort)r   r   ÚwhereTF.r’   c              	      s‚   |   |¡ tˆ ˆˆd�‰‡ ‡‡‡fdd„}|| jƒ || jƒ d dg}ˆ |krtt t¡� | jjf ˆŽ W 5 Q R X n
|| jƒ d S )N)rM   r™   r’   c              	      sÚ   ˆ| j  @ }t || j¡}ˆ ¡ }||d< |jˆ ˆd�}t |dk¡rjt t	¡� | j
f ˆŽ W 5 Q R X nl| j
f ˆŽ}tttj | jj¡jf |Žtj | jj¡jf |Ž|d�dddœŽ}| | j¡ t ||k¡sÖt‚d S )Nr™   )rM   r’   r   )Zval1Zval2Údivisorrz   Útair   )r|   r	   rU   r   r]   ÚsumÚanyr^   r_   r`   Úmeanr   r   r   Zgetdatar›   r3   rE   Z
_set_scaler   r
   r   )ÚtimeZwhere_expectedr~   rš   Z	time_meanZtime_expected©rM   r’   Úkwargsr™   r   r   Úis_consistent˜  s(    ýù	z/TestArithmetic.test_mean.<locals>.is_consistentr?   )	r,   Údictr!   r   r^   r_   r`   r   rž   )r*   r+   rM   r™   r’   r¢   Zaxes_location_not_constantr   r    r   Ú	test_meanŽ  s    


zTestArithmetic.test_meanc                 C   sˆ   d}dt j }td|d�}td|d�}td|d�}t||| gƒ}|dkrltjj|d< | ¡ || ks„t‚n| ¡ ||d	  ks„t‚d S )
Nr›   r   z2021-07-27T00:00:00)r   z2022-07-27T00:00:00z2023-07-27T00:00:00r   r   r?   )ÚuÚnsr   r	   r   r   rž   r   )r*   r+   r   Úepsilonr!   r   r   Útr   r   r   Útest_mean_precision½  s    
z"TestArithmetic.test_mean_precisionc              	   C   s2   |   |¡ t t¡� | jjtd� W 5 Q R X d S )N)Zdtype)r,   r^   r_   r`   r!   rž   Úintr)   r   r   r   Útest_mean_dtypeÎ  s    
zTestArithmetic.test_mean_dtypec              	   C   sD   |   |¡ t t¡�& | jjtt | jj	¡dd�d� W 5 Q R X d S )Nrz   )r   )Úout)
r,   r^   r_   r`   r!   rž   r   r	   Z
zeros_liker3   r)   r   r   r   Útest_mean_outÓ  s    
zTestArithmetic.test_mean_outc                 C   sˆ   |dkr„t ddgƒ}|d |d |d  d  }t dƒ}| ¡ }||ksLt‚||ksXt‚|t t|j ¡ |j ¡ dd�d	d
iŽks„t‚d S )Nr   z2012-06-30 23:59:60.000z2012-07-01 00:00:01.000r   r   r?   z2012-07-01 00:00:00)rš   r   rz   )r   rž   r   r   r3   rœ   rE   )r*   r+   r¨   Zmean_expectedZmean_expected_explicitZ	mean_testr   r   r   Útest_mean_leap_secondØ  s    ÿÿz$TestArithmetic.test_mean_leap_second)!r-   r.   r/   rX   r¡   Z	functionsr&   r,   r^   ÚmarkÚparametrizeÚ	itertoolsÚproductrƒ   r…   r†   r‡   rŠ   r   ZSCALESr�   r”   r–   r—   r˜   r	   r   r    r¤   r©   r«   r­   r®   r   r   r   r   rv   Ö  s:   %


	
  ÿ*rv   c               	   C   s˜   t j dd¡�€ tdddd�} | j}t |¡}t|jƒt	j
ksBt‚| ¡ }t|jƒt	j
ks^t‚| ¡ }t|jƒt	j
kszt‚|j|jksŠt‚W 5 Q R X d S )NZauto_downloadFg    €5è@r›   r   )r   r   )r   ZconfZset_tempr   Zut1r]   ÚdeepcopyÚtypeZdelta_ut1_utcr	   Zndarrayr   r6   r1   )r¨   Zt_ut1Z
t_ut1_copyZt_ut1_flattenZt_ut1_ravelr   r   r   Útest_regressionç  s    
rµ   )r]   r±   r�   Únumpyr	   r^   Zastropy.unitsZunitsr¥   Zastropy.timer   Zastropy.time.utilsr   Z.astropy.units.quantity_helper.function_helpersr   Zastropy.utilsr   r¯   rŒ   ru   r   r   r°   r0   rY   rd   rv   rµ   r   r   r   r   Ú<module>   s6    ÿ. l3l  