
    ;e                     f   	 d dl mZ d dlZd dlZd dlmZ d dlZ G d de          Z G d de          Z	 G d d	e          Z
 G d
 de          Z G d de          Z G d d          Z e            Z e            Zd Z G d de          Zd Zedk    rd dlmZ  eddd           dS dS )    )ConfigParserN)Fontc                       e Zd ZdS )InvalidConfigTypeN__name__
__module____qualname__     %/usr/lib/python3.11/idlelib/config.pyr   r   #             r   r   c                       e Zd ZdS )InvalidConfigSetNr   r   r   r   r   r   $   r   r   r   c                       e Zd ZdS )InvalidThemeNr   r   r   r   r   r   %   r   r   r   c                   ,    e Zd Z	 ddZddZd Zd ZdS )	IdleConfParserNc                 D    	 || _         t          j        | |d           d S )NF)defaultsstrict)filer   __init__)selfcfgFilecfgDefaultss      r   r   zIdleConfParser.__init__+   s.    	 	d[GGGGGGr   Fc                     	 |                      ||          s|S |dk    r|                     ||          S |dk    r|                     ||          S |                     |||          S )Nboolintraw)
has_option
getbooleangetintget)r   sectionoptiontypedefaultr!   s         r   GetzIdleConfParser.Get2   sv    	 w// 	N6>>??7F333U]];;w///88GV8555r   c                 \    	 |                      |          r|                     |          S g S N)has_sectionoptionsr   r&   s     r   GetOptionListzIdleConfParser.GetOptionListC   s2    >G$$ 	<<(((Ir   c                 N    	 | j         r|                     | j                    d S d S r,   )r   readr   s    r   LoadzIdleConfParser.LoadJ   s3    09 	!IIdi     	! 	!r   r,   )NNF)r   r	   r
   r   r*   r0   r4   r   r   r   r   r   '   sc        H H H H6 6 6 6"  ! ! ! ! !r   r   c                   4    e Zd Z	 d Zd Zd Zd Zd Zd ZdS )IdleUserConfParserc                     	 |                      ||          r5|                     ||          |k    rdS |                     |||           dS |                     |          s|                     |           |                     |||           dS )NFT)r"   r%   setr-   add_section)r   r&   r'   values       r   	SetOptionzIdleUserConfParser.SetOptionT   s    	 ??7F++ 
	xx((E11u&%000t##G,, *  )))HHWfe,,,4r   c                 ^    	 |                      |          r|                     ||          S dS )NF)r-   remove_option)r   r&   r'   s      r   RemoveOptionzIdleUserConfParser.RemoveOptione   s:    	 G$$ 	7%%gv666ur   c                 `    	 |                      |          s|                     |           d S d S r,   )r-   r9   r/   s     r   
AddSectionzIdleUserConfParser.AddSectionn   s?    +(( 	&W%%%%%	& 	&r   c                     	 |                                  D ],}|                     |          s|                     |           -d S r,   )sectionsr0   remove_sectionr/   s     r   RemoveEmptySectionsz&IdleUserConfParser.RemoveEmptySectionss   sQ    3}} 	- 	-G%%g.. -##G,,,	- 	-r   c                 V    	 |                                   |                                  S r,   )rD   rB   r3   s    r   IsEmptyzIdleUserConfParser.IsEmptyy   s(    C  """==??""r   c                    	 | j         }|r|d         dk    r|                                 sx	 t          |d          }n4# t          $ r' t	          j        |           t          |d          }Y nw xY w|5  |                     |           d d d            d S # 1 swxY w Y   d S t          j                            | j                   rt	          j	        | j                    d S d S d S d S )Nr   #w)
r   rF   openOSErrorosunlinkwritepathexistsremove)r   fnamer   s      r   SavezIdleUserConfParser.Save~   sN   	
 	 
	%U1X__<<>> 	%/"5#..GG / / /Ie$$$"5#..GGG/  ( (JJw'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (	** %	$)$$$$$
	% 
	%__% %s!   = .A.-A.3BBBN)	r   r	   r
   r;   r>   r@   rD   rF   rS   r   r   r   r6   r6   O   ss          "  & & &
