
    Ng%                        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	 e n# e$ r eZY nw xY wg dZ G d de          Z ed	d
ei          Z ed                    d dD                       d
ei          Z edd
ei          Z ed          Z	 	 d#dZd#dZd Zd Zd Zd Zd Zd Zd#dZd Z  G d d          Z! e!            Z"ddde"fdZ#d Z$d  Z%d! Z&d" 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                       e Zd ZdZdS )r   z*
    Raised when no form can be found
    N)__name__
__module____qualname____doc__     N/var/www/html/ai-engine/env/lib/python3.11/site-packages/lxml/html/formfill.pyr   r      s           r   r   zKdescendant-or-self::form[name=$name]|descendant-or-self::x:form[name=$name]x)
namespaces|c                     g | ]}d |z   S )zdescendant-or-self::r   ).0_tags     r   
<listcomp>r       s0      H  H  Ht5d:  H  H  H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                 J    t          | ||          } t          | |           d S Nform_id
form_index)
_find_form
_fill_form)elvaluesr'   r(   s       r   r   r      s.     
BJ	?	?	?Br6r   c                     t          |           }t          | t                    rt          |           }nt	          j        |           }t          ||||           t          ||          S r%   )type
isinstance
basestringr   copydeepcopyr   r
   )htmlr,   r'   r(   result_typedocs         r   r   r   &   sd    t**K$
