U
    e»{jŽ  ã                   @   st   d Z ddlZddlmZ ddlmZmZ dgZdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zddd„ZdS )zy
Validates a large collection of web-accessible VOTable files,
and generates a report as a directory tree of HTML files.
é    N)Úget_pkg_data_filenameé   )ÚhtmlÚresultÚmake_validation_reportc                   C   s   t j t¡S )N)ÚosÚpathÚdirnameÚ__file__© r   r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/votable/validator/main.pyÚ
get_srcdir   s    r   c                 C   s®   dd l }dddg}tƒ }g }|D ]ˆ}td|› d�ƒ}| |d¡�b}| ¡ D ]R}	t|ƒ |	 ¡ }	|	|kr’tj|	| d��}
||
d	< W 5 Q R X | 	|	¡ | 
|	¡ qJW 5 Q R X q |S )
Nr   ZgoodÚbrokenZ	incorrectzdata/urls/cone.z.dat.gzÚrb©ÚrootÚexpected)ÚgzipÚsetr   ÚopenÚ	readlinesÚnextÚstripr   ÚResultÚappendÚadd)ÚdestdirÚsr   ÚtypesÚseenÚurlsÚtypeÚfilenameÚfdÚurlÚrr   r   r   Úget_urls   s     

r&   c              	   C   s.   | \}}t j||d��}| ¡  W 5 Q R X d S ©Nr   )r   r   Zdownload_xml_content©Úargsr$   r   r%   r   r   r   Údownload,   s    r*   c              	   C   s.   | \}}t j||d��}| ¡  W 5 Q R X d S r'   )r   r   Úvalidate_vor(   r   r   r   r+   2   s    r+   c              	   C   s>   | \}}}t j||d��}|d d kr0| |¡ W 5 Q R X d S )Nr   Znetwork_error)r   r   Zvalidate_with_votlint)r)   Zpath_to_stilts_jarr$   r   r%   r   r   r   Úvotlint_validate8   s    
r,   c              	   C   s0   | \}}t j||d��}t |¡ W 5 Q R X d S r'   )r   r   r   Zwrite_resultr(   r   r   r   Úwrite_html_result?   s    r-   c                 C   s$   | \}}}t j|f|žd|iŽ d S )NÚtotal)r   Zwrite_index_table)r)   Úsubsetr   r.   r   r   r   Úwrite_subindexE   s    
r0   ú$astropy.io.votable.validator.resultsTc              
      sÆ  ddl m}m}m} ˆdk	r6tj ˆ¡s6tˆ› d�ƒ‚tj ˆ ¡‰ tj 	ˆ ¡‰ ˆdkrx|ddƒ�}t
ˆ |ƒ‰W 5 Q R X nHdd„ ˆD ƒ‰|d	dƒ |ˆƒD ]&}tj|ˆ d
��}	t|	d< W 5 Q R X q˜‡ fdd„ˆD ƒ}
|ddƒ |jt|
|d� |ddƒ |jt|
|d� ˆdk	�r>|ddƒ ‡ ‡fdd„ˆD ƒ}|jt||d� |ddƒ |jt|
|d� |ddƒ�}t ˆˆ |¡}W 5 Q R X |ddƒ t |ˆˆ ¡ |ddƒ ‡ ‡fdd„|D ƒ}|jt||d� dS )a¾  
    Validates a large collection of web-accessible VOTable files.

    Generates a report as a directory tree of HTML files.

    Parameters
    ----------
    urls : list of str, optional
        If provided, is a list of HTTP urls to download VOTable files
        from.  If not provided, a built-in set of ~22,000 urls
        compiled by HEASARC will be used.

    destdir : path-like, optional
        The directory to write the report to.  By default, this is a
        directory called ``'results'`` in the current directory. If the
        directory does not exist, it will be created.

    multiprocess : bool, optional
        If `True` (default), perform validations in parallel using all
        of the cores on this machine.

    stilts : path-like, optional
        To perform validation with ``votlint`` from the the Java-based `STILTS`_
        VOTable parser, in addition to `astropy.io.votable`, set this to the
        path of the ``'stilts.jar'`` file.  ``java`` on the system shell
        path will be used to run it.

    Notes
    -----
    Downloads of each given URL will be performed only once and cached
    locally in *destdir*.  To refresh the cache, remove *destdir*
    first.
    r   )ÚProgressBarÚSpinnerÚcolor_printNz does not exist.zLoading URLsÚgreenc                 S   s   g | ]}t |tƒr| ¡ ‘qS r   )Ú
isinstanceÚstrÚencode©Ú.0r$   r   r   r   Ú
<listcomp>~   s     
 z*make_validation_report.<locals>.<listcomp>zMarking URLsr   r   c                    s   g | ]}|ˆ f‘qS r   r   r9   )r   r   r   r;   …   s     zDownloading VO files)ÚmultiprocesszValidating VO fileszValidating with votlintc                    s   g | ]}ˆ|ˆ f‘qS r   r   )r:   Úx)r   Ústiltsr   r   r;   �   s     zGenerating HTML fileszGrouping resultszGenerating indexzGenerating subindicesc                    s   g | ]}|ˆ t ˆƒf‘qS r   )Úlen)r:   r/   )r   r    r   r   r;   œ   s     )Zastropy.utils.consoler2   r3   r4   r   r   ÚexistsÚ
ValueErrorÚ
expanduserÚabspathr&   r   r   r!   Úmapr*   r+   r,   r-   Zget_result_subsetsr   Zwrite_indexr0   )r    r   r<   r>   r2   r3   r4   r   r$   r%   r)   Zvotlint_argsZsubsetsZsubindex_argsr   )r   r>   r    r   r   J   s@    '







)Nr1   TN)Ú__doc__r   Zastropy.utils.datar   Ú r   r   Ú__all__r   r&   r*   r+   r,   r-   r0   r   r   r   r   r   Ú<module>   s        ü