
    c$              	      <   U d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lmZ erddlmZ d.dZd/dZd0dZd0dZ d0dZ!d0dZ"d0dZ#d0dZ$d ed!fd e d"fd e!dfd e"d#fd$e#d"fd$e#d%fd$e$d&fd'Z%d(e&d)<   d1d-Z'dS )2z1Utils for arguments/options parsing and handling.    )annotationsN)CallableSequence)Path)TYPE_CHECKINGAny)
extensionsutils)_CallableArgument_ExtendArgument_StoreArgument_StoreNewNamesArgument_StoreOldNamesArgument_StoreTrueArgument)_CallbackAction)ArgumentPreprocessingError)Runoptstroptdictdict[str, Any]return{_StoreArgument | _StoreTrueArgument | _CallableArgument | _StoreOldNamesArgument | _StoreNewNamesArgument | _ExtendArgumentc                (	   d|v r!d|vrt          j        d| t                     d|  g}d|v r|d|d          gz  }|                    dd          }|d	k    ret	          |||                    d
d          |                    dd          |                    dd          |                    dd                    S t          |t                    st          |t                    rzt          |||                    dd          |                    di           |                    dd          |                    dd          |                    dd                    S 	 |d
         }n/# t          $ r" t          j        d| t                     d}Y nw xY w|dk    rt          |||g n||d         |                    dd          |                    dd          |                    dd          |                    dd          |                    dd          |                    dd          
  
        S d|v r@d|d         v rt          |||d         |                    dd          |                    dd          |                    dd          |                    dd          |                    di           |                    dd          	  	        S d|d         v rt          |||d         |                    dd          |                    dd          |                    dd          |                    dd          |                    di           |                    dd          	  	        S d|v rt          |||d         |                    dd          |                    dd          |                    dd          |                    dd          d|d         gi|                    dd          	  	        S t          ||||d         |                    dd          |                    dd          |                    dd          |                    dd          |                    dd          	  	        S )z1Convert an optdict to an Argument class instance.levelhidez|The 'level' key in optdicts has been deprecated. Use 'hide' with a boolean to hide an option from the help message. optdict=z--short-actionstore
store_truedefaultThelp FgroupN)flagsr   r"   arg_help	hide_helpsectionkwargsmetavar)r&   r   r'   r*   r(   r)   r+   zAn option dictionary should have a 'default' key to specify the option's default value. This key will be required in pylint 3.0. It is not required for 'store_true' and callable actions. optdict=extendtypechoicesdest)
r&   r   r"   arg_typer.   r'   r+   r(   r)   r/   	old_names)	r&   r"   r0   r.   r'   r+   r(   r*   r)   	new_names)	r&   r   r"   r0   r.   r'   r+   r(   r)   )warningswarnDeprecationWarninggetr   
isinstancer   
issubclassr   r   KeyErrorr   r   r   r   )r   r   r&   r   r"   s        3lib/python3.11/site-packages/pylint/config/utils.py_convert_option_to_argumentr;      s     ' 
fG3 
!! ! 		
 	
 	
 #ZZLE' *(gg&(()) [[7++F 
!KK	400[[,,kk&%00KK..
 
 
 	
 fc"" 	
z&/'J'J 	
 [[,,;;x,,kk&%00KK..KK	400
 
 
 	

)$   ! ! ! 	
 	
 	
   
!6BBwV_KK	400[[,,KK	2..kk&%00KK..VT**
 
 
 	
 7 '(++ 	) It44 VR00Ir22!++fe44{{8R00GT22
 
 
 
 '(++ 	) It44 VR00Ir22!++fe44{{8R00GT22
 
 
 
  
%V_KK	400[[,,KK	2..kk&%00'&/!23KK..

 

 

 
	
 It,,VR((Ir**++fe,,GT**
 
 
 
s   %E. .)FFvaluer   c                ~   t          | t          t          f          rd                    d | D                       S t          | t          j                  rt          | j                  S t          | t                    r1d                    d | 	                                D                       S t          |           S )z%Parse rich (toml) types into strings.,c              3  4   K   | ]}t          |          V  d S )N)_parse_rich_type_value).0is     r:   	<genexpr>z)_parse_rich_type_value.<locals>.<genexpr>   s+      AAa.q11AAAAAA    c              3  *   K   | ]\  }}| d | V  dS ):N )rA   kvs      r:   rC   z)_parse_rich_type_value.<locals>.<genexpr>   s0      ==tq!1

