σ
ίΘ[c           @` s£   d  Z  d d l m Z m Z m Z m 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 d
 d d d    Z d S(   u  Temporary solution until `astropy.vo.validator.Conf.conesearch_master_list`
includes ``<testQuery>`` fields.

In case USVO service is unstable, it does the following:

    #. Try USVO production server.
    #. If fails, try USVO test server (has latest bug fix, but does not
       contain all registered services).
    #. If SR > 0.1, force SR to be 0.1.
    #. If fails, use RA=0 DEC=0 SR=0.1.

i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   minidom(   t   OrderedDicti   (   t   get_readable_fileobj(   t
   deprecated(   t   AstropyUserWarningu   2.0t   alternativeu4   astroquery.vo_conesearch.validator.tstquery.parse_csc         C` sa  t  |  t  r! |  j d  }  n  d j |   } d j |   } d d d g } t   } t } d } y4 t | d d	 d
 t  } t j |  } Wd QXWn  t	 k
 r9}	 yY t
 j d j | t |	  |  t  t | d d	 d
 t  } t j |  } Wd QXWq:t	 k
 r5}	 t } d j | t |	   } q:Xn X| sέ| j d  }
 |
 rΕx | D]b } y1 |
 d j |  d j j j   | | j   <Wq\t	 k
 r½}	 t } d j |   } q\Xq\Wqέt } d j |   } n  d } | rt i d d 6d d 6| d 6 } t
 j | t  n@ | d | k r]t
 j d j | d | |   t  | | d <n  | S(   u:   Return ``<testQuery>`` pars as dict for given Resource ID.u   asciiu?   http://vao.stsci.edu/directory/getRecord.aspx?id={0}&format=xmluC   http://vaotest.stsci.edu/directory/getRecord.aspx?id={0}&format=xmlu   rau   decu   sru    t   encodingu   binaryt   show_progressNu   {0} raised {1}, trying {2}u   {0} raised {1}, using defaultu	   testQueryi    u+   Incomplete testQuery for {0}, using defaultu)   No testQuery found for {0}, using defaultu   0.1u   0u   RAu   DECu   SRu)   SR={0} is too large, using SR={1} for {2}(   t
   isinstancet   bytest   decodet   formatR   t   FalseR   R   t   parset	   Exceptiont   warningst   warnt   strR   t   Truet   getElementsByTagNamet
   firstChildt	   nodeValuet   stript   upper(   t   idt   urlt
   backup_urlt   tqpt   dt   urls_failedt   urls_errmsgt   fdt   domt   et   tqt   keyt
   default_sr(    (    s<   lib/python2.7/site-packages/astropy/vo/validator/tstquery.pyt   parse_cs   s^    			
'!(   t   __doc__t
   __future__R    R   R   R   R   t   xml.domR   t   collectionsR   t
   utils.dataR   t   utils.decoratorsR   t   utils.exceptionsR   R)   (    (    (    s<   lib/python2.7/site-packages/astropy/vo/validator/tstquery.pyt   <module>   s   "