U n^*@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 j/private/var/folders/sd/whlwsn6x1_qgglc0mjv25_695qk2gl/T/pip-install-4zq3fp6i/jmespath/jmespath/visitor.py_equalss r cCsD|dks|dkr |dkp|dkS|dks0|dkr@|dkp>|dkSdS)NrTFr rr r r rsrcCst|pt|tSN)_is_actual_number isinstancerrr r r _is_comparable&srcCs|dks|dkrdSt|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|f||Sr )rvisitrnodeargskwargsr r r rOsz_Expression.visitN)rrrrrr r r r rJsrc@s$eZdZddZddZddZdS)VisitorcCs i|_dSr ) _method_cacherr r r rTszVisitor.__init__cOsL|d}|j|}|dkrgzTreeInterpreter.)eqneltgtZlteZgter0r1Ncsbtt||j|_|dkr$t}||_|jdk r>|jj|_|jdk rT|jj|_ n t |_ dSr ) superr-rMAP_TYPE _dict_clsr_optionsrr _functionsrZ Functions)roptions __class__r r rps    zTreeInterpreter.__init__cOst|ddS)Nr&r+rr r r r)}szTreeInterpreter.default_visitcCs"|}|dD]}|||}q |SNchildrenrrr valueresultr r r visit_subexpressions z#TreeInterpreter.visit_subexpressioncCs,z||dWStk r&YdSXdSNr@)r'AttributeErrorrr r@r r r visit_fieldszTreeInterpreter.visit_fieldcCs|j|d}|d|jkrF|||dd|||dd|S||dd|}||dd|}ttf}t|rt|sdS|||SdS)Nr@r=rr )COMPARATOR_FUNC _EQUALITY_OPSrintfloatr)rr r@Zcomparator_funcleftrightZ num_typesr r r visit_comparatorsz TreeInterpreter.visit_comparatorcCs|Sr r rEr r r visit_currentszTreeInterpreter.visit_currentcCst|dd|SNr=r)rrEr r r visit_exprefszTreeInterpreter.visit_exprefcCs:g}|dD]}|||}||q |j|d|SNr=r@)rappendr8 call_function)rr r@Z resolved_argschildcurrentr r r visit_function_expressions    z)TreeInterpreter.visit_function_expressioncCsx||dd|}t|ts"dS|dd}g}|D]<}||||r6||dd|}|dk r6||q6|S)Nr=rr )rrlist_is_truerR)rr r@baseZcomparator_node collectedelementrUr r r visit_filter_projections   z'TreeInterpreter.visit_filter_projectioncCsT||dd|}t|ts"dSg}|D]$}t|trD||q*||q*|SrO)rrrXextendrR)rr r@rZZ merged_listr\r r r visit_flattens    zTreeInterpreter.visit_flattencCs|Sr r rEr r r visit_identityszTreeInterpreter.visit_identitycCs8t|tsdSz||dWStk r2YdSXdSrC)rrX IndexErrorrEr 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 r@sr r r visit_slices  zTreeInterpreter.visit_slicecCs||dd|SrOr>rEr r r visit_key_val_pairsz"TreeInterpreter.visit_key_val_paircCs|dSrCr rEr r r visit_literalszTreeInterpreter.visit_literalcCs:|dkr dS|}|dD]}|||||d<q|SrQ)r6rrr r@r[rTr r r visit_multi_select_dicts  z'TreeInterpreter.visit_multi_select_dictcCs4|dkr dSg}|dD]}||||q|Sr<)rRrrir r r visit_multi_select_lists  z'TreeInterpreter.visit_multi_select_listcCs6||dd|}||r2||dd|}|SNr=rr r _is_falserr r@matchedr r r visit_or_expressions z#TreeInterpreter.visit_or_expressioncCs6||dd|}||r"|S||dd|Srlrmror r r visit_and_expressions z$TreeInterpreter.visit_and_expressioncCs&||dd|}|dkr dS| S)Nr=rFr>)rr r@Zoriginal_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|}|dk r*||q*|Srl)rrrXrRrr r@rZr[r\rUr r r visit_projections  z TreeInterpreter.visit_projectioncCsp||dd|}z |}Wntk r6YdSXg}|D]*}||dd|}|dk r@||q@|Srl)rvaluesrDrRrur r r visit_value_projections  z&TreeInterpreter.visit_value_projectioncCs(|dkp&|gkp&|ikp&|dkp&|dkS)NFr rr@r r r rn(s zTreeInterpreter._is_falsecCs || Sr )rnrzr r r rY/szTreeInterpreter._is_true)N)(rrrr operatorr2r3legerGrHdictr5rr)rBrFrMrNrPrVr]r_r`rbrcrfrgrhrjrkrqrrrsrtrvrxrnrY __classcell__r r r:r r-dsF      r-cs,eZdZfddZddZddZZS)GraphvizVisitorcstt|g|_d|_dS)Nr )r4rr_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 r9s    zGraphvizVisitor.visitc Csx|jd||d|ddf|dgD]D}d|d|jf}|jd7_|jd||f|||q.dS) Nz%s [label="%s(%s)"]r&r@ryr=rr z %s -> %s)rrRr'rr)rr rUrTZ child_namer r r rAs zGraphvizVisitor._visit)rrrrrrrr r r:r r3s r)r{ZjmespathrZjmespath.compatrZnumbersrr rrrobjectrrr#r-rr r r r s     P