£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d                 @   s   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 deZG dd deZ	G dd	 d	eZ
G d
d deZG dd deZG dd dZe Ze Zdd ZG dd deZdd Zedkrd dlmZ edddd dS )    )ConfigParserN)Fontc               @   s   e Zd ZdS )InvalidConfigTypeN)__name__
__module____qualname__ r   r   3/opt/alt/python37/lib64/python3.7/idlelib/config.pyr   #   s    r   c               @   s   e Zd ZdS )InvalidConfigSetN)r   r   r   r   r   r   r	   r
   $   s    r
   c               @   s   e Zd ZdS )InvalidThemeN)r   r   r   r   r   r   r	   r   %   s    r   c               @   s0   e Zd ZdddZdddZdd Zd	d
 ZdS )IdleConfParserNc             C   s   || _ tj| |dd d S )NF)defaultsstrict)filer   __init__)selfcfgFileZcfgDefaultsr   r   r	   r   +   s    zIdleConfParser.__init__Fc             C   sL   |  ||s|S |dkr$| ||S |dkr8| ||S | j|||dS d S )Nboolint)raw)
has_optionZ
getbooleanZgetintget)r   sectionoptiontypedefaultr   r   r   r	   Get2   s    zIdleConfParser.Getc             C   s   |  |r| |S g S d S )N)has_sectionoptions)r   r   r   r   r	   GetOptionListC   s    

zIdleConfParser.GetOptionListc             C   s   | j r| | j  d S )N)r   read)r   r   r   r	   LoadJ   s    zIdleConfParser.Load)N)NNF)r   r   r   r   r   r   r!   r   r   r   r	   r   '   s   

r   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )IdleUserConfParserc             C   s^   |  ||r4| |||kr dS | ||| dS n&| |sH| | | ||| dS d S )NFT)r   r   setr   add_section)r   r   r   valuer   r   r	   	SetOptionT   s    

zIdleUserConfParser.SetOptionc             C   s   |  |r| ||S dS )NF)r   Zremove_option)r   r   r   r   r   r	   RemoveOptione   s    
zIdleUserConfParser.RemoveOptionc             C   s   |  |s| | d S )N)r   r$   )r   r   r   r   r	   
AddSectionn   s    
zIdleUserConfParser.AddSectionc             C   s*   x$|   D ]}| |s
| | q
W d S )N)sectionsr   remove_section)r   r   r   r   r	   RemoveEmptySectionss   s    
z&IdleUserConfParser.RemoveEmptySectionsc             C   s   |    |   S )N)r+   r)   )r   r   r   r	   IsEmptyy   s    zIdleUserConfParser.IsEmptyc          	   C   s   | j }|r|d dkr|  sryt|d}W n( tk
rT   t| t|d}Y nX | | | W d Q R X ntj| j rt	| j  d S )Nr   #w)
r   r,   openOSErrorosunlinkwritepathexistsremove)r   Zfnamer   r   r   r	   Save~   s    
zIdleUserConfParser.SaveN)	r   r   r   r&   r'   r(   r+   r,   r7   r   r   r   r	   r"   O   s   	r"   c            	   @   s  e Zd ZdEddZdd Zdd ZdFd
dZdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zedd ZdGddZdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1d2d3d4d5d6d7d8h	ZdHd9d:Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD Z dS )IIdleConfFc             C   s0   d| _ i | _i | _i | _|s,|   |   d S )N)main	highlightkeys
extensions)config_types
defaultCfguserCfgcfgCreateConfigHandlersLoadCfgFiles)r   Z_utestr   r   r	   r      s    zIdleConf.__init__c             C   s|   t jt}tjrdn|   | _}xR| jD ]H}t	t j
|d| d| j|< tt j
|p^dd| d| j|< q,W d S )N zconfig-z.defr-   z.cfg)r1   r4   dirname__file__idlelibtestingGetUserCfgDiruserdirr=   r   joinr>   r"   r?   )r   ZidledirrI   Zcfg_typer   r   r	   rA      s    zIdleConf.CreateConfigHandlersc             C   s   d}t jd}|dkrbt j|sbtjs^d| d }yt|tjd W n t	k
r\   Y nX d}|dkrrt 
 }t j||}t j|syt | W nR t	k
