<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2aޗ                 @   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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   +/opt/alt/python36/lib64/python3.6/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 )InvalidFgBgN)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   | j ||s|S |dkr$| j||S |dkr8| j||S | j|||dS d S )Nboolint)raw)
has_optionZ
getbooleanZgetintget)r   sectionoptiontypedefaultr   r   r   r	   Get3   s    zIdleConfParser.Getc             C   s   | j |r| j|S g S d S )N)has_sectionoptions)r   r   r   r   r	   GetOptionListD   s    

zIdleConfParser.GetOptionListc             C   s   | j r| j| j  d S )N)r   read)r   r   r   r	   LoadK   s    zIdleConfParser.Load)N)NNF)r   r   r   r   r   r    r"   r   r   r   r	   r   (   s   

r   c               @   sD   e Zd Zd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^   | j ||r4| j|||kr dS | j||| dS n&| j|sH| j| | j||| dS d S )NFT)r   r   setr   add_section)r   r   r   valuer   r   r	   	SetOptionU   s    

zIdleUserConfParser.SetOptionc             C   s   | j |r| j||S dS )NF)r   Zremove_option)r   r   r   r   r   r	   RemoveOptionf   s    
zIdleUserConfParser.RemoveOptionc             C   s   | j |s| j| d S )N)r   r%   )r   r   r   r   r	   
AddSectiono   s    
zIdleUserConfParser.AddSectionc             C   s*   x$| j  D ]}| j|s
| j| q
W d S )N)sectionsr    remove_section)r   r   r   r   r	   RemoveEmptySectionst   s    
z&IdleUserConfParser.RemoveEmptySectionsc             C   s   | j   | j  S )N)r,   r*   )r   r   r   r	   IsEmptyz   s    zIdleUserConfParser.IsEmptyc             C   s   t jj| jrt j| j d S )N)ospathexistsr   remove)r   r   r   r	   
RemoveFile   s    zIdleUserConfParser.RemoveFilec             C   sr   | j }|rn| j sfyt|d}W n( tk
rH   tj| t|d}Y nX | | j| W d Q R X n| j  d S )Nw)r   r-   openOSErrorr.   unlinkwriter2   )r   Zfnamer   r   r   r	   Save   s    
zIdleUserConfParser.SaveN)
r   r   r   r'   r(   r)   r,   r-   r2   r8   r   r   r   r	   r#   P   s   	r#   c               @   s  e Zd ZdDddZdd Zd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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d0d1d2d3d4d5d6d7hZdHd8d9Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC Z dS )IIdleConfFc             C   s0   d| _ i | _i | _i | _|s,| j  | j  d S )Nmain	highlightkeys
extensions)r:   r;   r<   r=   )config_types
defaultCfguserCfgcfgCreateConfigHandlersLoadCfgFiles)r   Z_utestr   r   r	   r      s    zIdleConf.__init__c             C   s   t dkrtjjt}ntjjtjd }| j  | _}i }i }xB| j	D ]8}tjj
|d| d ||< tjj
|d| d ||< qFW x2| j	D ](}t|| | j|< t|| | j|< qW d S )N__main__r   zconfig-z.defz.cfg)r   r.   r/   dirname__file__abspathsysGetUserCfgDirZuserdirr>   joinr   r?   r#   r@   )r   ZidleDiruserDirZdefCfgFilesZusrCfgFilesZcfgTyper   r   r	   rB      s    zIdleConf.CreateConfigHandlersc             C   s   d}t jjd}|dkr\t jj|s\d| d }yt|tjd W n tk
rV   Y nX d}|dkrlt j }t jj	||}t jj|syt j
| W n8 tk
r   d| d }tjst|tjd 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!
)r.   r/   
expanduserr0   printrH   stderrr5   getcwdrJ   mkdiridlelibZtesting
SystemExit)r   ZcfgDirrK   warnr   r   r	   rI      s,    
zIdleConf.GetUserCfgDirNTc       	      C   s   y.| j | j||r,| j | j||||dS W nD tk
rr   d|||| j | j|||df }t|||| Y nX y.| j| 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 | j||| d S )N)r@   r'   )r   rW   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|j S )NzInvalid configType specifieduserr   zInvalid configSet specified)r>   r   r@   r?   r
   r*   )r   	configSetrW   	cfgParserr   r   r	   GetSectionList  s    
zIdleConf.GetSectionListc             C   s   | j d j|r| jd|}n| jd|}||d  }|dkrH|d }n||d  }||d}|sf|S |d	krv|d
 S |dkr|d S tdd S )Nr;   r   r[   z-foregroundZcursorznormal-backgroundz-background)
