
    z%i                     $   	 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       yy)    )ConfigParserN)Fontc                       e Zd Zy)InvalidConfigTypeN__name__
__module____qualname__     B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/config.pyr   r   #       r   r   c                       e Zd Zy)InvalidConfigSetNr   r   r   r   r   r   $   r   r   r   c                       e Zd Zy)InvalidThemeNr   r   r   r   r   r   %   r   r   r   c                   *    e Zd Z	 ddZddZd Zd Zy)IdleConfParserNc                 D    	 || _         t        j                  | |d       y )NF)defaultsstrict)filer   __init__)selfcfgFilecfgDefaultss      r   r   zIdleConfParser.__init__+   s"    	 	d[Gr   c                     	 | j                  ||      s|S |dk(  r| j                  ||      S |dk(  r| j                  ||      S | j                  |||      S )Nboolintraw)
has_option
getbooleangetintget)r   sectionoptiontypedefaultr!   s         r   GetzIdleConfParser.Get2   sa    	 w/N6>??7F33U];;w//88GV855r   c                 L    	 | j                  |      r| j                  |      S g S N)has_sectionoptionsr   r&   s     r   GetOptionListzIdleConfParser.GetOptionListC   s'    >G$<<((Ir   c                 V    	 | j                   r| j                  | j                          y y r,   )r   readr   s    r   LoadzIdleConfParser.LoadJ   s!    099IIdii  r   r,   )NNF)r   r	   r
   r   r*   r0   r4   r   r   r   r   r   '   s    H6"!r   r   c                   2    e Zd Z	 d Zd Zd Zd Zd Zd Zy)IdleUserConfParserc                     	 | j                  ||      r*| j                  ||      |k(  ry| j                  |||       y| j                  |      s| j	                  |       | j                  |||       y)NFT)r"   r%   setr-   add_section)r   r&   r'   values       r   	SetOptionzIdleUserConfParser.SetOptionT   so    	 ??7F+xx(E1&%0##G,  )HHWfe,r   c                 L    	 | j                  |      r| j                  ||      S y)NF)r-   remove_option)r   r&   r'   s      r   RemoveOptionzIdleUserConfParser.RemoveOptione   s-    	 G$%%gv66r   c                 L    	 | j                  |      s| j                  |       y y r,   )r-   r9   r/   s     r   
AddSectionzIdleUserConfParser.AddSectionn   s&    +(W% )r   c                 v    	 | j                         D ]%  }| j                  |      r| j                  |       ' y r,   )sectionsr0   remove_sectionr/   s     r   RemoveEmptySectionsz&IdleUserConfParser.RemoveEmptySectionss   s6    3}} 	-G%%g.##G,	-r   c                 F    	 | j                          | j                          S r,   )rD   rB   r3   s    r   IsEmptyzIdleUserConfParser.IsEmptyy   s     C  "==?""r   c                    	 | j                   }|r|d   dk7  r| j                         s*	 t        |d      }|5  | j                  |       d d d        y t        j                  j                  | j                         r t	        j                  | j                          y y y y # t        $ r$ t	        j
                  |       t        |d      }Y w xY w# 1 sw Y   y xY w)Nr   #w)
r   rF   openOSErrorosunlinkwritepathexistsremove)r   fnamer   s      r   SavezIdleUserConfParser.Save~   s    	
 		U1X_<<>/"5#.G  (JJw'( (		*		$))$ + %5  /IIe$"5#.G/( (s   B C*C
CCN)	r   r	   r
   r;   r>   r@   rD   rF   rS   r   r   r   r6   r6   O   s%    "&
-#
%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 y)#IdleConfc                     d| _         i | _        i | _        i | _        |s!| j	                          | j                          y y )N)main	highlightkeys
extensions)config_types
defaultCfguserCfgcfgCreateConfigHandlersLoadCfgFiles)r   _utests     r   r   zIdleConf.__init__   sA    G %%' r   c           	         	 t         j                  j                  t              }t        j
                  rdn| j                         x| _        }| j                  D ]z  }t        t         j                  j                  |d| d            | j                  |<   t        t         j                  j                  |xs dd| d            | j                  |<   | y )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    ?''//(+'.D<N<N<PPw)) 	HH(6Wz&>?)ADOOH%%7W^wxj-EF&HDLL"	Hr   c                    	 d}t         j                  j                  d      }|dk7  rUt         j                  j                  |      s6t        j
                  s$d|z   dz   }	 t        |t        j                         d}|dk(  rt        j                         }t         j                  j                  ||      }t         j                  j                  |      s	 t        j                  |       |S |S # t        $ r Y w xY w# t        $ rU t        j
                  s>d|z   dz   }	 t        |t        j                         t        # t        $ r Y t        w xY wt        w xY w)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>77>>'*N#$&HIDd4 c>iikG'',,w/ww~~g&
