§
    ÷yIf´  ã                  óú   — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ej        dk    rddlZnddlZe	rddlmZ ee
eef         ee         f         Z G d	„ d
¦  «        Z G d„ d¦  «        ZdS )z Configuration file parser class.é    )ÚannotationsN)ÚPath)ÚTYPE_CHECKINGÚDictÚListÚTuple)Ú_parse_rich_type_value)é   é   )ÚPyLinterc                  ór   — e Zd ZdZedd„¦   «         Zedd„¦   «         Zedd	„¦   «         Zedd„¦   «         ZdS )Ú_RawConfParserú6Class to parse various formats of configuration files.Ú	file_pathr   ÚreturnÚPylintConfigFileDatac                ó¨  — t          j        d¬¦  «        }t          | d¬¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   i }g }t                               | ¦  «        }|                     ¦   «         D ]I}|r|                     d¦  «        sŒ||                              ¦   «         D ]\  }}|||<   |d|› �|gz  }ŒŒJ||fS )zfParse and handle errors of an ini configuration file.

        Raises ``configparser.Error``.
        )ú#ú;)Úinline_comment_prefixesÚ	utf_8_sig)ÚencodingNÚpylintú--)	ÚconfigparserÚConfigParserÚopenÚ	read_filer   Ú_ini_file_with_sectionsÚsectionsÚ
startswithÚitems)	r   ÚparserÚfpÚconfig_contentÚoptionsÚini_file_with_sectionsÚsectionÚoptionÚvalues	            úT/var/www/piapp/venv/lib/python3.11/site-packages/pylint/config/config_file_parser.pyÚparse_ini_filez_RawConfParser.parse_ini_file   s?  € õ Ô*À:ÐNÑNÔNˆå�) kÐ2Ñ2Ô2ð 	!°bØ×Ò˜RÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð *,ˆØˆÝ!/×!GÒ!GÈ	Ñ!RÔ!RÐØ—’Ñ(Ô(ð 	2ð 	2ˆGØ%ð ¨g×.@Ò.@ÀÑ.JÔ.Jð ØØ!'¨¤×!6Ò!6Ñ!8Ô!8ð 2ð 2‘�˜Ø).�˜vÑ&Ø˜M ˜M˜M¨5Ð1Ñ1��ð2ð ˜wÐ&Ð&s   §A	Á	AÁAÚboolc                ó2   — d| j         v rdS d| j         v rdS dS )z&Return whether the file uses sections.z	setup.cfgTztox.iniF)Úparts)r   s    r+   r   z&_RawConfParser._ini_file_with_sections5   s-   € ð ˜)œ/Ð)Ð)Ø�4Ø˜	œÐ'Ð'Ø�4Øˆuó    c                óà  — t          | d¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   	 |d         d         }n# t          $ r i g fcY S w xY wi }g }|                     ¦   «         D ]q\  }}t          |t          ¦  «        r9|                     ¦   «         D ]#\  }}	t          |	¦  «        }	|	||<   |d|› �|	gz  }Œ$ŒSt          |¦  «        }|||<   |d|› �|gz  }Œr||fS )zkParse and handle errors of a toml configuration file.

        Raises ``tomllib.TOMLDecodeError``.
        Úrb)ÚmodeNÚtoolr   r   )r   ÚtomllibÚloadÚKeyErrorr"   Ú
isinstanceÚdictr	   )
r   r$   ÚcontentÚsections_valuesr%   r&   ÚoptÚvaluesÚconfigr*   s
             r+   Úparse_toml_filez_RawConfParser.parse_toml_file>   s{  € õ �) $Ð'Ñ'Ô'ð 	'¨2Ý”l 2Ñ&Ô&ˆGð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð	Ø% fœo¨hÔ7ˆOˆOøÝð 	ð 	ð 	Ø�r�6ˆMˆMˆMð	øøøð *,ˆØˆØ*×0Ò0Ñ2Ô2ð 		0ð 		0‰KˆC�Ý˜&¥$Ñ'Ô'ð 0Ø%+§\¢\¡^¤^ð 6ð 6‘M�F˜EÝ2°5Ñ9Ô9�EØ-2�N 6Ñ*Ø  V  ¨uÐ5Ñ5�G�Gð6õ
 0°Ñ7Ô7�Ø&,�˜sÑ#Ø˜J ˜J˜J¨Ð/Ñ/��Ø˜wÐ&Ð&s   ’3³7º7¿A ÁAÁAúPath | NoneÚverbosec                óÐ  — | €!|rt          dt          j        ¬¦  «         i g fS t          t          j                             | ¦  «        ¦  «                             ¦   «         } |                      ¦   «         st          d| › d�¦  «        ‚|rt          d| › �t          j        ¬¦  «         | j
        dk    rt                               | ¦  «        S t                               | ¦  «        S )z{Parse a config file and return str-str pairs.

        Raises ``tomllib.TOMLDecodeError``, ``configparser.Error``.
        Nz1No config file found, using default configuration)ÚfilezThe config file z doesn't exist!zUsing config file z.toml)ÚprintÚsysÚstderrr   ÚosÚpathÚ
