o [d6@sddlZedZd"ddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ eee e e e dZ iZGdddZd"ddZd"ddZd"ddZd#d d!ZdS)$Nz`('[^']*'|\"[^\"]*\"|::|//?|\.\.|\(\)|!=|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@!=\s]+)|\s+c cs|r|dnd}d}t|D]U}|\}}|r_|ddkr_d|vrK|dd\}}z|s0t|d|||ffVWntyJtd|dw|rY|sY|d||ffVn|Vd}q|V|d k}qdS) NFr{:z{%s}%sz!prefix %r not found in prefix map@)getxpath_tokenizer_refindallsplitKeyError SyntaxError) pattern namespacesdefault_namespaceparsing_attributetokenttypetagprefixurir,/usr/lib/python3.10/xml/etree/ElementPath.pyxpath_tokenizerJs,  rcCs>|j}|duri|_}|jD] }|D]}|||<qq|SN) parent_maprootiter)contextrperrrget_parent_mapbs  r cCs |dddkp|dddkS)N{*}}*rrrrr_is_wildcard_tagls r&csttdkrfdd}|Sdkrfdd}|SdddkrGddtt dddfd d}|Sd dd krgdd tdtfd d}|Std)Nz{*}*c3s"|D] }|jr|VqdSrr%rresultelem _isinstance_strrrselectvs  z_prepare_tag..selectz{}*c3s2|D]}|j}|r|ddkr|VqdS)Nrrr%rr(r)el_tagr*rrr-|r!r"c3s:|D]}|j}|ks|r|kr|VqdSrr%r.)r+r,no_nssuffixrrrr-sr#r$c3s2|D]}|j}|r|kr|VqdSrr%r.)r+r,nsns_onlyrrr-r0zinternal parser error, got ) isinstancestrslicelen RuntimeError)rr-r)r+r,r2r5r6r3rr _prepare_tagps&     r<csT|dtrtfdd}|Sdddkr"ddfdd}|S)Nrcdd}|||S)Ncss|D]}|EdHqdSrr)r(r)rrr select_child z3prepare_child..select..select_childrrr(r> select_tagrrr-szprepare_child..selectr1{}c3s*|D]}|D] }|jkr|VqqdSrr%rr(r)rr%rrr-s )r&r<nextrr-rrBrr prepare_childs    rHcC dd}|S)Ncss|D]}|EdHqdSrrr'rrrr-r?zprepare_star..selectrrErrr prepare_starsrJcCrI)Ncss|EdHdSrr)rr(rrrr-szprepare_self..selectrrErrr prepare_selfsrKcsz|}Wn tyYdSw|ddkrdn |ds"|dntdtr6tfdd}|SdddkrDddfd d}|S) Nr*rzinvalid descendantcr=)Ncss,|D]}|D] }||ur|Vq qdSrr)r(r)rrrrr>s z8prepare_descendant..select..select_childrr@rArrr-sz"prepare_descendant..selectr1rCc3s.|D]}|D] }||ur|Vq qdSrrMrDr%rrr-s) StopIterationr r&r<rErrGrprepare_descendants$       rOcCrI)NcssBt|}i}|D]}||vr||}||vrd||<|Vq dSr)r )rr(r result_mapr)parentrrrr-szprepare_parent..selectrrErrrprepare_parents rRcsg}g} z|}Wn tyYdSw|ddkrn.|dkr!q|dr9|ddddvr9d|dddf}||dp@d||dqd |}|d kr_|dfd d }|S|d ksg|dkr|d|dfdd }fdd}d|vr|S|S|dkrtd|ds|dfdd }|S|dks|dks|dks|dkrtd|ds|d|dr·fdd }fdd}n fdd }fdd}d|vr|S|S|dks|dks|dkrA|dkrt|dddkrtdn3|dd krtd!|dkr7z t|d"dWn ty,td#wd$kr6td%ndfd&d }|Std')(Nrr])rrz'"'r4-rz@-c3$|D] }|dur|VqdSrrr')keyrrr- z!prepare_predicate..selectz@-='z@-!='c3s$|D] }|kr|VqdSrrWr'rXvaluerrr-rYc3s0|D]}|}dur|kr|VqdSrrW)rr(r) attr_valuerZrrselect_negateds z)prepare_predicate..select_negatedz!=z\-?\d+$c3rVr)findr'r%rrr-rYz.='z.!='z-='z-!='c3s<|D]}|D]}d|kr|Vnq qdSNr)r joinitertextrDrr[rrr-c3s<|D]}|D]}d|kr|Vnq qdSr_)iterfindr`rarDrbrrr]"rcc3s(|D]}d|kr|VqdSr_r`rar'r[rrr-) c3s(|D]}d|kr|VqdSr_rer'rfrrr]-rgz-()z-()-zXPath position >= 1 expectedlastzunsupported functionr1zunsupported expressionr#z)XPath offset from last() must be negativec 3s\t|}|D]$}z||}t||j}||ur|VWqttfy+YqwdSr)r listr r IndexErrorr )rr(rr)rQelems)indexrrr-Es zinvalid predicate)rNappendr`rematchintr ValueError)rFr signature predicater-r]r)rlrXrr[rprepare_predicates              rt)rrL.z..z//[c@seZdZdZddZdS)_SelectorContextNcCs ||_dSr)r)selfrrrr__init__`s z_SelectorContext.__init__)__name__ __module__ __qualname__rryrrrrrw^s rwc CsP|dddkr |d}|f}|r|tt|7}zt|}Wnstyttdkr2t|dddkr>tdtt ||j }z|}Wn t yVYYdSwg} z| t |d||Wn t yttddwz|}|ddkr|}Wn t yYnwqZ|t|<Ynw|g}t|}|D]} | ||}q|S) Nr4/rLdrz#cannot use absolute path on elementrz invalid path)tuplesorteditems_cacher r:clearr rr__next__rNrmopsrw) r)pathr cache_keyselectorrFrr(rr-rrrrdhsR           rdcCstt|||dSr)rFrdr)rrrrrr^sr^cCstt|||Sr)rirdrrrrr sr cCs4ztt|||}|jp dWSty|YSwr_)rFrdtextrN)r)rdefaultrrrrfindtexts   rr)NN)rncompilerrr r&r<rHrJrKrOrRrtrrrwrdr^r rrrrrs6:  ) q  ,