r   tjsd| d }yt|tjd W n t	k
r   Y nX tY nX |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!
)r1   r4   
expanduserr5   rF   rG   printsysstderrr0   getcwdrJ   mkdir
SystemExit)r   ZcfgDirZuserDirwarnr   r   r	   rH      s4    
zIdleConf.GetUserCfgDirNTc       	      C   s   y.| j | ||r,| j | j||||dS W nD tk
rr   d|||| j | j|||df }t|||| Y nX y.| j| ||r| j| j||||dS W n tk
r   Y nX |rd|||f }t|||| |S )N)r   r   zn
 Warning: config.py - IdleConf.GetOption -
 invalid %r value for configuration option %r
 from section %r: %r)r   z
 Warning: config.py - IdleConf.GetOption -
 problem retrieving configuration option %r
 from section %r.
 returning default value: %r)r?   r   r   
ValueError_warnr>   )	r   
configTyper   r   r   r   warn_on_defaultr   warningr   r   r	   	GetOption   s(    
zIdleConf.GetOptionc             C   s   | j | ||| d S )N)r?   r&   )r   rV   r   r   r%   r   r   r	   r&      s    zIdleConf.SetOptionc             C   sJ   || j krtd|dkr&| j| }n|dkr:| j| }ntd| S )NzInvalid configType specifieduserr   zInvalid configSet specified)r=   r   r?   r>   r
   r)   )r   	configSetrV   	cfgParserr   r   r	   GetSectionList  s    
zIdleConf.GetSectionListc             C   sR   | j d |rdnd}| ||}||d  }|dkr<d}||d  }||dS )	Nr:   r   rZ   z-foregroundZcursornormalz-background)Z
foregroundZ
background)r>   r   GetThemeDict)r   themeelementr@   Z
theme_dictZforeZbackr   r   r	   GetHighlight  s    zIdleConf.GetHighlightc              C   s   |dkr| j d }n|dkr(| jd }nt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}xZ|D ]R}|||s|d	sd
|||| f }t|d|| |j|||| d||< qzW |S )NrZ   r:   r   zInvalid theme type specifiedz#000000z#ffffffZgray)znormal-foregroundznormal-backgroundzkeyword-foregroundzkeyword-backgroundzbuiltin-foregroundzbuiltin-backgroundzcomment-foregroundzcomment-backgroundzstring-foregroundzstring-backgroundzdefinition-foregroundzdefinition-backgroundzhilite-foregroundzhilite-backgroundzbreak-foregroundzbreak-backgroundzhit-foregroundz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-z{
 Warning: config.IdleConf.GetThemeDict -
 problem retrieving theme element %r
 from theme %r.
 returning default color: %r)r   )r?   r>   r   r   
