z]c@sddlZddlmZddlmZddlmZdZdZdZ dZ d e fd YZ d e fd YZ d e fdYZdefdYZdefdYZdS(iN(t functions(t string_type(tNumbercCs!t||rtS||kSdS(N(t_is_special_integer_casetFalse(txty((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt_equalsscCs`|dks|dkr.|tkp-|tkS|dksF|dkr\|tkp[|tkSdS(Nii(tTrueR(RR((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRscCst|pt|tS(N(t_is_actual_numbert isinstanceR(R((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt_is_comparable&scCs)|tks|tkrtSt|tS(N(RRR R(R((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR .stOptionscBseZdZdddZRS(s8Options to control how a JMESPath function is evaluated.cCs||_||_dS(N(tdict_clstcustom_functions(tselfR R((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt__init__=s N(t__name__t __module__t__doc__tNoneR(((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR ;st _ExpressioncBseZdZdZRS(cCs||_||_dS(N(t expressiont interpreter(RRR((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRKs cOs|jj|||S(N(Rtvisit(Rtnodetargstkwargs((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyROs(RRRR(((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRJs tVisitorcBs#eZdZdZdZRS(cCs i|_dS(N(t _method_cache(R((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRTscOse|d}|jj|}|dkrUt|d|d|j}||j|gttnetlttgttltetgtecCstt|j|j|_|dkr7t}n||_|jdk ra|jj|_n|j dk r|jj |_ nt j |_ dS(N( tsuperR%RtMAP_TYPEt _dict_clsRR t_optionsR Rt _functionsRt Functions(Rtoptions((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRps    cOst|ddS(NR(R$(RRRR((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR!}scCs1|}x$|dD]}|j||}qW|S(Ntchildren(R(RRtvaluetresult((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_subexpressionscCs.y|j|dSWntk r)dSXdS(NR6(RtAttributeErrorR(RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_fields cCs|j|d}|d|jkrY||j|dd||j|dd|S|j|dd|}|j|dd|}ttf}t|ot|sdS|||SdS(NR6R5ii(tCOMPARATOR_FUNCt _EQUALITY_OPSRtinttfloatR R(RRR6tcomparator_functlefttrightt num_types((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_comparators   cCs|S(N((RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_currentscCst|dd|S(NR5i(R(RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_exprefscCsQg}x1|dD]%}|j||}|j|qW|jj|d|S(NR5R6(RtappendR2t call_function(RRR6t resolved_argstchildtcurrent((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_function_expressions cCs|j|dd|}t|ts-dS|dd}g}xb|D]Z}|j|j||rH|j|dd|}|dk r|j|qqHqHW|S(NR5iii(RR tlistRt_is_trueRF(RRR6tbasetcomparator_nodet collectedtelementRJ((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_filter_projections  cCst|j|dd|}t|ts-dSg}x:|D]2}t|tr_|j|q:|j|q:W|S(NR5i(RR RLRtextendRF(RRR6RNt merged_listRQ((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_flattens cCs|S(N((RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_identityscCs<t|tsdSy||dSWntk r7dSXdS(NR6(R RLRt IndexError(RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_indexs  cCs1|}x$|dD]}|j||}qW|S(NR5(R(RRR6R7((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_index_expressionscCs+t|tsdSt|d}||S(NR5(R RLRtslice(RRR6ts((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_slicescCs|j|dd|S(NR5i(R(RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_key_val_pairscCs|dS(NR6((RRR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyt visit_literalscCsO|dkrdS|j}x,|dD] }|j||||ddSXg}xD|D]<}|j|dd|}|dk rL|j|qLqLW|S(NR5ii(RtvaluesR9RRF(RRR6RNRPRQRJ((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pytvisit_value_projections   cCs:|dkp9|gkp9|ikp9|dkp9|tkS(NR((RR(RR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRa(s0cCs|j| S(N(Ra(RR6((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRM/sN('RRRtoperatorR*R+tletgeR;R<tdictR/RRR!R8R:RCRDRERKRRRURVRXRYR\R]R^R_R`RcRdRfRgRhRjRaRM(((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR%dsF                         tGraphvizVisitorcBs#eZdZdZdZRS(cCs)tt|jg|_d|_dS(Ni(R.RoRt_linest_count(R((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR4s cOsf|jjdd|d|jf}|jd7_|j|||jjddj|jS(Ns digraph AST {s%s%sRit}s (RpRFRqt_visittjoin(RRRRRJ((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyR9s cCs|jjd||d|jddfxj|jdgD]V}d|d|jf}|jd7_|jjd||f|j||q@WdS( Ns%s [label="%s(%s)"]RR6R(R5s%s%sis %s -> %s(RpRFRRqRs(RRRJRIt child_name((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRsAs !(RRRRRs(((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyRo3s  (RktjmespathRtjmespath.compatRtnumbersRRRR R tobjectR RRR%Ro(((s2/tmp/pip-build-kBFYxq/jmespath/jmespath/visitor.pyts