
    \Og+                    @   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSKJr  SS	KJr  SS
KJr  SSKJr  \R,                  " \5      r\" S5      rSSS.r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r         S&S jr!          S'S jr"        S(S jr#S)S jr$    S*S jr%      S+S jr&      S,S  jr'S-S! jr(S.S" jr)      S/S# jr*      S0S$ jr+      S1S% jr,g)2z1Functions 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                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
Plugin   zA plugin before loading.strpackageversionzimportlib.metadata.EntryPointentry_point N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       Z/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/flake8/plugins/finder.pyr   r      s    "LL..r   r   c                  `    \ rS rSr% SrS\S'   S\S'   S\S'   \SS	 j5       r\SS
 j5       rSr	g)LoadedPlugin&   z)Represents a plugin after being imported.r   pluginr   objdict[str, bool]
parametersc                B    U R                   R                  R                  $ )z0Return the name given in the packaging metadata.)r"   r   nameselfs    r   
entry_nameLoadedPlugin.entry_name-   s     {{&&+++r   c                N    U R                   R                   SU R                   S3$ )z8Return the name for use in user-facing / error messages.[])r"   r   r*   r(   s    r   display_nameLoadedPlugin.display_name2   s'     ++%%&a'8::r   r   Nreturnr   )
r   r   r   r   r   r   propertyr*   r/   r   r   r   r   r    r    &   s;    3N	H, , ; ;r   r    c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg)	Checkers8   z'Classified plugins needed for checking.list[LoadedPlugin]treelogical_linephysical_liner   Nr   r   r   r   r5   r5   8   s    1
$$%%r   r5   c                  L    \ rS rSr% SrS\S'   S\S'   S\S'   SS	 jrSS
 jrSrg)Plugins@   zClassified plugins.r5   checkerszdict[str, LoadedPlugin]	reportersr7   disabledc              #    #    U R                   R                   Sh  vN   U R                   R                   Sh  vN   U R                   R                   Sh  vN   U R                  R                  5        Sh  vN   g Nc NG N+ N7f)z3Return an iterator over all :class:`LoadedPlugin`s.N)r>   r8   r9   r:   r?   valuesr(   s    r   all_pluginsPlugins.all_pluginsG   sb     ==%%%%==----==....>>((*** 	&-.*sC   BB BBBB!B:B;BBBBc           
        SR                  [        U R                  5        Vs1 s HN  nUR                  R                  S;  d  M  UR                  R                   SUR                  R
                   3iMP     sn5      5      $ s  snf )z0Return a user-displayed list of plugin versions., >   localflake8z: )joinsortedrC   r"   r   r   )r)   loadeds     r   versions_strPlugins.versions_strN   s}    yy #'"2"2"4"4}},,4GG Hv}},,-R0E0E/FG"4
 	
s   B3Br   N)r2   z#Generator[LoadedPlugin, None, None]r1   )	r   r   r   r   r   r   rC   rL   r   r   r   r   r<   r<   @   s!    &&  +

r   r<   c                  L    \ rS rSr% SrS\S'   S\S'   S\S'   \SS j5       rS	rg
)PluginOptions[   z"Options related to plugin loading.ztuple[str, ...]local_plugin_pathsfrozenset[str]enable_extensionsrequire_pluginsc                2    U " S[        5       [        5       S9$ )z2Make a blank PluginOptions, mostly used for tests.r   rQ   rS   rT   )	frozenset)clss    r   blankPluginOptions.blankb   s     !'k%K
 	
r   r   N)r2   rO   )	r   r   r   r   r   r   classmethodrY   r   r   r   r   rO   rO   [   s)    ,''%%##
 
