
    IR-e3              	          d dl Z d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ  e j        ej        dd          Z G d d	          Z G d
 d          Z G d d          Zej                            ddej        z  dfdej        z  dfdej        z  dej        z  fdej        z  dej        z  ff          d             ZdS )    N)units)Column)Time	TimeDeltag      <g     =)rtolatolc                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestTimeQuantityz(Test Interaction of Time with Quantitiesc                    dt           j        z  }t          |dd          }|j        |j        k    sJ |                    t           j                  }t          |dd          }|j        |j        cxk    r#|                    t           j                  k    sn J |dt           j        z  z
  }t          |dd          }|j        |j        k    sJ dt           j        z  }t          ||dd          }|j        ||z                       t           j                  k    sJ dt           j        z  }	t          |	d	d          }
|
j        |	j        k    sJ t          |	                    t           j                  d	d          }|j        |	j        k    sJ d
t           j        z  }t          |d          }|j        |                    t           j                  k    sJ t          |d          }|j        |                    t           j                  k    sJ t          |d          }|j        |                    t           j                  k    sJ dt           j        z  }t          |dd          }|j        |j        k    sJ dS )z:Test Time formats that are allowed to take quantity input.g   (BAjdutcformatscaleg   @OBAmjdg      @     @jyear      $@cxcsecr   gpsunixg     G&A	plot_dateN)udayr   valuetosecondto_valueyr)selfqt1q2t2q3t3qst4qyty1ty2qy2tcxctgpstunixqdtplts                     Llib/python3.11/site-packages/astropy/time/tests/test_quantity_interaction.pytest_valid_quantity_inputz*TestTimeQuantity.test_valid_quantity_input   s^   !%!D...x17""""TT!(^^"T///x178888bkk!%&8&8888888QU"""U%000x28####18#"be444xBG--ae444444ad]2gU333yBH$$$$255<<u===yBH$$$$QTkC)))zS\\!(333333C&&&zS\\!(333333S((({cll18444444ae#B{%888zRX%%%%%%    c                 \   t          j        t          j                  5  t	          dt          j        z  dd           d d d            n# 1 swxY w Y   t          j        t          j                  5  t	          dt          j        z  dd           d d d            d S # 1 swxY w Y   d S )N    (BAr   r   r   )pytestraisesr   
UnitsErrorr   mdimensionless_unscaledr!   s    r3   test_invalid_quantity_inputz,TestTimeQuantity.test_invalid_quantity_input3   s-   ]1<(( 	< 	<QSU;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]1<(( 	Q 	QQ55d%PPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs#    AAA4 B!!B%(B%c                 j   t          j        dd          }t          |d          }t          t          j        dd          d          }t          |d          }t          j        ||k              sJ t          t          j        dd          dd          }t          |d          }t          j        ||k              sJ t          t          j        dd          dd          }t          j        t          j                  5  t          |d           d	d	d	           d	S # 1 swxY w Y   d	S )
z=Ensure a Column without a unit is treated as an array [#3648]g     j@g    @k@r   r   )namer   )r@   unitr;   N)	nparanger   r   allr8   r9   r   r:   )r!   atac1tc1c2tc2c3s           r3   "test_column_with_and_without_unitsz3TestTimeQuantity.test_column_with_and_without_units:   sd   Igw''!E"""BIgw//e<<<2e$$$vbCi     BIgw//e%HHH2e$$$vbCi     BIgw//e#FFF]1<(( 	# 	#E""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   	D((D,/D,c                     dt           j        z  }dD ]E}t          j        t                    5  t          ||d           ddd           n# 1 swxY w Y   FdS )z9Time formats that are not allowed to take Quantity input.r   )isoydaydatetimebyear	byear_str	jyear_strr   r   N)r   r    r8   r9   
ValueErrorr   )r!   r*   fmts      r3   test_no_quantity_input_allowedz/TestTimeQuantity.test_no_quantity_input_allowedH   s    ad]Q 	2 	2Cz** 2 2R511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   AA	A	c                    t          dd          }dt          j        z  }||z   }t          |t                     sJ |j        |j        |                    t          j                  z   k    sJ dt          j        z  }||z
  }t          |j        |j        |                    t          j                  z
            sJ t          j	        d          
                    dd          t          j        z  }||z
  }|j        |j        k    sJ t          |j        |j        |                    t          j                  z
            sJ d	S )
