U å€C^*ã@s ddlZddlmZddlmZddlmZdd„Zdd„Zd d „Z d d „Z Gd d„de ƒZ Gdd„de ƒZ Gdd„de ƒZGdd„deƒZGdd„deƒZdS)éN)Ú functions)Ú string_type)ÚNumbercCst||ƒrdS||kSdS)NF)Ú_is_special_integer_case©ÚxÚy©r ú6/tmp/pip-install-6_kvzl1k/jmespath/jmespath/visitor.pyÚ_equalss r cCsD|dks|dkr |dkp|dkS|dks0|dkr@|dkp>|dkSdS)NréTFr rr r r rsrcCst|ƒpt|tƒS©N)Ú_is_actual_numberÚ isinstancer©rr r r Ú_is_comparable&srcCs|dks|dkrdSt|tƒS)NTF)rrrr r r r.src@seZdZdZddd„ZdS)ÚOptionsz8Options to control how a JMESPath function is evaluated.NcCs||_||_dSr )Údict_clsÚcustom_functions)Úselfrrr r r Ú__init__=s zOptions.__init__)NN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr r r r r;src@seZdZdd„Zdd„ZdS)Ú _ExpressioncCs||_||_dSr )Ú expressionÚ interpreter)rrrr r r rKsz_Expression.__init__cOs|jj|f|ž|ŽSr )rÚvisit©rÚnodeÚargsÚkwargsr r r rOsz_Expression.visitN)rrrrrr r r r rJsrc@s$eZdZdd„Zdd„Zdd„ZdS)ÚVisitorcCs i|_dSr )Ú _method_cache©rr r r rTszVisitor.__init__cOsL|d}|j |¡}|dkrgózTreeInterpreter.)ÚeqÚneÚltÚgtZlteZgter0r1Ncsbtt|ƒ ¡|j|_|dkr$tƒ}||_|jdk r>|jj|_|jdk rT|jj|_ n t   ¡|_ dSr ) Úsuperr-rÚMAP_TYPEÚ _dict_clsrÚ_optionsrrÚ _functionsrZ Functions)rÚoptions©Ú __class__r r rps    zTreeInterpreter.__init__cOst|dƒ‚dS)Nr&r+rr r r r)}szTreeInterpreter.default_visitcCs"|}|dD]}| ||¡}q |S©NÚchildren©r©rr ÚvalueÚresultr r r Úvisit_subexpression€s z#TreeInterpreter.visit_subexpressioncCs,z| |d¡WStk r&YdSXdS©Nr@)r'ÚAttributeError©rr r@r r r Ú visit_field†szTreeInterpreter.visit_fieldcCs˜|j|d}|d|jkrF|| |dd|¡| |dd|¡ƒS| |dd|¡}| |dd|¡}ttf}t|ƒr†t|ƒsŠdS|||ƒSdS)Nr@r=rr )ÚCOMPARATOR_FUNCÚ _EQUALITY_OPSrÚintÚfloatr)rr r@Zcomparator_funcÚleftÚrightZ num_typesr r r Úvisit_comparatorŒsþÿz TreeInterpreter.visit_comparatorcCs|Sr r rEr r r Ú visit_current szTreeInterpreter.visit_currentcCst|dd|ƒS©Nr=r)rrEr r r Ú visit_expref£szTreeInterpreter.visit_exprefcCs:g}|dD]}| ||¡}| |¡q |j |d|¡S©Nr=r@)rÚappendr8Ú call_function)rr r@Z resolved_argsÚchildÚcurrentr r r Úvisit_function_expression¦s    z)TreeInterpreter.visit_function_expressioncCsx| |dd|¡}t|tƒs"dS|dd}g}|D]<}| | ||¡¡r6| |dd|¡}|dk r6| |¡q6|S)Nr=rér )rrÚlistÚ_is_truerR)rr r@ÚbaseZcomparator_nodeÚ collectedÚelementrUr r r Úvisit_filter_projection­s   z'TreeInterpreter.visit_filter_projectioncCsT| |dd|¡}t|tƒs"dSg}|D]$}t|tƒrD| |¡q*| |¡q*|SrO)rrrXÚextendrR)rr r@rZZ merged_listr\r r r Ú visit_flattenºs    zTreeInterpreter.visit_flattencCs|Sr r rEr r r Úvisit_identityÇszTreeInterpreter.visit_identitycCs8t|tƒsdSz||dWStk r2YdSXdSrC)rrXÚ IndexErrorrEr r r Ú visit_indexÊs  zTreeInterpreter.visit_indexcCs"|}|dD]}| ||¡}q |Sr<r>r?r r r Úvisit_index_expressionÔs z&TreeInterpreter.visit_index_expressioncCs"t|tƒsdSt|dŽ}||Sr<)rrXÚslice)rr r@Úsr r r Ú visit_sliceÚs  zTreeInterpreter.visit_slicecCs| |dd|¡SrOr>rEr r r Úvisit_key_val_pairàsz"TreeInterpreter.visit_key_val_paircCs|dSrCr rEr r r Ú visit_literalãszTreeInterpreter.visit_literalcCs:|dkr dS| ¡}|dD]}| ||¡||d<q|SrQ)r6r©rr r@r[rTr r r Úvisit_multi_select_dictæs  z'TreeInterpreter.visit_multi_select_dictcCs4|dkr dSg}|dD]}| | ||¡¡q|Sr<)rRrrir r r Úvisit_multi_select_listîs  z'TreeInterpreter.visit_multi_select_listcCs6| |dd|¡}| |¡r2| |dd|¡}|S©Nr=rr ©rÚ _is_false©rr r@Úmatchedr r r Úvisit_or_expressionös z#TreeInterpreter.visit_or_expressioncCs6| |dd|¡}| |¡r"|S| |dd|¡Srlrmror r r Úvisit_and_expressionüs 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|tƒs"dSg}|D]*}| |dd|¡}|dk r*| |¡q*|Srl)rrrXrR©rr r@rZr[r\rUr r r Úvisit_projections  z TreeInterpreter.visit_projectioncCsp| |dd|¡}z | ¡}Wntk r6YdSXg}|D]*}| |dd|¡}|dk r@| |¡q@|Srl)rÚvaluesrDrRrur r r Úvisit_value_projections  z&TreeInterpreter.visit_value_projectioncCs(|dkp&|gkp&|ikp&|dkp&|dkS)NÚFr ©rr@r r r rn(s ÿzTreeInterpreter._is_falsecCs | |¡ Sr )rnrzr r r rY/szTreeInterpreter._is_true)N)(rrrr Úoperatorr2r3ÚleÚgerGrHÚdictr5rr)rBrFrMrNrPrVr]r_r`rbrcrfrgrhrjrkrqrrrsrtrvrxrnrYÚ __classcell__r r r:r r-dsFú      r-cs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ÚGraphvizVisitorcstt|ƒ ¡g|_d|_dS)Nr )r4r€rÚ_linesÚ_countr%r:r r r4szGraphvizVisitor.__init__cOsP|j d¡d|d|jf}|jd7_| ||¡|j d¡d |j¡S)Nz digraph AST {ú%s%sr&r Ú}Ú )rrRr‚Ú_visitÚjoin)rr r!r"rUr r r r9s    zGraphvizVisitor.visitc Csx|j d||d| dd¡f¡| dg¡D]D}d|d|jf}|jd7_|j d||f¡| ||¡q.dS) Nz%s [label="%s(%s)"]r&r@ryr=rƒr z %s -> %s)rrRr'r‚r†)rr rUrTZ child_namer r r r†As ÿzGraphvizVisitor._visit)rrrrrr†rr r r:r r€3s r€)r{ZjmespathrZjmespath.compatrZnumbersrr rrrÚobjectrrr#r-r€r r r r Ús     P