o
    gg                     @   sJ   d dl Z d dlmZmZmZ d dlmZ G dd deZG dd dZ	dS )    N)AnyDictTuple)	_validatec                   @   s   e Zd ZdZdS )UnsupportedActionzBraised by set_option when it doesn't know what to do for an actionN)__name__
__module____qualname____doc__ r   r   b/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/config/options_provider_mixin.pyr      s    r   c                   @   s   e Zd ZU dZdZdZdZeeee	ee
f f df ed< dZdd	 Zd
d ZdddZdd ZdddZdd Zdd ZdddZdS )OptionsProviderMixInz-Mixin to provide options to an OptionsManagerdefaultr   .optionsr   c                 C   s   t  | _|   d S N)optparseValuesconfigload_defaults)selfr   r   r   __init__   s   
zOptionsProviderMixIn.__init__c                 C   sR   | j D ]#\}}|d}|dkr&|du r| |}|d}| |||| qdS )z,initialize the provider using default valuesactioncallbackNr   )r   getget_option_def
set_option)r   optoptdictr   r   r   r   r   r      s   


z"OptionsProviderMixIn.load_defaultsNc                 C   s&   |du r	|  |}|d|ddS )z-get the config attribute corresponding to optNdest-_)r   r   replace)r   r   r   r   r   r   option_attrname'   s   
z$OptionsProviderMixIn.option_attrnamec                 C   s   t | j| |dS )z*get the current value for the given optionN)getattrr   r#   )r   r   r   r   r   option_value-   s   z!OptionsProviderMixIn.option_valuec                 C   s\  |du r	|  |}|durt|||}|du r|dd}|dkr.t| j| ||| dS |dv r?t| j| ||d dS |dkrPt| j| ||d dS |dkr| ||}t| j|d}|du rt|tt	fro|}n|durzg }|
| t| j|| dS t|t	rt| j|||f  dS |
| dS |d	kr|d	 d||d dS t|)
z?method called to set an option (registered in the options list)Nr   store)
store_truecountr   store_false   appendr   )r   r   r   setattrr   r#   r$   
isinstancelisttupler+   r   )r   optnamevaluer   r   _listr   r   r   r   1   s8   


zOptionsProviderMixIn.set_optionc                 C   sH   | j sJ | j D ]}|d |kr|d   S qtd| d| j|)z7return the dictionary defining an option given its namer   r*   zno such option z in section )r   r   OptionErrorname)r   r   optionr   r   r   r   R   s   

z#OptionsProviderMixIn.get_option_defc                 c   sz    i }| j D ]\}}||dg ||| |f qd|v r)d|dfV  t| D ]\}}| |fV  q/dS )ztreturn an iterator on options grouped by section

        (section, [list of (optname, optdict, optvalue)])
        groupN)	r   
setdefaultr   r+   r%   popsorteditemsupper)r   sectionsr0   r   sectionr   r   r   r   options_by_section\   s   z'OptionsProviderMixIn.options_by_sectionc                 c   s4    |d u r| j }|D ]\}}||| |fV  q
d S r   )r   r%   )r   r   r0   r   r   r   r   options_and_valuesk   s   z'OptionsProviderMixIn.options_and_valuesr   )NN)r   r   r	   r
   priorityr4   r   r   strr   r   __annotations__levelr   r   r#   r%   r   r   r>   r?   r   r   r   r   r      s   
 $

!
r   )
r   typingr   r   r   pylint.config.optionr   	Exceptionr   r   r   r   r   r   <module>   s
   