z?Check that adding a time-valued quantity to a Time gives a Time     j@r   r   r         ?g      .@      N)r   r   r   
isinstancer   r   r   allclose_secrB   rC   reshapehourshaper!   t0q1r#   r$   r%   r&   r'   s           r3   test_valid_quantity_operationsz/TestTimeQuantity.test_valid_quantity_operationsO   s   (8,,,AH_"W"d#####x28bkk!(&;&;;;;;;15["WBHbhQX1F1F&FGGGGGYt__$$Q**QV3"Wx28####BHbhQX1F1F&FGGGGGGGr5   c                 T   t          j        t                    5  t          dd          dt          j        z  k     ddd           n# 1 swxY w Y   t          j        t                    5  t          dd          dt          j        z  k     ddd           dS # 1 swxY w Y   dS )zCheck that comparisons of Time with quantities does not work
        (even for time-like, since we cannot compare Time to TimeDelta)rX   r   r   r   N)r8   r9   	TypeErrorr   r   r;   r   r=   s    r3    test_invalid_quantity_operationsz1TestTimeQuantity.test_invalid_quantity_operations_   s    ]9%% 	9 	9(+++dQSj88	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]9%% 	> 	>(+++dQXo==	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s#   #A		AA-#BB!$B!N)
__name__
__module____qualname____doc__r4   r>   rL   rV   rd   rg    r5   r3   r
   r
      s{        22& & &@Q Q Q# # #2 2 2H H H > > > > >r5   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 )TestTimeDeltaQuantityz-Test interaction of TimeDelta with Quantitiesc                 "   dt           j        z  }t          |d          }|j        |j        k    sJ t          |d          }|j        |                    t           j                  k    sJ t          |          }|j        |j        k    sJ dS )z,Test that TimeDelta can take quantity input.     D@r   r   secN)r   r   r   r   r   r   )r!   r"   dt1dt2dt3s        r3   r4   z/TestTimeDeltaQuantity.test_valid_quantity_inputk   s    QUN$'''yAG####%(((yAJJqx000000llyAG######r5   c                     t          j        t          j                  5  t	          dt          j        z  d           d d d            n# 1 swxY w Y   t          j        t          j                  5  t          dt          j        z  dd           d d d            n# 1 swxY w Y   t          j        t                    5  t	          dd          dt          j        z  k     d d d            d S # 1 swxY w Y   d S )	Nr7   r   r   r   r   d   rq   r   )	r8   r9   r   r:   r   r;   r   r<   rf   r=   s    r3   r>   z1TestTimeDeltaQuantity.test_invalid_quantity_inputu   s   ]1<(( 	4 	4i!#od3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ]1<(( 	Q 	QQ55d%PPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q ]9%% 	6 	6c%(((4!#:55	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s5   A

AA3 BB#&B##C33C7:C7c                    dt           j        z  }t          |          }|                    t           j                  |k    sJ |                    t           j                  |j        k    sJ |                    d          |j        k    sJ |                    t           j                  j        |                    t           j                  k    sJ |                    t           j                  |                    t           j                  k    sJ |                    d          |                    t           j                  k    sJ |                    d          |                    t           j                  k    sJ d S )Nrp   r   srq   )r   r   r   r   r   r   r   )r!   r"   dts      r3   test_quantity_outputz*TestTimeDeltaQuantity.test_quantity_output   s,   QUNq\\uuQU||q    {{15!!QW,,,,{{5!!QW,,,,uuQX$

18(<(<<<<<{{18$$

18(<(<<<<<{{31::ah#7#77777{{5!!QZZ%9%9999999r5   c                    t          dd          }t          j        t          j                  5  |                    t          j                   d d d            n# 1 swxY w Y   t          j        t          j                  5  |                    t          j                   d d d            n# 1 swxY w Y   t          j        t          j                  5  |                    t          j                   d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    dt          j
                   d d d            n# 1 swxY w Y   t          j        t                    5  |                    t          j
        d	           d d d            d S # 1 swxY w Y   d S )
Ng     @o@rq   r   )rA   z7not one of the known formats.*failed to parse as a unit)matchparrotstr)subfmt)r   r8   r9   r   r:   r   r;   r   rT   rf   rx   )r!   ry   s     r3   test_quantity_output_errorsz1TestTimeDeltaQuantity.test_quantity_output_errors   s   uU+++]1<(( 	 	EE!#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]1<(( 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]1<(( 	" 	"KKQSK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]K
 
 
 	" 	" KK!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 ]9%% 	) 	)KKACK(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9%% 	+ 	+KKEK***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+sk    AA #A  B11B58B5!DDD-EEE3"F!!F%(F%"G44G8;G8c                 (   t          dd          }dt          j        z  }||z   }t          |t                     sJ |j        |j        |                    t          j                  z   k    sJ dt          j        z  }||z
  }t          |t                     sJ t          |j        |j        |                    t          j                  z
            sJ ||k    sJ |dt          j        z  k     sJ t          j
        d                              dd          t          j        z  }||z   }t          |t                     sJ |j        |j        k    sJ t          |j        |j        |                    t          j                  z             sJ d	S )