startswithrU   r   )r   r   Z	themeNamer\   r`   ra   rX   r   r   r	   r_   !  sZ    

zIdleConf.GetThemeDictc             C   s
   |  dS )NTheme)current_colors_and_keys)r   r   r   r	   CurrentThemee  s    zIdleConf.CurrentThemec             C   s
   |  dS )NZKeys)re   )r   r   r   r	   CurrentKeysi  s    zIdleConf.CurrentKeysc             C   s   |dkrdnd}| j d|dddd}d	}|r>| j d|d
d	d}|sT| j d|dd	d}|rz|rb| jn| j}|| |rz|S |dkrdS |  S )Nrd   r:   r;   r9   r   r   T)r   r   rC   Zname2)r   namezIDLE Classic)rY   r>   r?   r   default_keys)r   r   Zcfgnamer   rh   sourcer   r   r	   re   m  s    

z IdleConf.current_colors_and_keysc               C   s,   t jd d dkrdS t jdkr$dS dS d S )N   winzIDLE Classic WindowsdarwinzIDLE Classic OSXzIDLE Modern Unix)rN   platformr   r   r   r	   ri     s
    
zIdleConf.default_keysc       	   	   C   s   |  | dd}|  | dd}x|D ]}||kr*|| q*W xdD ]}|| qJW |rg }xb|D ]Z}| jd|ddddrj|s|r|rd	}nd
}| jd||ddddr|| qj|| qjW |S |S d S )Nr   r<   rZ   )ZAutoCompleteZCodeContextZFormatParagraphZ
ParenMatchZenableTr   )r   r   Zenable_editorZenable_shellF)r   r   rW   )RemoveKeyBindNamesr]   appendr6   rY   )	r   active_onlyZeditor_onlyZ
shell_onlyZextnsZ	userExtnsextnactiveExtnsr   r   r   r	   GetExtensions  s2    



zIdleConf.GetExtensionsc             C   s   dd |D S )Nc             S   s   g | ]}| d s|qS ))	_bindings_cfgBindings)endswith).0nr   r   r	   
<listcomp>  s    z/IdleConf.RemoveKeyBindNames.<locals>.<listcomp>r   )r   ZextnNameListr   r   r	   ro     s    zIdleConf.RemoveKeyBindNamesc             C   sJ   d }d| d }x4| j ddD ]$}x| |D ]}||kr.|}q.W qW |S )Nz<<z>>r   )rq   )rt   GetExtensionKeys)r   virtualEventZextNameZvEventrr   eventr   r   r	   GetExtnNameForEvent  s    zIdleConf.GetExtnNameForEventc       	      C   sb   |d }|   }i }| jd |r^| jd |}x(|D ] }d| d }|| }|||< q:W |S )Nrv   r<   z<<z>>)GetCurrentKeySetr>   r   r   )	r   extensionNamekeysNameZ
activeKeysextKeys
eventNames	eventNamer}   bindingr   r   r	   r{     s    
zIdleConf.GetExtensionKeysc             C   sh   |d }i }| j d |rd| j d |}x6|D ].}| jd||dd }d| d }|||< q2W |S )Nrv   r<   rC   )r   z<<z>>)r>   r   r   rY   split)r   r   r   r   r   r   r   r}   r   r   r	   Z__GetRawExtensionKeys  s    
zIdleConf.__GetRawExtensionKeysc             C   sn   |d }|  |}| jd |rj| jd |}x6|D ].}| jd||dd }d| d }|||< q8W |S )Nru   r<   rC   )r   z<<z>>)r{   r>   r   r   rY   r   )r   r   Z	bindsNameZextBindsr   r   r   r}   r   r   r	   GetExtensionBindings  s    

zIdleConf.GetExtensionBindingsc             C   s(   |dd }| j d||ddd }|S )N   r;   rC   F)r   rW   )rY   r   )r   
keySetNameZeventStrr   r   r   r   r	   GetKeyBinding  s    zIdleConf.GetKeyBindingc             C   sP   |  |  }tjdkrLx2| D ]&\}}dd |D }||kr"|||< q"W |S )Nrm   c             S   s   g | ]}| d dqS )z<Alt-z<Option-)replace)rx   xr   r   r	   rz   %  s    z-IdleConf.GetCurrentKeySet.<locals>.<listcomp>)	GetKeySetrg   rN   rn   items)r   resultkvZv2r   r   r	   r     s    
zIdleConf.GetCurrentKeySetc             C   sh   |  |}| jdd}xL|D ]D}| |}|rx0|D ](}|| | krPd||< || ||< q4W qW |S )N   )rq   rC   )GetCoreKeysrt   _IdleConf__GetRawExtensionKeysvalues)r   r   ZkeySetrs   rr   r   r}   r   r   r	   r   +  s    



zIdleConf.GetKeySetc             C   s   d| d |   kS )Nz<<z>>)r   )r   r|   r   r   r	   IsCoreBinding=  s    zIdleConf.IsCoreBindingz<<force-open-completions>>z<<expand-word>>z<<force-open-calltip>>z<<flash-paren>>z<<format-paragraph>>z<<run-module>>z<<check-module>>z<<zoom-height>>z<<run-custom>>c          ;   C   s  ddgddgddgddgd	gd
gdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgd gd!d"gd#gd$gd%gd&gd'gd(gd)d*gd+gd,gd-gd.gd/gd0gd1gd2gd3gd4gd5gd6gd7gd8gd9gd:gd;gd<gd=gd>gd?:}|r| j d@ |s<| jd@ |s<dA|f }t|d@| nXxV|D ]N}| ||}|rb|||< n,|| jkrBdB|||| f }t|d@|| qBW |S )CNz<Control-c>z<Control-C>z<Control-x>z<Control-X>z<Control-v>z<Control-V>z<Control-a>z<Home>z<Control-l>z<Control-q>z<Alt-F4>z<Control-d>z<F1>z
<Shift-F1>z<Alt-n>z<Alt-p>z<F6>z<Control-F6>z<Alt-c>z<Alt-m>z<Control-n>z<Control-o>z<Control-j>z<Control-p>z<Control-y>z<Escape>z<Alt-Shift-S>z<Alt-s>z<Control-s>z<Alt-a>z<Control-slash>z<Control-z>z<Control-g>z<F3>z<Alt-F3>z<Control-F3>z<Control-f>z<Control-h>z<Alt-g>z<Key-BackSpace>z<Key-Return>z<Key-KP_Enter>z	<Key-Tab>z<Control-Key-bracketright>z<Control-Key-bracketleft>z<Alt-Key-3>z<Alt-Key-4>z<Alt-Key-5>z<Alt-Key-6>z<Alt-Key-t>z<Alt-Key-u>z<Control-Key-BackSpace>z<Control-Key-Delete>z<Control-Key-space>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>):z<<copy>>z<<cut>>z	<<paste>>z<<beginning-of-line>>z<<center-insert>>z<<close-all-windows>>z<<close-window>>z<<do-nothing>>z<<end-of-file>>z<<python-docs>>z<<python-context-help>>z<<history-next>>z<<history-previous>>z<<interrupt-execution>>z<<view-restart>>z<<restart-shell>>z<<open-class-browser>>z<<open-module>>z<<open-new-window>>z<<open-window-from-file>>z<<plain-newline-and-indent>>z<<print-window>>z<<redo>>z<<remove-selection>>z<<save-copy-of-window-as-file>>z<<save-window-as-file>>z<<save-window>>z<<select-all>>z<<toggle-auto-coloring>>z<<undo>>z<<find-again>>z<<find-in-files>>z<<find-selection>>z<<find>>z<<replace>>z<<goto-line>>z<<smart-backspace>>z<<newline-and-indent>>z<<smart-indent>>z<<indent-region>>z<<dedent-region>>z<<comment-region>>z<<uncomment-region>>z<<tabify-region>>z<<untabify-region>>z<<toggle-tabs>>z<<change-indentwidth>>z<<del-word-left>>z<<del-word-right>>z<<force-open-completions>>z<<expand-word>>z<<force-open-calltip>>z<<flash-paren>>z<<format-paragraph>>z<<run-module>>z<<run-custom>>z<<check-module>>z<<zoom-height>>r;   za
 Warning: config.py - IdleConf.GetCoreKeys -
 key set %r is not defined, using default bindings.z
 Warning: config.py - IdleConf.GetCoreKeys -
 problem retrieving key binding for event %r
 from key set %r.
 returning default value: %r)r?   r   r>   rU   r   former_extension_events)r   r   ZkeyBindingsrX   r}   r   r   r   r	   r   O  s    



zIdleConf.GetCoreKeysc       	      C   s   g }|dkr| j d }n|dkr,| jd }ntd|d}xn|D ]f}|jd|dd}|ddkrpd	}d	}n"|d}|d
  }|d  }|rD|rD||||f qDW |j	dd d |S )NrZ   r9   r   zInvalid configSet specified	HelpFiles;)r   rC   r   r   c             S   s   | d S )Nr   r   )r   r   r   r	   <lambda>      z1IdleConf.GetExtraHelpSourceList.<locals>.<lambda>)key)
r?   r>   r
   r   r   findr   striprp   sort)	r   r[   ZhelpSourcesr\   r   r   r%   ZmenuItemZhelpPathr   r   r	   GetExtraHelpSourceList  s&    



zIdleConf.GetExtraHelpSourceListc             C   s   |  d|  d }|S )Nr   rZ   )r   )r   ZallHelpSourcesr   r   r	   GetAllExtraHelpSourcesList  s    z#IdleConf.GetAllExtraHelpSourcesListc       	      C   s   | j ||ddd}| j ||dddd}| j ||dd	d
d}|dkrtdd|d}t|}|d }|d }|d	krvd}|d dk}|||rdndfS )NZfontZcourier)r   z	font-sizer   Z10)r   r   z	font-boldr   r   )r   r   ZTkFixedFontT)rh   r5   rootfamilysize
   Zweightboldr^   )rY   r   actual)	r   r   rV   r   r   r   r   fZ
actualFontr   r   r	   GetFont  s    
zIdleConf.GetFontc             C   s0   x*| j D ] }| j |   | j|   qW d S )N)r>   r!   r?   )r   r   r   r   r	   rB     s    zIdleConf.LoadCfgFilesc             C   s"   x| j D ]}| j |   qW d S )N)r?   r7   )r   r   r   r   r	   SaveUserCfgFiles  s    zIdleConf.SaveUserCfgFiles)F)NNTF)TFF)N)!r   r   r   r   rA   rH   rY   r&   r]   rb   r_   rf   rg   re   staticmethodri   rt   ro   r~   r{   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r   r   r	   r8      sD   

$ 
'D&	 
(
` 	r8   c             G   sH   | f| }|t krDyt| tjd W n tk
r8   Y nX t | d S )N)r   )_warnedrM   rN   rO   r0   add)msgr   r   r   r	   rU     s    
rU   c               @   s@   e Zd Zdd Zdd Zedd Zdd Zd	d
 Zdd Z	dS )ConfigChangesc             C   s2   g | _ x&tjD ]}i | |< | j | |  qW d S )N)pagesidleConfr=   rp   )r   config_typer   r   r	   r     s    zConfigChanges.__init__c             C   s0   | | }t |}||kr i ||< ||| |< d S )N)str)r   r   r   itemr%   pager   r   r	   
