a 97a\*@sddlZddlmZddlmZddlmZddZddZd d Z d d Z Gd dde Z Gddde Z Gddde ZGdddeZGdddeZdS)N) functions) string_type)NumbercCst||rdS||kSdS)NF)_is_special_integer_casexyr k/private/var/folders/s6/9n5zrl012gv99k63s4q6ccsd4s6mqz/T/pip-target-f5cq3f2q/lib/python/jmespath/visitor.py_equalss r cCs\t|tur,|dks|dkr,|dup*|duSt|turX|dksH|dkrX|dupV|duSdS)NrTF)typeintrr r r rsrcCst|pt|tSN)_is_actual_number isinstancerrr r r _is_comparable&srcCs|dus|durdSt|tS)NTF)rrrr r r r.src@seZdZdZdddZdS)Optionsz8Options to control how a JMESPath function is evaluated.NcCs||_||_dSr)dict_clscustom_functions)selfrrr r r __init__=s zOptions.__init__)NN)__name__ __module__ __qualname____doc__rr r r r r;src@seZdZddZddZdS) _ExpressioncCs||_||_dSr) expression interpreter)rrrr r r rKsz_Expression.__init__cOs|jj|g|Ri|Sr)rvisitrnodeargskwargsr r r r Osz_Expression.visitN)rrrrr r r r r rJsrc@s$eZdZddZddZddZdS)VisitorcCs i|_dSr) _method_cacherr r r rTszVisitor.__init__cOsR|d}|j|}|durgzTreeInterpreter.)eqneltgtZlteZgter1r2Ncsbtt||j|_|dur$t}||_|jdur>|jj|_|jdurT|jj|_ n t |_ dSr) superr.rMAP_TYPE _dict_clsr_optionsrr _functionsrZ Functions)roptions __class__r r rps    zTreeInterpreter.__init__cOst|ddS)Nr r,r!r r r r*}szTreeInterpreter.default_visitcCs"|}|dD]}|||}q |SNchildrenr rr"valueresultr r r visit_subexpressions z#TreeInterpreter.visit_subexpressioncCs*z||dWSty$YdS0dSNrA)r(AttributeErrorrr"rAr r r visit_fields zTreeInterpreter.visit_fieldcCs|j|d}|d|jvrF|||dd|||dd|S||dd|}||dd|}ttf}t|rt|sdS|||SdS)NrAr>rr )COMPARATOR_FUNC _EQUALITY_OPSr rfloatr)rr"rAZcomparator_funcleftrightZ num_typesr r r visit_comparatorsz TreeInterpreter.visit_comparatorcCs|Srr rFr r r visit_currentszTreeInterpreter.visit_currentcCst|dd|SNr>r)rrFr r r visit_exprefszTreeInterpreter.visit_exprefcCs:g}|dD]}|||}||q |j|d|SNr>rA)r appendr9 call_function)rr"rAZ resolved_argschildcurrentr r r visit_function_expressions    z)TreeInterpreter.visit_function_expressioncCsx||dd|}t|ts"dS|dd}g}|D]<}||||r6||dd|}|dur6||q6|S)Nr>rr )r rlist_is_truerR)rr"rAbaseZcomparator_node collectedelementrUr r r visit_filter_projections   z'TreeInterpreter.visit_filter_projectioncCsT||dd|}t|ts"dSg}|D]$}t|trD||q*||q*|SrO)r rrXextendrR)rr"rArZZ merged_listr\r r r visit_flattens    zTreeInterpreter.visit_flattencCs|Srr rFr r r visit_identityszTreeInterpreter.visit_identitycCs6t|tsdSz||dWSty0YdS0dSrD)rrX IndexErrorrFr r r visit_indexs   zTreeInterpreter.visit_indexcCs"|}|dD]}|||}q |Sr=r?r@r r r visit_index_expressions z&TreeInterpreter.visit_index_expressioncCs"t|tsdSt|d}||Sr=)rrXslice)rr"rAsr r r visit_slices  zTreeInterpreter.visit_slicecCs||dd|SrOr?rFr r r visit_key_val_pairsz"TreeInterpreter.visit_key_val_paircCs|dSrDr rFr r r visit_literalszTreeInterpreter.visit_literalcCs:|dur dS|}|dD]}|||||d<q|SrQ)r7r rr"rAr[rTr r r visit_multi_select_dicts  z'TreeInterpreter.visit_multi_select_dictcCs4|dur dSg}|dD]}||||q|Sr=)rRr rir r r visit_multi_select_lists  z'TreeInterpreter.visit_multi_select_listcCs6||dd|}||r2||dd|}|SNr>rr r _is_falserr"rAmatchedr r r visit_or_expressions z#TreeInterpreter.visit_or_expressioncCs6||dd|}||r"|S||dd|Srlrmror r r visit_and_expressions z$TreeInterpreter.visit_and_expressioncCs2||dd|}t|tur,|dkr,dS| S)Nr>rF)r r r)rr"rAZoriginal_resultr r r visit_not_expressionsz$TreeInterpreter.visit_not_expressioncCs"|}|dD]}|||}q |Sr=r?r@r r r visit_pipe s zTreeInterpreter.visit_pipecCsZ||dd|}t|ts"dSg}|D]*}||dd|}|dur*||q*|Srl)r rrXrRrr"rArZr[r\rUr r r visit_projections  z TreeInterpreter.visit_projectioncCsn||dd|}z |}Wnty4YdS0g}|D]*}||dd|}|dur>||q>|Srl)r valuesrErRrur r r visit_value_projections   z&TreeInterpreter.visit_value_projectioncCs(|dkp&|gkp&|ikp&|dup&|duS)NFr rrAr r r rn(s zTreeInterpreter._is_falsecCs || Sr)rnrzr r r rY/szTreeInterpreter._is_true)N)(rrrr operatorr3r4legerHrIdictr6rr*rCrGrMrNrPrVr]r_r`rbrcrfrgrhrjrkrqrrrsrtrvrxrnrY __classcell__r r r;r r.dsF      r.cs,eZdZfddZddZddZZS)GraphvizVisitorcstt|g|_d|_dS)Nr )r5rr_lines_countr'r;r r r4szGraphvizVisitor.__init__cOsP|jdd|d|jf}|jd7_||||jdd|jS)Nz digraph AST {%s%sr r } )rrRr_visitjoin)rr"r#r$rUr r r r 9s    zGraphvizVisitor.visitc Csx|jd||d|ddf|dgD]D}d|d|jf}|jd7_|jd||f|||q.dS) Nz%s [label="%s(%s)"]r rAryr>rr z %s -> %s)rrRr(rr)rr"rUrTZ child_namer r r rAszGraphvizVisitor._visit)rrrrr rrr r r;r r3s r)r{ZjmespathrZjmespath.compatrZnumbersrr rrrobjectrrr%r.rr r r r s     P