a a%@snddlmZmZddlmZmZddlmZmZmZm Z ddlm Z ddl Z ze Wne yjeZ Yn0gdZGdddeZed d eid Zed d ddDd eid Zedd eid ZedZd3ddZd4ddZddZddZddZddZddZd d!Zd5d"d#Zd$d%Z Gd&d'd'e!Z"e"Z#ddd(e#fd)d*Z$d+d,Z%d-d.Z&d/d0Z'd1d2Z(dS)6)XPath ElementBase) fromstringXHTML_NAMESPACE) _forms_xpath_options_xpath_nons_transform_result)defsN) FormNotFound fill_formfill_form_html insert_errorsinsert_errors_htmlDefaultErrorCreatorc@seZdZdZdS)r z* Raised when no form can be found N)__name__ __module__ __qualname____doc__rr8/usr/lib64/python3.9/site-packages/lxml/html/formfill.pyr sr zKdescendant-or-self::form[name=$name]|descendant-or-self::x:form[name=$name]x)Z namespaces|cCsg|] }d|qS)zdescendant-or-self::r).0Z_tagrrr r)inputselecttextareazx:inputzx:selectz x:textareaz-//label[@for=$for_id]|//x:label[@for=$for_id]z"descendant-or-self::*[@name=$name]cCst|||d}t||dSNform_id form_index) _find_form _fill_form)elvaluesr!r"rrrr sr cCs@t|}t|trt|}n t|}t||||dt||Sr)type isinstance basestringrcopydeepcopyr r )htmlr&r!r" result_typedocrrrr &s    r c Csi}t|dr|}t|}|D]}|d}|s6q"t|rj||g}t|ttfs^|g}t||q"||vrvq"q"||d}|d||<||}t|ttfrz ||}Wqt yYq"Yq0n |dkrq"t ||q"dS)Nmixednamer) hasattrr/ _input_xpathget_takes_multipler(listtuple_fill_multiple IndexError _fill_single)r%r&ZcountsZinputsrr0valueindexrrrr$/s4         r$cCs<t|jdkr|drdS|dd}|dvr8dSdS)NrZmultipleTr')radiocheckboxF)rtagr4lower)rr'rrrr5Ms r5cCs|dd}|dkrj|d}|durZ|s4d}n|d}t|trN|dk}t||qt|||vnj|dkr|d}t|||vnHt|jd ksJt|D],}|d}|dur|}t |||vqdS) Nr'r=r?r;FrZonr>r) r4rAr(r)_checkrr@rZ text_content_select)rr;r'vresultoptionrrrr8Vs(      r8cCs(|r|ddnd|jvr$|jd=dS)Ncheckedr=setZattrib)r%checkrrrrBrs rBcCs(|r|ddnd|jvr$|jd=dS)NZselectedr=rH)r%rrrrrCys rCcCs&t|jdkr||_n |d|dS)Nrr;)rr@textrI)rr;rrrr:sr:cCs|dur0|dur0t|}|D] }|Std|dur||}|durN|St||d}|rf|dStdtdt|f|durt|}z ||WStytd|t|fYn0dS)NzNo forms in pager0rz-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_xpathidjoin_find_form_idsr9len)r%r!r"formsformrrrr#s:     r#ccst|}|sdVdSt|D]h\}}|drd|drVd|d|dfVq|dVq|dr||dVqd|VqdS)Nz (no forms)rOr0z%s or %sz(unnamed form %s))r enumerater4)r%rSr<rTrrrrQs     rQc@s4eZdZdZdZdZdZdZdZddZ dd Z d S) rTZdivz error-messagez error-blockZInvalidcKs8|D]*\}}t||s&td|t|||qdS)NzUnexpected keyword argument: %s)itemsr2 TypeErrorsetattr)selfkwr0r;rrr__init__s  zDefaultErrorCreator.__init__cCs||j}|jr |d|j|rH|jrH|d|ddd|j|dusX|dkr^|j}t|trt| |n"t|t sJd||p|j|_ |r|j r|j r|j |_d|_ |d|n | |nD|}||}|j r|||n|j|_d|_||d|dS)Nclassr= z.Bad message; should be a string or element: %rrr1)Z makeelementerror_container_tagerror_message_classrIerror_block_classr4default_messager(rappendr)rK block_inside insert_beforetailinsertZ getparentr<)rYr%is_blockmessageerror_elparentposrrr__call__s4         zDefaultErrorCreator.__call__N) rrrrdrcr^r_r`rar[rlrrrrrsrerrorc Csrt|||d}|D]V\}}|dur(qt|||D]6\}} t| ttdtfs\Jd| t|| ||q4qdS)Nr zBad message: %r)r#rV_find_elements_for_namer(r)r'r _insert_error) r%errorsr!r" error_class error_creatorr0rmrirhrrrrsrcKsBt|}t|trt|}n t|}t||fi|t||S)N)r'r(r)rr*r+rr )r,r&rZr-r.rrrrs    rcCst|jtjvst|jdkr$d}nd}t|jdkrD|rDt|||drxt||dd}|rx|D]}t||qh||||dS)NrFTrTrO)Zfor_id)rr@r Z empty_tags _add_classr4_label_for_xpath)r%rmrqrrrglabelsZlabelrrrros   rocCs6|dr&|d|dd|n |d|dS)Nr\r])r4rI)r% class_namerrrrss rsccs|dur||fVdS|drH||dd}|durD||fVdSt||d}|s\dSt|ttfs||d|fVdSt||D]\}}|durq||fVqdS)N#r1rLr) startswithrM _name_xpathr(r6r7zip)rTr0rmr%Zelserrrrrrns$    rn)NN)NN)NN))Z lxml.etreerrZ lxml.htmlrrrrrr r r*r) NameErrorstr__all__ LookupErrorr rNrPr3rtryr r r$r5r8rBrCr:r#rQobjectrZdefault_error_creatorrrrorsrnrrrrsR      .