B 9k6B@sddlZedZdddZddZddZd d Zd d Zd dZddZ ddZ eeee ee dZ iZ GdddZ dddZd ddZd!ddZd"ddZdS)#Nz\('[^']*'|\"[^\"]*\"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+c csxt|D]}|d}|r|ddkrd|kry6|dd\}}|sJt|dd|||ffVWqtk rtd|dYqXq |Vq WdS)Nr{:z{%s}%sz!prefix %r not found in prefix map)xpath_tokenizer_refindallsplitKeyError SyntaxError)pattern namespacestokentagprefixZurir:/opt/alt/python37/lib64/python3.7/xml/etree/ElementPath.pyxpath_tokenizerIsrcCsF|j}|dkrBi|_}x(|jD]}x|D] }|||<q.Wq$W|S)N) parent_maprootiter)contextrperrrget_parent_mapWs  rcs|dfdd}|S)Nrc3s0x*|D]"}x|D]}|jkr|VqWqWdS)N)r )rresultelemr)r rrselectbs   zprepare_child..selectr)nextr rr)r r prepare_child`s rcCs dd}|S)Ncssx|D]}|EdHqWdS)Nr)rrrrrrrjs zprepare_star..selectr)rr rrrr prepare_starisrcCs dd}|S)Ncss|EdHdS)Nr)rrrrrrpszprepare_self..selectr)rr rrrr prepare_selfosrcs\y |}Wntk rdSX|ddkr2dn|dsD|dntdfdd}|S)Nr*rzinvalid descendantc3s4x.|D]&}x |D]}||k r|VqWqWdS)N)r)rrrr)r rrrs z"prepare_descendant..select) StopIterationr )rr rr)r rprepare_descendantts    r"cCs dd}|S)NcssDt|}i}x2|D]*}||kr||}||krd||<|VqWdS)N)r)rrrZ result_maprparentrrrrs zprepare_parent..selectr)rr rrrrprepare_parents r$csNg}g}xy |}Wntk r(dSX|ddkr8P|dkrBq |drr|ddddkrrd|dddf}||dpd||dq Wd |}|d kr|dfd d }|S|d kr|d|dfdd }|S|dkrtd|ds|dfdd }|S|dksD|dkrztd|dsz|d|drjfdd }n fdd }|S|dks|dks|dkrB|dkrt|dddkr2tdnl|ddkrtd|dkr.yt|ddWntk rtdYnXdkr2tdndfdd }|StddS) Nr])r&rz'"'-r&z@-c3s&x |D]}|dk r|VqWdS)N)get)rrr)keyrrrs z!prepare_predicate..selectz@-='c3s&x |D]}|kr|VqWdS)N)r*)rrr)r+valuerrrs z\-?\d+$c3s&x |D]}|dk r|VqWdS)N)find)rrr)r rrrs z.='z-='c3s@x:|D]2}x,|D]}d|kr|VPqWqWdS)Nr&)rjoinitertext)rrrr)r r,rrrs  c3s*x$|D]}d|kr|VqWdS)Nr&)r.r/)rrr)r,rrrs z-()z-()-zXPath position >= 1 expectedZlastzunsupported functionzunsupported expressionz)XPath offset from last() must be negativec 3sbt|}xT|D]L}y.||}t||j}||kr>|VWqttfk rXYqXqWdS)N)rlistrr IndexErrorr)rrrrr#Zelems)indexrrrs   zinvalid predicate)r!appendr.rematchintr ValueError)rr Z signatureZ predicaterr)r4r+r r,rprepare_predicatesl     &        r:)r&r .z..z//[c@seZdZdZddZdS)_SelectorContextNcCs ||_dS)N)r)selfrrrr__init__sz_SelectorContext.__init__)__name__ __module__ __qualname__rr?rrrrr=sr=c Csj||dkrdntt|f}|dddkr8|d}y t|}Wntk r<ttdkrjt|dddkrtdtt ||j }y |}Wnt k rdSXg}xxy| t |d||Wnt k rtddYnXy|}|ddkr|}Wqt k r*PYqXqW|t|<YnX|g}t|}x|D]} | ||}qRW|S) Nr(/r drz#cannot use absolute path on elementrz invalid path)tuplesorteditems_cacherlenclearr rr__next__r!r5opsr=) rpathr Z cache_keyZselectorrr rrrrrriterfind sD      rNcCstt|||dS)N)rrN)rrMr rrrr-2sr-cCstt|||S)N)r2rN)rrMr rrrr8srcCs4ytt|||}|jpdStk r.|SXdS)Nr&)rrNtextr!)rrMdefaultr rrrfindtext>s  rQ)N)N)N)N)NN)r6compilerrrrrrr"r$r:rLrHr=rNr-rrQrrrr;s,    b )