o
    gA                     @   s   d dl Z d dlZd dlZd dlmZ dd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zejeeejeee	dd dd eedZdd Zd ddZG dd dejZdS )!    N)utilsc                 C   s
   t |S N)r   
_check_csv_namevalue r	   R/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/config/option.py_csv_validator   s   
r   c                 C   s   t |dr|S t|S )Npattern)hasattrrecompiler   r	   r	   r
   _regexp_validator   s   

r   c                    s    fddt  |D S )Nc                    s   g | ]}t  |qS r	   )r   .0valr   r   r	   r
   
<listcomp>   s    z)_regexp_csv_validator.<locals>.<listcomp>)r   r   r	   r   r
   _regexp_csv_validator   s   r   c                 C   s$   || vrd}t |||| f |S Nz-option %s: invalid value: %r, should be in %s)optparseOptionValueError)choicesr   r   msgr	   r	   r
   _choice_validator   s   r   c                 C   s@   t |tr	t|S |dv rdS |dv rdS d}t|| |f )N)yyestrueT)nnofalseFzIoption %s: invalid yn value %r, should be in (y, yes, true, n, no, false))
isinstanceintboolr   r   optr   r   r   r	   r	   r
   _yn_validator#   s   
r(   c                 C   s8   t |}|D ]}|| vrd}t|||| f q|S r   )r   r   r   r   )r   r   r   values	csv_valuer   r	   r	   r
   _multiple_choice_validator.   s   
r+   c                 C   s   |s	d}t |t|S )Nzindent string can't be empty.)r   r   r   _unquoter&   r	   r	   r
   _non_empty_string_validator7   s   

r-   c                 C   s   t | j||S r   )r+   r   r'   r   r   r	   r	   r
   #_multiple_choices_validating_option>   s   r/   c              	   C   sR   t |ts'ztdd |dD }W |S  ttfy&   td| d w |S )Nc                 s   s    | ]}t |V  qd S r   )r$   r   r	   r	   r
   	<genexpr>E   s    z(_py_version_validator.<locals>.<genexpr>.zInvalid format for )r#   tuplesplit
ValueErrorAttributeErrorr   r   r   r	   r	   r
   _py_version_validatorB   s   
r6   c                 C      t | d ||S Nr   )r   r.   r	   r	   r
   <lambda>S   s    r9   c                 C   r7   r8   )r+   r.   r	   r	   r
   r9   T   s    
)stringr$   floatregexp
regexp_csvcsvynchoicemultiple_choicenon_empty_string
py_versionc                 C   s   | t vrtd|  dz	t |  |||W S  ty@   z	t |  |W  Y S  ty? } zt| d|d|  |d }~ww w )NzUnsupported type ""z value (z) should be of type )
VALIDATORS	Exception	TypeErrorr   r   )opttypeoptdictoptionr   er	   r	   r
   _call_validator\   s    rL    c                 C   s2   z|d }W n t y   |  Y S 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)KeyErrorrL   )r   rI   r   _typer	   r	   r
   	_validatej   s   rQ   c                   @   s   e Zd Zejjd Zejjddg Ze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
< dd Zdd Zeejjd< dd ZdS )Option)r<   r=   r>   r?   rA   rB   rC   hidelevelr<   r=   r>   r?   rA   rB   rC   c                 O   s>   t jj| g|R i | t| dr| jrt j| _d S d S d S )NrS   )r   rR   __init__r   rS   SUPPRESS_HELPhelp)selfoptsattrsr	   r	   r
   rU      s   zOption.__init__c                 C   sz   | j dv r,| jd u rtd| t| jttfs*tdtt | jdd  | d S | jd ur;td| j | d S )N)r@   rA   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 )	rN   r   r   OptionErrorr#   r2   liststrr3   )rX   r	   r	   r
   _check_choice   s$   


zOption._check_choice   c                 C   sL   |  ||}| jdkrt|| j}|r|| |}| | j| j||||S )Nnamed)convert_valuerN   getattrdestupdatetake_actionaction)rX   r'   r   r)   parserexistentr	   r	   r
   process   s   

zOption.processN)__name__
__module____qualname__r   rR   TYPESATTRScopyTYPE_CHECKERr   r   r   r(   r/   r-   r6   rU   r`   CHECK_METHODSrk   r	   r	   r	   r
   rR   w   s    	rR   )rM   )rq   r   r   pylintr   r   r   r   r   r(   r+   r-   r/   r6   r,   r$   r;   r   rE   rL   rQ   rR   r	   r	   r	   r
   <module>   s8   	

