o
    H+ i%                     @   sp  d dl mZmZ d dlmZmZ d dlmZmZmZm	Z	 d dlm
Z
 d dlZze W n ey5   eZY nw g dZG dd deZed	d
eidZeddd dD d
eidZedd
eidZedZ		d3ddZd3ddZdd Zdd Zdd Zdd Zdd Zd d! Zd3d"d#Zd$d% Z G d&d' d'Z!e! Z"ddd(e"fd)d*Z#d+d, Z$d-d. Z%d/d0 Z&d1d2 Z'dS )4    )XPathElementBase)
fromstringXHTML_NAMESPACE)_forms_xpath_options_xpath_nons_transform_result)defsN)FormNotFound	fill_formfill_form_htmlinsert_errorsinsert_errors_htmlDefaultErrorCreatorc                   @   s   e Zd ZdZdS )r   z*
    Raised when no form can be found
    N)__name__
__module____qualname____doc__ r   r   ^/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/lxml/html/formfill.pyr      s    r   zKdescendant-or-self::form[name=$name]|descendant-or-self::x:form[name=$name]x)
namespaces|c                 C   s   g | ]}d | qS )zdescendant-or-self::r   ).0Z_tagr   r   r   
<listcomp>   s    r   )inputselecttextareazx:inputzx:selectz
x:textareaz-//label[@for=$for_id]|//x:label[@for=$for_id]z"descendant-or-self::*[@name=$name]c                 C   s   t | ||d} t| | d S Nform_id
form_index)
_find_form
_fill_form)elvaluesr!   r"   r   r   r   r      s   r   c                 C   s@   t | }t| trt| }nt| }t||||d t||S r   )type
isinstance
basestringr   copydeepcopyr   r	   )htmlr&   r!   r"   result_typedocr   r   r   r   &   s   



r   c              	   C   s   i }t |dr| }t| }|D ]Z}|d}|sqt|r5||g }t|ttfs/|g}t|| q||vr:q||d}|d ||< || }t|ttfraz|| }W n t	y`   Y qw |dkrfqt
|| qd S )Nmixednamer      )hasattrr/   _input_xpathget_takes_multipler(   listtuple_fill_multiple
IndexError_fill_single)r%   r&   countsZinputsr   r0   valueindexr   r   r   r$   /   s8   

r$   c                 C   s<   t | jdkr| drdS | dd }|dv rdS dS )Nr   ZmultipleTr'    )radiocheckboxF)r   tagr4   lower)r   r'   r   r   r   r5   M   s   r5   c                 C   s   |  dd }|dkr7|  d}|d u r.|sd}n|d }t|tr'|dk}t| | d S t| ||v  d S |dkrI|  d}t| ||v  d S t| jd	ksRJ t| D ]}| d}|d u re| }t	|||v  qVd S )
Nr'   r>   r@   r<   Fr   onr?   r   )
r4   rB   r(   r)   _checkr   rA   r   Ztext_content_select)r   r<   r'   vresultoptionr   r   r   r8   V   s*   



r8   c                 C   .   |r
|  dd d S d| jv r| jd= d S d S )Ncheckedr>   setattrib)r%   checkr   r   r   rD   r   
   
rD   c                 C   rI   )Nselectedr>   rK   )r%   r   r   r   r   rE   y   rO   rE   c                 C   s(   t | jdkr|| _d S | d| d S )Nr   r<   )r   rA   textrL   )r   r<   r   r   r   r:      s   
r:   c                 C   s   |d u r|d u rt | }|D ]}|  S td|d ur@| |}|d ur'|S t| |d}|r3|d S tdtdt| f |d ur_t | }z|| W S  ty^   td|t|f w d S )NzNo forms in pager0   r   z-No form with the name or id of %r (forms: %s)z, z3There is no form with the index %r (%i forms found))	r   r   get_element_by_id_form_name_xpathidjoin_find_form_idsr9   len)r%   r!   r"   formsformr   r   r   r#      s>   


r#   c                 c   s    t | }|sdV  d S t|D ]4\}}|dr3|dr,d|d|df V  q|dV  q|dr?|dV  qd| V  qd S )Nz
(no forms)rU   r0   z%s or %sz(unnamed form %s))r   	enumerater4   )r%   rY   r=   rZ   r   r   r   rW      s    




rW   c                   @   s4   e Zd ZdZdZdZdZdZdZdd Z	dd	 Z
d
S )r   Tdivzerror-messagezerror-blockZInvalidc                 K   s8   |  D ]\}}t| |std| t| || qd S )NzUnexpected keyword argument: %s)itemsr2   	TypeErrorsetattr)selfkwr0   r<   r   r   r   __init__   s   
zDefaultErrorCreator.__init__c                 C   s  | | j}| jr|d| j |r$| jr$|d|ddd | j  |d u s,|dkr/| j}t|tr:|	| nt|t
sEJ d| |pI| j|_|ri| jri| jrb|j|_d |_|d| d S |	| d S | }||}| jr}||| d S |j|_d |_||d | d S )Nclassr>    z.Bad message; should be a string or element: %rr   r1   )makeelementerror_container_tagerror_message_classrL   error_block_classr4   default_messager(   r   appendr)   rQ   block_insideinsert_beforetailinsertZ	getparentr=   )r`   r%   is_blockmessageerror_elparentposr   r   r   __call__   s4   



zDefaultErrorCreator.__call__N)r   r   r   rl   rk   rf   rg   rh   ri   rb   rt   r   r   r   r   r      s    r   errorc           
      C   sr   t | ||d} | D ]+\}}|d u rqt| ||D ]\}}	t|	ttd tfs.J d|	 t||	|| qqd S )Nr    zBad message: %r)r#   r]   _find_elements_for_namer(   r)   r'   r   _insert_error)
r%   errorsr!   r"   error_classerror_creatorr0   ru   rq   rp   r   r   r   r      s   r   c                 K   sB   t | }t| trt| }nt| }t||fi | t||S )N)r'   r(   r)   r   r*   r+   r   r	   )r,   r&   ra   r-   r.   r   r   r   r      s   



r   c                 C   s   t | jtjv st | jdkrd}nd}t | jdkr"|r"t| | | dr<t| | dd}|r<|D ]}t|| q4|| || d S )Nr   FTrZ   rU   )Zfor_id)r   rA   r
   Z
empty_tags
_add_classr4   _label_for_xpath)r%   ru   ry   rz   ro   labelslabelr   r   r   rw     s   

rw   c                 C   s8   |  dr| d|  dd |  d S | d| d S )Nrc   rd   )r4   rL   )r%   
class_namer   r   r   r{     s   
r{   c                 c   s    |d u r| |fV  d S | dr%| |dd  }|d ur#||fV  d S t| |d}|s/d S t|ttfs?|d |fV  d S t||D ]\}}|d u rMqD||fV  qDd S )N#r1   rR   r   )
startswithrS   _name_xpathr(   r6   r7   zip)rZ   r0   ru   r%   Zelserrr   r   r   rv     s(   


rv   )NN)(Z
lxml.etreer   r   Z	lxml.htmlr   r   r   r   r   r	   r
   r*   r)   	NameErrorstr__all__LookupErrorr   rT   rV   r3   r|   r   r   r   r$   r5   r8   rD   rE   r:   r#   rW   r   Zdefault_error_creatorr   r   rw   r{   rv   r   r   r   r   <module>   sV    

			
.
	