
    /JfR*                         d dl Z d dlmZ d dlmZ d dlmZ d Zd Zd Z	d Z
 G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    N)	functions)string_type)Numberc                 2    t          | |          rdS | |k    S NF)_is_special_number_casexys     S/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/jmespath/visitor.py_equalsr      s"    q!$$ uAv    c                     t          |           r| dv rt          |t                    S t          |          r|dv rt          | t                    S d S d S )N)r      )_is_actual_number
isinstanceboolr	   s     r   r   r      sb    "  #V!T"""	1		 #!v++!T"""# #++r   c                 J    t          |           pt          | t                    S N)r   r   r   r
   s    r   _is_comparabler   &   s!    
 Q=:a#=#==r   c                 Z    t          | t                    rdS t          | t                    S r   )r   r   r   r   s    r   r   r   .   s+     !T ua   r   c                       e Zd ZdZddZdS )Optionsz8Options to control how a JMESPath function is evaluated.Nc                 "    || _         || _        d S r   )dict_clscustom_functions)selfr   r   s      r   __init__zOptions.__init__=   s     ! 0r   )NN)__name__
__module____qualname____doc__r    r   r   r   r   ;   s.        BB
1 
1 
1 
1 
1 
1r   r   c                       e Zd Zd Zd ZdS )_Expressionc                 "    || _         || _        d S r   )
expressioninterpreter)r   r(   r)   s      r   r   z_Expression.__init__K   s    $&r   c                 .     | j         j        |g|R i |S r   )r)   visitr   nodeargskwargss       r   r+   z_Expression.visitO   s(    %t%d<T<<<V<<<r   N)r    r!   r"   r   r+   r$   r   r   r&   r&   J   s2        ' ' '= = = = =r   r&   c                        e Zd Zd Zd Zd ZdS )Visitorc                     i | _         d S r   )_method_cache)r   s    r   r   zVisitor.__init__T   s    r   c                     |d         }| j                             |          }|)t          | d|d         z  | j                  }|| j         |<    ||g|R i |S )Ntypezvisit_%s)r3   getgetattrdefault_visit)r   r-   r.   r/   	node_typemethods         r   r+   zVisitor.visitW   sw    L	#''	22>j4</1CE EF,2Dy)vd,T,,,V,,,r   c                      t          d          )Nr8   NotImplementedErrorr,   s       r   r8   zVisitor.default_visit`   s    !/222r   N)r    r!   r"   r   r+   r8   r$   r   r   r1   r1   S   sA             - - -3 3 3 3 3r   r1   c                        e Zd Zed ej        ej        ej        ej        dZ	ddgZ
eZd  fd	Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z& xZ'S )!TreeInterpreterc                 $    t          | |           S r   )r   r	   s     r   <lambda>zTreeInterpreter.<lambda>g   s    wq!}}, r   )eqneltgtltegterB   rC   Nc                 0   t          t          |                                            | j        | _        |t                      }|| _        |j        | j        j        | _        |j        | j        j        | _	        d S t          j                    | _	        d S r   )superr?   r   MAP_TYPE	_dict_clsr   _optionsr   r   
_functionsr   	Functions)r   options	__class__s     r   r   zTreeInterpreter.__init__p   s    ot$$--///?iiG'!]3DN#/"m<DOOO'133DOOOr   c                 ,    t          |d                   )Nr5   r<   r,   s       r   r8   zTreeInterpreter.default_visit}   s    !$v,///r   c                 L    |}|d         D ]}|                      ||          }|S Nchildrenr+   r   r-   valueresults       r   visit_subexpressionz#TreeInterpreter.visit_subexpression   5    $ 	. 	.DZZf--FFr   c                 \    	 |                     |d                   S # t          $ r Y d S w xY wNrW   )r6   AttributeErrorr   r-   rW   s      r   visit_fieldzTreeInterpreter.visit_field   s?    	99T']+++ 	 	 	44	s    
++c                    | j         |d                  }|d         | j        v rL ||                     |d         d         |          |                     |d         d         |                    S |                     |d         d         |          }|                     |d         d         |          }t          t          f}t          |          rt          |          sd S  |||          S )NrW   rT   r   r   )COMPARATOR_FUNC_EQUALITY_OPSr+   intfloatr   )r   r-   rW   comparator_funcleftright	num_typess          r   visit_comparatorz TreeInterpreter.visit_comparator   s    .tG}==D..."?

