§
    øyIf’+  ã                  óÒ  — d Z ddlmZ ddlZddlZddl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 ddlmZ dd	lmZ dd
lmZ ddlmZ  ej        e¦  «        Z ed¦  «        ZdddœZ G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z dAd"„Z!dBd&„Z"dCd,„Z#dDd-„Z$dEd.„Z%dFd4„Z&dGd6„Z'dHd:„Z(dId<„Z)dJd>„Z*dKd?„Z+dLd@„Z,dS )Mz1Functions related to finding and loading plugins.é    )ÚannotationsN)ÚAny)Ú	Generator)ÚIterable)Ú
NamedTuple)Úutils)ÚVALID_CODE_PREFIX)ÚExecutionError)ÚFailedToLoadPlugin)zflake8.extensionúflake8.reportz5.0z3.7)zflake8-colorszflake8-per-file-ignoresc                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚPluginzA plugin before loading.ÚstrÚpackageÚversionzimportlib.metadata.EntryPointÚentry_pointN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úI/var/www/piapp/venv/lib/python3.11/site-packages/flake8/plugins/finder.pyr   r      s6   € € € € € € Ø"Ð"à€L€L�LØ€L€L�LØ.Ð.Ð.Ñ.Ð.Ð.r   r   c                  ób   — e Zd ZU dZded<   ded<   ded<   edd
„¦   «         Zedd„¦   «         ZdS )ÚLoadedPluginz)Represents a plugin after being imported.r   Úpluginr   Úobjúdict[str, bool]Ú
parametersÚreturnr   c                ó$   — | j         j        j        S )z0Return the name given in the packaging metadata.)r   r   Úname©Úselfs    r   Ú
entry_namezLoadedPlugin.entry_name-   s   € ð Œ{Ô&Ô+Ð+r   c                ó0   — | j         j        › d| j        › d�S )z8Return the name for use in user-facing / error messages.ú[ú])r   r   r'   r%   s    r   Údisplay_namezLoadedPlugin.display_name2   s"   € ð ”+Ô%Ð:Ð:¨¬Ð:Ð:Ð:Ð:r   N©r"   r   )r   r   r   r   r   Úpropertyr'   r+   r   r   r   r   r   &   sx   € € € € € € Ø3Ð3à€N€N�NØ€H€H�HØÐÐÑàð,ð ,ð ,ñ „Xð,ð ð;ð ;ð ;ñ „Xð;ð ;ð ;r   r   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚCheckersz'Classified plugins needed for checking.úlist[LoadedPlugin]ÚtreeÚlogical_lineÚphysical_lineNr   r   r   r   r/   r/   8   s<   € € € € € € Ø1Ð1àÐÐÑØ$Ð$Ð$Ñ$Ø%Ð%Ð%Ñ%Ð%Ð%r   r/   c                  óB   — e Zd ZU dZded<   ded<   ded<   dd
„Zdd„ZdS )ÚPluginszClassified plugins.r/   Úcheckerszdict[str, LoadedPlugin]Ú	reportersr0   Údisabledr"   ú#Generator[LoadedPlugin, None, None]c              #  ó´   K  — | j         j        E d{V —† | j         j        E d{V —† | j         j        E d{V —† | j                             ¦   «         E d{V —† dS )z3Return an iterator over all :class:`LoadedPlugin`s.N)r6   r1   r2   r3   r7   Úvaluesr%   s    r   Úall_pluginszPlugins.all_pluginsG   s‰   è è € à”=Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø”=Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø”=Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø”>×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   r   c                ó~   — d                      t          d„ |                      ¦   «         D ¦   «         ¦  «        ¦  «        S )z0Return a user-displayed list of plugin versions.ú, c                ó`   — h | ]+}|j         j        d v¯|j         j        › d|j         j        › �’Œ,S )>   ÚlocalÚflake8z: )r   r   r   )Ú.0Úloadeds     r   ú	<setcomp>z'Plugins.versions_str.<locals>.<setcomp>R   sK   € ð ð ð àØ”}Ô,Ð4GÐGÐGð ”}Ô,ÐGÐG°´Ô0EÐGÐGàGÐGÐGr   )ÚjoinÚsortedr<   r%   s    r   Úversions_strzPlugins.versions_strN   sM   € à�yŠyÝðð à"&×"2Ò"2Ñ"4Ô"4ðñ ô ñô ñ
ô 
ð 	
r   N)r"   r9   r,   )r   r   r   r   r   r<   rG   r   r   r   r5   r5   @   sh   € € € € € € ØÐàÐÐÑØ&Ð&Ð&Ñ&Ø Ð Ð Ñ ð+ð +ð +ð +ð

