B )è2YÙ%ã@sxddlmZmZddlmZmZddlmZmZmZm Z ddlm Z ddl Z ye Wne k rleZ YnXdddd d d gZGd d„deƒZed deidZed dd„dDƒ¡deidZeddeidZedƒZd2dd„Zd3dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd4d$d%„Zd&d'„Z Gd(d „d e!ƒZ"e"ƒZ#ddd)e#fd*d „Z$d+d „Z%d,d-„Z&d.d/„Z'd0d1„Z(dS)5é)Ú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@seZdZdZdS)r z* Raised when no form can be found N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrúE/opt/alt/python37/lib64/python3.7/site-packages/lxml/html/formfill.pyr szKdescendant-or-self::form[name=$name]|descendant-or-self::x:form[name=$name]Úx)Z namespacesú|cCsg|] }d|‘qS)zdescendant-or-self::r)Ú.0Z_tagrrrú sr)ÚinputÚselectÚtextareazx:inputzx:selectz x:textareaz-//label[@for=$for_id]|//x:label[@for=$for_id]z"descendant-or-self::*[@name=$name]cCst|||d}t||ƒdS)N)Úform_idÚ form_index)Ú _find_formÚ _fill_form)ÚelÚvaluesrrrrrr scCs@t|ƒ}t|tƒrt|ƒ}n t |¡}t||||dt||ƒS)N)rr)ÚtypeÚ isinstanceÚ basestringrÚcopyÚdeepcopyr r )Úhtmlr#rrÚ result_typeÚdocrrrr &s    c Csèi}t|dƒr| ¡}t|ƒ}xÄ|D]¼}| d¡}|s8q$t|ƒrl| |g¡}t|ttfƒs`|g}t||ƒq$||krxq$q$| |d¡}|d||<||}t|ttfƒrÌy ||}WqÖt k rÈw$YqÖXn |dkrÖq$t ||ƒq$WdS)NÚmixedÚnameré) Úhasattrr,Ú _input_xpathÚgetÚ_takes_multipler%ÚlistÚtupleÚ_fill_multipleÚ IndexErrorÚ _fill_single)r"r#ZcountsZinputsrr-ÚvalueÚindexrrrr!/s4         r!cCs<t|jƒdkr| d¡rdS| dd¡ ¡}|dkr8dSdS)NrZmultipleTr$Ú)ÚradioÚcheckboxF)rÚtagr1Úlower)rr$rrrr2Ms r2cCsÊ| dd¡ ¡}|dkrj| d¡}|dkrZ|s4d}n|d}t|tƒrN|dk}t||ƒqÆt|||kƒn\|dkrŒ| d¡}t|||kƒn:x8t|ƒD],}| d¡}|dkr´| ¡}t|||kƒq–WdS) Nr$r:r<r8FrZonr;)r1r>r%r&Ú_checkrZ text_contentÚ_select)rr8r$ÚvÚresultZoptionrrrr5Vs&     r5cCs(|r| dd¡nd|jkr$|jd=dS)NÚcheckedr:)ÚsetÚattrib)r"Zcheckrrrr?rs r?cCs(|r| dd¡nd|jkr$|jd=dS)NZselectedr:)rDrE)r"rrrrr@ys r@cCs&t|jƒdkr||_n | d|¡dS)Nrr8)rr=ÚtextrD)rr8rrrr7€sr7cCsÆ|dkr0|dkr0t|ƒ}x|D]}|SWtdƒ‚|dk r€| |¡}|dk rN|St||d}|rf|dStdtd t|ƒ¡fƒ‚|dk rÂt|ƒ}y||Stk rÀtd|t|ƒfƒ‚YnXdS)NzNo forms in page)r-rz-No form with the name or id of %r (forms: %s)z, z3There is no form with the index %r (%i forms found)) rr Úget_element_by_idÚ_form_name_xpathÚidÚjoinÚ_find_form_idsr6Úlen)r"rrÚformsÚformrrrr †s0   r ccst|ƒ}|sdVdSxtt|ƒD]h\}}| d¡rf| d¡rXd| d¡| d¡fVqˆ| d¡Vq | d¡r~| d¡Vq d|Vq WdS)Nz (no forms)rIr-z%s or %sz(unnamed form %s))rÚ enumerater1)r"rMr9rNrrrrK¡s    rKc@s4eZdZdZdZdZdZdZdZdd„Z dd „Z d S) rTZdivz error-messagez error-blockZInvalidcKs<x6| ¡D]*\}}t||ƒs(td|ƒ‚t|||ƒq WdS)NzUnexpected keyword argument: %s)Úitemsr/Ú TypeErrorÚsetattr)ÚselfÚkwr-r8rrrÚ__init__¾s   zDefaultErrorCreator.__init__cCs| |j¡}|jr | d|j¡|rH|jrH| d| dd¡d|j¡|dksX|dkr^|j}t|tƒrt|  |¡n |p||j|_ |r¸|j r¸|j r¬|j |_ d|_ | d|¡qü|  |¡nD| ¡}| |¡}|j rÞ| ||¡n|j |_ d|_ | |d|¡dS)NÚclassr:ú rr.)Z makeelementÚerror_container_tagÚerror_message_classrDÚerror_block_classr1Údefault_messager%rÚappendrFÚ block_insideÚ insert_beforeÚtailÚinsertZ getparentr9)rSr"Úis_blockÚmessageÚerror_elÚparentÚposrrrÚ__call__Ås.        zDefaultErrorCreator.__call__N) rrrr^r]rXrYrZr[rUrfrrrrr¶sÚerrorc CsZt|||d}xF| ¡D]:\}}|dkr*qx&t|||ƒD]\}} t|| ||ƒq8WqWdS)N)rr)r rPÚ_find_elements_for_nameÚ _insert_error) r"ÚerrorsrrÚ error_classÚ error_creatorr-rgrcrbrrrrçs cKs>t|ƒ}t|tƒrt|ƒ}n t |¡}t||f|Žt||ƒS)N)r$r%r&rr'r(rr )r)r#rTr*r+rrrrøs    cCsŒt|jƒtjkst|jƒdkr$d}nd}t|jƒdkrD|rDt||ƒ| d¡r|t|| d¡d}|r|x|D]}t||ƒqjW||||ƒdS)NrFTrNrI)Zfor_id)rr=r Z empty_tagsÚ _add_classr1Ú_label_for_xpath)r"rgrkrlraÚlabelsZlabelrrrris   ricCs6| d¡r&| d| d¡d|¡n | d|¡dS)NrVrW)r1rD)r"Ú class_namerrrrms rmccs¬|dkr||fVdS| d¡rH| |dd…¡}|dk rD||fVdSt||d}|s\dSt|ttfƒs||d|fVdSx*t||ƒD]\}}|dkršqˆ||fVqˆWdS)Nú#r.)r-r)Ú startswithrGÚ _name_xpathr%r3r4Úzip)rNr-rgr"ZelsÚerrrrrrhs$    rh)NN)NN)NN))Z lxml.etreerrZ lxml.htmlrrrrrr r r'r&Ú NameErrorÚstrÚ__all__Ú LookupErrorr rHrJr0rnrsr r r!r2r5r?r@r7r rKÚobjectrZdefault_error_creatorrrrirmrhrrrrÚsN        .