U
    e»{jt  ã                   @   s¬   d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlm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 )é    N)Útree)ÚW07ÚW08ÚW21ÚW41)Úparse)ÚResourceÚVOTableFile)Úget_pkg_data_filename)ÚAstropyDeprecationWarningc               	   C   s@   ddi} t jd ddd�}t t¡� t  d|| ¡ W 5 Q R X d S )NÚverifyÚ	exceptionZ	astroyearÚ1)ÚnameZ	arraysizeZX2100)r   ÚFieldÚpytestÚraisesr   Zcheck_astroyear)ÚconfigÚfield© r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/votable/tests/tree_test.pyÚtest_check_astroyear_fail   s    r   c               	   C   s0   ddi} t  t¡� t dd| ¡ W 5 Q R X d S )Nr   r   é*   Zfoo)r   r   r   r   Zcheck_string)r   r   r   r   Útest_string_fail   s    r   c                  C   sR   t  ¡ } t  ¡ }| j |¡ t  | ¡}|j |¡ |j t j	| dddd�g¡ d S )NZTestÚfloatÚmag)r   ÚdatatypeÚunit)
r   r	   r   Ú	resourcesÚappendÚTableZtablesÚfieldsÚextendr   )ZvotableÚresourceÚtabler   r   r   Útest_make_Fields   s    
ÿr%   c                  C   sþ   t tdƒƒ} | jd dkst‚t | j¡dks2t‚t tdƒƒ} | jd dksPt‚t | j¡dksdt‚t tdƒƒ} | jd dks‚t‚t | j¡dks–t‚t td	ƒƒ} | jd d
ks´t‚t | j¡dksÈt‚t tdƒƒ} | jd dksæt‚t | j¡dksút‚d S )Nzdata/irsa-nph-error.xmlÚversionú1.0Zcdszdata/names.xmlú1.1zdata/gemini.xmlú1.2zdata/binary2_masked_strings.xmlú1.3zdata/timesys.xmlú1.4Zvounit)r   r
   Ú_configÚAssertionErrorr   Z_get_default_unit_format)Údatar   r   r   Útest_unit_format*   s    r/   c               	   C   s\   d} t  t¡� tt | ¡dd� W 5 Q R X d}tt |¡dd� d}tt |¡dd� dS )z¡
    A version 1.4 VOTable must use the same namespace as 1.3.
    (see https://www.ivoa.net/documents/VOTable/20191021/REC-VOTable-1.4-20191021.html#ToC16)
    sö   <?xml version="1.0" encoding="utf-8"?>
        <VOTABLE version="1.4" xmlns="http://www.ivoa.net/xml/VOTable/v1.4"
                               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <RESOURCE/>
        </VOTABLE>
    r   ©r   sö   <?xml version="1.0" encoding="utf-8"?>
        <VOTABLE version="1.4" xmlns="http://www.ivoa.net/xml/VOTable/v1.3"
                               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <RESOURCE/>
        </VOTABLE>
    sö   <?xml version="1.0" encoding="utf-8"?>
        <VOTABLE version="1.3" xmlns="http://www.ivoa.net/xml/VOTable/v1.3"
                               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <RESOURCE/>
        </VOTABLE>
    N)r   Úwarnsr   r   ÚioÚBytesIO)Zbad_namespaceZgood_namespace_14Zgood_namespace_13r   r   r   Útest_namespace_warning<   s    r4   c               
   C   sD  t  t¡� tdd� W 5 Q R X dD ]} t| d� q$dD ](} t jtdd�� t| d� W 5 Q R X q8tƒ }dD ]
} | |_qldD ]$} t jtdd�� | |_W 5 Q R X q|d	}d
}d}dD ]&}tt 	|| | | | ¡dd� q²tt 	|d | d | ¡dd� dD ]>}t  t
¡�( tt 	|| | | | ¡dd� W 5 Q R X �q dS )a  
    VOTableFile.__init__ allows versions of '1.0', '1.1', '1.2', '1.3' and '1.4'.
    The '1.0' is curious since other checks in parse() and the version setter do not allow '1.0'.
    This test confirms that behavior for now.  A future change may remove the '1.0'.
    r'   ©r&   )r(   r)   r*   r+   )z0.9ú2.0z3should be in \('1.0', '1.1', '1.2', '1.3', '1.4'\).)Úmatch)r'   r6   z5supports VOTable versions '1.1', '1.2', '1.3', '1.4'$s8   <?xml version="1.0" encoding="utf-8"?><VOTABLE version="s*   " xmlns="http://www.ivoa.net/xml/VOTable/vsM   " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><RESOURCE/></VOTABLE>)s   1.1s   1.2ó   1.3r   r0   s   1.4r8   )s   1.0s   2.0N)r   r1   r   r	   r   Ú
ValueErrorr&   r   r2   r3   r   )r&   ZvotÚbeginÚmiddleÚendZbversionr   r   r   Útest_version[   sF     ÿ ÿÿ ÿ"þr=   c                 C   sJ   t | d�}|j tƒ ¡ t ¡ }| |¡ | d¡ | ¡ }| 	d¡}|S )Nr5   r   zutf-8)
r	   r   r   r   r2   r3   Zto_xmlÚseekÚreadÚdecode)r&   Zvotable_fileZ	xml_bytesÚbstringÚsr   r   r   Úvotable_xml_stringŽ   s    



rC   c                  C   s”   t dƒ} d| kst‚d| ks t‚t dƒ} d| ks4t‚d| ks@t‚t dƒ} d| ksTt‚d	s\t‚d
| ksht‚t dƒ} d| ks|t‚d	s„t‚d| ks�t‚d S )Nr(   z,xmlns="http://www.ivoa.net/xml/VOTable/v1.1"zDxsi:noNamespaceSchemaLocation="http://www.ivoa.net/xml/VOTable/v1.1"r)   z,xmlns="http://www.ivoa.net/xml/VOTable/v1.2"zDxsi:noNamespaceSchemaLocation="http://www.ivoa.net/xml/VOTable/v1.2"r*   z,xmlns="http://www.ivoa.net/xml/VOTable/v1.3"z9xsi:schemaLocation="http://www.ivoa.net/xml/VOTable/v1.3 z0http://www.ivoa.net/xml/VOTable/VOTable-1.3.xsd"r+   z0http://www.ivoa.net/xml/VOTable/VOTable-1.4.xsd")rC   r-   )Úxmlr   r   r   Útest_votable_tagš   s    rE   )r2   r   Zastropy.io.votabler   Zastropy.io.votable.exceptionsr   r   r   r   Zastropy.io.votable.tabler   Zastropy.io.votable.treer   r	   Zastropy.utils.datar
   Zastropy.utils.exceptionsr   r   r   r%   r/   r4   r=   rC   rE   r   r   r   r   Ú<module>   s   3