o
    QDi?	                     @  sx   d dl 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	mZ dd	l
mZ er2dd
lmZ G dd de	ZdS )    )annotationsN)TYPE_CHECKING   types)platform)Parsersystem   )HtmlControl)TableResourcec                   @  s.   e Zd ZdZdZdgZdddZdd
dZdS )
HtmlParserzHTML parser implementation.Tstringreturntypes.ICellStreamc                 #  s    t jj  | jj dd}t| jj	}|
|j}|r$ |d nd }|s*d S |dd|d |d |dd } fdd|D }|d} fd	d|
d
D }|V   fdd|D } fdd|D }|E d H  d S )Nhtml)parserr   theadtrtbodyc                   s    g | ]}t |d kr |qS )r   len).0rpq Y/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/formats/html/parser.py
<listcomp>+   s     z6HtmlParser.read_cell_stream_create.<locals>.<listcomp>c                      g | ]} |  qS r   text)r   thr   r   r   r   -       zth,tdc                   s   g | ]	} | d qS )td)findr   r   r   r   r   r   1   s    c                   s*   g | ]}t |d kr fdd|D qS )r   c                   r   r   r    )r   r$   r   r   r   r   2   r#   zAHtmlParser.read_cell_stream_create.<locals>.<listcomp>.<listcomp>r   r&   r   r   r   r   2   s   * )r   pyqueryPyQueryloadertext_streamreadr   from_dialectresourcedialectr%   selectorchildrenpop)selfpagecontroltablestabledata	first_rowheadersr   r   r   read_cell_stream_create   s.   
z"HtmlParser.read_cell_stream_createsourcer   c           
      C  s   d}|A |d7 }|j jD ]
}|d| d7 }q|d7 }|jD ]}|j| jd}|d7 }|D ]
}|d| d7 }q.|d7 }qW d    n1 sHw   Y  |d7 }tjdd	| jjd
}|	| W d    n1 skw   Y  t
| j}||j}	|	S )Nz<html><body><table>
z<tr>z<td>z</td>z</tr>
r   z</table></body></html>wtF)deleteencoding)schemafield_names
row_streamto_listsupported_typestempfileNamedTemporaryFiler-   r>   writer	   create_loaderwrite_byte_streamname)
r2   r;   r   rI   rowcellscellfiler)   resultr   r   r   write_row_stream:   s0   


zHtmlParser.write_row_streamN)r   r   )r;   r   )__name__
__module____qualname____doc__requires_loaderrC   r:   rO   r   r   r   r   r      s    
!r   )
__future__r   rD   typingr    r   r   r	   r   r4   r   	resourcesr   r   r   r   r   r   <module>   s    