+
     Gi  c                   s    ^ RI t ^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht R.t]P                  P                  4       t ! R R4      tR# )    N)ConfigParserError)TunedException)commandsGlobalConfigc                   s   a  ] tR t^t o ]P
                  3R lt]R 4       t]P
                  3R lt	RR lt
RR ltRR lt. 3R ltR	 tRR
 ltRtV tR# )r   c                sV    / V n         V P                  VR 7       \        4       V n        R# ))	file_nameN)_cfgload_configr   _cmd)selfZconfig_files   &&>/usr/lib/python3.14/site-packages/tuned/utils/global_config.py__init__ZGlobalConfig.__init__   s#    $)[)j$)    c                 s,   \        \        4       U u. uFP  p V P                  R4      '       g   K  V P                  R4      '       d   K5  V P                  R4      '       d   KN  V NKR  	  pp \        R V 4       4      p\        R V 4       4      pW#3# u up i )a[  
Easy validation mimicking configobj
Returns two dicts, first with default values (default None)
global_default[consts.CFG_SOMETHING] = consts.CFG_DEF_SOMETHING or None
second with configobj function for value type (default "get" for string, others eg getboolean, getint)
global_function[consts.CFG_SOMETHING] = consts.CFG_FUNC_SOMETHING or get
}
ZCFG_	CFG_FUNC_CFG_DEF_c              3   s   "   T F4  p\        \        V4      \        \        R VR,          ,           R4      3x  K6  	  R# 5i)r   i   NNNgetattrconstsZ.0opt   & r   	<genexpr>6GlobalConfig.get_global_config_spec.<locals>.<genexpr>!   s3     ogn`c-wvzCPRG?SUY/Z[gn   <>c              3   s   "   T F4  p\        \        V4      \        \        R VR,          ,           R4      3x  K6  	  R# 5i)r   r   getNr   r   r   r   r   r   "   s3     rjqcf'&#.cRTg@UW\0]^jqr   )Zdirr   Z
startswithZdict)r   optionsZglobal_defaultZglobal_functions       r   get_global_config_specZ#GlobalConfig.get_global_config_spec   s      K 'KS
..
  >>+&  >>*% SK' ' ognoo.rjqrr/		(('s   BB	B"Bc                s   \         P                  RV,          4        \        RRRR7      p\        Vn        \        V4      ;_uu_ 4       pVP                  R\        P                  ,           R,           VP                  4       ,           V4       RRR4       V P                  4       w  V n        pVP                  \        P                  4       F  pWPP                  9   d:    \        W$V,          4      pV! \        P                  V4      V P                  V&   KL  \         P!                  R
V: RV: R24       VP#                  \        P                  VRR7      V P                  V&   K  	  R#   + '       g   i     L; i  \         d    \        R	T,          4      hi ; i  \$         d   p\        RT,          4      hRp?i\         d   p\        RT,          4      hRp?ii ; i)z"
Loads global configuration file.
z2reading and parsing global configuration file '%s'Z=Z#F)Z
delimitersZinline_comment_prefixesZstrictZ[z]
Nz2Global TuneD configuration file '%s' is not valid.zUnknown option 'z' in global config file ''.T)Zrawz/Global TuneD configuration file '%s' not found.z3Error parsing global TuneD configuration file '%s'.)logZdebugr   strZoptionxformZopenZread_stringr   ZMAGIC_HEADER_NAMEZreadr   r   r   r   r   r   Zinfor   ZIOError)r
   r   Zconfig_parserZfZ_global_config_funcZoptionZfuncZes   &&      r   r   ZGlobalConfig.load_config%   s    ))@9LM[C3X]^="=Y1cF$<$<<uDqvvxOQZ[ 	$($?$?$A!49!&&v'?'?@v]$?@dv77@dii
 	XX69UV&**6+C+CVQU*VTYYv A 	  O   
 W	IIU	VV	 [	MPYY	ZZ[s\   ,F  
AE,AF  !6E?AF  ,E<	7F  ?FF   G"+F==G"
G"GG"Nc                s8    V P                   P                  W4      # N)r   r   r
   keydefault   &&&r   r   ZGlobalConfig.get@   s    	s	$$r   c                sh    V P                   P                  V P                  W4      4      R 8X  d   R# R# )Z1TF)r	   get_boolr   r!   r$   r   r%   ZGlobalConfig.get_boolC   s(    	YY./36
	r   c                s   V P                   P                  W4      pV'       d&   \        V\        4      '       d   V#  \        V^ 4      # V#   \         d,    \
        P                  R\        T4      T3,          4        T# i ; i)r    z'Error parsing integer '%s', using '%d'.)r   r   
isinstanceZintZ
ValueErrorr   errorr   )r
   r"   r#   Zis   &&& r   get_intZGlobalConfig.get_intH   su    
iimmC!!CHM1I 
.  MYY83q67:KKL	.Ms   A 2B Bc                s   V P                   P                  W4      p\        V\        4      '       d   V# VP	                  4       R 8X  d   . # \
        P                  ! RV4       Uu. uF  qDP	                  4       NK  	  up# u upi )Z z,|;)r   r   r&   ZlistZstripreZsplit)r
   r"   r#   valueZx   &&&  r   get_listZGlobalConfig.get_listT   sb    
))--
%%t
<
[[]b
9XXfe4	54'')4	55	5s   $A?c                s"    W P                   V&   R # r    )r   )r
   r"   r*   r$   r   setZGlobalConfig.set\   s    ))C.r   c                s    V P                  V4      pVf   V# V P                  P                  V4      pVf!   \        P	                  RV: RV: R24       V# V# )NzError parsing value 'z
', using 'r   )r   r	   get_sizer   r'   )r
   r"   r#   ZvalZretr+   r   r.   ZGlobalConfig.get_size_   sM    #[
>		3#[99sGDE
>
:r   )r   r	   r    )r    )Z__name__Z
__module__Z__qualname__Z__firstlineno__r   ZGLOBAL_CONFIG_FILEr   Zstaticmethodr   r   r   r%   r(   r,   r-   r.   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r      s`     !'!:!: 
 ) )" $*#<#< [6%

 $& 6	 	r   )r)   Z
tuned.logsZtunedZtuned.utils.config_parserr   r   Ztuned.exceptionsr   Ztuned.constsr   Ztuned.utils.commandsr   Z__all__Zlogsr   r   r   ) r   r   <module>r/      s;    	  9 +  )
jjnn\ \r   