zCheck adding/subtracting/comparing a time-valued quantity works
        with a TimeDelta.  Addition/subtraction should give TimeDeltag     @rq   r   r   rY         (@   rZ   N)r   r   r   r\   r   r   r   r]   r    rB   rC   r^   r_   r`   ra   s           r3   test_valid_quantity_operations1z5TestTimeDeltaQuantity.test_valid_quantity_operations1   sj    x...AH_"W"i(((((x28bkk!(&;&;;;;;;15["W"i(((((BHbhQX1F1F&FGGGGGBwwwwC!$JYt__$$Q**QV3"W"i(((((x28####BHbhQX1F1F&FGGGGGGGr5   c                    t          dd          }d|z  }t          |t          j                  sJ |j        dt          j        z  k    sJ dt          j        z  t          j        dz  z  }||z  }t          |t          j                  sJ t          j        ||j	        |j
        z  t          j        z  t          j        z            sJ t          j        |t          j        z            }t          |t          j                  sJ |j
        t          j        |j	                  k    sJ dt          j        z  }||z  }t          |t          j                  sJ t          j        |d|j	        z  t          j        z  t          j        z            sJ dt          j        z  }||z  }t          |t          j                  sJ t          j        ||j	        t          j        dz  z            sJ dg|z  }	t          |	t          j                  sJ t          j        |	d|j	        t          j        z  z            sJ t          t          j        dd                              d	d          d          }
t          j        dd
g          t          j        z  t          j        z  }||
z  }t          |t          j                  sJ |j        |
j        k    sJ t          j        ||
j	        |j
        z  t          j        z            sJ ||
z  }t          |t          j                  sJ t          j        ||                    t          j                  |
                    t          j                  z  k              sJ |
|z  }t          |t          j                  sJ t          j        ||
                    t          j                  |                    t          j                  z  k              sJ dS )z=Check that TimeDelta is treated as a quantity where possible.rX   rq   r   rY   r         g    j@   g       @N)r   r\   r   QuantityrA   r   r;   r   allcloserq   r   rB   log10rx   rC   r^   arraycycleHzr`   rD   r   )r!   rb   fgvr"   rx   tr%   r'   r#   phases               r3   test_valid_quantity_operations2z5TestTimeDeltaQuantity.test_valid_quantity_operations2   sU   x..."H!QZ(((((vqu$$$$13J1$F!QZ(((((z!RVag-3ah>?????HR!(]##!QZ(((((w"(26******!#IF!QZ(((((z!S26\AC/!#566666!#I!V"aj)))))z"bfqsAvo.....S2X"aj)))))z"a26AC<011111ry844<<QBB5QQQHc3Z  17*QT1B%,,,,,{bh&&&&z%!'!1AG!;<<<<<G!QZ(((((va255<<"%%,,6677777G!QZ(((((va255<<"%%,,667777777r5   c                    t          dd          }dt          j        z  }||z  }t          |t                     sJ |t          dd          k    sJ ||z  }t          |t                     sJ |t          dd          k    sJ ||z  }t          |t                     sJ |t          dd          k    sJ dt          j        z  }||z  }t          |t                     sJ t          |t          dd          z
            dt          j        z  k     sJ dt          j        z  dt          j        z  z  }||z  }	t          |t                     sJ t          |	t          dd          z
            dt          j        z  k     sJ |t          j        z  }
t          |
t                     sJ |
t          dd          k    sJ t          j        |z  }t          |t                     sJ |t          dd          k    sJ |d	z  }t          |t                     sJ |t          dd          k    sJ d	|z  }t          |t                     sJ |t          dd          k    sJ |t          j        z  }t          |t                     sJ |
t          dd          k    sJ |d	z  }t          |t                     sJ |t          dd          k    sJ |d
gz  }t          |t                     sJ |t          dd          k    sJ d
g|z  }t          |t                     sJ |t          dd          k    sJ dS )z)Test a TimeDelta remains one if possible.r   r   r   g      Y@rY   g?g      B@g     @@ r   N)	r   r   oner\   percentabsnshrrx   )r!   rb   r"   r#   r%   r'   r$   r)   r&   t5t6t7t8t9t10t11t12t13s                     r3   test_valid_quantity_operations3z5TestTimeDeltaQuantity.test_valid_quantity_operations3   s   tD)))15LV"i(((((YuT2222222!V"i(((((YuT2222222!V"i(((((Ys4000000019_"W"i(((((2	#d333344sQTzAAAA14Z4!#:&"W"i(((((2	&666677#*DDDD!%Z"i(((((YtD1111111URZ"i(((((YtD1111111"W"i(((((YtD1111111"W"i(((((YtD111111115j#y)))))YtD11111112g#y)))))iT2222222A3h#y)))))iT2222222cBh#y)))))iT222222222r5   c                     t          j        t                    5  t          dd          dt          j        z  k     ddd           dS # 1 swxY w Y   dS )z>Check comparisons of TimeDelta with non-time quantities fails.rX   rq   r   r   N)r8   r9   rf   r   r   r;   r=   s    r3   rg   z6TestTimeDeltaQuantity.test_invalid_quantity_operations	  s    ]9%% 	; 	;hu---qs
::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   #A

AAc                 2   t          dd          }t          j        t                    5  |t	                      z   ddd           n# 1 swxY w Y   t          j        t                    5  |t	                      z   ddd           dS # 1 swxY w Y   dS )z2Check that operations with non-time/quantity fail.rX   rq   r   N)r   r8   r9   rf   object)r!   tds     r3   !test_invalid_quantity_operations2z7TestTimeDeltaQuantity.test_invalid_quantity_operations2  s   x...]9%% 	 	MM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	 	MM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   A		AA-BBBc                     t          t          j        d                              dd          d          }t	          j        t                    5  |t          j        d          t          j        z  z    ddd           dS # 1 swxY w Y   dS )z7Check broadcasting rules in interactions with Quantity.r   r   rZ   rq   r   g      @N)	r   rB   rC   r^   r8   r9   rT   r   rx   )r!   rb   s     r3   test_invalid_quantity_broadcastz5TestTimeDeltaQuantity.test_invalid_quantity_broadcast  s    ry..q!44UCCC]:&& 	& 	&3!#%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   %BB
BN)rh   ri   rj   rk   r4   r>   rz   r   r   r   r   rg   r   r   rl   r5   r3   rn   rn   h   s        77$ $ $6 6 6
: 
: 
:+ + +&H H H,$8 $8 $8L-3 -3 -3^; ; ;
  & & & & &r5   rn   c                       e Zd Zd Zd ZdS )TestDeltaAttributesc                    t          dddd          }dt          j        z  |_        |j        j        dk    sJ dt          j        z  |_        |j        j        d	k    sJ t          j        t          j	                  5  d
t          j
        z  |_        d d d            n# 1 swxY w Y   t          dd          |_        |j        j        dk    sJ t          dd          |_        |j        j        dk    sJ d S )N2010-01-01 00:00:00rN   r   r   r   r   	precisiong333333?z2010-01-01 00:00:00.300000gO贁N{?z2010-01-01 00:00:00.400000皙?rq   r   g)QΠE>r   z2010-01-01 00:00:00.500000)r   r   rx   delta_ut1_utcut1rN   minuter8   r9   r:   r;   r   r!   r   s     r3   test_delta_ut1_utcz&TestDeltaAttributes.test_delta_ut1_utc  s1   &uEQOOO)uy88888$qx/uy88888]1<(( 	( 	(!ACiAO	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( $C666uy88888#$7EEEuy8888888   >BB#&B#c                    t          dddd          }dt          j        z  |_        |j        j        dk    sJ dt          j        z  |_        |j        j        d	k    sJ t          j        t          j	                  5  d
t          j
        z  |_        d d d            n# 1 swxY w Y   t          dd          |_        |j        j        dk    sJ t          dd          |_        |j        j        dk    sJ d S )Nr   rN   ttr   r   g      4@z2010-01-01 00:00:20.000000g      ?z2010-01-01 00:00:30.000000r   g      D@rq   r   z2010-01-01 00:00:40.000000gi/B?r   z2010-01-01 00:00:50.000000)r   r   r   delta_tdb_tttdbrN   r   r8   r9   r:   r;   r   r   s     r3   test_delta_tdb_ttz%TestDeltaAttributes.test_delta_tdb_tt,  s1   &uDANNNuy88888$qx/uy88888]1<(( 	' 	' 13YAN	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' #4666uy88888"#7EEEuy8888888r   N)rh   ri   rj   r   r   rl   r5   r3   r   r     s2        9 9 99 9 9 9 9r5   r   zq1, q2g    eͽAg NgmCg    ׷Ag ؅W4vCg  ļBc                    t          dd          }t          dd          }||| z   }n|| z   |z   }t          ||z
            dt          j        z  k     sJ t	          | |          }||z   }t          ||z
            dt          j        z  k     sJ t	          | |d          }||z   }t          ||z
            dt          j        z  k     sJ dS )	zCheck that no rounding errors are incurred by unit conversion.

    This occurred before as quantities in seconds were converted to days
    before trying to split them into two-part doubles.  See gh-7622.
    z2001-01-01T00:00:00.tai)r   z2016-11-05T00:53:20.N   rq   r   )r   r   r   psr   )	rc   r$   r   expectedrb   rr   r#   rs   r%   s	            r3   !test_quantity_conversion_roundingr   ;  s     	#5111A*%888H	zVVb[rH}QT	))))
B

C	
SBrH}QT	))))
B5
)
)
)C	
SBrH}QT	))))))r5   )	functoolsnumpyrB   r8   astropyr   r   astropy.tabler   astropy.timer   r   partialr   r]   r
   rn   r   markparametrizerx   r   usr   rl   r5   r3   <module>r      s                              ( ( ( ( ( ( ( ( y Kh%9  
U> U> U> U> U> U> U> U>pr& r& r& r& r& r& r& r&j9 9 9 9 9 9 9 9< 	qsD	d	qsD14K 	dQTk"	 * * * * *r5   