4
+A.66

4
+A.66   ::d:.q1599DJJtJ/2E::EeI"4(( "5))t"?4///r   c                     |S r   r$   r^   s      r   visit_currentzTreeInterpreter.visit_current       r   c                 :    t          |d         d         |           S NrT   r   )r&   r^   s      r   visit_exprefzTreeInterpreter.visit_expref   s    4
+A.555r   c                     g }|d         D ]-}|                      ||          }|                    |           .| j                            |d         |          S NrT   rW   )r+   appendrM   call_function)r   r-   rW   resolved_argschildcurrents         r   visit_function_expressionz)TreeInterpreter.visit_function_expression   sa    *% 	* 	*Ejj..G  )))),,T']MJJJr   c                 f   |                      |d         d         |          }t          |t                    sd S |d         d         }g }|D ]d}|                     |                      ||                    r9|                      |d         d         |          }||                    |           e|S )NrT   r      r   )r+   r   list_is_truerr   )r   r-   rW   basecomparator_node	collectedelementrv   s           r   visit_filter_projectionz'TreeInterpreter.visit_filter_projection   s    zz$z*1-u55$%% 	4z*1-	 	. 	.G}}TZZAABB .**T*%5a%8'BB&$$W---r   c                    |                      |d         d         |          }t          |t                    sd S g }|D ]B}t          |t                    r|                    |           -|                    |           C|S rn   )r+   r   rz   extendrr   )r   r-   rW   r|   merged_listr   s         r   visit_flattenzTreeInterpreter.visit_flatten   s    zz$z*1-u55$%% 	4 	, 	,G'4(( ,""7++++""7++++r   c                     |S r   r$   r^   s      r   visit_identityzTreeInterpreter.visit_identity   rl   r   c                 p    t          |t                    sd S 	 ||d                  S # t          $ r Y d S w xY wr\   )r   rz   
IndexErrorr^   s      r   visit_indexzTreeInterpreter.visit_index   sQ     %&& 	4	g'' 	 	 	44	s   ' 
55c                 L    |}|d         D ]}|                      ||          }|S rS   rU   rV   s       r   visit_index_expressionz&TreeInterpreter.visit_index_expression   rZ   r   c                 ^    t          |t                    sd S t          |d          }||         S rS   )r   rz   slice)r   r-   rW   ss       r   visit_slicezTreeInterpreter.visit_slice   s1    %&& 	44
#$Qxr   c                 F    |                      |d         d         |          S rn   rU   r^   s      r   visit_key_val_pairz"TreeInterpreter.visit_key_val_pair   s     zz$z*1-u555r   c                     |d         S r\   r$   r^   s      r   visit_literalzTreeInterpreter.visit_literal   s    G}r   c                     |d S |                                  }|d         D ]!}|                     ||          ||d         <   "|S rq   )rK   r+   r   r-   rW   r~   ru   s        r   visit_multi_select_dictz'TreeInterpreter.visit_multi_select_dict   sV    =4NN$$	*% 	A 	AE(,