!! w) #   !R#$&STDd4 !  #     !sB    C/ C> /	C;:C;>!E E;E	E
EE
ENc                    	 	 | j                   |   j                  ||      r"| j                   |   j                  ||||      S 	 	 | j
                  |   j                  ||      r"| j
                  |   j                  ||||      S 	 |rd|d|d|}t	        ||||       |S # t        $ r> d|d|d|d| j                   |   j                  |||      }t	        ||||       Y w xY w# t        $ r Y rw xY w)	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   s2   
	
	8||J'227FC||J/33GV9=3 4 H H D	z*55gfEz266d 7 = = F 
 	2G
 ':w7+  	8 fg||J/33GV3M	OG
 ':w7	8  		s&   A B% A C/ %AC,+C,/	C;:C;c                 F    	 | j                   |   j                  |||       y r,   )r]   r;   )r   r~   r&   r'   r:   s        r   r;   zIdleConf.SetOption   s     >Z **7FEBr   c                     	 || j                   vrt        d      |dk(  r| j                  |   }|j                         S |dk(  r| j                  |   }|j                         S t	        d      )NzInvalid configType specifieduserr)   Invalid configSet specified)r[   r   r]   r\   r   rB   )r   	configSetr~   	cfgParsers       r   GetSectionListzIdleConf.GetSectionList  s    	
 d///#$BCCZ0I
 !!##	 )#ooj1I !!## ##@AAr   c                     	 | j                   d   j                  |      rdnd}| j                  ||      }||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  sr    	
 !OOK8DDUKy 	&&sE2