q

======rD   )
r7   listtuplejoinrePatternr   patterndictitems)r<   s    r:   r@   r@      s    %$'' BxxAA5AAAAAA%$$ "5=!!!% >xx==u{{}}======u::rD   runr   
str | NoneNonec                ,    |J t          |           dS )zhExecute arbitrary code from the init_hook.

    This can be used to set the 'sys.path' for example.
    N)execrR   r<   s     r:   
_init_hookrX      s    
 KKKKKrD   c                    |J || _         dS )zSet the rcfile.N)_rcfilerW   s     r:   _set_rcfiler[          CKKKrD   c                    |J || _         dS )zSet the output.N)_outputrW   s     r:   _set_outputr_      r\   rD   c                f    |J | j                             t          j        |                     dS )z,Add plugins to the list of loadable plugins.N)_pluginsr,   r
   _splitstriprW   s     r:   _add_pluginsrc      s5    L)%0011111rD   c                    |J d| _         d S )NT)verboserW   s     r:   _set_verbose_moderf      s    CKKKrD   c                   |J t          t          j                  j                                        D ]T}|j        dk    rG|j                            d          s-d|j         }|| j        vr| j        	                    |           UdS )zEnable all extensions.Nz.py_zpylint.extensions.)
r   r	   __file__parentiterdirsuffixstem
startswithra   append)rR   r<   filenameextension_names       r:   _enable_all_extensionsrr      s    ,--4<<>> 4 4?e# 	4HM,D,DS,I,I 	4A(-AANS\1 4##N333	4 4rD   T         F   	   )z--init-hookz--rcfilez--outputz--load-pluginsz	--verbosez-vz--enable-all-extensionsz>dict[str, tuple[bool, Callable[[Run, str | None], None], int]]PREPROCESSABLE_OPTIONSargsSequence[str]	list[str]c                ,   g }d}|t          |          k     r{||         }|                    d          s|                    |           |dz  }L	 |                    dd          \  }}n# t          $ r |d}}Y nw xY wd}t
                                          D ];\  }}	|	d         }
|
dk    r	||k    r|}|                    |d|
                   r|}<||                    |           |dz  }t
          |         \  }}}|rQ|O|dz  }|t          |          k    s||                             d          rt          d| d          ||         }n|s|t          d| d	           || |           |dz  }|t          |          k     {|S )
z;Pre-process options before full config parsing has started.r   r      =Nrv   zOption z expects a valuez doesn't expect a value)lenrn   ro   split
ValueErrorrx   rQ   r   )rR   ry   processed_argsrB   argumentoptionr<   matched_optionoption_namedatato_matchtakeargcbrh   s                 r:   _preprocess_optionsr      s    "N	A
c$ii- %7""3'' 	!!(+++FA	+$NN322MFEE 	+ 	+ 	+$dEFFF	+ !7!=!=!?!? 	- 	-KAwH1} -[( 1%0N"";yy#9:: -!, 	!!(+++FA/?Q 	Xu 	XFACII~ Ua!3!3C!8!8 U01S61S1S1STTTGEE 	XU 	X,-Vv-V-V-VWWW
3	QK c$ii- %N s   A, ,A=<A=)r   r   r   r   r   r   )r<   r   r   r   )rR   r   r<   rS   r   rT   )rR   r   ry   rz   r   r{   )(__doc__
__future__r   rM   r3   collections.abcr   r   pathlibr   typingr   r   pylintr	   r
   pylint.config.argumentr   r   r   r   r   r   pylint.config.callback_actionsr   pylint.config.exceptionsr   pylint.lint.runr   r;   r@   rX   r[   r_   rc   rf   rr   rx   __annotations__r   rG   rD   r:   <module>r      sO  
 8 7 7 " " " " " " 				  . . . . . . . .       % % % % % % % % $ $ $ $ $ $ $ $                ; : : : : : ? ? ? ? ? ? $######u u u up            2 2 2 2   
4 4 4 4* *a({A&{A&\1-*A.#Q
' %'=qA)      6, , , , , ,rD   