ð 

ð 

ð 

ð 

ð 

r   r5   c                  óJ   — e Zd ZU dZded<   ded<   ded<   ed
d„¦   «         Zd	S )ÚPluginOptionsz"Options related to plugin loading.ztuple[str, ...]Úlocal_plugin_pathsúfrozenset[str]Úenable_extensionsÚrequire_pluginsr"   c                óN   —  | dt          ¦   «         t          ¦   «         ¬¦  «        S )z2Make a blank PluginOptions, mostly used for tests.r   ©rJ   rL   rM   )Ú	frozenset)Úclss    r   ÚblankzPluginOptions.blankb   s.   € ð ˆsØ!Ý'™kœkÝ%™KœKð
ñ 
ô 
ð 	
r   N)r"   rI   )r   r   r   r   r   ÚclassmethodrR   r   r   r   rI   rI   [   s^   € € € € € € Ø,Ð,à'Ð'Ð'Ñ'Ø%Ð%Ð%Ñ%Ø#Ð#Ð#Ñ#àð
ð 
ð 
ñ „[ð
ð 
ð 
r   rI   Úcfgúconfigparser.RawConfigParserÚcfg_opt_namer   Úoptú
str | Noner"   ú	list[str]c                óÈ   — |�t          j        |¦  «        S ||                     dd¦  «        fD ]2}|                      d|d ¬¦  «        }|�t          j        |¦  «        c S Œ3g S )NÚ_ú-rA   ©Úfallback)r   Úparse_comma_separated_listÚreplaceÚget)rT   rV   rW   Úopt_nameÚvals        r   Ú_parse_optionrd   l   s   € ð €ÝÔ/°Ñ4Ô4Ð4ð & |×';Ò';¸CÀÑ'EÔ'EÐFð 	ð 	ˆHØ—'’'˜( H°t�'Ñ<Ô<ˆCØˆÝÔ7¸Ñ<Ô<Ð<Ð<Ð<ð ð ˆIr   Úcfg_dirrL   rM   c               óV  — |                       ddd¬¦  «                             ¦   «         }t          j        |¦  «        }t          j        ||¦  «        }t          t          |¦  «        t          t          | d|¦  «        ¦  «        t          t          | d|¦  «        ¦  «        ¬¦  «        S )z%Parse plugin loading related options.úflake8:local-pluginsÚpathsÚ r]   rL   rM   rO   )	ra   Ústripr   r_   Únormalize_pathsrI   ÚtuplerP   rd   )rT   re   rL   rM   Úpaths_srh   s         r   Úparse_plugin_optionsrn      s§   € ð �gŠgÐ,¨gÀˆgÑCÔC×IÒIÑKÔK€GÝÔ,¨WÑ5Ô5€EÝÔ! %¨Ñ1Ô1€EåÝ  ™<œ<Ý#Ý˜#Ð2Ð4EÑFÔFñ
ô 
õ "Ý˜#Ð0°/ÑBÔBñ
ô 
ðñ ô ð r   Úepsú'Iterable[importlib.metadata.EntryPoint]r$   r   úGenerator[Plugin, None, None]c              #  ó�  K  — t           j                             d¦  «        j        }t           j                             d¦  «        j        }| D ]x}|j        t          vrŒ|j        dk    r t          |d         |d         |¦  «        V — Œ<|j        dv r t          |d         |d         |¦  «        V — Œet          |||¦  «        V — Œyd S )NÚpyflakesÚpycodestyleÚFr$   r   ÚEW)Ú	importlibÚmetadataÚdistributionÚgroupÚFLAKE8_GROUPSr$   r   )ro   r$   r   Úpyflakes_metaÚpycodestyle_metaÚeps         r   Ú_flake8_pluginsr   –   sñ   è è € õ
 Ô&×3Ò3°JÑ?Ô?ÔH€MÝ Ô)×6Ò6°}ÑEÔEÔNÐàð ,ð ,ˆØŒ8�=Ð(Ð(ØàŒ7�cŠ>ˆ>Ý˜ vÔ.°¸iÔ0HÈ"ÑMÔMÐMÐMÐMÐMØŒW˜ˆ_ˆ_õ
 Ø  Ô(Ð*:¸9Ô*EÀrñô ð ð ð ð õ ˜˜w¨Ñ+Ô+Ð+Ð+Ð+Ð+ð,ð ,r   c               #  óN  K  — t          ¦   «         } t          j                             ¦   «         D ]õ}|j        }t          d„ |D ¦   «         ¦  «        sŒ#|j        }|d         | v rŒ5|                      |d         ¦  «         |d         t          v r4t           	                    d|d         t          |d                  ¦  «         Œ“|d         dk    r$t          ||d         |d         ¦  «        E d {V —† ŒÃ|D ]/}|j        t          v rt          |d         |d         |¦  «        V — Œ0Œöd S )Nc              3  ó2   K  — | ]}|j         t          v V — Œd S )N)rz   r{   )rB   r~   s     r   ú	<genexpr>z*_find_importlib_plugins.<locals>.<genexpr>¸   s)   è è € Ð;Ð;°�2”8�}Ð,Ð;Ð;Ð;Ð;Ð;Ð;r   r$   z#%s plugin is obsolete in flake8>=%srA   r   )Úsetrw   rx   ÚdistributionsÚentry_pointsÚanyÚaddÚBANNED_PLUGINSÚLOGÚwarningr   rz   r{   r   )ÚseenÚdistro   Úmetar~   s        r   Ú_find_importlib_pluginsrŽ   °   s]  è è € å‰5Œ5€DÝÔ"×0Ò0Ñ2Ô2ð @ð @ˆàÔˆõ Ð;Ð;°sÐ;Ñ;Ô;Ñ;Ô;ð 	Øð Œ}ˆà�Œ<˜4ÐÐØà�HŠH�T˜&”\Ñ"Ô"Ð"à�Œ<�>Ð)Ð)Ý�KŠKØ5Ø�V”Ý˜t Fœ|Ô,ñô ð ð
 Ø�&Œ\˜XÒ%Ð%õ ' s¨D°¬L¸$¸y¼/ÑJÔJÐJÐJÐJÐJÐJÐJÐJØàð 	@ð 	@ˆBØŒx�=Ð(Ð(Ý˜T &œ\¨4°	¬?¸BÑ?Ô?Ð?Ð?Ð?øð	@ð;@ð @r   c              #  óž  K  — dD ]Ç}d|› �}t          j        |                      d|d¬¦  «                             ¦   «         t           j        ¬¦  «        D ]w}|                     d¦  «        \  }}}|                     ¦   «         |                     ¦   «         }}t          j                             |||¦  «        }t          dd|¦  «        V — ŒxŒÈd S )	N)Ú	extensionÚreportzflake8.rg   ri   r]   )Úregexpú=r@   )
r   r_   ra   rj   ÚLOCAL_PLUGIN_LIST_REÚ	partitionrw   rx   Ú
EntryPointr   )rT   Úplugin_typerz   Úplugin_sr$   r[   Ú	entry_strr~   s           r   Ú_find_local_pluginsrš   Õ   sè   è è € ð /ð 	/ð 	/ˆØ'˜+Ð'Ð'ˆÝÔ8Ø�GŠGÐ*¨KÀ"ˆGÑEÔE×KÒKÑMÔMÝÔ-ð
ñ 
ô 
ð 	/ð 	/ˆHð "*×!3Ò!3°CÑ!8Ô!8ÑˆD�!�YØ"Ÿjšj™lœl¨I¯OªOÑ,=Ô,=�)ˆDÝÔ#×.Ò.¨t°YÀÑFÔFˆBÝ˜ '¨2Ñ.Ô.Ð.Ð.Ð.Ð.ð	/ð	/ð 	/r   Úpluginsúlist[Plugin]ÚexpectedrK   ÚNonec                ó4  — d„ | D ¦   «         }d„ |D ¦   «         }||z
  }|rxt          dd                     t          |¦  «        ¦  «        › dd                     t          |¦  «        ¦  «        › dd                     t          |¦  «        ¦  «        › �¦  «        ‚d S )Nc                ó@   — h | ]}t          j        |j        ¦  «        ’ŒS r   )r   Únormalize_pypi_namer   )rB   r   s     r   rD   z*_check_required_plugins.<locals>.<setcomp>è   s2   € ð ð ð Ø6<�Ô! &¤.Ñ1Ô1ðð ð r   c                ó6   — h | ]}t          j        |¦  «        ’ŒS r   )r   r¡   )rB   r$   s     r   rD   z*_check_required_plugins.<locals>.<setcomp>ë   s#   € ÐKÐKÐK¸$•eÔ/°Ñ5Ô5ÐKÐKÐKr   z2required plugins were not installed!
