
    c                     4   U 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mZm	Z	 d dlm
Z
 d dlmZ d dlmZ d4dZd5dZd6dZd7dZd8dZd9dZd8dZd:d Zd;d"Zd<d$Zej        eed% eeeed& d' d( eed)Zd*ed+<   d=d/Zd>d?d1Z G d2 d3ej                   Z dS )@    )annotationsN)CallableSequence)Pattern)Any)utils_r   namestrvaluestr | list[str] | tuple[str]returnSequence[str]c                *    t          j        |          S N)r   
_check_csvr	   r
   r   s      4lib/python3.11/site-packages/pylint/config/option.py_csv_validatorr      s     E"""    str | re.Pattern[str]re.Pattern[str]c                N    t          |d          r|S t          j        |          S )Npattern)hasattrrecompiler   s      r   _regexp_validatorr      s+     ui   :er   str | list[str]list[re.Pattern[str]]c                B      fdt           |          D             S )Nc                2    g | ]}t          |          S  )r   ).0valr	   r
   s     r   
<listcomp>z)_regexp_csv_validator.<locals>.<listcomp>'   s&    VVVas++VVVr   )r   r   s   `` r   _regexp_csv_validatorr'   $   s0     WVVVV~au7U7UVVVVr   str | list[Pattern[str]]list[Pattern[str]]c           
     h   t          |t                    r|S g }t          | ||          D ]}|                    t	          j        t          t          j        |                    	                    dd          dz   t          j        |          
                                z                        |S )N\z\\|)
isinstancelistr   appendr   r   r   pathlibPureWindowsPathreplaceas_posix)r	   r
   r   patternsr%   s        r   _regexp_paths_csv_validatorr5   *   s     % Hau-- 
 
JG+C001199$GG)#..7799: 	
 	
 	
 	
 Or   choices	list[Any]c                F    || vrd}t          j        |||| fz            |S Nz-option %s: invalid value: %r, should be in %s)optparseOptionValueError)r6   r
   r   msgs       r   _choice_validatorr=   ;   s7    G F='tUG.D(DEEELr   optboolc                    t          |t                    rt          |          S t          |t                    r|                                }|dv rdS |dv rdS d}t          j        || |fz            )N>   yyestrueT>   nnofalseFzIoption %s: invalid yn value %r, should be in (y, yes, true, n, no, false))r-   intr?   r   lowerr:   r;   r>   r	   r   r<   s       r   _yn_validatorrJ   B   s    % E{{% $$ t$$ u
UC

#C3,$6
7
77r   c                x    t          j        |          }|D ]"}|| vrd}t          j        |||| fz            #|S r9   )r   r   r:   r;   )r6   r
   r   values	csv_valuer<   s         r   _multiple_choice_validatorrN   O   s`    e$$F N N	G# 	NAC+C4G2L,LMMM	N Mr   c                Z    |sd}t          j        |          t          j        |          S )Nzindent string can't be empty.)r:   r;   r   _unquoterI   s       r   _non_empty_string_validatorrQ   X   s2      --',,,>%   r   optparse.Optionc                .    t          | j        ||          S r   )rN   r6   r>   r
   r   s      r   #_multiple_choices_validating_optionrU   a   s     &T5  r   tuple[int, int, int]c                    t          |t                    s\	 t          d |                    d          D                       }n.# t          t          f$ r t          j        d| d          d w xY w|S )Nc              3  4   K   | ]}t          |          V  d S r   )rG   )r$   r%   s     r   	<genexpr>z(_py_version_validator.<locals>.<genexpr>l   s(      ??s#c((??????r   .zInvalid format for z', should be version string. E.g., '3.8')r-   tuplesplit
ValueErrorAttributeErrorr:   r;   r   s      r   _py_version_validatorr_   i   s    eU## 	??ekk#.>.>?????EEN+ 	 	 	+SdSSS 	 Ls   ,A +A/c                .    t          j        | pd          S )N )r   r   )r   s    r   <lambda>rb   x   s    bjB77 r   c                0    t          | d         ||          S Nr6   )r=   rT   s      r   rb   rb   }   s    '8Yu'U'U r   c                0    t          | d         ||          S rd   rN   rT   s      r   rb   rb   ~   s    +EIe, , r   c                0    t          | d         ||          S rd   rf   rT   s      r   rb   rb      s    0JIe1 1 r   )stringrG   floatregexp
regexp_csvregexp_paths_csvcsvynchoice
confidencemultiple_choicenon_empty_string
py_versionz@dict[str, Callable[[Any, str, Any], Any] | Callable[[Any], Any]]
VALIDATORSopttypeoptdictoptionc           	        | t           vrt          d|  d          	 t          |          |||          S # t          $ rH 	 t          |          |          cY S # t          $ r"}t          j        | d|d|            |d }~ww xY ww xY w)NzUnsupported type ""z value (z) should be of type )rt   	TypeError	Exceptionr:   r;   )ru   rv   rw   r   es        r   _call_validatorr}      s    j  97W777888'"7FE:::   	g&u----- 	 	 	+II5IIII 	s-   5 
B AB
B!A>>BBra   c                ^    	 |d         }n# t           $ r | cY S w xY wt          ||||           S )zReturn a validated value for an option according to its type.

    optional argument name is only used for error message formatting
    type)KeyErrorr}   )r   rv   r
   _types       r   	_validater      sJ    
   5'4777s    c                      e Zd Zej        j        dz   Zej        j        ddgz   Z ej        ej        j                  Ze	ed<   e
ed<   eed<   eed<   eed<   eed	<   eed
<   eed<   eed<   d fdZddZeej        j        d<   ddZ xZS )Option)	rj   rk   rl   rm   rn   rp   rq   rr   rs   hidelevelrj   rk   rl   rm   rn   rp   rq   rr   rs   optsr   attrsr   Nonec                    t          j        dt          d            t                      j        |i | t          | d          r| j        rt          j        | _	        d S d S d S )Nz<Option has been deprecated and will be removed in pylint 3.0   )
stacklevelr   )
warningswarnDeprecationWarningsuper__init__r   r   r:   SUPPRESS_HELPhelp)selfr   r   	__class__s      r   r   zOption.__init__   s    J	
 	
 	
 	

 	$(%(((4   	/TY 	/ .DIII	/ 	/ 	/ 	/r   c                ~   | j         dv r| j        t          j        d|           t	          | j        t
          t          f          sPt          j        dt          t          | j                                                d          d         z  |           d S | j        t          j        d| j         |           d S )N>   ro   rp   rq   z/must supply a list of choices for type 'choice'z1choices must be a list of strings ('%s' supplied)'   z!must not supply choices for type )	r   r6   r:   OptionErrorr-   r[   r.   r   r\   )r   s    r   _check_choicezOption._check_choice   s    9CC 	| *Et   dlUDM:: *G$t|,,--33C88;<	    \ 	&ADIAA4  	 	r   r   r>   r   rL   parserrG   c                R   t          | j        t                    sJ | j        r| j        j        dk    rdS |                     ||          }| j        dk    r.t          || j                  }|r|                    |           |}| 	                    | j
        | j        ||||          S )Nzpylint.lint.runr   named)r-   destr   callback
__module__convert_valuer   getattrupdatetake_actionaction)r   r>   r   rL   r   existents         r   processzOption.process   s     $)S)))))= 	T]59JJ 	1 ""3..9 	!vty11H !&&&  TYUFFSSSr   )r   r   r   r   r   r   )r   r   )
r>   r   r   r   rL   r   r   r   r   rG   )__name__r   __qualname__r:   r   TYPESATTRScopyTYPE_CHECKERr   r'   r5   r   rJ   rU   rQ   r_   r   r   CHECK_METHODSr   __classcell__)r   s   @r   r   r      s       O! 
% 
E O!VW$55E49X_9::L.L!6L'BL#$(L&L!DL&IL"#'BL#$!6L	/ 	/ 	/ 	/ 	/ 	/   $ (5HO!!$T T T T T T T Tr   r   )r	   r   r
   r   r   r   r   r   )r	   r   r
   r   r   r   r   r   )r	   r   r
   r   r   r   r   r    )r	   r   r
   r   r   r(   r   r)   )r6   r7   r
   r   r   r   r   r   )r>   r   r	   r   r   r   r   r?   )r>   r   r	   r   r   r   r   r   )r>   rR   r
   r   r   r   r   r   )r	   r   r
   r   r   r   r   rV   )
ru   r   rv   r   rw   r   r   r   r   r   )ra   )r   r   rv   r   r
   r   r   r   )!
__future__r   r   r:   r0   r   r   collections.abcr   r   r   typingr   pylintr   r   r   r'   r5   r=   rJ   rN   rQ   rU   r_   rP   rG   ri   rt   __annotations__r}   r   r   r#   r   r   <module>r      s=  
 # " " " " " "    				  . . . . . . . .                  # # # #   W W W W   "   
8 
8 
8 
8   ! ! ! !       n77'3
UU   4'#P P
    *   	8 	8 	8 	8 	8HT HT HT HT HTX_ HT HT HT HT HTr   