509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
)è2YÙ%  ã               @   sx  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ye W n ek
rl   eZY nX dddd	d
dgZG dd„ deƒZeddeid�Zedjdd„ d7D ƒƒdeid�Zeddeid�ZedƒZd8dd„Zd9d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+d,„ Z G d-d„ de!ƒZ"e"ƒ Z#ddd.e#fd/d	„Z$d0d
„ Z%d1d2„ Z&d3d4„ Z'd5d6„ Z(dS );é    )Ú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   ú /usr/lib64/python3.6/formfill.pyr      s   zKdescendant-or-self::form[name=$name]|descendant-or-self::x:form[name=$name]Úx)Z
namespacesú|c             C   s   g | ]}d | ‘qS )zdescendant-or-self::r   )Ú.0Z_tagr   r   r   ú
<listcomp>   s    r   ÚinputÚselectÚtextareaúx:inputúx:selectú
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    c             C   s@   t | ƒ}t| tƒrt| ƒ}n
tj| ƒ}t||||d� t||ƒS )N)r!   r"   )ÚtypeÚ
isinstanceÚ
basestringr   ÚcopyÚdeepcopyr   r	   )Úhtmlr&   r!   r"   Úresult_typeÚdocr   r   r   r   &   s    


c             C   sè   i }t |dƒr|jƒ }t| ƒ}xÄ|D ]¼}|jdƒ}|s8q$t|ƒrl|j|g ƒ}t|ttfƒs`|g}t||ƒ q$||krxq$q$|j|dƒ}|d ||< || }t|ttfƒrÌy|| }W qÖ t	k
rÈ   w$Y qÖX n
|dkrÖq$t
||ƒ q$W d S )NÚmixedÚnamer   é   )Úhasattrr/   Ú_input_xpathÚgetÚ_takes_multipler(   ÚlistÚtupleÚ_fill_multipleÚ
IndexErrorÚ_fill_single)r%   r&   ZcountsZinputsr   r0   ÚvalueÚindexr   r   r   r$   /   s4    



r$   c             C   s<   t | jƒdkr| jdƒrdS | jddƒjƒ }|d	kr8dS dS )
Nr   ZmultipleTr'   Ú ÚradioÚcheckboxF)r>   r?   )r   Útagr4   Úlower)r   r'   r   r   r   r5   M   s    r5   c             C   sÜ   | j ddƒjƒ }|dkrj| j dƒ}|d krZ|s4d}n|d }t|tƒrN|dk}t| |ƒ qØt| ||kƒ nn|dkrŒ| j dƒ}t| ||kƒ nLt| jƒd	ksžt‚x8t| ƒD ],}|j dƒ}|d krÆ|j	ƒ }t
|||kƒ q¨W d S )
Nr'   r=   r?   r;   Fr   Zonr>   r   )r4   rA   r(   r)   Ú_checkr   r@   ÚAssertionErrorr   Ztext_contentÚ_select)r   r;   r'   ÚvÚresultZoptionr   r   r   r8   V   s(    



r8   c             C   s(   |r| j ddƒ nd| jkr$| jd= d S )NZcheckedr=   )ÚsetÚattrib)r%   Zcheckr   r   r   rB   r   s    
rB   c             C   s(   |r| j ddƒ nd| jkr$| jd= d S )NZselectedr=   )rG   rH   )r%   r   r   r   r   rD   y   s    
rD   c             C   s&   t | jƒdkr|| _n| jd|ƒ d S )Nr   r;   )r   r@   ÚtextrG   )r   r;   r   r   r   r:   €   s    r:   c             C   sÆ   |d kr0|d kr0t | ƒ}x|D ]}|S W tdƒ‚|d k	r€| j|ƒ}|d k	rN|S t| |d�}|rf|d S tdtdjt| ƒƒf ƒ‚|d k	rÂt | ƒ}y|| S  tk
rÀ   td|t|ƒf ƒ‚Y nX 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#   †   s0    

r#   c             c   s�   t | ƒ}|sdV  d S xtt|ƒD ]h\}}|jdƒrf|jdƒrXd|jdƒ|jdƒf V  qˆ|jdƒV  q |jdƒr~|jdƒV  q d| V  q W d S )Nz
(no forms)rL   r0   z%s or %sz(unnamed form %s))r   Ú	enumerater4   )r%   rP   r<   rQ   r   r   r   rN   ¡   s    



rN   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   TZdivzerror-messagezerror-blockZInvalidc             K   s<   x6|j ƒ D ]*\}}t| |ƒs(td| ƒ‚t| ||ƒ q
W 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ƒ}| jr |jd| jƒ |rH| jrH|jd|jddƒd | j ƒ |d ksX|dkr^| j}t|tƒrt|j	|ƒ n"t|t
ƒsŠtd| ƒ‚|p’| j|_|rÎ| jrÎ| jrÂ|j|_d |_|jd|ƒ n
|j	|ƒ nD|jƒ }|j|ƒ}| jrô|j||ƒ n|j|_d |_|j|d |ƒ d S )NÚclassr=   ú z.Bad message; should be a string or element: %rr   r1   )ZmakeelementÚerror_container_tagÚerror_message_classrG   Úerror_block_classr4   Údefault_messager(   r   Úappendr)   rC   rI   Úblock_insideÚinsert_beforeÚtailÚinsertZ	getparentr<   )rV   r%   Úis_blockÚmessageÚerror_elÚparentÚposr   r   r   Ú__call__Å   s2    




zDefaultErrorCreator.__call__N)r   r   r   ra   r`   r[   r\   r]   r^   rX   ri   r   r   r   r   r   ¶   s   Úerrorc       
      C   sz   t | ||d�} xf|jƒ D ]Z\}}|d kr*qxFt| ||ƒD ]6\}}	t|	ttd ƒtfƒs`td|	 ƒ‚t||	||ƒ q8W qW d S )N)r!   r"   zBad message: %r)	r#   rS   Ú_find_elements_for_namer(   r)   r'   r   rC   Ú_insert_error)
r%   Úerrorsr!   r"   Úerror_classÚerror_creatorr0   rj   rf   re   r   r   r   r   ç   s    
c             K   s>   t | ƒ}t| tƒrt| ƒ}n
tj| ƒ}t||f|Ž t||ƒS )N)r'   r(   r)   r   r*   r+   r   r	   )r,   r&   rW   r-   r.   r   r   r   r   ø   s    


c             C   sŒ   t | jƒtjkst | jƒdkr$d}nd}t | jƒdkrD|rDt| |ƒ | jdƒr|t| | jdƒd�}|r|x|D ]}t||ƒ qjW || ||ƒ d S )Nr   FTrQ   rL   )Zfor_id)r   r@   r
   Z
empty_tagsÚ
_add_classr4   Ú_label_for_xpath)r%   rj   rn   ro   rd   ZlabelsZlabelr   r   r   rl     s    


rl   c             C   s6   | j dƒr&| jd| j dƒd | ƒ n| jd|ƒ d S )NrY   rZ   )r4   rG   )r%   Ú
class_namer   r   r   rp     s    
rp   c             c   s¬   |d kr| |fV  d S |j dƒrH| j|dd … ƒ}|d k	rD||fV  d S t| |d�}|s\d S t|ttfƒs||d |fV  d S x*t||ƒD ]\}}|d kršqˆ||fV  qˆW d S )Nú#r1   )r0   r   )Ú
startswithrJ   Ú_name_xpathr(   r6   r7   Úzip)rQ   r0   rj   r%   ZelsÚerrr   r   r   rk     s$    


rk   )r   r   r   r   r   r    )NN)NN)NN))Z
lxml.etreer   r   Z	lxml.htmlr   r   r   r   r   r	   r
   r*   r)   Ú	NameErrorÚstrÚ__all__ÚLookupErrorr   rK   rM   r3   rq   ru   r   r   r$   r5   r8   rB   rD   r:   r#   rN   Úobjectr   Zdefault_error_creatorr   r   rl   rp   rk   r   r   r   r   Ú<module>   sN   
 

		
.	