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 d dl	m
Z
mZ dZdZe jdd	„ ƒZdd
d„Zdd„ Zdd„ Zdd„ Zdd„ Zd dd„Zdgdfdd„Zd!dd„Zd"dd„ZdS )#é    N)Úceil)Úonline_docs_root)Ú
exceptions)Ú	XMLWriterÚ
xml_escapez¥<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
        "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
aâ  
body {
font-family: sans-serif
}
a {
text-decoration: none
}
.highlight {
color: red;
font-weight: bold;
text-decoration: underline;
}
.green { background-color: #ddffdd }
.red   { background-color: #ffdddd }
.yellow { background-color: #ffffdd }
tr:hover { background-color: #dddddd }
table {
        border-width: 1px;
        border-spacing: 0px;
        border-style: solid;
        border-color: gray;
        border-collapse: collapse;
        background-color: white;
        padding: 5px;
}
table th {
        border-width: 1px;
        padding: 5px;
        border-style: solid;
        border-color: gray;
}
table td {
        border-width: 1px;
        padding: 5px;
        border-style: solid;
        border-color: gray;
}
c                 c   st   |   t¡ | jdddd��P |  d¡�: |  dd¡ |  dt¡ |  d	¡� d V  W 5 Q R X W 5 Q R X W 5 Q R X d S )
NÚhtmlzhttp://www.w3.org/1999/xhtmlzen-US)ZxmlnsÚlangÚheadÚtitleúVO Validation resultsÚstyleÚbody)ÚwriteÚhtml_headerÚtagÚelementÚdefault_style)Úw© r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/votable/validator/html.pyÚmake_html_header;   s    
r   c                 C   sˆ   t |d |…  d¡ƒ}t |||d …  d¡ƒ}t ||d d …  d¡ƒ}|  d¡ |  |¡ |  d|› d�¡ |  |¡ |  d¡ d S )Núutf-8é   z  z<span class="highlight">z</span>z

)r   Údecoder   )r   ÚlineÚncharZpart1ÚcharZpart2r   r   r   Úwrite_source_lineG   s    


r   c                 C   sÒ   t  |¡}|d s|  |¡ n°|  d|d d›d�¡ |d rZ|  d t|d |d ¡¡ |d	 }t|d	 tƒsz| d
¡}|  t	|ƒ¡ |  d¡ d|d   kr®t
|ƒk rÎn nt| ||d d  |d ƒ d S )NZis_somethingzLine ZnlineÚdz: Úwarningz<a href="{}/{}">{}</a>: Zdoc_urlÚmessager   Ú
r   r   )r   Zparse_vowarningÚdatar   Úformatr   Ú
isinstanceÚstrr   r   Úlenr   )r   r   Ú	xml_linesr   Úmsgr   r   r   Úwrite_warningS   s&    
  ÿÿ

 r)   c              	   C   s|   t  d|¡}|rd|  d t| d¡ƒt| d¡ƒ¡¡ t| |t| d¡ƒd  t| d¡ƒd ƒ n|  |¡ |  d¡ d S )NzO(WARNING|ERROR|INFO) \(l.(?P<line>[0-9]+), c.(?P<column>[0-9]+)\): (?P<rest>.*)zLine {:d}: {}
r   Úrestr   Úcolumnr!   )	ÚreÚsearchr   r#   ÚintÚgroupr   r   r"   )r   r   r'   Úmatchr   r   r   Úwrite_votlint_warningh   s$    ý ÿÿ  ÿ
r1   c                 C   sø  d| kr| d d k	rd S |   ¡ }| ¡ }tj |  ¡ d¡}t|ddd���¤}t|ƒ}t|ƒ��† | 	d¡�2 |j	ddd	�� | 
| j d
¡¡ W 5 Q R X W 5 Q R X | d¡ | 	d¡�( | ¡  | d D ]}t|||ƒ qÈW 5 Q R X | d dk�rZ| d¡ | dd¡ | d }t|tƒ�s&| d
¡}| |  ¡ d d¡}| 	d¡� | 
|¡ W 5 Q R X d| k�rà| d dk�rà| d¡ | dd¡ | d }t|tƒ�s¦| d
¡}| 	d¡�* | ¡  | ¡ D ]}t|||ƒ �qÂW 5 Q R X W 5 Q R X W 5 Q R X d S )NÚnetwork_errorú
index.htmlr   r   ©ÚencodingÚpÚazvo.xml©ÚhrefÚasciiÚhrÚpreÚwarningsÚxmllintFzxmllint results:Zxmllint_contentú/Ú Úvotlintzvotlint results:Zvotlint_content)Zget_xml_contentÚ
splitlinesÚosÚpathÚjoinZget_dirpathÚopenr   r   r   r"   Úurlr   r   Z_flushr)   r$   r%   Úreplacer1   )ÚresultÚxmlr'   rD   Úfdr   r   Úcontentr   r   r   Úwrite_result|   sH    &