'M12hG'M12"$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 ][  }|j                  ||      s-|j	                  d      sd|d|d||   }t        |d||       |j                  ||||         ||<   ] |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>[1IY4I=>>!#I !#I!$Y! %Y! %Y	!
 %Y! %Y! %Y! $I! $I! (	! (	! $I! $F! #9! #9!  !!!" "+#,#,%.%.(1(1$-$-$-$-$-%.%.A!D  	@G((G<&&'BC $Yg	@
 g{Iw?&]]wg + @E'N	@ r   c                 &    	 | j                  d      S )NThemecurrent_colors_and_keysr3   s    r   CurrentThemezIdleConf.CurrentThemee  s    C++G44r   c                 &    	 | j                  d      S )NKeysr   r3   s    r   CurrentKeyszIdleConf.CurrentKeysi  s    >++F33r   c                 4   	 |dk(  rdnd}| j                  d|ddd      }d	}|r| j                  d|d
d	      }|s| j                  d|dd	      }|r0|r| j                  n| j                  }||   j                  |      r|S |dk(  rdS | j	                         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+..)&,d ! <>>&'7B>GD>>&'62>FD(/T__T\\Fg**40!(G!3~L9J9J9LLr   c                  Z    t         j                  d d dk(  ryt         j                  dk(  ryy)N   winzIDLE Classic WindowsdarwinzIDLE Classic OSXzIDLE Modern Unix)rr   platformr   r   r   r   zIdleConf.default_keys  s*    <<u$)\\X%%%r   c           	         	 | j                  | j                  dd            }| j                  | j                  dd            }|D ]  }||vs|j                  |        dD ]  }|j                  |        |rhg }|D ]_  }| j	                  d|ddd      s|s|r1|rd	}nd
}| j	                  d||ddd      s=|j                  |       O|j                  |       a |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  s   	 ''##I|<>++##FL9;	 	#D5 T"	#5 	DLL	
 K 1>>,h'- " / #j&%4F%3F>>,V26V:? * A (..t4#**401 Lr   c                 R    	 |D cg c]  }|j                  d      r| c}S c c}w )N)	_bindings_cfgBindings)endswith)r   extnNameListns      r   r   zIdleConf.RemoveKeyBindNames  s%    D'Yaqzz:W/XYYYs   $$c                     	 d }d|z   dz   }| j                  d      D ]   }| j                  |      D ]
  }||k(  s	|} " |S )N<<>>r   r   )r   GetExtensionKeys)r   virtualEventextNamevEventr   events         r   GetExtnNameForEventzIdleConf.GetExtnNameForEvent  sg    	
 $t+&&1&5 	#D..t4 #F?"G#	# r   c                     	 |dz   }| j                         }i }| j                  d   j                  |      r7| j                  d   j                  |      }|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NJ' )	y(4/$U+!() r   c                     	 |dz   }i }| j                   d   j                  |      rU| j                   d   j                  |      }|D ]2  }| j                  d||d      j	                         }d|z   dz   }|||<   4 |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NJ' )	..$h	2 ) GGLuw y(4/!(	)
 r   c                    	 |dz   }| j                  |      }| j                  d   j                  |      rU| j                  d   j                  |      }|D ]2  }| j	                  d||d      j                         }d|z   dz   }|||<   4 |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??<(44Y?6DDYOJ' *	..$iB ) HHM y(4/")	* r   c                 Z    	 |dd }| j                  d||dd      j                         }|S )N   rY   rc   F)r)   r   )r   r   )r   
keySetNameeventStrr   r   s        r   GetKeyBindingzIdleConf.GetKeyBinding  sA    	
 QrN	..Y16 ! 88= 	r   c                     	 | j                  | j                               }t        j                  dk(  rB|j	                         D ]/  \  }}|D cg c]  }|j                  dd       }}||k7  s+|||<   1 |S c c}w )Nr   z<Alt-z<Option-)	GetKeySetr   rr   r   itemsreplace)r   resultkvxv2s         r   r   zIdleConf.GetCurrentKeySet  s~    9 0 0 23<<8#  #1?@B!qyy*5BB7 "F1I#
 	 Cs   A8c                     	 | j                  |      }| j                  d      }|D ]?  }| j                  |      }|s|D ]$  }||   |j                         v rd||<   ||   ||<   & A |S )N   r   rc   )GetCoreKeysr   _IdleConf__GetRawExtensionKeysvalues)r   r   keySetr   r   r   r   s          r   r   zIdleConf.GetKeySet+  s    	
 !!*-((Q(7 	3D006G$ 3Eu~8)+$+ENF5M	3	3 r   c                 4    	 d|z   dz   | j                         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   j                  |      s3| j                  ds   j                  |      sdt|du}t        |ds|       |S |D ]G  }| j	                  ||      }|r|||<   || j
                  vs,dv|dw|dx||   }t        |ds||       I |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  s   	;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 LL(44Z@OOF+77
C  " 
 gvz2   ) BE"00UCG-4E*d&B&BB #JE0B	D   gvz5AB r   c                    	 g }|dk(  r| j                   d   }n |dk(  r| j                  d   }nt        d      |j                  d      }|D ]  }|j	                  d|d      }|j                  d      dk(  rd	}d	}n7|j                  d      }|d
   j                         }|d   j                         }|sj|sm|j                  |||f        |j                  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,I)#/I"#@AA''4 
	AF--VS-AEzz#"$kk#&q)q)H""Xhv$>@
	A 	^,r   c                 N    	 | j                  d      | j                  d      z   }|S )Nr)   r   )r  )r   allHelpSourcess     r   GetAllExtraHelpSourcesListz#IdleConf.GetAllExtraHelpSourcesList  s2    	 55i@++F34r   c                    	 | j                  ||dd      }| j                  ||ddd      }| j                  ||dd	d
      }|dk(  r<t        dd|      }t        j                  |      }|d   }|d   }|d	k  rd}|d   dk(  }|||rdfS 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~~j';U&*  ,~~j';#)  +m#-4@AQJ)Ff%Dqyh'61Df;;(;;r   c                     	 | j                   D ]<  }| j                   |   j                          | j                  |   j                          > y r,   )r\   r4   r]   r   r
  s     r   r`   zIdleConf.LoadCfgFiles  sB    '?? 	%COOC %%'LL""$	%r   c                 b    	 | j                   D ]  }| j                   |   j                          ! y r,   )r]   rS   r%  s     r   SaveUserCfgFileszIdleConf.SaveUserCfgFiles  s-    <<< 	%CLL""$	%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 IM,1&PC$ 8BH54$ML & & )-49'RZ$$(	"$>^@@<4%%r   rU   c                     | f|z   }|t         vr2	 t        | t        j                         t         j                  |       y y # t        $ r Y "w xY w)Nro   )_warnedrq   rr   rs   rK   add)msgr
  s     r   r}   r}     sO    &3,C
'	#CJJ' 	C   		s   A 	AAc                   <    e Zd Z	 d Zd Zed        Zd Zd Zd Z	y)ConfigChangesc                     	 g | _         t        j                  D ]%  }i | |<   | j                   j                  | |          ' y r,   )pagesidleConfr[   r   )r   config_types     r   r   zConfigChanges.__init__  sB    3
#00 	1K "DJJd;/0	1r   c                 H    	 | |   }t        |      }||vri ||<   |||   |<   y r,   )str)r   r2  r&   itemr:   pages         r   
add_optionzConfigChanges.add_option%  s7    :K E
$DM#Wdr   c                 $   	 t         j                  |    j                  ||      rIt         j                  |    j                  ||      |k(  r#t         j                  |    j                  ||      S t         j                  |    j                  |||      S r,   )r1  r\   r"   r*   r]   r>   r;   )r2  r&   r5  r:   s       r   save_optionzConfigChanges.save_option-  s    	 {+66wE"";/33GTBeK''4AA'4PP,66weLLr   c           	         	 t         j                  d   j                          d}| D ]  }d}| |   }|D ]]  }|dk(  r$t         j                  d   j                  d       d}||   j	                         D ]  \  }}| j                  ||||      sd} _ |sot         j                  |   j                          d} dD ]#  }t         j                  |   j                          % | j                          |S )NrW   Fr  T)rY   rX   )r1  r]   rS   rC   r   r9  clear)r   changedr2  cfg_type_changedr6  r&   r5  r:   s           r   save_allzConfigChanges.save_all:  s   	
 	 %%' 	K$$D 0k)$$V,;;KH'+$#'=#6#6#8 0KD%''WdEJ+/(0	0    -224	 1 	1K[)..0	1 	

 r   c                     	 || |   v r| |   |= t         j                  |   }|j                  |       |j                          y r,   )r1  r]   rC   rS   )r   r2  r&   
configpages       r   delete_sectionzConfigChanges.delete_sectionX  sK    	 d;''[!'*%%k2
!!'*r   c                 H    	 | j                   D ]  }|j                           y r,   )r0  r;  )r   r6  s     r   r;  zConfigChanges.clearc  s%    	
 JJ 	DJJL	r   N)
r   r	   r
   r   r7  r(  r9  r>  rA  r;  r   r   r   r.  r.    s6    $1$ 
M 
M<	r   r.  c                      ddl m d\  } }fdfd} |t        j                          |t        j                         t        d| d|d	       y )
Nr   )crc32)r   r   c                 ~    t        |       }t        dz  a |j                  d      t              at	        |       y )Nr   zutf-8)encoding)r4  lineencodecrcrq   )objtxtrD  s     r   sprintz_dump.<locals>.sprintr  s3    #h	CJJJ0#6c
r   c           
      H   t        d| d       t        | j                               D ]x  }| |   j                         } |        |       |D ]N  }| |   j	                  |      } |        |       |D ]#  } |dz   | |   j                  ||      z          % P z y )N
z = )rq   sortedrY   rB   r.   r*   )r^   r
  rB   r&   r.   r'   rL  s         r   dumpCfgz_dump.<locals>.dumpCfgz  s    dC#((*% 		KC3x((*H3K8# Kc(**73ww% KF6E>CHLL&,IIJK	K			Kr   z	
lines = z, crc = rc   )sep)zlibrD  r1  r\   r]   rq   )rG  rI  rP  rD  rL  s      @@r   _dumprS  n  sH    ID#K H H	,j#26r   __main__)rW   zidlelib.idle_test.test_configr   F)	verbosityexit)configparserr   rL   rr   tkinter.fontr   rf   	Exceptionr   r   r   r   r6   rU   r1  r8   r*  r}   dictr.  rS  r   unittestrW   r   r   r   <module>r\     s   6 & 	 
   (	 ( 'y ' #9 #&!\ &!P@% @%Dj	% j	%Z :
%_D _F7: z	(AEB r   