## "mD!!c67zBBBB[#...r   c                 D   i }t          |d          r|                                }t          |           }|D ]}|                    d          }|st	          |          rF|                    |g           }t          |t          t          f          s|g}t          ||           o||vrt|                    |d          }|dz   ||<   ||         }t          |t          t          f          r	 ||         }n# t          $ r Y w xY w|dk    rt          ||           d S )Nmixednamer      )hasattrr7   _input_xpathget_takes_multipler/   listtuple_fill_multiple
IndexError_fill_single)r+   r,   countsinputsr!   r8   valueindexs           r   r*   r*   /   sW   Fvw  "F ' 'yy   	5!! 	'JJtR((EedE]33  5%((((JJtQ''E 19F4L4LE%$// !%LEE!   H&&&&-' 's   /C88
DDc                     t          | j                  dk    r|                     d          rdS |                     dd                                          }|dv rdS dS )Nr"   multipleTr.    )radiocheckboxF)r	   tagr<   lower)r!   r.   s     r   r=   r=   M   sb    UY8##		*(=(=#t99VR  &&((D$$$t5r   c                 \   |                      dd                                          }|dk    re|                      d          }|:|sd}n#|d         }t          |t                    r|dk    }t	          | |           d S t	          | ||v            d S |dk    r)|                      d          }t	          | ||v            d S t          | j                  d	k    sJ t          |           D ]?}|                     d          }||                                }t          |||v            @d S )
Nr.   rI   rK   rE   Fr   onrJ   r"   )
r<   rM   r/   r0   _checkr	   rL   r   text_content_select)r!   rE   r.   vresultoptions         r   r@   r@   V   sU   99VR  &&((DzIIg9 ,qeZ00 ,#t^F5&!!!!!5!u*%%%%%	IIgua5j!!!!!UY8++++$U++ 	( 	(F

7##Ay ''))FAJ''''	( 	(r   c                 `    |r|                      dd           d S d| j        v r
| j        d= d S d S )NcheckedrI   setattrib)r+   checks     r   rP   rP   r   sI     %
y"	!!	)$$$ "!r   c                 `    |r|                      dd           d S d| j        v r
| j        d= d S d S )NselectedrI   rX   )r+   r"   s     r   rR   rR   y   sI     &
z2""	*%%% #"r   c                 t    t          | j                  dk    r	|| _        d S |                     d|           d S )Nr#   rE   )r	   rL   textrY   )r!   rE   s     r   rB   rB      s<    UY:%%


		'5!!!!!r   c           
         |(|&t          |           }|D ]}|c S t          d          |o|                     |          }||S t          | |          }|r|d         S t          dt          dd                    t          |                     d          |Gt          |           }	 ||         S # t          $ r" t          d|t          |          fz            w xY wd S )	NzNo forms in pager8   r   zNo form with the name or id of z	 (forms: 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_idsrA   len)r+   r'   r(   formsforms        r   r)   r)      s9   :-R   	 	DKKK    	 ##G,,K '222 	78O,22tyy!3!3444467 7 7 R  	,$$ 	, 	, 	,Es5zz*+, , ,	,	 s   .B6 6,C"c              #     K   t          |           }|sdV  d S t          |          D ]\  }}|                    d          r]|                    d          r0|                    d          d|                    d          V  _|                    d          V  w|                    d          r|                    d          V  d|z  V  d S )Nz
(no forms)re   r8   z or z(unnamed form %s))r   	enumerater<   )r+   ri   rF   rj   s       r   rg   rg      s     E  '' 
. 
.t88D>> 		.xx %$(HHTNNNN%)XXf%5%5%57 7 7 7 7 hhtnn$$$$XXf 	.((6""""""%-----
. 
.r   c                   2    e Zd ZdZdZdZdZdZdZd Z	d Z
dS )	r   Tdivzerror-messagezerror-blockInvalidc                     |                                 D ]8\  }}t          | |          st          d|z            t          | ||           9d S )NzUnexpected keyword argument: %s)itemsr:   	TypeErrorsetattr)selfkwr8   rE   s       r   __init__zDefaultErrorCreator.__init__   sh    88:: 	' 	'KD%4&& >5<> > >D$&&&&		' 	'r   c                 Z   |                     | j                  }| j        r|                    d| j                   |r<| j        r5|                    d|                    dd          dz   | j        z              ||dk    r| j        }t          |t                    r|	                    |           n0t          |t                    sJ d|z              |p| j        |_        |rP| j        rI| j        r+|j        |_        d |_        |                    d|           d S |	                    |           d S |                                }|                    |          }| j        r|                    ||           d S |j        |_        d |_        |                    |dz   |           d S )NclassrI    z.Bad message; should be a string or element: %rr   r9   )makeelementerror_container_tagerror_message_classrY   error_block_classr<   default_messager/   r   appendr0   r_   block_insideinsert_beforetailinsert	getparentrF   )rt   r+   is_blockmessageerror_elparentposs          r   __call__zDefaultErrorCreator.__call__   s   >>$":;;# 	<LL$":;;; 	X. 	XLL(,,w";";C"?@V"VWWW?gmm*Gg{++ 	<OOG$$$$gz22 L L@7JL L L#;t';HM 	/) 	/! $ "		!X&&&&&		(#####\\^^F,,r""C! /c8,,,,, "c!eX.....r   N)r   r   r   r   r   r{   r|   r}   r~   rv   r   r   r   r   r   r      sS        ML)%O' ' '/ / / / /r   r   errorc           	      $   t          | ||          } |                                D ]h\  }}|t          | ||          D ]N\  }}	t          |	t          t          d           t          f          sJ d|	z              t          ||	||           Oid S )Nr&   zBad message: %r)r)   rq   _find_elements_for_namer/   r0   r.   r   _insert_error)
r+   errorsr'   r(   error_classerror_creatorr8   r   r   r   s
             r   r   r      s     
BJ	?	?	?B||~~ I Ie=!8T5!I!I 	I 	IHgg
DJJ'LMM - -!G+- - -(G[-HHHH	II Ir   c                     t          |           }t          | t                    rt          |           }nt	          j        |           }t          ||fi | t          ||          S )N)r.   r/   r0   r   r1   r2   r   r
   )r3   r,   ru   r4   r5   s        r   r   r      se    t**K$
## "mD!!#v$$$$$[#...r   c                    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                    }|r|D ]}t	          ||            || ||           d S )Nr#   FTrj   re   )for_id)r	   rL   r   
empty_tags
_add_classr<   _label_for_xpath)r+   r   r   r   r   labelslabels          r   r   r     s    RV}}''5==J+F+FRV}};2{###	vvd|| /!"RVVD\\::: 	/ / /5+....M"h&&&&&r   c                     |                      d          r1|                     d|                      d          dz   |z              d S |                     d|           d S )Nrx   ry   )r<   rY   )r+   
class_names     r   r   r     s\    	vvg $
ww+J677777
w
#####r   c              #   R  K   || |fV  d S |                     d          r'|                     |dd                    }|||fV  d S t          | |          }|sd S t          |t          t
          f          s|d         |fV  d S t          ||          D ]\  }}|||fV  d S )N#r9   ra   r   )
startswithrc   _name_xpathr/   r>   r?   zip)rj   r8   r   r+   elserrs         r   r   r     s      |Eks ##DH-->e)OOO
d
&
&
&C edE]++ !femsE??  C;#g r   )NN)(
lxml.etreer   r   	lxml.htmlr   r   r   r   r	   r
   r   r1   r0   	NameErrorstr__all__LookupErrorr   rd   rf   r;   r   r   r   r   r*   r=   r@   rP   rR   rB   r)   rg   r   default_error_creatorr   r   r   r   r   r   r   r   <module>r      s   ) ) ) ) ) ) ) ) 1 1 1 1 1 1 1 1 L L L L L L L L L L L L       JJ   JJJ" " "    ;   
 5ftw  yH  tI  J  J  J uSXX  H  H  HG  H  H  H  I  I+.*?A A A5H+.*?A A A e899
 	   / / / /' ' '<  ( ( (8% % %& & &" " ", , , ,6. . .*,/ ,/ ,/ ,/ ,/ ,/ ,/ ,/\ ,+--  'I I I I"/ / /' ' '$ $ $    s   + 55