- - -# # #
% % % % %r   r6   c                       e Zd Z	 d!dZd Zd Z	 	 d"dZd Zd	 Zd
 Z	d Z
d Zd Zd Zed             Z	 	 d#dZd Zd Zd Zd Zd Zd Zd Zd Zd Zh dZd$dZd Zd Zd Zd Zd  Z dS )%IdleConfFc                     d| _         i | _        i | _        i | _        |s*|                                  |                                  d S d S )N)main	highlightkeys
extensions)config_types
defaultCfguserCfgcfgCreateConfigHandlersLoadCfgFiles)r   _utests     r   r   zIdleConf.__init__   s]    G  	 %%'''	  	 r   c           	         	 t           j                            t                    }t          j        rdn|                                 x| _        }| j        D ]v}t          t           j        
                    |d| d                    | j        |<   t          t           j        
                    |pdd| d                    | j        |<   wd S )N zconfig-z.defrH   z.cfg)rL   rO   dirname__file__idlelibtestingGetUserCfgDiruserdirr[   r   joinr\   r6   r]   )r   idledirri   cfg_types       r   r_   zIdleConf.CreateConfigHandlers   s    ?'//(++'.!PD<N<N<P<PPw) 	H 	HH(6W&>&>&>&>??)A )ADOH%%7W^-Ex-E-E-EFF&H &HDL""	H 	Hr   c                    	 d}t           j                            d          }|dk    rbt           j                            |          sCt          j        s5d|z   dz   }	 t          |t          j                   n# t          $ r Y nw xY wd}|dk    rt          j
                    }t           j                            ||          }t           j                            |          sl	 t          j        |           nV# t          $ rI t          j        s5d|z   dz   }	 t          |t          j                   n# t          $ r Y nw xY wt          w xY w|S )Nz.idlerc~z.
 Warning: os.path.expanduser("~") points to
 z,
 but the path does not exist.r   z2
 Warning: unable to create user config directory
z(
 Check path and permissions.
 Exiting!
)rL   rO   
expanduserrP   rf   rg   printsysstderrrK   getcwdrj   mkdir
SystemExit)r   cfgDiruserDirwarns       r   rh   zIdleConf.GetUserCfgDir   s   	 '$$S))c>>7>>'**  N#$&HIDd44444"   c>>ikkG',,w//w~~g&& 	!
!!!!! ! ! ! R#$&STDd44444"     ! sB   A9 9
BB$C9 9ED43E4
E>E EENTc                 $   	 	 | j         |                             ||          r$| j         |                             ||||          S nQ# t          $ rD d|d|d|d| j         |                             |||          }t	          ||||           Y nw xY w	 | j        |                             ||          r$| j        |                             ||||          S n# t          $ r Y nw xY w|rd|d|d|}t	          ||||           |S )	N)r(   r!   z5
 Warning: config.py - IdleConf.GetOption -
 invalid z  value for configuration option z
 from section z: r    zU
 Warning: config.py - IdleConf.GetOption -
 problem retrieving configuration option .
 returning default value: )r]   r"   r*   
ValueError_warnr\   )	r   
configTyper&   r'   r)   r(   warn_on_defaultr!   warnings	            r   	GetOptionzIdleConf.GetOption   s   
	
	8|J'227FCC H|J/33GV9=3 4 H H HH  	8 	8 	8 	8 fffggg|J/33GV3MMM	OG
 ':w77777	8	z*55gfEE =z266d 7 = = ==  	 	 	D	  	8 	8
 	2G
 ':w777s&   AA	 	ABBAC! !
C.-C.c                 L    	 | j         |                             |||           d S r,   )r]   r;   )r   r~   r&   r'   r:   s        r   r;   zIdleConf.SetOption   s*    >Z **7FEBBBBBr   c                     	 || j         vrt          d          |dk    r| j        |         }n#|dk    r| j        |         }nt	          d          |                                S )NzInvalid configType specifieduserr)   Invalid configSet specified)r[   r   r]   r\   r   rB   )r   	configSetr~   	cfgParsers       r   GetSectionListzIdleConf.GetSectionList  sy    	
 d///#$BCCCZ0II)##oj1II"#@AAA!!###r   c                     	 | j         d                             |          rdnd}|                     ||          }||dz            }|dk    rd}||dz            }||dS )	NrX   r)   r   z-foregroundcursornormalz-background)
foreground
background)r\   r-   GetThemeDict)r   themeelementr^   
theme_dictforebacks          r   GetHighlightzIdleConf.GetHighlight  s    	
 !OK8DDUKK yy 	&&sE22
'M12hG'M12"$777r   c                    	 |dk    r| j         d         }n#|dk    r| j        d         }nt          d          i ddddd	dd
dddddddddddddddddddddddddddddddddddddddddd}|D ]q}|                    ||          s8|                    d          s#d|d|d||         }t          |d||           |                    ||||                   ||<   r|S )Nr   rX   r)   zInvalid theme type specifiedznormal-foregroundz#000000znormal-backgroundz#ffffffzkeyword-foregroundzkeyword-backgroundzbuiltin-foregroundzbuiltin-backgroundzcomment-foregroundzcomment-backgroundzstring-foregroundzstring-backgroundzdefinition-foregroundzdefinition-backgroundzhilite-foregroundzhilite-backgroundgrayzbreak-foregroundzbreak-backgroundzhit-foreground)zhit-backgroundzerror-foregroundzerror-backgroundzcontext-foregroundzcontext-backgroundzlinenumber-foregroundzlinenumber-backgroundzcursor-foregroundzstdout-foregroundzstdout-backgroundzstderr-foregroundzstderr-backgroundzconsole-foregroundzconsole-background)zcontext-zlinenumber-zL
 Warning: config.IdleConf.GetThemeDict -
 problem retrieving theme element z
 from theme z.
 returning default color: r)   )r]   r\   r   r"   
startswithr}   r*   )r   r(   	themeNamer   r   r   r   s          r   r   zIdleConf.GetThemeDict!  s   	 6>>[1IIY4II=>>>!#I !#I!$Y! %Y! %Y	!
 %Y! %Y! %Y! $I! $I! (	! (	! $I! $F! #9! #9!  !!!" "+#,#,%.%.(1(1$-$-$-$-$-%.%.A! ! !D  	@ 	@G((G<< 	@&&'BCC	@ 	@ $GGYYYg	@
 g{Iw???&]]wg + @ @E'NNr   c                 .    	 |                      d          S )NThemecurrent_colors_and_keysr3   s    r   CurrentThemezIdleConf.CurrentThemee  s    C++G444r   c                 .    	 |                      d          S )NKeysr   r3   s    r   CurrentKeyszIdleConf.CurrentKeysi  s    >++F333r   c                 R   	 |dk    rdnd}|                      d|ddd          }d	}|r|                      d|d
d	          }|s|                      d|dd	          }|r-|r| j        n| j        }||                             |          r|S |dk    rdn|                                 S )Nr   rX   rY   rW   r)   r   Tr(   r)   rc   name2r   namezIDLE Classic)r   r\   r]   r-   default_keys)r   r&   cfgnamer)   r   sources         r   r   z IdleConf.current_colors_and_keysm  s    	. ")G!3!3++..)&,d ! < < 	H>>&'7B>GGD 	G>>&'62>FFD 	(/AT__T\Fg**400 !(G!3!3~~9J9J9L9LLr   c                  ^    t           j        d d         dk    rdS t           j        dk    rdS dS )N   winzIDLE Classic WindowsdarwinzIDLE Classic OSXzIDLE Modern Unix)rr   platformr   r   r   r   zIdleConf.default_keys  s7    <u$$))\X%%%%%%r   c           	         	 |                      |                     dd                    }|                      |                     dd                    }|D ]}||vr|                    |           dD ]}|                    |           |rtg }|D ]m}|                     d|ddd          rQ|s|r8|rd	}nd
}|                     d||ddd          r|                    |           X|                    |           n|S |S )Nr)   rZ   r   )AutoCompleteCodeContextFormatParagraph
ParenMatchenableTr   r)   r(   enable_editorenable_shellF)r)   r(   r   )RemoveKeyBindNamesr   appendrQ   r   )	r   active_onlyeditor_only
shell_onlyextns	userExtnsextnactiveExtnsr'   s	            r   GetExtensionszIdleConf.GetExtensions  sw   	 ''##I|<<> >++##FL99; ;	 	# 	#D5  T"""5 	 	DLL  	K 1 1>>,h'- " / / 1 # 
1j 
1& 4%4FF%3F>>,V26V:? * A A 5 (..t444#**4000Lr   c                     	 d |D             S )Nc                 <    g | ]}|                     d           |S ))	_bindings_cfgBindings)endswith).0ns     r   
<listcomp>z/IdleConf.RemoveKeyBindNames.<locals>.<listcomp>  s*    YYYaqzz:W/X/XYYYYr   r   )r   extnNameLists     r   r   zIdleConf.RemoveKeyBindNames  s    DYY<YYYYr   c                     	 d }d|z   dz   }|                      d          D ]"}|                     |          D ]
}||k    r|}#|S )N<<>>r   r   )r   GetExtensionKeys)r   virtualEventextNamevEventr   events         r   GetExtnNameForEventzIdleConf.GetExtnNameForEvent  su    	
 $t+&&1&55 	# 	#D..t44 # #F??"G# r   c                     	 |dz   }|                                  }i }| j        d                             |          r:| j        d                             |          }|D ]}d|z   dz   }||         }|||<   |S )Nr   rZ   r   r   )GetCurrentKeySetr\   r-   r0   )	r   extensionNamekeysName
activeKeysextKeys
eventNames	eventNamer   bindings	            r   r   zIdleConf.GetExtensionKeys  s    	 !>1**,,
?<(44X>> 	)6DDXNNJ' ) )	y(4/$U+!(r   c                    	 |dz   }i }| j         d                             |          r]| j         d                             |          }|D ]:}|                     d||d                                          }d|z   dz   }|||<   ;|S )Nr   rZ   rc   r   r   r   )r\   r-   r0   r   split)r   r   r   r   r   r   r   r   s           r   __GetRawExtensionKeyszIdleConf.__GetRawExtensionKeys  s    	 !/?<(44X>> 	)6DDXNNJ' ) )	..$h	2 ) G GGLuww y(4/!(r   c                 6   	 |dz   }|                      |          }| j        d                             |          r]| j        d                             |          }|D ]:}|                     d||d                                          }d|z   dz   }|||<   ;|S )Nr   rZ   rc   r   r   r   )r   r\   r-   r0   r   r   )r   r   	bindsNameextBindsr   r   r   r   s           r   GetExtensionBindingszIdleConf.GetExtensionBindings  s    	 "K/	((77?<(44Y?? 	*6DDYOOJ' * *	..$iB ) H HHM y(4/")r   c                 t    	 |dd         }|                      d||dd                                          }|S )N   rY   rc   F)r)   r   )r   r   )r   
keySetNameeventStrr   r   s        r   GetKeyBindingzIdleConf.GetKeyBinding  sJ    	
 QrTN	..Y16 ! 8 88= 	r   c                     	 |                      |                                           }t          j        dk    r1|                                D ]\  }}d |D             }||k    r|||<   |S )Nr   c                 :    g | ]}|                     d d          S )z<Alt-z<Option-)replace)r   xs     r   r   z-IdleConf.GetCurrentKeySet.<locals>.<listcomp>%  s&    BBB!qyy*55BBBr   )	GetKeySetr   rr   r   items)r   resultkvv2s        r   r   zIdleConf.GetCurrentKeySet  sw    9 0 0 2 233<8##  # #1BBqBBB77 "F1Ir   c                     	 |                      |          }|                     d          }|D ]J}|                     |          }|r1|D ].}||         |                                v rd||<   ||         ||<   /K|S )N   r   rc   )GetCoreKeysr   _IdleConf__GetRawExtensionKeysvalues)r   r   keySetr   r   r   r   s          r   r   zIdleConf.GetKeySet+  s    	
 !!*--((Q(77 	3 	3D0066G 3$ 3 3Eu~88)+$+ENF5MMr   c                 <    	 d|z   dz   |                                  v S )Nr   r   )r   )r   r   s     r   IsCoreBindingzIdleConf.IsCoreBinding=  s*    	
 \!$&4+;+;+=+===r   >	   <<run-custom>><<run-module>><<expand-word>><<flash-paren>><<zoom-height>><<check-module>><<format-paragraph>><<force-open-calltip>><<force-open-completions>>c           	      ,   	 i dddgdddgddd	gd
ddgddgddgddgddgddgddgddgddgddgddgdd gd!d"gd#d$gi d%d&gd'd(gd)d*gd+d,gd-d.gd/d0gd1d2gd3d4gd5d6gd7d8gd9d:gd;d<gd=d>gd?d@dAgdBdCgdDdEgdFdGgi dHdIgdJdKgdLdMgdNdOdPgdQdRgdSdTgdUdVgdWdXgdYdZgd[d\gd]d^gd_d`gdadbgdcddgdedfgdgdhgdidjgdkgdlgdmgdngdogdpgdqgdr}|r| j         ds                             |          s8| j        ds                             |          sdt|du}t          |ds|           nO|D ]L}|                     ||          }|r|||<    || j        vr#dv|dw|dx||         }t          |ds||           M|S )yNz<<copy>>z<Control-c>z<Control-C>z<<cut>>z<Control-x>z<Control-X>z	<<paste>>z<Control-v>z<Control-V>z<<beginning-of-line>>z<Control-a>z<Home>z<<center-insert>>z<Control-l>z<<close-all-windows>>z<Control-q>z<<close-window>>z<Alt-F4>z<<do-nothing>>z<<end-of-file>>z<Control-d>z<<python-docs>>z<F1>z<<python-context-help>>z
<Shift-F1>z<<history-next>>z<Alt-n>z<<history-previous>>z<Alt-p>z<<interrupt-execution>>z<<view-restart>>z<F6>z<<restart-shell>>z<Control-F6>z<<open-class-browser>>z<Alt-c>z<<open-module>>z<Alt-m>z<<open-new-window>>z<Control-n>z<<open-window-from-file>>z<Control-o>z<<plain-newline-and-indent>>z<Control-j>z<<print-window>>z<Control-p>z<<redo>>z<Control-y>z<<remove-selection>>z<Escape>z<<save-copy-of-window-as-file>>z<Alt-Shift-S>z<<save-window-as-file>>z<Alt-s>z<<save-window>>z<Control-s>z<<select-all>>z<Alt-a>z<<toggle-auto-coloring>>z<Control-slash>z<<undo>>z<Control-z>z<<find-again>>z<Control-g>z<F3>z<<find-in-files>>z<Alt-F3>z<<find-selection>>z<Control-F3>z<<find>>z<Control-f>z<<replace>>z<Control-h>z<<goto-line>>z<Alt-g>z<<smart-backspace>>z<Key-BackSpace>z<<newline-and-indent>>z<Key-Return>z<Key-KP_Enter>z<<smart-indent>>z	<Key-Tab>z<<indent-region>>z<Control-Key-bracketright>z<<dedent-region>>z<Control-Key-bracketleft>z<<comment-region>>z<Alt-Key-3>z<<uncomment-region>>z<Alt-Key-4>z<<tabify-region>>z<Alt-Key-5>z<<untabify-region>>z<Alt-Key-6>z<<toggle-tabs>>z<Alt-Key-t>z<<change-indentwidth>>z<Alt-Key-u>z<<del-word-left>>z<Control-Key-BackSpace>z<<del-word-right>>z<Control-Key-Delete>r  z<Control-Key-space>r   z<Alt-Key-slash>z<Control-Key-backslash>z<Control-Key-0>z<Alt-Key-q>z<Key-F5>z<Shift-Key-F5>z<Alt-Key-x>z<Alt-Key-2>)r  r   r  r   r   r  r   rY   z7
 Warning: config.py - IdleConf.GetCoreKeys -
 key set z( is not defined, using default bindings.zX
 Warning: config.py - IdleConf.GetCoreKeys -
 problem retrieving key binding for event z
 from key set r{   )r]   r-   r\   r}   r   former_extension_events)r   r   keyBindingsr   r   r   s         r   r   zIdleConf.GetCoreKeysO  sv   	;6;}5; -7; $mX%>	;
  -; $m_; ; }o; ; x; &~; ; #YK; &; ;   .!1!;" %yk#; ;$ 	{%;& "M?';( (-);* +]O+;, -;. /;0 #ZL1;2 ./@3;4 &	{5;6 7;8 yk9;: '):(;;;< =;> }f5?;@  *A;B !>"2C;D E; ; ;F M?G;H i[I;J "$5#6K;L %~7G&HM;N O;P  ">!?Q;R  "=!>S;T !=/U;V #]OW;X  -Y;Z "M?[;\ ];^ %}o_;`  ";!<a;b !#9":c;d )+@*Ae;f  12g; ;h (A&A 12%2O)l/0!. -u; ; ;z  	BL(44Z@@ BOF+77
CCB B
  ZZ" 
 gvz2222( B BE"00UCCG B-4E**d&BBBB #UUJJJE0B0B	D   gvz5AAAr   c                    	 g }|dk    r| j         d         }n#|dk    r| j        d         }nt          d          |                    d          }|D ]}|                    d|d          }|                    d          dk    rd	}d	}nI|                    d          }|d
                                         }|d                                         }|r|r|                    |||f           |	                    d            |S )Nr   rW   r)   r   	HelpFiles;r   rc   r   r   c                     | d         S )Nr   r   )r   s    r   <lambda>z1IdleConf.GetExtraHelpSourceList.<locals>.<lambda>  s
    qt r   )key)
r]   r\   r   r0   r*   findr   stripr   sort)	r   r   helpSourcesr   r.   r'   r:   menuItemhelpPaths	            r   GetExtraHelpSourceListzIdleConf.GetExtraHelpSourceList  s.   	 V,II)##/II"#@AAA''44 
	A 
	AF--VS-AAEzz#"$$kk#&&q))q)) AH A""Xhv$>@@@^^,,,r   c                 ^    	 |                      d          |                      d          z   }|S )Nr)   r   )r  )r   allHelpSourcess     r   GetAllExtraHelpSourcesListz#IdleConf.GetAllExtraHelpSourcesList  s8    	 55i@@++F334r   c                 P   	 |                      ||dd          }|                      ||ddd          }|                      ||dd	d
          }|dk    rJt          dd|          }t          j        |          }|d         }|d         }|d	k    rd}|d         dk    }|||rdndfS )Nfontcourierr   z	font-sizer   10r   z	font-boldr   r   r   TkFixedFontT)r   rP   rootfamilysize
   weightboldr   )r   r   actual)	r   r  r~   r&   r  r   r#  f
actualFonts	            r   GetFontzIdleConf.GetFont  s    		 
GVYOO~~j';U&*  , ,~~j';#)  + +m##-4@@@AQJ)Ff%Dqyyh'61D:ff(;;r   c                     	 | j         D ]@}| j         |                                          | j        |                                          Ad S r,   )r\   r4   r]   r   r  s     r   r`   zIdleConf.LoadCfgFiles  sU    '? 	% 	%COC %%'''L""$$$$	% 	%r   c                 Z    	 | j         D ]!}| j         |                                          "d S r,   )r]   rS   r)  s     r   SaveUserCfgFileszIdleConf.SaveUserCfgFiles  s<    << 	% 	%CL""$$$$	% 	%r   )F)NNTF)TFFr,   )!r   r	   r
   r   r_   rh   r   r;   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r'  r`   r+  r   r   r   rU   rU      s       	
  
  
  
 H H H" " "H IM,1& & & &PC C C$ $ $ 8 8 8B B BH5 5 54 4 4$M $M $ML & & \& )-49' ' ' 'RZ Z Z    $  $  (	 	 	  "  $> > >  ^ ^ ^ ^@  @  < < <4% % %% % % % %r   rU   c                     | f|z   }|t           vrI	 t          | t          j                   n# t          $ r Y nw xY wt                               |           d S d S )Nro   )_warnedrq   rr   rs   rK   add)msgr  s     r   r}   r}     su    &3,C