- installed: r>   z
- expected: z
- missing: )r
   rE   rF   )r›   r�   Úplugin_namesÚexpected_namesÚmissing_pluginss        r   Ú_check_required_pluginsr¦   ä   sÎ   € ðð Ø@Gðñ ô €Lð LÐKÀ(ÐKÑKÔK€NØ$ |Ñ3€Oàð 
Ýð?Ø ŸIšI¥f¨\Ñ&:Ô&:Ñ;Ô;ð?ð ?àŸ9š9¥V¨NÑ%;Ô%;Ñ<Ô<ð?ð ?ð Ÿ)š)¥F¨?Ñ$;Ô$;Ñ<Ô<ð?ð ?ñ
ô 
ð 	
ð
ð 
r   Úoptsc                ó–   — g t          ¦   «         ¢t          | ¦  «        ¢}|                     ¦   «          t          ||j        ¦  «         |S )z/Discovers all plugins (but does not load them).)rŽ   rš   Úsortr¦   rM   )rT   r§   Úrets      r   Úfind_pluginsr«   ÷   sK   € ð
 BÕ#Ñ%Ô%Ð
AÕ(;¸CÑ(@Ô(@Ð
A€Cð ‡H‚H�J„J€Jå˜C Ô!5Ñ6Ô6Ð6à€Jr   Úfuncr   r    c                óÜ   — t          j        | ¦  «         }|r| j        } d„ t          j        | ¦  «        j                             ¦   «         D ¦   «         }|r|                     dd¦  «         |S )a„  Return the parameters for the plugin.

    This will inspect the plugin and return either the function parameters
    if the plugin is a function or the parameters for ``__init__`` after
    ``self`` if the plugin is a class.

    :returns:
        A dictionary mapping the parameter name to whether or not it is
        required (a.k.a., is positional only/does not have a default).
    c                óz   — i | ]8}|j         t          j        j        u ¯|j        |j        t          j        j        u “Œ9S r   )ÚkindÚinspectÚ	ParameterÚPOSITIONAL_OR_KEYWORDr$   ÚdefaultÚempty)rB   Ú	parameters     r   ú
