
    j
                     v    d dl mZ d dlZ ej        d          Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )    )OrderedDictNz\beval\((?P<rule>[^)]*)\)c                    t          j        d|           }|I|                    d          }t          j        d| d          }d| d}t          j        |||           } t          j        d|           }|I|                    d          }t          j        d	| d          }d
| d}t          j        |||           } | S )ziescapes the dots in the assertion, because the expression evaluation doesn't support such variable names.z
\bp(\d*)\.N   z\bpz\.p_z
\br(\d*)\.z\brr)researchgroupcompilesub)	seval_pp_suffixp_beforep_aftereval_rr_suffixr_beforer_afters	            Z/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/casbin/util/util.pyescape_assertionr      s    Y}a((F<<??:2X22233!h///F8Wa((Y}a((F<<??:2X22233!h///F8Wa((H    c                 t    |                      d          }|dk    r| S | d|                                         S )z1removes the comments starting with # in the text.#r   )findstrip)r   poss     r   remove_commentsr    (   s9     &&++C
byyQsU8>>r   c                 D    t          t          j        |                     S )z2removes any duplicated elements in a string array.)listr   fromkeysr   s    r   array_remove_duplicatesr%   2   s    $Q''(((r   c                 ,    d                     |           S )z+gets a printable string for a string array., joinr$   s    r   array_to_stringr*   7        99Q<<r   c                  ,    d                     |           S )z:gets a printable string for variable number of parameters.r'   r(   r$   s    r   params_to_stringr-   =   r+   r   c                 6    | g}|                     |           |S )z,joins a string and a slice into a new slice.)extend)abress      r   
join_slicer3   C   s    #CJJqMMMJr   c                      fd| D             S )z/returns the elements in `a` that aren't in `b`.c                     g | ]}|v|	S  r6   ).0ir1   s     r   
<listcomp>z set_subtract.<locals>.<listcomp>N   s    '''!AQJJAJJJr   r6   )r0   r1   s    `r   set_subtractr:   L   s    ''''q''''r   c                 6    t                               |           S )z0determine whether matcher contains function eval)eval_regr
   r$   s    r   has_evalr=   Q   s    ??1r   c                 t   d}t                               | |          }|rd|                    d          z   dz   }| d|                                         |z   | |                                d         z   } |                                t          |          z   }t                               | |          }|| S )z2replace all occurences of function eval with rulesr   ()N)r<   r
   popstartendlen)exprrulesr   matchrules        r   replace_evalrI   V   s    
COOD#&&E
 +UYYq\\!C'OekkmmO$t+d599;;==.AAkkmmc$ii'c**	  + Kr   c                 ^    t                               |           }|                                S )z'returns the parameters of function eval)r<   findallcopy)r   	sub_matchs     r   get_eval_valuerN   c   s%      ##I>>r   )collectionsr   r	   r   r<   r   r    r%   r*   r-   r3   r:   r=   rI   rN   r6   r   r   <module>rP      s    $ # # # # # 				2:233  &  ) ) )
      ( ( (
  

 
 
    r   