'	#CJ''''' 	 	 	D	C s   - 
::c                   D    e Zd Z	 d Zd Zed             Zd Zd Zd Z	dS )ConfigChangesc                 ~    	 g | _         t          j        D ]'}i | |<   | j                             | |                    (d S r,   )pagesidleConfr[   r   )r   config_types     r   r   zConfigChanges.__init__  sP    3
#0 	1 	1K "DJd;/0000	1 	1r   c                 ^    	 | |         }t          |          }||vri ||<   |||         |<   d S r,   )str)r   r6  r&   itemr:   pages         r   
add_optionzConfigChanges.add_option%  sB    :K E

$DM#Wdr   c                 >   	 t           j        |                              ||          rPt           j        |                              ||          |k    r&t           j        |                              ||          S t           j        |                              |||          S r,   )r5  r\   r"   r*   r]   r>   r;   )r6  r&   r9  r:   s       r   save_optionzConfigChanges.save_option-  s    	 {+66wEE 	Q";/33GTBBeKK'4AA'4PPP,66weLLLr   c           	         	 t           j        d                                          d}| D ]}d}| |         }|D ]i}|dk    r't           j        d                             d           d}||                                         D ]\  }}|                     ||||          rd} j|r&t           j        |                                          d}dD ]&}t           j        |                                          '|                                  |S )NrW   Fr	  T)rY   rX   )r5  r]   rS   rC   r   r=  clear)r   changedr6  cfg_type_changedr:  r&   r9  r:   s           r   save_allzConfigChanges.save_all:  s8   	
 	 %%''' 	 	K$$D 0 0k))$V,;;KHHH'+$#'=#6#6#8#8 0 0KD%''WdEJJ 0+/(0    -224440 	1 	1K[)..0000

 r   c                     	 || |         v r	| |         |= t           j        |         }|                    |           |                                 d S r,   )r5  r]   rC   rS   )r   r6  r&   
