Oc@sdZddlZddlmZdddgZy eZWnek rTeZnXde fdYZ de fdYZ dej fd YZyeZeZWnek reZeZnXd efd YZd efd YZdefdYZdefdYZdefdYZdefdYZdZejdZde_eedd>d?gj-Z?d@Z@dAZAej%dBej&ZBdCZCdDefdEYZDdS(FsCSS Selectors based on XPath. This module supports selecting XML/HTML tags based on CSS selectors. See the `CSSSelector` class for details. iN(tetreetSelectorSyntaxErrortExpressionErrort CSSSelectorcBseZRS((t__name__t __module__(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRscBseZRS((RR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRscBs#eZdZddZdZRS(sA CSS selector. Usage:: >>> from lxml import etree, cssselect >>> select = cssselect.CSSSelector("a tag > child") >>> root = etree.XML("TEXT") >>> [ el.tag for el in select(root) ] ['child'] To use CSS namespaces, you need to pass a prefix-to-namespace mapping as ``namespaces`` keyword argument:: >>> rdfns = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' >>> select_ns = cssselect.CSSSelector('root > rdf|Description', ... namespaces={'rdf': rdfns}) >>> rdf = etree.XML(( ... '' ... 'blah' ... '') % rdfns) >>> [(el.tag, el.text) for el in select_ns(rdf)] [('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description', 'blah')] cCs2t|}tjj||d|||_dS(Nt namespaces(t css_to_xpathRtXPatht__init__tcss(tselfR Rtpath((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR 2s cCs0d|jjttt|d|jfS(Ns<%s %s for %r>i(t __class__RthextabstidR (R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt__repr__7s N(RRt__doc__tNoneR R(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs t _UniTokencBseZdZdZRS(cCstj||}||_|S(N(t_unicodet__new__tpos(tclstcontentsRtobj((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRIs cCs#d|jjtj||jfS(Ns %s(%s, %r)(R RRRR(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRNs  (RRRR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRHs tSymbolcBseZRS((RR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRTstStringcBseZRS((RR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRWstTokencBseZRS((RR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRZstClasscBs)eZdZdZdZdZRS(s( Represents selector.class_name cCs||_||_dS(N(tselectort class_name(R RR ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR is cCsd|jj|j|jfS(Ns %s[%r.%s](R RRR (R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRms cCs5|jj}|jdtd|jd|S(Ns7contains(concat(' ', normalize-space(@class), ' '), %s)t (Rtxpatht add_conditiont xpath_literalR (R t sel_xpath((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"ss(RRRR RR"(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRds  tFunctioncBsweZdZddddgZdZdZdZeedZ d Z d Z d Z d Z d ZRS(s( Represents selector:name(expr) ttargettlangtenabledtdisabledcCs(||_||_||_||_dS(N(Rttypetnametexpr(R RR+R,R-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s   cCs)d|jj|j|j|j|jfS(Ns%s[%r%s%s(%r)](R RRR+R,R-(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCs|jj}|j|jkr7td|jnd|jjdd}t||sutd|jnt||}|||jS(Ns$The pseudo-class %r is not supportedt_xpath_t-t_sThe pseudo-class %r is unknown( RR"R,t unsupportedRtreplacethasattrtgetattrR-(R tsel_pathtmethod((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"scCs^t|\}}| r8| r8| r8|jd|S|rK|jn|j|dkr|rtd|}n|jd||S|r| }| }n|dkrt| }n d| }|dkrd||fg}ng}|dkr|jd|n&|dkr5|r5|jd |nd j|}|rZ|j|n|S( Nsfalse() and position() = 0is last() - %ssposition() = %ss+%sis(position() %s) mod %s = 0sposition() >= %ssposition() < (last() %s)s and (t parse_seriesR#t add_name_testtadd_star_prefixtstrtappendtjoin(R R"R-tlastR8tatbtb_neg((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_nth_childs:          cCs|j||dtS(NR=(RAtTrue(R R"R-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_nth_last_childscCs4|jdkrtdn|j||dtS(Nt*s"*:nth-of-type() is not implementedR8(telementtNotImplementedErrorRAtFalse(R R"R-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_nth_of_types cCs|j||dtdtS(NR=R8(RARBRG(R R"R-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_nth_last_of_typescCs?t|tr|j}n|jdt|j|S(Ns'contains(css:lower-case(string(.)), %s)(t isinstancetElementt_format_elementR#R$tlower(R R"R-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_containss  cCs*|j}|j}|jd||S(Nsnot(%s)(R"t conditionR#(R R"R-tcond((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt _xpath_nots  (RRRR1R RR"RGRBRARCRHRIRNRQ(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR&ys    *    cCs |jS(N(RM(tcontextts((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_make_lower_casesshttp://codespeak.net/lxml/css/R s lower-casetPseudoc BseZdZddddddddd d d g Zd Zd ZdZdZdZdZ dZ dZ dZ dZ dZdZRS(s# Represents selector:ident t indeterminates first-lines first-lettert selectiontbeforetaftertlinktvisitedtactivetfocusthovercCs1||_|dkst||_||_dS(Nt:s::(R_s::(REtAssertionErrorR+tident(R RER+Ra((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s  cCs#d|jj|j|j|jfS(Ns %s[%r%s%s](R RRER+Ra(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCs|jj}|j|jkr7td|jnd|jjdd}t||sutd|jnt||}||}|S(Ns"The pseudo-class %r is unsupportedR.R/R0sThe pseudo-class %r is unknown(RER"RaR1RR2R3R4(R tel_xpathR6((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"s cCs|jd|S(NsE(@selected or @checked) and (name(.) = 'input' or name(.) = 'option')(R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_checked s cCs tdS(N(RF(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt _xpath_rootscCs%|j|j|jd|S(Nsposition() = 1(R9R8R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_first_childs   cCs%|j|j|jd|S(Nsposition() = last()(R9R8R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_last_childs   cCs9|jdkrtdn|j|jd|S(NRDs"*:first-of-type is not implementedsposition() = 1(RERFR9R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_first_of_types    cCs9|jdkrtdn|j|jd|S(NRDs!*:last-of-type is not implementedsposition() = last()(RERFR9R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_last_of_type's    cCs%|j|j|jd|S(Ns last() = 1(R8R9R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_only_child/s   cCs/|jdkrtdn|jd|S(NRDs!*:only-of-type is not implementeds last() = 1(RERFR#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_only_of_type5s   cCs|jd|S(Ns!not(*) and not(normalize-space())(R#(R R"((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt _xpath_empty<s (RRRR1R RR"RcRdReRfRgRhRiRjRk(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRUs            tAttribcBs;eZdZdZdZdZdZdZRS(s> Represents selector[namespace|attrib operator value] cCs1||_||_||_||_||_dS(N(Rt namespacetattribtoperatortvalue(R RRmRnRoRp((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR Es     cCs_|jdkr/d|jj|j|jfSd|jj|j|j|j|jfSdS(Ntexistss %s[%r[%s]]s%s[%r[%s %s %r]](RoR RRt_format_attribRp(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRLs   cCs.|jdkr|jSd|j|jfSdS(NRDs%s|%s(RmRn(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRrZscCs2|jdkrd|jSd|j|jfSdS(NRDt@s@%s:%s(RmRn(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt _xpath_attrib`s cCs|jj}|j}|j}|jdkrP| s@t|j|n|jdkr|jd|t|fn|jdkr|r|jd||t|fq|jd|t|fn,|jdkr|jd|td |d fn|jd krM|jd |t||t|d fn|jd kr||jd|t|fn|jdkr|jd||t|dt|fnH|jdkr|jd|t|fndstd|j|S(NRqt=s%s = %ss!=snot(%s) or %s != %ss%s != %ss~=s3contains(concat(' ', normalize-space(%s), ' '), %s)R!s|=s%s = %s or starts-with(%s, %s)R/s^=sstarts-with(%s, %s)s$=s(substring(%s, string-length(%s)-%s) = %sis*=scontains(%s, %s)isUnknown operator: %r( RR"RtRpRoR`R#R$tlen(R R RnRp((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"gs@      (    ' (RRRR RRrRtR"(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRl@s     RKcBs2eZdZdZdZdZdZRS(s& Represents namespace|element cCs||_||_dS(N(RmRE(R RmRE((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s cCsd|jj|jfS(Ns%s[%s](R RRL(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCs.|jdkr|jSd|j|jfSdS(NRDs%s|%s(RmRE(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRLscCsD|jdkr!|jj}nd|j|jf}td|S(NRDs%s:%sRE(RmRERMt XPathExpr(R tel((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"s(RRRR RRLR"(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRKs    tHashcBs)eZdZdZdZdZRS(s Represents selector#id cCs||_||_dS(N(RR(R RR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s cCsd|jj|j|jfS(Ns %s[%r#%s](R RRR(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCs-|jj}|jdt|j|S(Ns@id = %s(RR"R#R$R(R R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"s(RRRR RR"(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRys  tOrcBs#eZdZdZdZRS(cCs ||_dS(N(titems(R R{((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR scCsd|jj|jfS(Ns%s(%r)(R RR{(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCs,g|jD]}|j^q }t|S(N(R{R"t XPathExprOr(R titemtpaths((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"s"(RRR RR"(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRzs  tCombinedSelectorcBsieZidd6dd6dd6dd6ZdZd Zd Zd Zd Zd ZdZ RS(t descendantR!tchildt>tdirect_adjacentt+tindirect_adjacentt~cCs1|dk st||_||_||_dS(N(RR`Rt combinatort subselector(R RRR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s  cCsA|jdkrd}n |j}d|jj|j||jfS(NR!s s %s[%r %s %r](RR RRR(R tcomb((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs   cCsj|j|jkr(td|jnd|j|j}t||}|jj}|||jS(NsUnknown combinator: %rR.(Rt_method_mappingRR4RR"R(R R6R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR"scCs|jd|j|S(Ns/descendant-or-self::*/(R<R"(R R"tsub((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_descendantscCs|jd|j|S(Nt/(R<R"(R R"R((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt _xpath_childscCs1|jd|j|j|jd|S(Ns/following-sibling::sposition() = 1(R<R"R8R#(R R"R((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_direct_adjacents  cCs|jd|j|S(Ns/following-sibling::(R<R"(R R"R((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt_xpath_indirect_adjacents( RRRR RR"RRRR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs     s^\w+\s*$s^(\w*)#(\w+)\s*$s^(\w*)\.(\w+)\s*$sdescendant-or-self::cCs,t|trtj|}|dk rGd||jdjfStj|}|dk rd||jdpzd|jdfStj|}|dk rd||jdpd|jdfSt |}n|j }|dk s t dt ||r"|j |nt|S( Ns%s%sis%s%s[@id = '%s']iRDisA%s%s[contains(concat(' ', normalize-space(@class), ' '), ' %s ')]s%Got None for xpath expression from %s(RJt _basestringt_el_retsearchRtgrouptstript_id_ret _class_retparseR"R`treprt add_prefixR(tcss_exprtprefixtmatchR-((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s&  & & RwcBsheZd d dd edZdZdZdZdZdZ dZ dZ d Z RS( RDcCs1||_||_||_||_||_dS(N(RR REROt star_prefix(R RR REROR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR #s     cCsd}|jdk r+|t|j7}n|jdk rP|t|j7}n|t|j7}|jr|d|j7}n|S(Nts[%s](RRRR RERO(R R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt__str__+s cCsd|jj|fS(Ns%s[%s](R R(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR6scCs/|jr"d|j|f|_n ||_dS(Ns %s and (%s)(RO(R RO((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR#:s cCs=|jdkr|j|_n|j|j7_||_dS(N(R RRE(R tpart((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pytadd_path@scCs)|jr||j|_n ||_dS(N(R(R R((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRGs cCs:|jdkrdS|jdt|jd|_dS(NRDs name() = %s(RER#R$(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR8MscCs1|jr|jd7_n d|_t|_dS(s Adds a /* prefix if there is no prefix. This is when you need to keep context's constrained to a single parent. s*/N(R RBR(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR9Ts  cCs~t|}||7}|jp"d|jp.d}|jrP|dkrPd}n||_||_|j|_|j|_dS(NRs*/(RRR RRERO(R tcombinertotherRR ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR<_s      N( RRRRGR RRR#RRR8R9R<(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRw!s        R|cBs#eZdZddZdZRS(s Represents |'d expressions. Note that unfortunately it isn't the union, it's the sum, so duplicate elements will appear. cCs9x |D]}|dk stqW||_||_dS(N(RR`R{R(R R{RR}((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR rs  cCs<|jp d}djg|jD]}d||f^qS(NRs | s%s%s(RR<R{(R Rti((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRxsN(RRRRR R(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR|ls s('+)cCst|tr|j}n t|}d|krCd|}nad|kr\d|}nHddjgt|D](}|rrd|krdpd|^qr}|S(Nt's'%s't"s"%s"s concat(%s)t,(RJRKRLRR<tsplit_at_single_quotes(RSR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR$~s      <cCstt|}||_yt|SWntk rddl}|jd}d||j|jf}||_ |j dkr||_ nt |g|_ nXdS(Niis%s at %s -> %rii(ii(t TokenStreamttokenizetsourcetparse_selector_groupRtsystexc_infotusedtpeektmsgt version_infotmessagettupletargs(tstringtstreamRteR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs     cCsgg}x6|jt||jdkr;|jq Pq t|dkrY|dSt|SdS(NRii(R;tparse_selectorRtnextRvRz(Rtresult((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs cCst|}x|j}|dks3|dkr7|S|dkru|j}x)|jdkrq|jqRWnd}t|j}t|}|t|jkrtd|jnt|||}q|S(NRRRRR!sExpected selector, got '%s'(RRR(tparse_simple_selectorRRRRvRRR(RRRRtconsumedt next_selector((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs"     c Cs|j}|dkr5t|t r5d}}n|j}|dkrpt|t rptd|n|jdkr|}|j|j}|dkrt|t rtd|qn d}|}t||}t}x&|j}|dkrA|rPn|jt||j}t}qq|dkrr|jt ||j}qq|dkr|jt ||}|j}|dkstd|qqq|d ks|d kr|j}|j}t|tstd|n|jd kr|j|j}t|t r`|j} n<t|trt |rt |j} n t|} |j}|d kstd || fnt|||| }qt|||}qq|dkr|jnPq|S(NRDsExpected symbol, got '%s't|t#t.t[t]s] expected, got '%s'R_s::t(t)sExpected ')', got '%s' and '%s'R!(RRJRRRRKRGRyRBRt parse_attribRtis_inttintRR&RU( RRRERmRRthas_hashR+RaR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs                       cCs+yt|Wntk r"tSXtSdS(N(Rt ValueErrorRGRB(tv((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs  cCs|j}|jdkr=|}|j|j}nd}|jdkrkt|||ddS|j}|dkrtd |n|j}t|ttfstd |nt|||||S(NRRDRRqs^=s$=s*=Rus~=s|=s!=sOperator expected, got '%s's#Expected string or symbol, got '%s'(s^=s$=s*=Rus~=s|=s!=(RRRlRRRJRR(RRRnRmtopRp((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs"     cCsHt|tr|j}n| s1|dkr5d St|trNd|fS|dkr^d S|dkrnd S|dkr~dSd|krdt|fS|jdd\}}|sd}n7|dks|d krt|d }n t|}|sd}n7|dks|d kr2t|d }n t|}||fS(sJ Parses things like '1n+2', or 'an+b' generally, returning (a, b) RDitoddiiteventnR/Rt1(ii(ii(ii(ii(RJRKRLRtsplit(RSR>R?((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR7-s4         s\s+s /\*.*?\*/s[+-]?\d*n(?:[+-]\d+)?ccsd}td|}xt|d|}|rE|}|j}nd}|t|kradSt|d|}|r|jdkr|||j!}t||V|j}qn||}|||d!}|dkr,|d kr|dkrtd |Vnt||V|d7}qn|dkr|dkra|dkratd |Vnt||V|d7}qn|dks|dkr|}t||\}}t ||Vqn|}t ||\}}t||VqqdS(NiRRRis~=s|=s^=s$=s*=s::s!=R!s>+~,.*=[]()|:#s:.#[iRR(s~=s|=s^=s$=s*=s::s!=( t_replace_commentst_match_whitespacetendRvt_match_count_numberRRRttokenize_escaped_stringRttokenize_symbol(RSRRtpreceding_whitespace_postsymtctc2told_pos((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR\sN      s (\\(?:%s))Rs[A-Fa-f0-9]{1,6}(?: |\s)?s [^A-Fa-f0-9]cCsg}xt|D]}|s%qnd|kr|ddkrt|dkr|d}|ddkrtt|d}qqtd|jdd|fn|j|qWdj|S(Ns\iit0123456789ABCDEFabcdefis'Invalid escape sequence %r in string %rR(tsplit_at_string_escapesRvt_unichrRRRR;R<(tliteralt substringst substring((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pytunescape_string_literals "  cCs||}|dkst|d}|}x|j||}|dkrjtd|||fn|||!}|jdr|d}q/nd|krt|}n||dfSdS(NRRiis%Expected closing %s for string in: %rs\(RR(R`tfindRtendswithR(RSRtquotetstartRR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs"      s[^\w\\-]cCs|}tj|d|}|s5||t|fS|j|krjdsjtd|||fn|s||}t|}n|||j!}|j}y|jddjd}WnCtk r ddl}|j d}t d ||fnX||fS( NRisUnexpected symbol: %r at %stASCIItbackslashreplacetunicode_escapeiisBad symbol %r: %s( t_illegal_symbolRRvRR`tencodetdecodetUnicodeDecodeErrorRRR(RSRRRRRR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs(     RcBs/eZddZdZdZdZRS(cCsmg|_t||_||_d|_t|_y|jj|_ Wn t k rh|jj |_ nXdS(N( RtiterttokensRRtpeekedRGt_peekingRt next_tokentAttributeErrort__next__(R RR((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyR s     cCsi|jr,t|_|jj|j|jSy$|j}|jj||SWntk rddSXdS(N(RRGRR;RRt StopIterationR(R R((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs    cCst|jdS(N(RRR(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyt__iter__scCsD|js=y|j|_Wntk r0dSXt|_n|jS(N(RRRRRRB(R ((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs   N(RRRR RRR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pyRs (ERtretlxmlRt__all__t basestringRt NameErrorR:t SyntaxErrorRt RuntimeErrorRRRtunicodeRtunichrRtchrRRRRtobjectRR&RTtFunctionNamespacetnsRRURlRKRyRzRtcompiletUNICODERRRRRwR|RRR$RRRRRRR7RRtDOTALLRRRRR<RRRRRR(((s4/usr/lib/python2.7/vendor-packages/lxml/cssselect.pytsx     (     h   XP < K    L   ) +