j f?&@s ddlZejdZdddZddZddZd d Zd d Zd dZddZ ddZ ied6ed6ed6e d6ed6e d6Z iZ GdddZ dddZdddZddd Zddd!d"ZdS)#NzY('[^']*'|"[^"]*"|::|//?|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|\s+c csxtj|D]}|d}|r|ddkrd|kryH|jdd\}}|sltn|dd|||ffVWqtk rtd|YqXq|VqWdS)Nr{:z{%s}%sz!prefix %r not found in prefix map)xpath_tokenizer_refindallsplitKeyError SyntaxError)pattern namespacestokentagprefixZurir:/opt/alt/python34/lib64/python3.4/xml/etree/ElementPath.pyxpath_tokenizerIs " ! rcCs^|j}|dkrZi|_}x5|jjD]!}x|D]}|||.selectr)nextr rr)r r prepare_child`s rcCsdd}|S)Ncssx|D]}|DdHqWdS)Nr)rrrrrrrjs zprepare_star..selectr)rr rrrr prepare_staris rcCsdd}|S)Ncss |DdHdS)Nr)rrrrrrpszprepare_self..selectr)rr rrrr prepare_selfos rcs[|}|ddkr"dn#|ds9|dn tdfdd}|S)Nr*rzinvalid descendantc3sCx<|D]4}x+|jD]}||k r|VqqWqWdS)N)r)rrrr)r rrr|s  z"prepare_descendant..select)r )rr rr)r rprepare_descendantts     r!cCsdd}|S)Ncss^t|}i}xE|D]=}||kr||}||krVd||<|VqVqqWdS)N)r)rrrZ result_maprparentrrrrs      zprepare_parent..selectr)rr rrrrprepare_parents r#c sg}g}x|}|ddkr,Pn|drm|ddddkrmd|dddf}n|j|dpd|j|dqWdj|}|dkr|dfd d }|S|d kr |d|dfd d }|S|dkrPtjd |d rP|dfdd }|S|dkrtjd |d r|d|dfdd }|S|dks|dks|dkr|dkrt|dddkrtdqn|ddkr!tdn|dkryt|ddWntk retdYnXdkrtdqndfdd }|StddS) Nr]rz'"'-z@-c3s2x+|D]#}|jdk r|VqqWdS)N)get)rrr)keyrrrs z!prepare_predicate..selectz@-='c3s2x+|D]#}|jkr|VqqWdS)N)r()rrr)r)valuerrrs z\-?\d+$c3s2x+|D]#}|jdk r|VqqWdS)N)find)rrr)r rrrs z-='c3sSxL|D]D}x;|jD]*}dj|jkr|VPqqWqWdS)Nr')rjoinZitertext)rrrr)r r*rrrs  z-()z-()-zXPath position >= 1 expectedlastzunsupported functionzunsupported expressionz)XPath offset from last() must be negativec 3szt|}xg|D]_}y>||}t|j|j}||krV|VnWqttfk rqYqXqWdS)N)rlistrr IndexErrorr)rrrrr"Zelems)indexrrrs    zinvalid predicater2r2r2)appendr,rematchintr ValueError)rr Z signatureZ predicaterr)r1r)r r*rprepare_predicates^ $     # #  $      r9r'r .z..z//[c@s"eZdZdZddZdS)_SelectorContextNcCs ||_dS)N)r)selfrrrr__init__sz_SelectorContext.__init__)__name__ __module__ __qualname__rr>rrrrr<s r<c Cs||dkrdntt|jf}|dddkrS|d}nyt|}Wntk rsttdkrtjn|dddkrtdntt ||j }|}g}xy"|j t |d||Wnt k r!tdYnXy)|}|ddkrJ|}nWqt k r`PYqXqW|t|    "       rNc Cs7ytt|||SWntk r2dSYnXdS)N)rrNrL)rrMr rrrr+ s r+cCstt|||S)N)r/rN)rrMr rrrr)src CsFy)tt|||}|jp'dSWntk rA|SYnXdS)Nr')rrNtextrL)rrMdefaultr rrrfindtext/s  rQ)r5compilerrrrrrr!r#r9rKrGr<rNr+rrQrrrr;s.      U  &