configpages       r   delete_sectionzConfigChanges.delete_sectionX  s]    	 d;'''[!'*%k2
!!'***r   c                 D    	 | j         D ]}|                                 d S r,   )r4  r?  )r   r:  s     r   r?  zConfigChanges.clearc  s3    	
 J 	 	DJJLLLL	 	r   N)
r   r	   r
   r   r;  r,  r=  rB  rE  r?  r   r   r   r2  r2    s        $1 1 1$ $ $ 
M 
M \
M  <	 	 	    r   r2  c                      ddl m d\  } }fdfd} |t          j                    |t          j                   t          d| d|d	           d S )
Nr   )crc32)r   r   c                     t          |           }t          dz  a |                    d          t                    at	          |           d S )Nr   zutf-8)encoding)r8  lineencodecrcrq   )objtxtrH  s     r   sprintz_dump.<locals>.sprintr  sE    #hh	eCJJJ00#66c




r   c           
         t          d| d           t          |                                           D ]}| |                                         } |            |           |D ]c}| |                             |          } |            |           |D ]-} |dz   | |                             ||          z              .dd S )N
z = )rq   sortedrY   rB   r.   r*   )r^   r  rB   r&   r.   r'   rP  s         r   dumpCfgz_dump.<locals>.dumpCfgz  s   dC#((**%% 		K 		KC3x((**HF3KKKF8# K Kc(**733ww% K KFF6E>CHLL&,I,IIJJJJK	K			K 		Kr   z	
lines = z, crc = rc   )sep)zlibrH  r5  r\   r]   rq   )rK  rM  rT  rH  rP  s      @@r   _dumprW  n  s    ID#    K K K K K GH   GH	,j#2666666r   __main__)rW   zidlelib.idle_test.test_configr   F)	verbosityexit)configparserr   rL   rr   tkinter.fontr   rf   	Exceptionr   r   r   r   r6   rU   r5  r8   r.  r}   dictr2  rW  r   unittestrW   r   r   r   <module>r`     s  6 & % % % % % 				 



        ( ( ( ( (	 ( ( ( ' ' ' ' 'y ' ' ' # # # # #9 # # #&! &! &! &! &!\ &! &! &!P@% @% @% @% @% @% @% @%Dj	% j	% j	% j	% j	% j	% j	% j	%Z 8::
#%%  _ _ _ _ _D _ _ _F7 7 7: zD	(AEBBBBBB r   