expandvarsÚ
expanduserÚexistsÚOSErrorÚsuffixr   r?   r,   )r   rA   s     r+   Úparse_config_filez _RawConfParser.parse_config_fileY   sð   € ð ÐØð ÝØGÍcÌjðñ ô ð ð �r�6ˆMå�œ×+Ò+¨IÑ6Ô6Ñ7Ô7×BÒBÑDÔDˆ	Ø×ÒÑ!Ô!ð 	IÝÐG¨YÐGÐGÐGÑHÔHÐHàð 	EÝÐ2 yÐ2Ð2½¼ÐDÑDÔDÐDàÔ˜wÒ&Ð&Ý!×1Ò1°)Ñ<Ô<Ð<Ý×,Ò,¨YÑ7Ô7Ð7r0   N)r   r   r   r   )r   r   r   r-   )r   r@   rA   r-   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr,   r   r?   rN   © r0   r+   r   r      s˜   € € € € € Ø@Ð@àð'ð 'ð 'ñ „\ð'ð* ðð ð ñ „\ðð ð'ð 'ð 'ñ „\ð'ð4 ð8ð 8ð 8ñ „\ð8ð 8ð 8r0   r   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú_ConfigurationFileParserr   rA   r-   Úlinterr   r   ÚNonec                ó"   — || _         || _        d S )N)Úverbose_moderW   )ÚselfrA   rW   s      r+   Ú__init__z!_ConfigurationFileParser.__init__w   s   € Ø#ˆÔØˆŒˆˆr0   r   r@   r   c                óð   — 	 t                                || j        ¦  «        S # t          j        t
          j        f$ r8}| j                             ddt          |¦  «        ¬¦  «         i g fcY d}~S d}~ww xY w)z-Parse a config file and return str-str pairs.zconfig-parse-errorr   )ÚlineÚargsN)
r   rN   rZ   r   ÚErrorr5   ÚTOMLDecodeErrorrW   Úadd_messageÚstr)r[   r   Úes      r+   rN   z*_ConfigurationFileParser.parse_config_file{   s�   € ð	Ý!×3Ò3°I¸tÔ?PÑQÔQÐQøÝÔ"¥GÔ$;Ð<ð 	ð 	ð 	ØŒK×#Ò#Ð$8¸qÅsÈ1ÁvÄvÐ#ÑNÔNÐNØ�r�6ˆMˆMˆMˆMˆMˆMøøøøð	øøøs   ‚" ¢A5½-A0Á*A5Á0A5N)rA   r-   rW   r   r   rX   )r   r@   r   r   )rO   rP   rQ   rR   r\   rN   rT   r0   r+   rV   rV   t   sB   € € € € € Ø@Ð@ðð ð ð ðð ð ð ð ð r0   rV   )rR   Ú
__future__r   r   rG   rE   Úpathlibr   Útypingr   r   r   r   Úpylint.config.utilsr	   Úversion_infor5   ÚtomliÚpylint.lintr   rc   r   r   rV   rT   r0   r+   ú<module>rl      sC  ðð
 'Ð &à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 6Ð 6Ð 6Ð 6Ð 6Ð 6àÔ�wÒÐØ€N€N€N€NàÐÐÐàð %Ø$Ð$Ð$Ð$Ð$Ð$à˜T # s (œ^¨T°#¬YÐ6Ô7Ð ðU8ð U8ð U8ð U8ð U8ñ U8ô U8ð U8ðpð ð ð ð ñ ô ð ð ð r0   