add_option%  s
    zConfigChanges.add_optionc             C   sN   t j|  ||r:t j|  |||kr:t j|  ||S t j|  |||S )N)r   r>   r   r   r?   r'   r&   )r   r   r   r%   r   r   r	   save_option-  s    zConfigChanges.save_optionc          	   C   s   t jd   d}x| D ]~}d}| | }xV|D ]N}|dkrNt jd d d}x,||  D ]\}}| ||||r\d}q\W q.W |rt j|   d}qW xdD ]}t j|   qW |   |S )Nr9   Fr   T)r;   r:   )r   r?   r7   r*   r   r   clear)r   Zchangedr   Zcfg_type_changedr   r   r   r%   r   r   r	   save_all:  s&    


zConfigChanges.save_allc             C   s6   || | kr| | |= t j| }|| |  d S )N)r   r?   r*   r7   )r   r   r   Z
configpager   r   r	   delete_sectionX  s
    


zConfigChanges.delete_sectionc             C   s   x| j D ]}|  qW d S )N)r   r   )r   r   r   r   r	   r   c  s    zConfigChanges.clearN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r     s   r   c                 sV   ddl m  d\} } fddfdd}|tj |tj td| d	|d
d d S )Nr   )crc32)r   r   c                s.   t | }td7 a |jddtat| d S )Nr   zutf-8)encoding)r   lineencodecrcrM   )objZtxt)r   r   r	   sprintr  s    z_dump.<locals>.sprintc          	      s   t d| d xt|  D ]v}| |  } |  | xT|D ]L}| | |} |  | x(|D ] } |d | | ||  qhW q@W qW d S )N
z = )rM   sortedr;   r)   r   r   )r@   r   r)   r   r   r   )r   r   r	   dumpCfgz  s    

z_dump.<locals>.dumpCfgz	
lines = z, crc = rC   )sep)zlibr   r   r>   r?   rM   )r   r   r   r   )r   r   r	   _dumpn  s    

r   __main__)r9   zidlelib.idle_test.test_configr   F)	verbosityexit)Zconfigparserr   r1   rN   Ztkinter.fontr   rF   	Exceptionr   r
   r   r   r"   r8   r   r#   r   rU   dictr   r   r   Zunittestr9   r   r   r   r	   <module>   s,   (B    q
c