B ݁[*@sddlZddlmZddlmZddlmZddZddZd d Z d d Z Gd dde Z Gddde Z Gddde ZGdddeZGdddeZdS)N) functions) string_type)NumbercCst||rdS||kSdS)NF)_is_special_integer_case)xyrQ/Users/kashii/Desktop/Projects/Workshops/worker-safety/lambda/jmespath/visitor.py_equalss r cCsD|dks|dkr |dkp|dkS|dks0|dkr@|dkp>|dkSdS)NrTFr)rrrrr rsrcCst|pt|tS)N)_is_actual_number isinstancer)rrrr _is_comparable&srcCs|dks|dkrdSt|tS)NTF)r r)rrrr r .sr c@seZdZdZdddZdS)Optionsz8Options to control how a JMESPath function is evaluated.NcCs||_||_dS)N)dict_clscustom_functions)selfrrrrr __init__=s zOptions.__init__)NN)__name__ __module__ __qualname____doc__rrrrr r;src@seZdZddZddZdS) _ExpressioncCs||_||_dS)N) expression interpreter)rrrrrr rKsz_Expression.__init__cOs|jj|f||S)N)rvisit)rnodeargskwargsrrr rOsz_Expression.visitN)rrrrrrrrr rJsrc@s$eZdZddZddZddZdS)VisitorcCs i|_dS)N) _method_cache)rrrr rTszVisitor.__init__cOsL|d}|j|}|dkrgszTreeInterpreter.)eqneltgtltegter)r*Ncsbtt||j|_|dkr$t}||_|jdk r>|jj|_|jdk rT|jj|_ n t |_ dS)N) superr'rMAP_TYPE _dict_clsrZ_optionsrr _functionsrZ Functions)roptions) __class__rr rps    zTreeInterpreter.__init__cOst|ddS)Nr!)r&)rrrrrrr r$}szTreeInterpreter.default_visitcCs&|}x|dD]}|||}qW|S)Nchildren)r)rrvalueresultrrr visit_subexpressionsz#TreeInterpreter.visit_subexpressioncCs(y||dStk r"dSXdS)Nr6)r"AttributeError)rrr6rrr visit_fieldszTreeInterpreter.visit_fieldcCs|j|d}|d|jkrF|||dd|||dd|S||dd|}||dd|}ttf}t|rt|sdS|||SdS)Nr6r5rr )COMPARATOR_FUNC _EQUALITY_OPSrintfloatr)rrr6Zcomparator_funcleftrightZ num_typesrrr visit_comparatorsz TreeInterpreter.visit_comparatorcCs|S)Nr)rrr6rrr visit_currentszTreeInterpreter.visit_currentcCst|dd|S)Nr5r)r)rrr6rrr visit_exprefszTreeInterpreter.visit_exprefcCs>g}x&|dD]}|||}||qW|j|d|S)Nr5r6)rappendr2Z call_function)rrr6Z resolved_argschildcurrentrrr visit_function_expressions  z)TreeInterpreter.visit_function_expressioncCs|||dd|}t|ts"dS|dd}g}xD|D]<}||||r8||dd|}|dk r8||q8W|S)Nr5rr )rr list_is_truerD)rrr6baseZcomparator_node collectedelementrFrrr visit_filter_projections   z'TreeInterpreter.visit_filter_projectioncCsX||dd|}t|ts"dSg}x,|D]$}t|trF||q,||q,W|S)Nr5r)rr rIextendrD)rrr6rKZ merged_listrMrrr visit_flattens    zTreeInterpreter.visit_flattencCs|S)Nr)rrr6rrr visit_identityszTreeInterpreter.visit_identitycCs4t|tsdSy ||dStk r.dSXdS)Nr6)r rI IndexError)rrr6rrr visit_indexs   zTreeInterpreter.visit_indexcCs&|}x|dD]}|||}qW|S)Nr5)r)rrr6r7rrr visit_index_expressionsz&TreeInterpreter.visit_index_expressioncCs"t|tsdSt|d}||S)Nr5)r rIslice)rrr6srrr visit_slices  zTreeInterpreter.visit_slicecCs||dd|S)Nr5r)r)rrr6rrr visit_key_val_pairsz"TreeInterpreter.visit_key_val_paircCs|dS)Nr6r)rrr6rrr visit_literalszTreeInterpreter.visit_literalcCs>|dkr dS|}x$|dD]}|||||d<qW|S)Nr5r6)r1r)rrr6rLrErrr visit_multi_select_dicts z'TreeInterpreter.visit_multi_select_dictcCs8|dkr dSg}x"|dD]}||||qW|S)Nr5)rDr)rrr6rLrErrr visit_multi_select_lists z'TreeInterpreter.visit_multi_select_listcCs6||dd|}||r2||dd|}|S)Nr5rr )r _is_false)rrr6matchedrrr visit_or_expressions z#TreeInterpreter.visit_or_expressioncCs6||dd|}||r"|S||dd|S)Nr5rr )rr\)rrr6r]rrr visit_and_expressions z$TreeInterpreter.visit_and_expressioncCs&||dd|}|dkr dS| S)Nr5rF)r)rrr6Zoriginal_resultrrr visit_not_expressionsz$TreeInterpreter.visit_not_expressioncCs&|}x|dD]}|||}qW|S)Nr5)r)rrr6r7rrr visit_pipe szTreeInterpreter.visit_pipecCs^||dd|}t|ts"dSg}x2|D]*}||dd|}|dk r,||q,W|S)Nr5rr )rr rIrD)rrr6rKrLrMrFrrr visit_projections  z TreeInterpreter.visit_projectioncCsr||dd|}y |}Wntk r4dSXg}x2|D]*}||dd|}|dk r@||q@W|S)Nr5rr )rvaluesr9rD)rrr6rKrLrMrFrrr visit_value_projections  z&TreeInterpreter.visit_value_projectioncCs(|dkp&|gkp&|ikp&|dkp&|dkS)NFr)rr6rrr r\(s zTreeInterpreter._is_falsecCs || S)N)r\)rr6rrr rJ/szTreeInterpreter._is_true)N)(rrrr operatorr+r,leger;r<dictr0rr$r8r:rArBrCrGrNrPrQrSrTrWrXrYrZr[r^r_r`rarbrdr\rJ __classcell__rr)r4r r'dsD       r'cs,eZdZfddZddZddZZS)GraphvizVisitorcstt|g|_d|_dS)Nr )r/rkr_lines_count)r)r4rr r4szGraphvizVisitor.__init__cOsP|jdd|d|jf}|jd7_||||jdd|jS)Nz digraph AST {z%s%sr!r } )rlrDrm_visitjoin)rrrrrFrrr r9s    zGraphvizVisitor.visitc Cs||jd||d|ddfxT|dgD]D}d|d|jf}|jd7_|jd||f|||q0WdS) Nz%s [label="%s(%s)"]r!r6rer5z%s%sr z %s -> %s)rlrDr"rmrp)rrrFrEZ child_namerrr rpAszGraphvizVisitor._visit)rrrrrrprjrr)r4r rk3s rk)rfjmespathrjmespath.compatrZnumbersrr rrr objectrrrr'rkrrrr s     P