o dR*@sddlZddlmZddlmZddlmZddZddZd d Z d d Z Gd dde Z Gddde Z Gddde ZGdddeZGdddeZdS)N) functions) string_type)NumbercCst||rdS||kSNF)_is_special_number_casexyr k/private/var/folders/v1/_jykv66s6qd26_69j1njbrl80000gr/T/pip-target-p1gutpg6/lib/python/jmespath/visitor.py_equalss r cCs<t|r |dvr t|tSt|r|dvrt|tSdSdS)N)r)_is_actual_number isinstanceboolrr r r rs   rcCst|pt|tSN)rrrrr r r _is_comparable&srcCst|trdSt|tSr)rrrrr r r r.s  rc@seZdZdZdddZdS)Optionsz8Options to control how a JMESPath function is evaluated.NcC||_||_dSr)dict_clscustom_functions)selfrrr r r __init__=s zOptions.__init__)NN)__name__ __module__ __qualname____doc__rr r r r r;src@seZdZddZddZdS) _ExpressioncCrr) expression interpreter)rrr r r r rKs z_Expression.__init__cOs|jj|g|Ri|Sr)r visitrnodeargskwargsr r r r!Osz_Expression.visitN)rrrrr!r r r r rJs rc@s$eZdZddZddZddZdS)VisitorcCs i|_dSr) _method_cacherr r r rTs zVisitor.__init__cOsR|d}|j|}|durt|d|d|j}||j|<||g|Ri|S)Ntypezvisit_%s)r'getgetattr default_visit)rr#r$r%Z node_typemethodr r r r!Ws  z Visitor.visitcOstd)Nr,NotImplementedErrorr"r r r r,`zVisitor.default_visitN)rrrrr!r,r r r r r&Ss r&cseZdZeddejejejejdZ ddgZ e Z d;fdd Z d d Zd d Zd dZddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Z d/d0Z!d1d2Z"d3d4Z#d5d6Z$d7d8Z%d9d:Z&Z'S)<TreeInterpretercCs t|| Sr)r rr r r gs zTreeInterpreter.)eqneltgtZlteZgter3r4Ncsdtt||j|_|durt}||_|jdur|jj|_|jdur+|jj|_ dSt |_ dSr) superr1rMAP_TYPE _dict_clsr_optionsrr _functionsrZ Functions)roptions __class__r r rps   zTreeInterpreter.__init__cOs t|d)Nr)r.r"r r r r,} zTreeInterpreter.default_visitcC"|}|dD]}|||}q|SNchildrenr!rr#valueresultr r r visit_subexpression z#TreeInterpreter.visit_subexpressioncCs&z||dWStyYdSwNrE)r*AttributeErrorrr#rEr r r visit_fields  zTreeInterpreter.visit_fieldcCs|j|d}|d|jvr#|||dd|||dd|S||dd|}||dd|}ttf}t|rCt|sEdS|||S)NrErBrr )COMPARATOR_FUNC _EQUALITY_OPSr!intfloatr)rr#rEZcomparator_funcleftrightZ num_typesr r r visit_comparators z TreeInterpreter.visit_comparatorcC|Srr rKr r r visit_currentzTreeInterpreter.visit_currentcCst|dd|SNrBr)rrKr r r visit_exprefszTreeInterpreter.visit_exprefcCs:g}|dD] }|||}||q|j|d|SNrBrE)r!appendr;Z call_function)rr#rEZ resolved_argschildcurrentr r r visit_function_expressions    z)TreeInterpreter.visit_function_expressioncCsx||dd|}t|tsdS|dd}g}|D]}||||r9||dd|}|dur9||q|S)NrBrr )r!rlist_is_truerZ)rr#rEbaseZcomparator_node collectedelementr\r r r visit_filter_projections   z'TreeInterpreter.visit_filter_projectioncCsT||dd|}t|tsdSg}|D]}t|tr"||q||q|SrW)r!rr_extendrZ)rr#rEraZ merged_listrcr r r visit_flattens    zTreeInterpreter.visit_flattencCrTrr rKr r r visit_identityrVzTreeInterpreter.visit_identitycCs2t|tsdSz||dWStyYdSwrI)rr_ IndexErrorrKr r r visit_indexs  zTreeInterpreter.visit_indexcCr@rArCrDr r r visit_index_expressionrHz&TreeInterpreter.visit_index_expressioncCs"t|tsdSt|d}||SrA)rr_slice)rr#rEsr r r visit_slices  zTreeInterpreter.visit_slicecCs||dd|SrWrCrKr r r visit_key_val_pairsz"TreeInterpreter.visit_key_val_paircCs|dSrIr rKr r r visit_literalr0zTreeInterpreter.visit_literalcCs:|durdS|}|dD] }|||||d<q|SrY)r9r!rr#rErbr[r r r visit_multi_select_dicts  z'TreeInterpreter.visit_multi_select_dictcCs4|durdSg}|dD] }||||q |SrA)rZr!rpr r r visit_multi_select_lists  z'TreeInterpreter.visit_multi_select_listcCs6||dd|}||r||dd|}|SNrBrr r! _is_falserr#rEmatchedr r r visit_or_expressions z#TreeInterpreter.visit_or_expressioncCs6||dd|}||r|S||dd|Srsrtrvr r r visit_and_expressions z$TreeInterpreter.visit_and_expressioncCs.||dd|}t|r|dkrdS| S)NrBrF)r!r)rr#rEZoriginal_resultr r r visit_not_expressionsz$TreeInterpreter.visit_not_expressioncCr@rArCrDr r r visit_pipe rHzTreeInterpreter.visit_pipecCsZ||dd|}t|tsdSg}|D]}||dd|}|dur*||q|Srs)r!rr_rZrr#rErarbrcr\r r r visit_projections  z TreeInterpreter.visit_projectioncCsn||dd|}z|}Wn tyYdSwg}|D]}||dd|}|dur4||q|Srs)r!valuesrJrZr|r r r visit_value_projections   z&TreeInterpreter.visit_value_projectioncCs(|dkp|gkp|ikp|dup|duS)NFr rrEr r r ru(s zTreeInterpreter._is_falsecCs || Sr)rurr r r r`/r?zTreeInterpreter._is_truer)(rrrr operatorr5r6legerMrNdictr8rr,rGrLrSrUrXr]rdrfrgrirjrmrnrorqrrrxryrzr{r}rrur` __classcell__r r r=r r1dsH      r1cs,eZdZfddZddZddZZS)GraphvizVisitorcstt|g|_d|_dS)Nr )r7rr_lines_countr(r=r r r4s zGraphvizVisitor.__init__cOsP|jdd|d|jf}|jd7_||||jdd|jS)Nz digraph AST {%s%sr)r } )rrZr_visitjoin)rr#r$r%r\r r r r!9s    zGraphvizVisitor.visitc Csx|jd||d|ddf|dgD]"}d|d|jf}|jd7_|jd||f|||qdS) Nz%s [label="%s(%s)"]r)rErrBrr z %s -> %s)rrZr*rr)rr#r\r[Z child_namer r r rAszGraphvizVisitor._visit)rrrrr!rrr r r=r r3s r)rZjmespathrZjmespath.compatrnumbersrr rrrobjectrrr&r1rr r r r s     P