U
    e»{j  ã                   @   sÊ   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	 e j
ejd dd�Ze j
ejddd�Zze	j ¡  W n ek
r†   d	ZY nX d
Zdd„ ZejjG dd„ dƒƒZG dd„ dƒZG dd„ dƒZdS )é    N)ÚTime)Úconf)Úiersg•Ö&è.>)ZrtolZatolgVçž¯Ò<g-Cëâ6?FTc           	   	   C   sÀ   t  ¡ }|  ¡ }|j|dd�\|_}|tjks2t‚|jj	}||j	ksHt‚|j}tj
 |  ¡ ¡�X |jdd�\}}||ks|t‚| d¡|ksŽt‚|j}|j|ks¢t‚|j	|j	ks²t‚W 5 Q R X d S )NT©Zreturn_statusÚs)r   ÚnowÚopenZut1_utcÚdelta_ut1_utcr   ZFROM_IERS_A_PREDICTIONÚAssertionErrorÚut1ÚjdÚearth_orientation_tableÚsetÚget_delta_ut1_utcZto_valueÚ_delta_ut1_utc)	Z	iers_typeÚtnowZiers_tabÚstatusZtnow_ut1_jdr	   Údelta2Ústatus2Ztnow_ut1© r   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/time/tests/test_ut1.pyÚdo_ut1_prediction_tst   s    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestTimeUT1Remotec                 C   s
   dt _d S )NT©Ú	iers_confÚauto_download©Úclsr   r   r   Úsetup_class,   s    zTestTimeUT1Remote.setup_classc                 C   s
   dt _d S )NFr   r   r   r   r   Úteardown_class1   s    z TestTimeUT1Remote.teardown_classc                 C   sl   t dddddgdd�}|jj}t dd	d
ddg¡}t||ƒs@t‚|jj}t|j|jƒsZt‚t  ¡ }|j dS )zCTest conversion of UTC to UT1, making sure to include a leap secondú2012-06-30 12:00:00ú2012-06-30 23:59:59z2012-06-30 23:59:60ú2012-07-01 00:00:00ú2012-07-01 12:00:00Úutc©ÚscalegÇÿ½BAgïeÿ¿½BAgÇÿ¿½BAg( À½BAg (  ½BAN)	r   r   r   ÚnpÚarrayÚallclose_jdr
   r$   r   )ÚselfÚtZt_ut1_jdÚt_compÚt_backr   r   r   r   Útest_utc_to_ut15   s.    ûø
ûÿ	z!TestTimeUT1Remote.test_utc_to_ut1c                 C   s   t tjƒ d S ©N)r   r   Z	IERS_Auto©r*   r   r   r   Útest_ut1_iers_autoS   s    z$TestTimeUT1Remote.test_ut1_iers_autoN)Ú__name__Ú
__module__Ú__qualname__r   r   r.   r1   r   r   r   r   r   *   s   r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestTimeUT1zTest Time.ut1 using IERS tablesc              	   C   sv   t  dd¡�` tdddddgdd	�}|jj}t d
ddddg¡}t||ƒsNt‚|jj	}t|j|jƒsht‚W 5 Q R X dS )zTAlso test the reverse, around the leap second
        (round-trip test closes #2077)r   Fr    r!   r"   z2012-07-01 00:00:01r#   r   r%   gn €½BAgÌvÿ¿½BAgâ×ÿ¿½BAgù8 À½BAgà×ÿÿ½BAN)
r   Úset_tempr   r$   r   r'   r(   r)   r
   r   )r*   r+   Zt_utc_jdr,   r-   r   r   r   Útest_ut1_to_utcZ   s,    ûø
ûÿ	zTestTimeUT1.test_ut1_to_utcc              	   C   sv   ddl m} t dd¡�T tdgƒt d¡|j  }|g  j}t	|tƒsLt
‚|jdksZt
‚|jdksht
‚W 5 Q R X dS )	z[Testing for a zero-length Time object from UTC to UT1
        when an empty array is passedr   )Úunitsr   Fr    é   r   N)Zastropyr8   r   r6   r   r'   ZarangeÚhourr   Ú
isinstancer
   r&   Úsize)r*   Úur+   Zt_emptyr   r   r   Útest_empty_ut1v   s    
zTestTimeUT1.test_empty_ut1c              	   C   sV   t  dd¡�@ tddd�}t|dƒr(t‚t|jdƒs8t‚t|jdƒsHt‚W 5 Q R X dS )	zWAccessing delta_ut1_utc should try to get it from IERS
        (closes #1924 partially)r   Fr    r$   r%   r   g1•'=Çâ¿N)r   r6   r   Úhasattrr
   Úallclose_secr	   r   )r*   r+   r   r   r   Útest_delta_ut1_utc‚   s
    zTestTimeUT1.test_delta_ut1_utcN)r2   r3   r4   Ú__doc__r7   r>   rA   r   r   r   r   r5   W   s   r5   c                   @   s.   e Zd Zejje dd�dd„ ƒZdd„ ZdS )ÚTestTimeUT1SpecificIERSTablezrequires IERS_A)Úreasonc                 C   s   t tjƒ d S r/   )r   r   ÚIERS_Ar0   r   r   r   Útest_ut1_iers_A�   s    z,TestTimeUT1SpecificIERSTable.test_ut1_iers_Ac              
   C   sŽ   t  ¡ }tj ¡ }|j|dd�\}}|tjks2t‚tj 	tj ¡ ¡�@ |jdd�\}}||ksbt‚t
 tj¡� |j W 5 Q R X W 5 Q R X d S )NTr   )r   r   r   ZIERS_Br   r   ZTIME_BEYOND_IERS_RANGEr
   r   r   ÚpytestZraisesZIERSRangeErrorr   )r*   r   Ziers_bZdelta1Zstatus1r   r   r   r   r   Útest_ut1_iers_B“   s    
z,TestTimeUT1SpecificIERSTable.test_ut1_iers_BN)	r2   r3   r4   rG   ÚmarkZskipifÚ
HAS_IERS_ArF   rH   r   r   r   r   rC   Ž   s   
rC   )Ú	functoolsÚnumpyr'   rG   Zastropy.timer   Zastropy.utils.iersr   r   r   ÚpartialZallcloser)   r@   rE   r   ÚOSErrorrJ   r   rI   Zremote_datar   r5   rC   r   r   r   r   Ú<module>   s"   
,7