foreground
backgroundZfgr_   bgr`   zInvalid fgBg specified)r?   r   GetThemeDictr   )r   themeelementZfgBgZ	themeDictZforeZbackr;   r   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}xP|D ]H}|j||sd	|||| f }t|d|| |j|||| d
||< qvW |S )Nr[   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cursor-foregroundzstdout-foregroundzstdout-backgroundzstderr-foregroundzstderr-backgroundzconsole-foregroundzconsole-backgroundzcontext-foregroundzcontext-backgroundz{
 Warning: config.IdleConf.GetThemeDict -
 problem retrieving theme element %r
 from theme %r.
 returning default color: %r)r   )r@   r?   r   r   rV   r   )r   r   Z	themeNamer]   rc   rd   rY   r   r   r	   rb   ;  sT    
zIdleConf.GetThemeDictc             C   s
   | j dS )NTheme)current_colors_and_keys)r   r   r   r	   CurrentTheme{  s    zIdleConf.CurrentThemec             C   s
   | j dS )NZKeys)rg   )r   r   r   r	   CurrentKeys  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}|| j|rz|S |dkrdS | j S )Nrf   r;   r<   r:   r   r   T)r   r    Zname2)r   namezIDLE Classic)rZ   r?   r@   r   default_keys)r   r   Zcfgnamer   rk   sourcer   r   r	   rg     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)rH   platformr   r   r   r	   rl     s
    
zIdleConf.default_keysc       	   	   C   s   | j | jdd}| j | jdd}x|D ]}||kr*|j| q*W xdD ]}|j| qJW |rg }xb|D ]Z}| jd|dd	d
drj|s|r|rd}nd}| jd||d	d
ddr|j| qj|j| qjW |S |S d S )Nr   r=   r[   AutoCompleteCodeContextFormatParagraph
ParenMatchenableTr   )r   r   Zenable_editorZenable_shellF)r   r   rX   )rr   rs   rt   ru   )RemoveKeyBindNamesr^   appendr1   rZ   )	r   active_onlyZeditor_onlyZ
shell_onlyZextnsZ	userExtnsextnactiveExtnsr   r   r   r	   GetExtensions  s4    


zIdleConf.GetExtensionsc             C   s   dd |D S )Nc             S   s   g | ]}|j ds|qS )	_bindings_cfgBindings)r}   r~   )endswith).0nr   r   r	   
<listcomp>  s    z/IdleConf.RemoveKeyBindNames.<locals>.<listcomp>r   )r   ZextnNameListr   r   r	   rw     s    zIdleConf.RemoveKeyBindNamesc             C   sJ   d }d| d }x4| j ddD ]$}x| j|D ]}||kr.|}q.W qW |S )Nz<<z>>r   )ry   )r|   GetExtensionKeys)r   virtualEventZextNameZvEventrz   eventr   r   r	   GetExtnNameForEvent  s    zIdleConf.GetExtnNameForEventc       	      C   sb   |d }| j  }i }| jd j|r^| jd j|}x(|D ] }d| d }|| }|||< q:W |S )Nr~   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 j|rd| j d j|}x6|D ].}| jd||ddj }d| d }|||< q2W |S )Nr~   r=   rj   )r   z<<z>>)r?   r   r    rZ   split)r   r   r   r   r   r   r   r   r   r   r	   Z__GetRawExtensionKeys  s    
zIdleConf.__GetRawExtensionKeysc             C   sn   |d }| j |}| jd j|rj| jd j|}x6|D ].}| jd||ddj }d| d }|||< q8W |S )Nr}   r=   rj   )r   z<<z>>)r   r?   r   r    rZ   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j }|S )N   r<   rj   F)r   rX   )rZ   r   )r   
keySetNameZeventStrr   r   r   r   r	   GetKeyBinding%  s    zIdleConf.GetKeyBindingc             C   sP   | j | j }tjdkrLx2|j D ]&\}}dd |D }||kr"|||< q"W |S )Nrp   c             S   s   g | ]}|j d dqS )z<Alt-z<Option-)replace)r   xr   r   r	   r   ;  s    z-IdleConf.GetCurrentKeySet.<locals>.<listcomp>)	GetKeySetri   rH   rq   items)r   resultkvZv2r   r   r	   r   0  s    
zIdleConf.GetCurrentKeySetc             C   sh   | j |}| jdd}xL|D ]D}| j|}|rx0|D ](}|| |j krPd||< || ||< q4W qW |S )N   )ry   rj   )GetCoreKeysr|   _IdleConf__GetRawExtensionKeysvalues)r   r   ZkeySetr{   rz   r   r   r   r   r	   r   A  s    



zIdleConf.GetKeySetc             C   s   d| d | j  kS )Nz<<z>>)r   )r   r   r   r   r	   IsCoreBindingS  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>>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>9}|r| j d? j|p| jd? j|s8d@|f }t|d?| nXxV|D ]N}| j||}|r^|||< n,|| jkr>dA|||| f }t|d?|| q>W |S )BNz<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<Alt-Key-x>z<Alt-Key-2>)9z<<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<<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?   rV   r   former_extension_events)r   r   ZkeyBindingsrY   r   r   r   r   r	   r   c  s    



zIdleConf.GetCoreKeysc       	      C   s   g }|dkr| j d }n|dkr,| jd }ntd|jd}xn|D ]f}|jd|dd}|jddkrpd	}d	}n"|jd}|d
 j }|d j }|rD|rD|j|||f qDW |j	dd d |S )Nr[   r:   r   zInvalid configSet specified	HelpFiles;)r   r   rj   r   c             S   s   | d S )Nr   r   )r   r   r   r	   <lambda>  s    z1IdleConf.GetExtraHelpSourceList.<locals>.<lambda>)key)
r@   r?   r
   r    r   findr   striprx   sort)	r   r\   ZhelpSourcesr]   r   r   r&   ZmenuItemZhelpPathr   r   r	   GetExtraHelpSourceList  s&    



zIdleConf.GetExtraHelpSourceListc             C   s   | j d| j d }|S )Nr   r[   )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j|}|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)rk   r0   rootfamilysize
   ZweightboldZnormal)rZ   r   actual)	r   r   rW   r   r   r   r   fZ
actualFontr   r   r	   GetFont  s    
zIdleConf.GetFontc             C   s0   x*| j D ] }| j | j  | j| j  qW d S )N)r?   r"   r@   )r   r   r   r   r	   rC     s    zIdleConf.LoadCfgFilesc             C   s"   x| j D ]}| j | j  qW d S )N)r@   r8   )r   r   r   r   r	   SaveUserCfgFiles  s    zIdleConf.SaveUserCfgFiles)F)NNTF)N)TFF)N)!r   r   r   r   rB   rI   rZ   r'   r^   re   rb   rh   ri   rg   staticmethodrl   r|   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   r   r   r	   r9      sB   

  
'
@&	 
(

_ 	r9   c             G   sH   | f| }|t krDyt| tjd W n tk
r8   Y nX t j| d S )N)r   )_warnedrN   rH   rO   r5   add)msgr   r   r   r	   rV     s    
rV   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 j| |  qW d S )N)pagesidleConfr>   rx   )r   config_typer   r   r	   r   1  s    zConfigChanges.__init__c             C   s0   | | }t |}||kr i ||< ||| |< d S )N)str)r   r   r   itemr&   pager   r   r	   
add_option8  s
    zConfigChanges.add_optionc             C   sN   t j|  j||r:t j|  j|||kr:t j|  j||S t j|  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 j  d}x| D ]~}d}| | }xV|D ]N}|dkrNt jd jd d}x,|| j D ]\}}| j||||r\d}q\W q.W |rt j| j  d}qW xdD ]}t j| j  qW | j  |S )Nr:   Fr   Tr<   r;   )r<   r;   )r   r@   r8   r+   r   r   clear)r   Zchangedr   Zcfg_type_changedr   r   r   r&   r   r   r	   save_allM  s&    


zConfigChanges.save_allc             C   s6   || | kr| | |= t j| }|j| |j  d S )N)r   r@   r+   r8   )r   r   r   Z
configpager   r   r	   delete_sectionk  s
    


zConfigChanges.delete_sectionc             C   s   x| j D ]}|j  qW d S )N)r   r   )r   r   r   r   r	   r   v  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   )crc32c                s.   t | }td7 a |jddtat| d S )Nr   zutf-8)encoding)r   lineencodecrcrN   )objZtxt)r   r   r	   sprint  s    z_dump.<locals>.sprintc                s   t d| d xt| j D ]v}| | j } |  | xT|D ]L}| | j|} |  | x(|D ] } |d | | j||  qhW q@W qW d S )N
z = )rN   sortedr<   r*   r   r   )rA   r   r*   r   r   r   )r   r   r	   dumpCfg  s    

z_dump.<locals>.dumpCfgz	
lines = z, crc = rj   )sep)r   r   )zlibr   r   r?   r@   rN   )r   r   r   r   )r   r   r	   _dump  s    

r   rD   )r:   zidlelib.idle_test.test_configr   F)	verbosityexit)Zconfigparserr   r.   rH   Ztkinter.fontr   rR   	Exceptionr   r
   r   r   r   r#   r9   r   r$   r   rV   dictr   r   r   Zunittestr:   r   r   r   r	   <module>   s.   (H    }
c