§
    ø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
 ddlmZ ddlmZ  ej        e¦  «        Zd d„Zd!d„Zddœd"d„Zd#d„ZdS )$z!Config handling logic for Flake8.é    )ÚannotationsN)ÚAny)Ú
exceptions)ÚVALID_CODE_PREFIX)ÚOptionManagerÚsÚstrÚreturnútuple[int, int]c                óF   — t          j        | ¦  «        }|j        |j        fS )N)ÚosÚstatÚst_inoÚst_dev)r   Ústs     úI/var/www/piapp/venv/lib/python3.11/site-packages/flake8/options/config.pyÚ	_stat_keyr      s   € å	Œ�‰Œ€BØŒ9�b”iÐÐó    Úpathú
str | Nonec                óp  — t           j                             d¦  «        }	 |dk    rt          |¦  «        nd }n# t          $ r d }Y nw xY wt          | ¦  «        }	 dD ]˜}t          j        ¦   «         }t           j                             | |¦  «        }	 |                     |d¬¦  «         d|v sd|v r|c S ŒZ# t          t
          j
        f$ r&}t                               d||¦  «         Y d }~Œ‘d }~ww xY wt           j                             | ¦  «        }t          |¦  «        }	|	|k    s|	|k    rn|} |	}ŒÛd S )	Nú~T)z	setup.cfgztox.iniz.flake8úUTF-8©ÚencodingÚflake8zflake8:local-pluginsz"ignoring unparseable config %s: %s)r   r   Ú
expanduserr   ÚOSErrorÚconfigparserÚRawConfigParserÚjoinÚreadÚUnicodeDecodeErrorÚParsingErrorÚLOGÚwarningÚdirname)
r   ÚhomeÚ	home_statÚdir_statÚ	candidateÚcfgÚcfg_pathÚeÚnew_pathÚnew_dir_stats
             r   Ú_find_config_filer1      s€  € åŒ7×Ò˜cÑ"Ô"€DðØ'+¨s¢{ {•I˜d‘O”O�O¸ˆ	ˆ	øÝð ð ð Øˆ	ˆ	ˆ	ðøøøõ ˜‰Œ€Hð$Ø<ð 
	$ð 
	$ˆIÝÔ.Ñ0Ô0ˆCÝ”w—|’| D¨)Ñ4Ô4ˆHð$Ø—’˜¨G�Ñ4Ô4Ð4ð
 ˜s�?�?Ð&<ÀÐ&CÐ&CØ#�O�O�Oð 'Døõ	 '­Ô(AÐBð Oð Oð OÝ—’Ð@À(ÈAÑNÔNÐNÐNÐNÐNÐNÐNøøøøðOøøøõ ”7—?’? 4Ñ(Ô(ˆÝ  Ñ*Ô*ˆØ˜8Ò#Ð# |°yÒ'@Ð'@ØàˆDØ#ˆHð'$ð, ˆ4s'   ¡9 ¹AÁAÂB7Â7C3ÃC.Ã.C3F)ÚisolatedÚconfigÚextraú	list[str]r2   Úboolú(tuple[configparser.RawConfigParser, str]c               óÈ  — t           j                             d¦  «        }|rt          j        ¦   «         |fS | €t          |¦  «        } t          j        ¦   «         }| �N|                     | d¬¦  «        st          j        d| › �¦  «        ‚t           j         	                    | ¦  «        }n|}|D ]0}|                     |d¬¦  «        st          j        d|› �¦  «        ‚Œ1||fS )a@  Load the configuration given the user options.

    - in ``isolated`` mode, return an empty configuration
    - if a config file is given in ``config`` use that, otherwise attempt to
      discover a configuration using ``tox.ini`` / ``setup.cfg`` / ``.flake8``
    - finally, load any ``extra`` configuration files
    ú.Nr   r   z*The specified config file does not exist: )
r   r   Úabspathr   r    r1   r"   r   ÚExecutionErrorr'   )r3   r4   r2   Úpwdr,   Úcfg_dirÚfilenames          r   Úload_configr?   8   s  € õ Œ'�/Š/˜#Ñ
Ô
€Càð 3ÝÔ+Ñ-Ô-¨sÐ2Ð2à€~Ý" 3Ñ'Ô'ˆå
Ô
&Ñ
(Ô
(€CØÐØ�xŠx˜¨ˆxÑ1Ô1ð 	ÝÔ+ØE¸VÐEÐEñô ð õ ”'—/’/ &Ñ)Ô)ˆˆàˆð ð ð ˆØ�xŠx˜¨7ˆxÑ3Ô3ð 	ÝÔ+ØG¸XÐGÐGñô ð ð	ð
 �ˆ<Ðr   Úoption_managerr   r,   úconfigparser.RawConfigParserr=   údict[str, Any]c           
     ót  — d|vri S i }|d         D �]%}| j                              |¦  «        }|€t                               d|¦  «         Œ;|j        t
          u s|j        dk    r|                     d|¦  «        }n6|j        dv r|                     d|¦  «        }n|                     d|¦  «        }t                               d||¦  «         | 	                    ||¦  «        }|dv r;|D ]8}t          j        |¦  «        s"t          d|›d	|›d
t          j        ›�¦  «        ‚Œ9|j        €J ‚|||j        <   �Œ'|S )z4Parse and normalize the typed configuration options.r   Nz(Option "%s" is not registered. Ignoring.Úcount>   Ú
store_trueÚstore_falsezOption "%s" returned value: %r>   úextend-ignoreÚignorezError code z supplied to z option does not match )Úconfig_options_dictÚgetr%   ÚdebugÚtypeÚintÚactionÚgetintÚ
getbooleanÚ	normalizer   ÚmatchÚ
ValueErrorÚpatternÚconfig_name)	r@   r,   r=   Úconfig_dictÚoption_nameÚoptionÚvalueÚfinal_valueÚ
error_codes	            r   Úparse_configr\   b   s’  € ð �sÐÐØˆ	à€Kà˜8”}ð 6ñ 6ˆØÔ3×7Ò7¸ÑDÔDˆØˆ>Ý�IŠIÐ@À+ÑNÔNÐNØð Œ;�#ÐÐ ¤°'Ò!9Ð!9Ø—J’J˜x¨Ñ5Ô5ˆEˆEØŒ]Ð;Ð;Ð;Ø—N’N 8¨[Ñ9Ô9ˆEˆEà—G’G˜H kÑ2Ô2ˆEå�	Š	Ð2°KÀÑGÔGÐGà×&Ò& u¨gÑ6Ô6ˆàÐ5Ð5Ð5Ø)ð ð �
Ý(Ô.¨zÑ:Ô:ð Ý$ðH jð Hð HØ'2ðHð Hå*;Ô*CðHð Hñô ð ðð Ô!Ð-Ð-Ð-Ø*5ˆ�FÔ&Ñ'Ñ'àÐr   )r   r	   r
   r   )r   r	   r
   r   )r3   r   r4   r5   r2   r6   r
   r7   )r@   r   r,   rA   r=   r	   r
   rB   )Ú__doc__Ú
__future__r   r   ÚloggingÚos.pathr   Útypingr   r   r   Úflake8.defaultsr   Úflake8.options.managerr   Ú	getLoggerÚ__name__r%   r   r1   r?   r\   © r   r   ú<module>rg      s   ðØ 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à€gÔ˜Ñ!Ô!€ð ð  ð  ð  ðð ð ð ðL ð	'ð 'ð 'ð 'ð 'ð 'ðT*ð *ð *ð *ð *ð *r   