<dictcomp>z#_parameters_for.<locals>.<dictcomp>  sG   € ð ð ð àØŒ>�WÔ.ÔDÐDÐDð 	Œ˜	Ô)­WÔ->Ô-DÐDàDÐDÐDr   r&   N)r°   Ú
isfunctionÚ__init__Ú	signaturer!   r;   Úpop)r¬   Úis_classr!   s      r   Ú_parameters_forr¼     s‚   € õ Ô% dÑ+Ô+Ð+€HØð ØŒ}ˆðð å Ô*¨4Ñ0Ô0Ô;×BÒBÑDÔDðñ ô €Jð ð %Ø�Š�v˜tÑ$Ô$Ð$àÐr   r   c                ó(  — 	 | j                              ¦   «         }n'# t          $ r}t          | j        |¦  «        ‚d }~ww xY wt          |¦  «        s$t          d¦  «        }t          | j        |¦  «        ‚t          | |t          |¦  «        ¦  «        S )Nz%expected loaded plugin to be callable)	r   ÚloadÚ	Exceptionr   r   ÚcallableÚ	TypeErrorr   r¼   )r   r   ÚeÚerrs       r   Ú_load_pluginrÄ   !  s˜   € ð4ØÔ ×%Ò%Ñ'Ô'ˆˆøÝð 4ð 4ð 4Ý  ¤°Ñ3Ô3Ð3øøøøð4øøøõ �C‰=Œ=ð 6ÝÐ?Ñ@Ô@ˆÝ  ¤°Ñ5Ô5Ð5å˜ ¥_°SÑ%9Ô%9Ñ:Ô:Ð:s   ‚ œ
A ¦;»A r0   c                ób   — t           j                             |j        ¦  «         d„ | D ¦   «         S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r   )rÄ   )rB   Úps     r   ú
<listcomp>z#_import_plugins.<locals>.<listcomp>3  s   € Ð-Ð-Ð- �L˜‰OŒOÐ-Ð-Ð-r   )ÚsysÚpathÚextendrJ   ©r›   r§   s     r   Ú_import_pluginsrÍ   .  s/   € õ „H‡O‚O�DÔ+Ñ,Ô,Ð,Ø-Ð- WÐ-Ñ-Ô-Ð-r   c                ó´  — g }g }g }i }g }| D ]Ô}t          |j        dd¦  «        r.|j        j        j        |j        vr|                     |¦  «         ŒF|j        j        j        dk    r|||j        <   Œfd|j	        v r|                     |¦  «         Œ…d|j	        v r|                     |¦  «         Œ¤d|j	        v r|                     |¦  «         ŒÃt          d|› �¦  «        ‚t          j        |||¦  «        D ]?}t          j        |j        ¦  «        s$t          d|j        › d	t          j        › �¦  «        ‚Œ@t%          t'          |||¬
¦  «        ||¬¦  «        S )NÚoff_by_defaultFr   r1   r2   r3   zwhat plugin type? zplugin code for `z` does not match )r1   r2   r3   )r6   r7   r8   )Úgetattrr   r   r   r$   rL   Úappendrz   r'   r!   ÚNotImplementedErrorÚ	itertoolsÚchainr	   Úmatchr
   r+   Úpatternr5   r/   )r›   r§   r1   r2   r3   r7   r8   rC   s           r   Ú_classify_pluginsr×   6  sÂ  € ð €DØ€LØ€MØ€IØ€Hàð Eð Eˆå�F”JÐ 0°%Ñ8Ô8ð	Eà”Ô)Ô.°dÔ6LÐLÐLà�OŠO˜FÑ#Ô#Ð#Ð#ØŒ]Ô&Ô,°Ò?Ð?Ø+1ˆI�fÔ'Ñ(Ð(Ø�vÔ(Ð(Ð(Ø�KŠK˜ÑÔÐÐØ˜vÔ0Ð0Ð0Ø×Ò Ñ'Ô'Ð'Ð'Ø Ô 1Ð1Ð1Ø× Ò  Ñ(Ô(Ð(Ð(å%Ð&C¸6Ð&CÐ&CÑDÔDÐDå”/ $¨°mÑDÔDð ð ˆÝ Ô& vÔ'8Ñ9Ô9ð 	Ý ð/ FÔ$7ð /ð /Ý$Ô,ð/ð /ñô ð ð	õ ÝØØ%Ø'ð