5%(@(@IeGn%%r   c                 z    |d S g }|d         D ]+}|                     |                     ||                     ,|S rS   )rr   r+   r   s        r   visit_multi_select_listz'TreeInterpreter.visit_multi_select_list   sP    =4	*% 	7 	7ETZZu556666r   c                     |                      |d         d         |          }|                     |          r"|                      |d         d         |          }|S NrT   r   r   r+   	_is_falser   r-   rW   matcheds       r   visit_or_expressionz#TreeInterpreter.visit_or_expression   sU    **T*-a0%88>>'"" 	=jjj!1!!4e<<Gr   c                     |                      |d         d         |          }|                     |          r|S |                      |d         d         |          S r   r   r   s       r   visit_and_expressionz$TreeInterpreter.visit_and_expression   sV    **T*-a0%88>>'"" 	Nzz$z*1-u555r   c                 z    |                      |d         d         |          }t          |          r|dk    rdS | S )NrT   r   F)r+   r   )r   r-   rW   original_results       r   visit_not_expressionz$TreeInterpreter.visit_not_expression  sI    **T*%5a%8%@@_-- 	/Q2F2F 5"""r   c                 L    |}|d         D ]}|                      ||          }|S rS   rU   rV   s       r   
visit_pipezTreeInterpreter.visit_pipe
  rZ   r   c                     |                      |d         d         |          }t          |t                    sd S g }|D ];}|                      |d         d         |          }||                    |           <|S r   )r+   r   rz   rr   r   r-   rW   r|   r~   r   rv   s          r   visit_projectionz TreeInterpreter.visit_projection  s    zz$z*1-u55$%% 	4	 	* 	*Gjjj!1!!4g>>G"  )))r   c                    |                      |d         d         |          }	 |                                }n# t          $ r Y d S w xY wg }|D ];}|                      |d         d         |          }||                    |           <|S r   )r+   valuesr]   rr   r   s          r   visit_value_projectionz&TreeInterpreter.visit_value_projection  s    zz$z*1-u55	;;==DD 	 	 	44		 	* 	*Gjjj!1!!4g>>G"  )))s   9 
AAc                 6    |dk    p|g k    p|i k    p|d u p|du S )N Fr$   r   rW   s     r   r   zTreeInterpreter._is_false(  s=      u{ erk Ud] 	 r   c                 .    |                      |           S r   )r   r   s     r   r{   zTreeInterpreter._is_true/  s    >>%((((r   r   )(r    r!   r"   r   operatorrD   rE   legera   rb   dictrJ   r   r8   rY   r_   ri   rk   ro   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   __classcell__rP   s   @r   r?   r?   d   s       ,,kk{{ O 4LMH4 4 4 4 4 40 0 0    0 0 0(  6 6 6K K K            6 6 6        6 6 6# # #  	 	 	       ) ) ) ) ) ) )r   r?   c                   *     e Zd Z fdZd Zd Z xZS )GraphvizVisitorc                 r    t          t          |                                            g | _        d| _        d S )Nr   )rI   r   r   _lines_count)r   rP   s    r   r   zGraphvizVisitor.__init__4  s1    ot$$--///r   c                    | j                             d           |d         | j        }| xj        dz  c_        |                     ||           | j                             d           d                    | j                   S )Nzdigraph AST {r5   r   }
)r   rr   r   _visitjoin)r   r-   r.   r/   rv   s        r   r+   zGraphvizVisitor.visit9  sz    ?+++ LL$++6qD'"""3yy%%%r   c           
      `   | j                             |d|d         d|                    dd          d           |                    dg           D ]Y}|d         | j        }| xj        dz  c_        | j                             d	|d
|           |                     ||           Zd S )Nz	 [label="r5   (rW   r   z)"]rT   r   z  z -> )r   rr   r6   r   r   )r   r-   rv   ru   
child_names        r   r   zGraphvizVisitor._visitA  s    GGT&\\\488GR#8#8#8#8: 	; 	; 	;XXj"-- 	+ 	+E#(==$++>JKK1KKKwww

CDDDKKz****		+ 	+r   )r    r!   r"   r   r+   r   r   r   s   @r   r   r   3  sV            
& & &+ + + + + + +r   r   )r   jmespathr   jmespath.compatr   numbersr   r   r   r   r   objectr   r&   r1   r?   r   r$   r   r   <module>r      se          ' ' ' ' ' '        # # #.> > >
! 
! 
!1 1 1 1 1f 1 1 1= = = = =& = = =3 3 3 3 3f 3 3 3"L) L) L) L) L)g L) L) L)^+ + + + +g + + + + +r   