JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB )2Y%@sxddlmZmZddlmZmZddlmZmZmZm Z ddlm Z ddl Z ye Wne k rleZ YnXdddd d d gZGd ddeZed deidZeddddDdeidZeddeidZedZd2ddZd3ddZddZddZddZddZd 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'd0d1Z(dS)5)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__rrE/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)inputselecttextareazx: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)elvaluesrrrrrr scCs@t|}t|trt|}n t|}t||||dt||S)N)rr)type isinstance basestringrcopydeepcopyr r )htmlr#rr result_typedocrrrr &s    c Csi}t|dr|}t|}x|D]}|d}|s8q$t|rl||g}t|ttfs`|g}t||q$||krxq$q$||d}|d||<||}t|ttfry ||}Wqt k rw$YqXn |dkrq$t ||q$WdS)Nmixednamer) hasattrr, _input_xpathget_takes_multipler%listtuple_fill_multiple IndexError _fill_single)r"r#countsinputsrr-valueindexrrrr!/s4         r!cCs<t|jdkr|drdS|dd}|dkr8dSdS)NrZmultipleTr$)radiocheckboxF)rtagr1lower)rr$rrrr2Ms r2cCs|dd}|dkrj|d}|dkrZ|s4d}n|d}t|trN|dk}t||qt|||knn|dkr|d}t|||knLt|jd kstx8t|D],}|d}|dkr| }t |||kqWdS) Nr$r<r>r:Fronr=r) r1r@r%r&_checkrr?AssertionErrorrZ text_content_select)rr:r$vresultoptionrrrr5Vs(     r5cCs(|r|ddnd|jkr$|jd=dS)Ncheckedr<)setattrib)r"checkrrrrBrs rBcCs(|r|ddnd|jkr$|jd=dS)Nselectedr<)rIrJ)r"rrrrrDys rDcCs&t|jdkr||_n |d|dS)Nrr:)rr?textrI)rr:rrrr7sr7cCs|dkr0|dkr0t|}x|D]}|SWtd|dk r||}|dk rN|St||d}|rf|dStdtdt|f|dk rt|}y||Stk rtd|t|fYnXdS)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_xpathidjoin_find_form_idsr6len)r"rrformsformrrrr s0   r ccst|}|sdVdSxtt|D]h\}}|drf|drXd|d|dfVq|dVq |dr~|dVq d|Vq WdS)Nz (no forms)rPr-z%s or %sz(unnamed form %s))r enumerater1)r"rTr;rUrrrrRs    rRc@s4eZdZdZdZdZdZdZdZddZ dd Z d S) rTZdivz error-messagez error-blockZInvalidcKs<x6|D]*\}}t||s(td|t|||q WdS)NzUnexpected keyword argument: %s)itemsr/ TypeErrorsetattr)selfkwr-r:rrr__init__s   zDefaultErrorCreator.__init__cCs||j}|jr |d|j|rH|jrH|d|ddd|j|dksX|dkr^|j}t|trt| |n"t|t st d||p|j|_ |r|j r|jr|j |_d|_ |d|n | |nD|}||}|jr|||n|j|_d|_||d|dS)Nclassr< z.Bad message; should be a string or element: %rrr.)Z makeelementerror_container_tagerror_message_classrIerror_block_classr1default_messager%rappendr&rCrM block_inside insert_beforetailinsertZ getparentr;)rZr"is_blockmessageerror_elparentposrrr__call__s2          zDefaultErrorCreator.__call__N) rrrrerdr_r`rarbr\rmrrrrrserrorc Cszt|||d}xf|D]Z\}}|dkr*qxFt|||D]6\}} t| ttdtfs`td| t|| ||q8WqWdS)N)rrzBad message: %r) r rW_find_elements_for_namer%r&r$rrC _insert_error) r"errorsrr error_class error_creatorr-rnrjrirrrrs cKs>t|}t|trt|}n t|}t||f|t||S)N)r$r%r&rr'r(rr )r)r#r[r*r+rrrrs    cCst|jtjkst|jdkr$d}nd}t|jdkrD|rDt|||dr|t||dd}|r|x|D]}t||qjW||||dS)NrFTrUrP)Zfor_id)rr?r Z empty_tags _add_classr1_label_for_xpath)r"rnrrrsrhlabelslabelrrrrps   rpcCs6|dr&|d|dd|n |d|dS)Nr]r^)r1rI)r" class_namerrrrts rtccs|dkr||fVdS|drH||dd}|dk rD||fVdSt||d}|s\dSt|ttfs||d|fVdSx*t||D]\}}|dkrq||fVqWdS)N#r.)r-r) startswithrN _name_xpathr%r3r4zip)rUr-rnr"Zelserrrrrros$    ro)NN)NN)NN))Z lxml.etreerrZ lxml.htmlrrrrrr r r'r& NameErrorstr__all__ LookupErrorr rOrQr0rur{r r r!r2r5rBrDr7r rRobjectrZdefault_error_creatorrrrprtrorrrrsN        .