rM   c              
   C   s$  |   d¡�� |   d¡�P d|krB|d d k	rB|  |j d¡¡ n"| jd|j d¡| ¡ › d�d� W 5 Q R X d|krÒ|d d k	rÒ| jdt|d ƒdd	id
� |  dd¡ |  dd¡ |  dd¡ |  dd¡ �nD| jddddid
� |d rød	}d}n$|d �rd}t|d ƒ}nd}d}| jd|d|id
� |d }|d d k�rLd}n|d dk�r`d	}nd}| jd|d|id
� |d dk�r�d}d}n.|d dk�r¨d	}d}n|d dk�r¾d}d}| jd|d|id
� d|k�rú|d �rðd}d}nd	}d}nd}d}| jd|d|id
� W 5 Q R X d S )NÚtrÚtdr2   r:   r7   z/index.htmlr8   ÚclassÚred)Zattribú-ÚgreenZnexceptionsZFatalZ	nwarningsÚyellowÚversionr>   r@   FÚexpectedZgoodÚbrokenÚnetZ	incorrectÚinvalidrA   ZPassedZFailedú?)r   r"   rG   r   r   Zget_htmlpathr%   )r   rI   Úclsr(   r   r   r   Úwrite_result_row©   sf    
ý


r\   Úresultséô  c                    sZ  ‡ ‡‡fdd„}t ttt|ƒƒ| ƒƒ‰ttdtt|ƒdƒ|ƒƒD �]\}}|||| … }tj 	|ˆ › d|d›d�¡}	t
|	dd	d
��È}
t|
ƒ‰tˆƒ�¬ ||ƒ ˆ d|¡ ˆ d¡�z ˆ d¡�N ˆ dd¡ ˆ dd¡ ˆ dd¡ ˆ dd¡ ˆ dd¡ ˆ dd¡ W 5 Q R X |D ]}tˆ|ƒ �qW 5 Q R X ||ƒ W 5 Q R X W 5 Q R X qBd S )Nc              	      sØ   ˆdkrd S ˆ  d¡�¸ | dkrBˆjddˆ › d| d d›d�d	� tˆƒD ]P}|| krjˆ t|d ƒ¡ n&ˆjdt|d ƒˆ › d|d›d�d	� ˆ d
¡ qJ| ˆd k rÊˆjddˆ › d| d d›d�d	� W 5 Q R X d S )Nr   Úcenterr   r7   z<< Ú_Ú02dú.htmlr8   ú z>>)r   r   Úranger"   r%   )ÚjÚi©ÚbasenameZnpagesr   r   r   Úwrite_page_linksë   s    "&z%write_table.<locals>.write_page_linksr   r   r`   ra   rb   r   r   r4   Zh2ÚtablerN   ÚthÚURLZNetworkZWarningsZSchemaZExpectedrA   )r.   r   Úfloatr&   Ú	enumeraterd   ÚmaxrC   rD   rE   rF   r   r   r   r   r\   )rh   Únamer]   ÚrootÚ
chunk_sizeri   rf   re   Ú
subresultsrD   rK   rI   r   rg   r   Úwrite_tableê   s*    $
rt   r6   c           	   
   C   sà   |   d¡�Ì t|ƒ}|d kr$t|ƒ}|dkr2d}ntt|ƒƒ| }|   d¡�H |D ]}|  |¡ qR| jd||› d�d� t|ƒD ]}|  |¡ q€W 5 Q R X t|ƒd›d	|d
›d�}|   d¡� |  |¡ W 5 Q R X W 5 Q R X d S )NrN   r   g        rO   r7   z_00.htmlr8   r   ú (ú.2%ú))	r   Úlistr&   rm   Ústartr   ÚreversedÚendr"   )	r   rh   rp   rs   ÚinsideÚtotalÚ
percentager   Únumbersr   r   r   Ú
add_subset  s     r€   c                 C   sŒ   t j |d¡}t|ddd��f}t|ƒ}t|ƒ�J | dd¡ | d¡�( | D ]}t|f|ždt	|ƒiŽ qLW 5 Q R X W 5 Q R X W 5 Q R X d S )	Nr3   r   r   r4   Zh1r   rj   r}   )
rC   rD   rE   rF   r   r   r   r   r€   r&   )Zsubsetsr]   rq   rD   rK   r   Zsubsetr   r   r   Úwrite_index)  s    
r�   c           	      C   sT   |d krt |ƒ}tt |ƒƒ| }t |ƒd›d|d›d�}t||d | || |ƒ d S )Nr   ru   rv   rw   rc   )r&   rm   rt   )	rq   rh   rp   rs   r|   r}   rr   r~   r   r   r   r   Úwrite_index_table5  s
    r‚   )r   )r]   r^   )r]   )NNr^   )Ú
contextlibrC   r,   Úmathr   Zastropyr   Zastropy.io.votabler   Zastropy.utils.xml.writerr   r   r   r   Úcontextmanagerr   r   r)   r1   rM   r\   rt   r€   r�   r‚   r   r   r   r   Ú<module>   s,   (

-A
+
     ÿ