
[c           @` s  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d d l	 m
 Z
 m Z m Z d d l m Z d d l m Z d d l m Z d d	 l m Z m Z d d
 l m Z d d l m Z e e d e  Z y e j j d  Wn e k
 re  Z! n Xe" Z! e j# j$ e j# j% e&  d  Z' d d d     YZ( d d d     YZ) e j* j+ e, d   d d d     Y Z- d d d     YZ. d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsNi   (   t   assert_quantity_allcloset   catch_warningst   remote_datai   (   t   iers(   t   units(   t   QTable(   t   Timet	   TimeDelta(   t   urllib(   t   AstropyWarningu   FileNotFoundErroru   finals2000A.allu   iers_a_excerptt	   TestBasicc           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   u.   Basic tests that IERS_B returns correct valuesc         C` s  t  j j   t  j j d  k s% t  t  j j   } t  j j d  k	 sL t  t t  j j t  sg t  | d j	 t
 j k s t  | d j	 t
 j k s t  | d j	 t
 j k s t  t j d d d d d g  } t j d d d d	 d
 g  } | j | |  } t | t
 j  s!t  | j	 t
 j k s9t  t | d d d d d g t
 j d d t
 j t j t   | j d d	  \ } } Wd  QX| j | | d t \ } } t j | t  j k  st  | j d d	 d t \ } } | t  j k st  t | | d d d d }	 | j |	  }
 t |
 d d d d d g t
 j d d t
 j t | d   d k s|t  d  S(   Nu   UT1_UTCu   PM_xu   PM_yg   @BAg   BAg6?g%:ps?gNg?g        g      ?gI#=ga7g<q?g^Ss?t   atolg      ?g   vH7Bt   return_statust   formatu   jdt   scaleu   utci   (   R   t   IERSt   closet
   iers_tablet   Nonet   AssertionErrort   opent
   isinstanceR	   t   unitt   ut   secondt	   arcsecondt   npt   arrayt   ut1_utct   QuantityR   t   st   nst   pytestt   raisest
   IndexErrort   Truet   allt   FROM_IERS_Bt   TIME_BEYOND_IERS_RANGER
   t   len(   t   selft   iers_tabt   jd1t   jd2R    t   ut1_utc2t   status2t   ut1_utc4t   status4t   tt   ut1_utc3(    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_simple!   s8    c         C` s   t  j j   t  j j t  j  t  j j d  k	 s8 t  t t  j j t	  sS t  t  j j   t
 j t   t  j j d  Wd  QXd  S(   Nu   surely this does not exist(   R   R   R   R   t   IERS_B_FILER   R   R   R   R	   R$   R%   t   FILE_NOT_FOUND_ERROR(   R,   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_open_filenameE   s    c         C` sq   t  j j   t  j j d t j j t   t  j j d  k	 sE t
  t t  j j t  s` t
  t  j j   d  S(   Nu   file:(   R   t   IERS_AR   R   R   t   requestt   pathname2urlt   IERS_A_EXCERPTR   R   R   R   R	   (   R,   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_open_network_urlN   s
     (   t   __name__t
   __module__t   __doc__R6   R9   R>   (    (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyR      s   	$		t   TestIERS_AExcerptc           B` s   e  Z d    Z RS(   c         C` s  t  j j t  } | d j t j k s. t  d | d k sD t  d | d k sZ t  d | d k sp t  t j	 | d d k | d d k B| d d k B s t  | d j t j
 k s t  | d j t j
 k s t  d | d k s t  d | d k st  d | d k s%t  t j	 | d d k | d d k B| d d k B s`t  t d	 d
 d g d d } | j | d t \ } } | d t  j k st  t j	 | d t  j k  st  t | d d d g t j d d t j | j | d t \ } } } | d t  j k s2t  t j	 | d t  j k  sTt  t | d d d g t j d d t j t | d d d g t j d d t j t | d   d k st  d  S(   Nu   UT1_UTCu   Pu   UT1Flagu   Iu   Bu   PM_xu   PM_yu	   PolPMFlagg    @g    @g    @R   u   mjdR   i    i   gQxIw߿guP.2߿g?
z߿R   g      ?gݲCÖn?g>x҆r?gUr?g<X?g{/L
?g@7n1?i   (   R   R:   R   R=   R   R   R   R   R   R(   R   R
   R    R'   R)   t   FROM_IERS_AR   R"   R#   t   pm_xyt   arcsect   narcsecR+   (   R,   R-   R4   R    t   statust   pm_xt   pm_y(    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyR6   W   sB    ""(   R?   R@   R6   (    (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyRB   V   s   u   not HAS_IERS_At
   TestIERS_Ac           B` s   e  Z d    Z RS(   c         C` sI  t  j j   t  j j   } t j d d d d d g  } t j d d d d d g  } | j | | d t \ } } t j | t  j	 k  s t
  t | d	 d
 d
 d d g t j d d t j | j d d d t \ } } | t  j k s t
  t j   } | j | d t \ }	 }
 |
 t  j k s3t
  |	 d k sEt
  d S(   u;   Test that open() by default reads a 'finals2000A.all' file.g   @BAg   BAg6?g%:ps?gNg?g        g      ?R   gI#=ga7g<q?g^Ss?R   g      ?g   vH7BN(   R   R:   R   R   R   R   R    R'   R(   R)   R   R   R   R"   R#   R*   R
   t   nowt   FROM_IERS_A_PREDICTION(   R,   R-   R.   R/   R    RG   R0   R1   t   tnowR5   t   status3(    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyR6      s    (   R?   R@   R6   (    (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyRJ      s   t   TestIERS_Autoc           B` sS   e  Z d    Z d   Z d   Z d   Z d   Z e d    Z e d    Z	 RS(   c         C` s   d |  _  d |  _ t j j t j j t  d  |  _ t j j t j j t  d  |  _ t j j	 d t j j
 |  j   |  _ t j j	 d t j j
 |  j   |  _ t j   t d d d t j |  j   |  _ d	 S(
   u*   Set up useful data for the tests.
        i(   g      >@u   finals2000A-2016-02-30-testu   finals2000A-2016-04-30-testu   file://i
   R   u   jdN(   t   Nt   amet   ost   patht   joint   dirnamet   __file__t   iers_a_file_1t   iers_a_file_2t   normpatht   abspatht   iers_a_url_1t   iers_a_url_2R
   RK   R   R   t   arangeR4   (   R,   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   setup_class   s    		$$((c         C` s   t  j j   d S(   u#   Run this after every test.
        N(   R   t	   IERS_AutoR   (   R,   t   method(    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   teardown_method   s    c         C` s   t  j j d |  j  i t  j j d |  j  J t j t  4 } t  j j	   } | j
 |  j j |  j j  } Wd QXWd QXWd QXt | j  t  j j |  j  k s t  d S(   u   Regression test: make sure the error message in
        IERS_Auto._check_interpolate_indices() is formatted correctly.
        u   iers_auto_urlu   auto_max_ageN(   R   t   conft   set_tempR[   RQ   R$   R%   t
   ValueErrorR_   R   R    R4   R.   R/   t   strt   valuet   INTERPOLATE_ERRORR   R   (   R,   t   errR   t   delta(    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt!   test_interpolate_error_formatting   s    0c         C` s   t  j j d |  j  N t  j j d d  2 t  j j   } | j |  j j	 |  j j
  } Wd QXWd QXt | t j  s t  | j |  j f k s t  t | t j d g |  j  t j  d S(   uq   Make sure that iers.INTERPOLATE_ERROR's advice about setting
        auto_max_age = None actually works.
        u   iers_auto_urlu   auto_max_ageNgV88o̿(   R   Rb   Rc   R[   R   R_   R   R    R4   R.   R/   R   R   t   ndarrayR   t   shapeRP   R   R   R   R"   (   R,   R   Ri   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_auto_max_age_none   s    *c         C` s   t  j j d |  j  f t  j j d d  J t j t  4 } t  j j   } | j	 |  j
 j |  j
 j  } Wd QXWd QXWd QXt | j  d k s t  d S(   u9   Check that the minimum auto_max_age is enforced.
        u   iers_auto_urlu   auto_max_ageg      @NuA   IERS auto_max_age configuration value must be larger than 10 days(   R   Rb   Rc   R[   R$   R%   Rd   R_   R   R    R4   R.   R/   Re   Rf   R   (   R,   Rh   R   Ri   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_auto_max_age_minimum   s    0c         C` sJ   t  j j d t   t  j j   } Wd  QXt |  t  j k sF t  d  S(   Nu   auto_download(	   R   Rb   Rc   t   FalseR_   R   t   typet   IERS_BR   (   R,   R4   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   test_no_auto_download   s    c         C` s  t  j j d |  j  t  j j   } | d d d t j k sI t  | d d d t j k sj t  | j	 d } t
 | d d	 d
 t j | _ t j | j t
 d d d	 j  j d  s t  t j | j t
 d d d	 j  j d  s t  t
 | d d	 d t j | _ t j | j t
 d d d	 j  j d  sPt  t t  j  ; } t j t  # } | j t
 d d d	 j  Wd  QXWd  QXd t |  k st  t |  d k st  d t | d j  k st  t t  j  ) } | j t
 d d d	 j d t Wd  QXt |  d k s=t  d t | d j  k s\t  t  j j d d   F t t  j  # } | j t
 d d d	 j  Wd  QX| st  Wd  QXWd  QXt  j j d |  j   t j | j t
 d d d	 j  j d  st  t j | j t
 d d d	 j  j d  s>t  | d d d t j k s_t  | d d d t j k st  Wd  QXd  S(   Nu   iers_auto_urlu   MJDi    g    @ig    `@u   predictive_mjdR   u   mjdi   iP  g|R?i`  gV88o̿i<   u4   interpolating from IERS_Auto using predictive valuesi   u%   IERS_Auto predictive values are olderR   u   auto_max_ageg333333ӿg    @(   R   Rb   Rc   R[   R_   R   R   t   dR   t   metaR
   t	   _time_nowR   t   allcloseR    t   jdRf   R   t   IERSStaleWarningR$   R%   Rd   Re   R+   t   messageR'   R   R\   (   R,   t   datt   predictive_mjdt   warnsRh   (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyR6      s:    !! 33 3(("33!(
   R?   R@   R^   Ra   Rj   Rm   Rn   R   Rr   R6   (    (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyRO      s   					
(    (    (    (    (/   t
   __future__R    R   R   R   RR   R$   t   numpyR   t   tests.helperR   R   R   t    R   R   R   t   tableR	   t   timeR
   R   t   extern.six.movesR   t   utils.exceptionsR   t   getattrt   __builtins__t   IOErrorR8   R:   R   Ro   t
   HAS_IERS_AR'   RS   RT   RU   RV   R=   R   RB   t   markt   skipifRe   RJ   RO   (    (    (    sA   lib/python2.7/site-packages/astropy/utils/iers/tests/test_iers.pyt   <module>   s*   "
!8/+