ñ 
ô 
ð
 Øðñ ô ð r   c                ó>   — t          t          | |¦  «        |¦  «        S )zìLoad and classify all flake8 plugins.

    - first: extends ``sys.path`` with ``paths`` (to import local plugins)
    - next: converts the ``Plugin``s to ``LoadedPlugins``
    - finally: classifies plugins into their specific types
    )r×   rÍ   rÌ   s     r   Úload_pluginsrÙ   c  s   € õ �_¨W°dÑ;Ô;¸TÑBÔBÐBr   )rT   rU   rV   r   rW   rX   r"   rY   )
rT   rU   re   r   rL   rX   rM   rX   r"   rI   )ro   rp   r$   r   r   r   r"   rq   )r"   rq   )rT   rU   r"   rq   )r›   rœ   r�   rK   r"   rž   )rT   rU   r§   rI   r"   rœ   )r¬   r   r"   r    )r   r   r"   r   )r›   rœ   r§   rI   r"   r0   )r›   r0   r§   rI   r"   r5   )r›   rœ   r§   rI   r"   r5   )-r   Ú
__future__r   ÚconfigparserÚimportlib.metadatarw   r°   rÓ   ÚloggingrÉ   Útypingr   r   r   r   rA   r   Úflake8.defaultsr	   Úflake8.exceptionsr
   r   Ú	getLoggerr   r‰   rP   r{   rˆ   r   r   r/   r5   rI   rd   rn   r   rŽ   rš   r¦   r«   r¼   rÄ   rÍ   r×   rÙ   r   r   r   ú<module>râ      sú  ðØ 7Ð 7Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à€gÔ˜Ñ!Ô!€à�	Ð?Ñ@Ô@€ð Ø$ðð €ð/ð /ð /ð /ð /ˆZñ /ô /ð /ð;ð ;ð ;ð ;ð ;�:ñ ;ô ;ð ;ð$&ð &ð &ð &ð &ˆzñ &ô &ð &ð
ð 
ð 
ð 
ð 
ˆjñ 
ô 
ð 
ð6
ð 
ð 
ð 
ð 
�Jñ 
ô 
ð 
ð"ð ð ð ð&ð ð ð ð.,ð ,ð ,ð ,ð4"@ð "@ð "@ð "@ðJ/ð /ð /ð /ð
ð 
ð 
ð 
ð&ð ð ð ðð ð ð ð6
;ð 
;ð 
;ð 
;ð.ð .ð .ð .ð*ð *ð *ð *ðZ
Cð 
Cð 
Cð 
Cð 
Cð 
Cr   