3 Dã\*ã@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új/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/jmespath/jmespath/visitor.pyÚ_equalss r cCsD|dks|dkr |dkp|dkS|dks0|dkr@|dkp>|dkSdS)NréTFr)rrrrr rsrcCst|ƒpt|tƒS)N)Ú_is_actual_numberÚ isinstancer)rrrr Ú_is_comparable&srcCs|dks|dkrdSt|tƒS)NTF)r r)rrrr r .sr c@seZdZdZddd„ZdS)ÚOptionsz8Options to control how a JMESPath function is evaluated.NcCs||_||_dS)N)Údict_clsÚcustom_functions)Úselfrrrrr Ú__init__=s zOptions.__init__)NN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr r;src@seZdZdd„Zdd„ZdS)Ú _ExpressioncCs||_||_dS)N)Ú expressionÚ interpreter)rrrrrr rKsz_Expression.__init__cOs|jj|f|ž|ŽS)N)rÚvisit)rÚnodeÚargsÚkwargsrrr rOsz_Expression.visitN)rrrrrrrrr rJsrc@s$eZdZdd„Zdd„Zdd„ZdS)ÚVisitorcCs i|_dS)N)Ú _method_cache)rrrr rTszVisitor.__init__cOsL|d}|jj|ƒ}|dkrgszTreeInterpreter.)ÚeqÚneÚltÚgtZlteZgter)r*Ncsbtt|ƒjƒ|j|_|dkr$tƒ}||_|jdk r>|jj|_|jdk rT|jj|_ n t j ƒ|_ dS)N) Úsuperr'rÚMAP_TYPEÚ _dict_clsrÚ_optionsrrÚ _functionsrZ Functions)rÚoptions)Ú __class__rr rps    zTreeInterpreter.__init__cOst|dƒ‚dS)Nr!)r&)rrrrrrr r$}szTreeInterpreter.default_visitcCs&|}x|dD]}|j||ƒ}qW|S)NÚchildren)r)rrÚvalueÚresultrrr Úvisit_subexpression€sz#TreeInterpreter.visit_subexpressionc Cs(y|j|dƒStk r"dSXdS)Nr5)r"ÚAttributeError)rrr5rrr Ú visit_field†szTreeInterpreter.visit_fieldcCs˜|j|d}|d|jkrF||j|dd|ƒ|j|dd|ƒƒS|j|dd|ƒ}|j|dd|ƒ}ttf}t|ƒo„t|ƒsŠdS|||ƒSdS)Nr5r4rr )ÚCOMPARATOR_FUNCÚ _EQUALITY_OPSrÚintÚfloatr)rrr5Zcomparator_funcÚleftÚrightZ num_typesrrr Úvisit_comparatorŒsz TreeInterpreter.visit_comparatorcCs|S)Nr)rrr5rrr Ú visit_current szTreeInterpreter.visit_currentcCst|dd|ƒS)Nr4r)r)rrr5rrr Ú visit_expref£szTreeInterpreter.visit_exprefcCs>g}x&|dD]}|j||ƒ}|j|ƒqW|jj|d|ƒS)Nr4r5)rÚappendr1Ú call_function)rrr5Z resolved_argsÚchildÚcurrentrrr Úvisit_function_expression¦s  z)TreeInterpreter.visit_function_expressioncCs||j|dd|ƒ}t|tƒs"dS|dd}g}xD|D]<}|j|j||ƒƒr8|j|dd|ƒ}|dk r8|j|ƒq8W|S)Nr4rér )rr ÚlistÚ_is_truerC)rrr5ÚbaseZcomparator_nodeÚ collectedÚelementrFrrr Úvisit_filter_projection­s   z'TreeInterpreter.visit_filter_projectioncCsX|j|dd|ƒ}t|tƒs"dSg}x,|D]$}t|tƒrF|j|ƒq,|j|ƒq,W|S)Nr4r)rr rIÚextendrC)rrr5rKZ merged_listrMrrr Ú visit_flattenºs    zTreeInterpreter.visit_flattencCs|S)Nr)rrr5rrr Úvisit_identityÇszTreeInterpreter.visit_identityc Cs4t|tƒsdSy ||dStk r.dSXdS)Nr5)r rIÚ IndexError)rrr5rrr Ú visit_indexÊs   zTreeInterpreter.visit_indexcCs&|}x|dD]}|j||ƒ}qW|S)Nr4)r)rrr5r6rrr Úvisit_index_expressionÔsz&TreeInterpreter.visit_index_expressioncCs"t|tƒsdSt|dŽ}||S)Nr4)r rIÚslice)rrr5Úsrrr Ú visit_sliceÚs  zTreeInterpreter.visit_slicecCs|j|dd|ƒS)Nr4r)r)rrr5rrr Úvisit_key_val_pairàsz"TreeInterpreter.visit_key_val_paircCs|dS)Nr5r)rrr5rrr Ú visit_literalãszTreeInterpreter.visit_literalcCs>|dkr dS|jƒ}x$|dD]}|j||ƒ||d<qW|S)Nr4r5)r/r)rrr5rLrErrr Úvisit_multi_select_dictæs z'TreeInterpreter.visit_multi_select_dictcCs8|dkr dSg}x"|dD]}|j|j||ƒƒqW|S)Nr4)rCr)rrr5rLrErrr Úvisit_multi_select_listîs z'TreeInterpreter.visit_multi_select_listcCs6|j|dd|ƒ}|j|ƒr2|j|dd|ƒ}|S)Nr4rr )rÚ _is_false)rrr5Úmatchedrrr Úvisit_or_expressionös z#TreeInterpreter.visit_or_expressioncCs6|j|dd|ƒ}|j|ƒr"|S|j|dd|ƒS)Nr4rr )rr\)rrr5r]rrr Úvisit_and_expressionüs z$TreeInterpreter.visit_and_expressioncCs&|j|dd|ƒ}|dkr dS| S)Nr4rF)r)rrr5Zoriginal_resultrrr Úvisit_not_expressionsz$TreeInterpreter.visit_not_expressioncCs&|}x|dD]}|j||ƒ}qW|S)Nr4)r)rrr5r6rrr Ú visit_pipe szTreeInterpreter.visit_pipecCs^|j|dd|ƒ}t|tƒs"dSg}x2|D]*}|j|dd|ƒ}|dk r,|j|ƒq,W|S)Nr4rr )rr rIrC)rrr5rKrLrMrFrrr Úvisit_projections  z TreeInterpreter.visit_projectionc Csr|j|dd|ƒ}y |jƒ}Wntk r4dSXg}x2|D]*}|j|dd|ƒ}|dk r@|j|ƒq@W|S)Nr4rr )rÚvaluesr8rC)rrr5rKrLrMrFrrr Úvisit_value_projections  z&TreeInterpreter.visit_value_projectioncCs(|dkp&|gkp&|ikp&|dkp&|dkS)NÚFr)rr5rrr r\(s zTreeInterpreter._is_falsecCs |j|ƒ S)N)r\)rr5rrr rJ/szTreeInterpreter._is_true)N)(rrrr Úoperatorr+r,ÚleÚger:r;Údictr.rr$r7r9r@rArBrGrNrPrQrSrTrWrXrYrZr[r^r_r`rarbrdr\rJÚ __classcell__rr)r3r r'dsD       r'cs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ÚGraphvizVisitorcstt|ƒjƒg|_d|_dS)Nr )r-rkrÚ_linesÚ_count)r)r3rr r4szGraphvizVisitor.__init__cOsP|jjdƒd|d|jf}|jd7_|j||ƒ|jjdƒdj|jƒS)Nz digraph AST {z%s%sr!r Ú}Ú )rlrCrmÚ_visitÚjoin)rrrrrFrrr r9s    zGraphvizVisitor.visitcCs||jjd||d|jddƒfƒxT|jdgƒD]D}d|d|jf}|jd7_|jjd||fƒ|j||ƒq0WdS) Nz%s [label="%s(%s)"]r!r5rer4z%s%sr z %s -> %s)rlrCr"rmrp)rrrFrEZ child_namerrr rpAszGraphvizVisitor._visit)rrrrrrprjrr)r3r rk3s rk)rfZjmespathrZjmespath.compatrZnumbersrr rrr Úobjectrrrr'rkrrrr Ús     P