
    j                     ,    d dl mZ  G d d          ZdS )    )StringIOc                       e Zd ZdZdZdZdZdZ e            Z	d Z
ed             Ze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S )Configz3represents an implementation of the ConfigInterfacedefault#;\c                 ,    t                      | _        d S N)dict_data)selfs    ^/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/casbin/config/config.py__init__zConfig.__init__    s    VV


    c                 L    t                      }|                    |            |S r   )r   _parse)	conf_namecs     r   
new_configzConfig.new_config#   s"    HH	r   c                 j    t                      }t          |           }|                    |           |S r   )r   r   _parse_buffer)textr   fs      r   new_config_from_textzConfig.new_config_from_text)   s-    HHTNN	r   c                     |dk    r| j         }|| j                                        vr
i | j        |<   || j        |         |<   d S )N )DEFAULT_SECTIONr   keys)r   sectionoptionvalues       r   
add_configzConfig.add_config0   sM    b==*G$*//++++"$DJw&+
7F###r   c                     t          |dd          5 }|                     |           d d d            d S # 1 swxY w Y   d S )Nrzutf-8)encoding)openr   )r   fnamer   s      r   r   zConfig._parse9   s    %w/// 	"1q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   6::c                    d}d}g }d}	 |r|                      |||           d}|dz   }|                                }|s,t          |          dk    r|                      |||           d S |                                }d|k    s&| j        |dd         k    s| j        |dd         k    rd}d|dd         k    rCd|d         k    r7t          |          dk    r|                      |||           d}|dd         }nNd}| j        |d         k    r"|dd                                         }|d	z   }n|}d}|                    |           F)
Nr   r   FT   [] )_writereadlinelenstripDEFAULT_COMMENTDEFAULT_COMMENT_SEMDEFAULT_MULTI_LINE_SEPARATORappend)r   r   r    line_numbuf	can_writelineps           r   r   zConfig._parse_buffer=   s   		 "GXs333!	!|H::<<D s88a<<KK3777::<<DTzzT1T!A#Y>>$BZ^bcdefcf^gBgBg 	QqS	!!cT"Xoos88a<<KK3777 %Iqt*4R@@QrT
((**ACAAA $I

1=	r   c                    d                     |          }t          |          dk    rd S |                    dd          }t          |          dk    r)t          d                    ||d                             |d                                         }|d                                         }|                     |||           |d d = d S )Nr   r   =r*      z*parse the content error : line {} , {} = ?)joinr1   splitRuntimeErrorformatr2   r#   )r   r    r7   br8   
option_valr!   r"   s           r   r/   zConfig._writeb   s    ggajjs88q==FYYsA&&
z??aKRRS[]ghi]jkklllA$$&&1##%%///aaaDDDr   c                 X    |                      |                                          dk    S )zMlookups up the value using the provided key and converts the value to a bool.True)get
capitalizer   keys     r   get_boolzConfig.get_boolr   s#    xx}}''))V33r   c                 F    t          |                     |                    S )zKlookups up the value using the provided key and converts the value to a int)intrG   rI   s     r   get_intzConfig.get_intv   s    488C==!!!r   c                 F    t          |                     |                    S )zMlookups up the value using the provided key and converts the value to a float)floatrG   rI   s     r   	get_floatzConfig.get_floatz   s    TXXc]]###r   c                 ,    |                      |          S )zNlookups up the value using the provided key and converts the value to a string)rG   rI   s     r   
get_stringzConfig.get_string~   s    xx}}r   c                 f    |                      |          }|dk    rdS |                    d          S )zXlookups up the value using the provided key and converts the value to an array of stringr   N,)rG   r@   )r   rJ   r"   s      r   get_stringszConfig.get_strings   s1    B;;4{{3r   c                 "   t          |          dk    rt          d          |                                                    d          }t          |          dk    r|d         }|d         }n
d}|d         }|                     |||           d S )Nr   zkey is empty::r>   r*   r   )r1   rA   lowerr@   r#   )r   rJ   r"   r   r    r!   s         r   setz
Config.set   s    s88q==~...yy{{  &&t99>>1gG!WFFG!WF/////r   c                 X   |                                                     d          }t          |          dk    r|d         }|d         }n| j        }|d         }|| j                                        v r4|| j        |                                         v r| j        |         |         S dS )zsection.key or keyrX   r>   r   r*   r   )rY   r@   r1   r   r   r   )r   rJ   r   r    r!   s        r   rG   z
Config.get   s     yy{{  &&t99>>1gG!WFF*G!WFdjoo''''G,113333z'*622rr   N)__name__
__module____qualname____doc__r   r3   r4   r5   r   r   r   staticmethodr   r   r#   r   r   r/   rK   rN   rQ   rS   rV   rZ   rG    r   r   r   r      s(       ==  OO#' DFFE     \
   \, , ," " "# # #J   4 4 4" " "$ $ $       0 0 0    r   r   N)ior   r   ra   r   r   <module>rc      sU         R R R R R R R R R Rr   