
    j`                     r    d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ  G d de          ZdS )	    N)Sequence)Enforcer)Model	FastModelfast_policy_filterFunctionMap)FileAdapter)configure_loggingc                   \     e Zd ZU dZee         ed<   d	dee         f fdZd
dZd Z	 xZ
S )FastEnforcerN_cache_key_orderFcache_key_orderc                 \    || _         t                                          |||           d S )N)r   super__init__)selfmodeladapter
enable_logr   	__class__s        ^/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/casbin/fast_enforcer.pyr   zFastEnforcer.__init__   s-     /44444     c                     | j         t                      }nt          | j                   }t          |          dk    r|                    |           n|                    |           |S )zcreates a model.Nr   )r   r   r   len
load_modelload_model_from_text)r   pathtextms       r   	new_modelzFastEnforcer.new_model   sc     (AA$/00At99q==LL""4(((r   c                     | j          | j         \  }}n`fd| j         D             }t          | j        j        d         d         j        g|R  5   | j         \  }}ddd           n# 1 swxY w Y   |S )zdecides whether a "subject" can access a "object" with the operation "action",
        input parameters are usually: (sub, obj, act).
        Nc                      g | ]
}|         S  r$   ).0xrvalss     r   
<listcomp>z(FastEnforcer.enforce.<locals>.<listcomp>%   s    <<<E!H<<<r   p)r   
enforce_exr   r   policy)r   r'   result_keyss    `   r   enforcezFastEnforcer.enforce   s      ('/IFAA<<<<d&;<<<D#DJ$4S$9#$>$EMMMM 4 4+DOU3	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 s   A,,A03A0)NNFN)r   r   )__name__
__module____qualname__r   r   int__annotations__r   r!   r/   __classcell__)r   s   @r   r   r   
   s         &*hsm***5 5T\]`Ta 5 5 5 5 5 5         r   r   )loggingtypingr   casbin.enforcerr   casbin.modelr   r   r   r   casbin.persist.adaptersr	   casbin.util.logr
   r   r$   r   r   <module>r<      s           $ $ $ $ $ $ J J J J J J J J J J J J / / / / / / - - - - - -    8     r   