
    c                     p    d dl Z d dlZd dlmZ d dlmZ d dlmZ  G d de          Z	 G d d          Z
dS )	    N)_CallbackAction)	_validate)Optionsc                       e Zd ZdZdS )UnsupportedActionzCRaised by set_option when it doesn't know what to do for an action.N)__name__
__module____qualname____doc__     Dlib/python3.11/site-packages/pylint/config/options_provider_mixin.pyr   r      s        MMMMr   r   c                   `    e Zd ZU dZdZdZeed<   dZd Z	d Z
dd	Zd
 ZddZd Zd ZddZdS )OptionsProviderMixInz.Mixin to provide options to an OptionsManager.defaultr   optionsr   c                     t          j        dt          d           t          j                    | _        |                                  d S )NzJOptionsProviderMixIn has been deprecated and will be removed in pylint 3.0   )
stacklevel)warningswarnDeprecationWarningoptparseValuesconfigload_defaults)selfs    r   __init__zOptionsProviderMixIn.__init__   sM    X	
 	
 	
 	

 o''r   c                     | j         D ]d\  }}|                    d          }|dk    rD||                     |          }|                    d          }|                     ||||           edS )z-Initialize the provider using default values.actioncallbackNr   )r   getget_option_def
set_option)r   optoptdictr    r   s        r   r   z"OptionsProviderMixIn.load_defaults%   s     L 	? 	?LC[[**F# ? 7"11#66G!++i00Wfg>>>	? 	?r   Nc                     ||                      |          }|                    d|                    dd                    S )z.Get the config attribute corresponding to opt.Ndest-_)r#   r"   replace)r   r%   r&   s      r   option_attrnamez$OptionsProviderMixIn.option_attrname0   s?     	/))#..G{{63;;sC#8#8999r   c                 T    t          | j        |                     |          d          S )z+Get the current value for the given option.N)getattrr   r,   )r   r%   s     r   option_valuez!OptionsProviderMixIn.option_value6   s$    t{D$8$8$=$=tDDDr   c                    ||                      |          }|t          |||          }||                    dd          }|dk    r,t          | j        |                     ||          |           dS |dv r,t          | j        |                     ||          |           dS |dk    r,t          | j        |                     ||          |           dS |dk    r|                     ||          }t          | j        |d          }|<t          |t          t          f          r|}n||g}t          | j        ||           dS t          |t                    rt          | j        |||fz              dS |
                    |           dS |dk    s*t          |t                    st          |t                    rdS t          |          )z@Method called to set an option (registered in the options list).Nr    store>   count
store_truestore_falseappendr!   )r#   r   r"   setattrr   r,   r.   
isinstancelisttupler5   str
issubclassr   r   )r   optnamevaluer    r&   _lists         r   r$   zOptionsProviderMixIn.set_option:   s    	3))'22G 	7eWg66E 	4[[733FW 	,DK!5!5gw!G!GOOOOO.. 	,DK!5!5gw!G!GOOOOO}$ 	,DK!5!5gw!G!GOOOOOx 	,**7G<<GDK$77E 	$edE]33 $!EE $"GEWe44444E5)) $Weuh.>?????U#####j 	,vs++	, 6?33	,
 F#F+++r   c                     | j         sJ | j         D ]}|d         |k    r
|d         c S t          j        d| d| j        |          )z8Return the dictionary defining an option given its name.r      zno such option z in section )r   r   OptionErrorname)r   r%   options      r   r#   z#OptionsProviderMixIn.get_option_def^   ss    |l 	! 	!FayC !ay   !"<c<<ty<<c
 
 	
r   c              #     K   i }| j         D ]W\  }}|                    |                    d          g                               |||                     |          f           Xd|v rd|                    d          fV  t          |                                          D ]\  }}|                                |fV  dS )zuReturn an iterator on options grouped by section.

        (section, [list of (optname, optdict, optvalue)])
        groupN)	r   
setdefaultr"   r5   r/   popsorteditemsupper)r   sectionsr<   r&   sectionr   s         r   options_by_sectionz'OptionsProviderMixIn.options_by_sectionh   s      
  $ 	 	GWG 4 4b99@@'4#4#4W#=#=>    8 	+T****** &x~~'7'7 8 8 	+ 	+GW--//7*****	+ 	+r   c              #   `   K   || j         }|D ]\  }}|||                     |          fV   d S N)r   r/   )r   r   r<   r&   s       r   options_and_valuesz'OptionsProviderMixIn.options_and_valuesw   sW       	#lG ' 	? 	?GW7D$5$5g$>$>>>>>>	? 	?r   rO   )NN)r   r	   r
   r   rB   r   r   __annotations__levelr   r   r,   r/   r$   r#   rM   rP   r   r   r   r   r      s         88 DGWE  	? 	? 	?: : : :E E E", ", ", ",H
 
 
+ + +? ? ? ? ? ?r   r   )r   r   pylint.config.callback_actionsr   pylint.config.optionr   pylint.typingr   	Exceptionr   r   r   r   r   <module>rW      s      : : : : : : * * * * * * ! ! ! ! ! !N N N N N	 N N Nh? h? h? h? h? h? h? h? h? h?r   