r   rO   c                    Ub  [         R                  " U5      $ XR                  SS5      4 H/  nU R                  SUS S9nUc  M  [         R                  " U5      s  $    / $ )N_-rH   fallback)r   parse_comma_separated_listreplaceget)cfgcfg_opt_nameoptopt_namevals        r   _parse_optionri   l   sh     //44 &';';C'EFH''(Ht'<C77<< G
 Ir   c                  U R                  SSSS9R                  5       n[        R                  " U5      n[        R                  " XQ5      n[        [        U5      [        [        U SU5      5      [        [        U SU5      5      S9$ )z%Parse plugin loading related options.flake8:local-pluginspaths r_   rS   rT   rV   )	rc   stripr   ra   normalize_pathsrO   tuplerW   ri   )rd   cfg_dirrS   rT   paths_srl   s         r   parse_plugin_optionsrs      s     gg,ggCIIKG,,W5E!!%1E <##24EF
 "#0/B
 r   c              #    #    [         R                  R                  S5      R                  n[         R                  R                  S5      R                  nU  Hu  nUR                  [        ;  a  M  UR
                  S:X  a  [        US   US   U5      v   M@  UR
                  S;   a  [        US   US   U5      v   Mg  [        XU5      v   Mw     g 7f)NpyflakespycodestyleFr'   r   EW)	importlibmetadatadistributiongroupFLAKE8_GROUPSr'   r   )epsr'   r   pyflakes_metapycodestyle_metaeps         r   _flake8_pluginsr      s     
 &&33J?HHM ))66}ENN88=(77c>v.i0H"MMWW_
  (*:9*Er  ++ s   CCc               #  &  #    [        5       n [        R                  R                  5        H  nUR                  n[        S U 5       5      (       d  M(  UR                  nUS   U ;   a  M?  U R                  US   5        US   [        ;   a&  [        R                  SUS   [        US      5        M  US   S:X  a  [        X#S   US   5       S h  vN   M  U H.  nUR                  [        ;   d  M  [        US   US   U5      v   M0     M     g  N?7f)Nc              3  F   #    U  H  oR                   [        ;   v   M     g 7fN)r|   r}   ).0r   s     r   	<genexpr>*_find_importlib_plugins.<locals>.<genexpr>   s     ;s88},ss   !r'   z#%s plugin is obsolete in flake8>=%srH   r   )setry   rz   distributionsentry_pointsanyaddBANNED_PLUGINSLOGwarningr   r|   r}   r   )seendistr~   metar   s        r   _find_importlib_pluginsr      s     5D""002 ;s;;; }}<4HHT&\"<>)KK5VtF|,
 &\X% 'sL$y/JJJBxx=(T&\4	?B?? ; 34 Ks   CDDD1Dc           	   #  z  #    S H  nSU 3n[         R                  " U R                  SUSS9R                  5       [         R                  S9 He  nUR                  S5      u  pEnUR                  5       UR                  5       pd[        R                  R                  XFU5      n[        SSU5      v   Mg     M     g 7f)	N)	extensionreportzflake8.rk   rm   r_   )regexp=rG   )
r   ra   rc   rn   LOCAL_PLUGIN_LIST_RE	partitionry   rz   
EntryPointr   )rd   plugin_typer|   plugin_sr'   r]   	entry_strr   s           r   _find_local_pluginsr      s      /+'88GG*K"GEKKM--
H "*!3!3C!8DY"jjlIOO,=)##..tFB'2..
 /s   B9B;c                   U  Vs1 s H#  n[         R                  " UR                  5      iM%     nnU Vs1 s H  n[         R                  " U5      iM     nnXS-
  nU(       a\  [        SSR	                  [        U5      5       SSR	                  [        U5      5       SSR	                  [        U5      5       35      eg s  snf s  snf )Nz2required plugins were not installed!
- installed: rF   z
- expected: z
- missing: )r   normalize_pypi_namer   r
   rI   rJ   )pluginsexpectedr"   plugin_namesr'   expected_namesmissing_pluginss          r   _check_required_pluginsr      s    
 AH@Gf!!&..1   CKK($e//5(NK$3O IIf\&:;< =99VN%;<= >))F?$;<=?
 	
  Ls
   *B? Cc                ~    / [        5       Q[        U 5      QnUR                  5         [        X!R                  5        U$ )z/Discovers all plugins (but does not load them).)r   r   sortr   rT   )rd   optsrets      r   find_pluginsr      s<    
 B#%
A(;C(@
AC HHJC!5!56Jr   c                   [         R                  " U 5      (       + nU(       a  U R                  n [         R                  " U 5      R                  R                  5        Vs0 s H]  nUR                  [         R                  R                  L d  M,  UR                  UR                  [         R                  R                  L _M_     nnU(       a  UR                  SS5        U$ s  snf )ah  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).
r)   N)inspect
isfunction__init__	signaturer%   rB   kind	ParameterPOSITIONAL_OR_KEYWORDr'   defaultemptypop)funcis_class	parameterr%   s       r   _parameters_forr     s     %%d++H}} !**40;;BBDDI>>W..DDD 	E		))W->->-D-DDDD   vt$s   +C 5C c                    U R                   R                  5       n[        U5      (       d!  [        S5      n[        U R                  U5      e[        X[        U5      5      $ ! [         a  n[        U R                  U5      eS nAff = f)Nz%expected loaded plugin to be callable)	r   load	Exceptionr   r   callable	TypeErrorr    r   )r"   r#   eerrs       r   _load_pluginr   !  sw    4  %%' C==?@ 55_S%9::  4 334s   A" "
B,BBc                    [         R                  R                  UR                  5        U  Vs/ s H  n[	        U5      PM     sn$ s  snf r   )syspathextendrQ   r   )r   r   ps      r   _import_pluginsr   .  s6     HHOOD++,%,-WLOW---s   Ac                6   / n/ n/ n0 n/ nU  GH	  n[        UR                  SS5      (       aA  UR                  R                  R                  UR
                  ;  a  UR                  U5        Ma  UR                  R                  R                  S:X  a  XuUR                  '   M  SUR                  ;   a  UR                  U5        M  SUR                  ;   a  UR                  U5        M  SUR                  ;   a  UR                  U5        M  [        SU 35      e   [        R                  " X#U5       HQ  n[        R                  " UR                  5      (       a  M*  [        SUR                    S	[        R"                   35      e   [%        ['        UUUS
9UUS9$ )Noff_by_defaultFr   r8   r9   r:   zwhat plugin type? zplugin code for `z` does not match )r8   r9   r:   )r>   r?   r@   )getattrr#   r"   r   r'   rS   appendr|   r*   r%   NotImplementedError	itertoolschainr	   matchr
   r/   patternr<   r5   )r   r   r8   r9   r:   r?   r@   rK   s           r   _classify_pluginsr   6  sv    DLMIHFJJ 0%88))..d6L6LLOOF#]]&&,,?+1f''(v(((KKv000' 1 11  (%(:6(&CDD " //$mD &&v'8'899 #F$7$7#88I$,,-/  E %'

  r   c                ,    [        [        X5      U5      $ )zLoad 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   r   s     r   load_pluginsr   c  s     _W;TBBr   )rd   configparser.RawConfigParserre   r   rf   
str | Noner2   z	list[str])
rd   r   rq   r   rS   r   rT   r   r2   rO   )r~   z'Iterable[importlib.metadata.EntryPoint]r'   r   r   r   r2   Generator[Plugin, None, None])r2   r   )rd   r   r2   r   )r   list[Plugin]r   rR   r2   None)rd   r   r   rO   r2   r   )r   r   r2   r$   )r"   r   r2   r    )r   r   r   rO   r2   r7   )r   r7   r   rO   r2   r<   )r   r   r   rO   r2   r<   )-r   
__future__r   configparserimportlib.metadatary   r   r   loggingr   typingr   r   r   r   rH   r   flake8.defaultsr	   flake8.exceptionsr
   r   	getLoggerr   r   rW   r}   r   r   r    r5   r<   rO   ri   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   7 "      
      - , 0!?@ $/Z /;: ;$&z &
j 
6
J 
"	% 
 	&	% "	
   .,	0,
, , #	,4"@J/	%/"/


 

&	%
 6
;..
. .**
* *Z
C
C

C 
Cr   