3 2aޗ@sddlmZddlZddlZddlmZddlZGdddeZGdddeZ Gdd d eZ Gd d d eZ Gd d d eZ Gddde Z GdddZeZeZddZGdddeZddZedkrddlmZedddddS)) ConfigParserN)Fontc@s eZdZdS)InvalidConfigTypeN)__name__ __module__ __qualname__rr+/opt/alt/python36/lib64/python3.6/config.pyr#src@s eZdZdS)InvalidConfigSetN)rrrrrrr r $sr c@s eZdZdS) InvalidFgBgN)rrrrrrr r %sr c@s eZdZdS) InvalidThemeN)rrrrrrr r &sr c@s0eZdZd ddZd ddZddZd d ZdS) IdleConfParserNcCs||_tj||dddS)NF)defaultsstrict)filer__init__)selfcfgFileZ cfgDefaultsrrr r,szIdleConfParser.__init__FcCsL|j||s|S|dkr$|j||S|dkr8|j||S|j|||dSdS)Nboolint)raw) has_optionZ getbooleanZgetintget)rsectionoptiontypedefaultrrrr Get3s   zIdleConfParser.GetcCs|j|r|j|SgSdS)N) has_sectionoptions)rrrrr GetOptionListDs  zIdleConfParser.GetOptionListcCs|jr|j|jdS)N)rread)rrrr LoadKszIdleConfParser.Load)N)NNF)rrrrrr r"rrrr r (s  r c@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)IdleUserConfParsercCs^|j||r4|j|||kr dS|j|||dSn&|j|sH|j||j|||dSdS)NFT)rrsetr add_section)rrrvaluerrr SetOptionUs   zIdleUserConfParser.SetOptioncCs|j|r|j||SdS)NF)rZ remove_option)rrrrrr RemoveOptionfs  zIdleUserConfParser.RemoveOptioncCs|j|s|j|dS)N)rr%)rrrrr AddSectionos zIdleUserConfParser.AddSectioncCs*x$|jD]}|j|s |j|q WdS)N)sectionsr remove_section)rrrrr RemoveEmptySectionsts z&IdleUserConfParser.RemoveEmptySectionscCs|j|j S)N)r,r*)rrrr IsEmptyzszIdleUserConfParser.IsEmptycCstjj|jrtj|jdS)N)ospathexistsrremove)rrrr RemoveFileszIdleUserConfParser.RemoveFilecCsr|j}|rn|jsfyt|d}Wn(tk rHtj|t|d}YnX||j|WdQRXn|jdS)Nw)rr-openOSErrorr.unlinkwriter2)rZfnamerrrr Saves zIdleUserConfParser.SaveN) rrrr'r(r)r,r-r2r8rrrr r#Ps r#c@seZdZdDddZddZddZdEd d Zd d ZddZdFddZ ddZ ddZ ddZ ddZ eddZdGddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1d2d3d4d5d6d7hZdHd8d9Zd:d;Zdd?Zd@dAZdBdCZ dS)IIdleConfFcCs0d|_i|_i|_i|_|s,|j|jdS)Nmain highlightkeys extensions)r:r;r<r=) config_types defaultCfguserCfgcfgCreateConfigHandlers LoadCfgFiles)rZ_utestrrr rszIdleConf.__init__cCstdkrtjjt}ntjjtjd}|j|_}i}i}xB|j D]8}tjj |d|d||<tjj |d|d||<qFWx2|j D](}t |||j |<t |||j|<qWdS)N__main__rzconfig-z.defz.cfg)rr.r/dirname__file__abspathsys GetUserCfgDirZuserdirr>joinr r?r#r@)rZidleDiruserDirZ defCfgFilesZ usrCfgFilesZcfgTyperrr rBs  zIdleConf.CreateConfigHandlerscCsd}tjjd}|dkr\tjj|s\d|d}yt|tjdWntk rVYnXd}|dkrltj}tjj ||}tjj|sytj |Wn8tk rd|d}t j st|tjdt YnX|S)Nz.idlerc~z. Warning: os.path.expanduser("~") points to z, but the path does not exist.)rz2 Warning: unable to create user config directory z( Check path and permissions. Exiting! )r.r/ expanduserr0printrHstderrr5getcwdrJmkdiridlelibZtesting SystemExit)rZcfgDirrKwarnrrr rIs,      zIdleConf.GetUserCfgDirNTc Csy.|j|j||r,|j|j||||dSWnDtk rrd||||j|j|||df}t||||YnXy.|j|j||r|j|j||||dSWntk rYnX|rd|||f}t|||||S)N)rrzn Warning: config.py - IdleConf.GetOption - invalid %r value for configuration option %r from section %r: %r)rz Warning: config.py - IdleConf.GetOption - problem retrieving configuration option %r from section %r. returning default value: %r)r@rr ValueError_warnr?) r configTyperrrrwarn_on_defaultrwarningrrr GetOptions(   zIdleConf.GetOptioncCs|j|j|||dS)N)r@r')rrWrrr&rrr r' szIdleConf.SetOptioncCsJ||jkrtd|dkr&|j|}n|dkr:|j|}ntd|jS)NzInvalid configType specifieduserrzInvalid configSet specified)r>rr@r?r r*)r configSetrW cfgParserrrr GetSectionLists   zIdleConf.GetSectionListcCs|jdj|r|jd|}n |jd|}||d}|dkrH|d}n ||d}||d}|sf|S|d krv|d S|d kr|d Std dS)Nr;rr[z -foregroundZcursorznormal-backgroundz -background) foreground backgroundZfgr_bgr`zInvalid fgBg specified)r?r GetThemeDictr )rthemeelementZfgBgZ themeDictZforeZbackr;rrr GetHighlights      zIdleConf.GetHighlightcCs|dkr|jd}n|dkr(|jd}ntddddddddddddddddddddddddddddddd}xP|D]H}|j||sd ||||f}t|d|||j||||d ||<qvW|S) Nr[r;rzInvalid theme type specifiedz#000000z#ffffffZgray)znormal-foregroundznormal-backgroundzkeyword-foregroundzkeyword-backgroundzbuiltin-foregroundzbuiltin-backgroundzcomment-foregroundzcomment-backgroundzstring-foregroundzstring-backgroundzdefinition-foregroundzdefinition-backgroundzhilite-foregroundzhilite-backgroundzbreak-foregroundzbreak-backgroundzhit-foregroundzhit-backgroundzerror-foregroundzerror-backgroundzcursor-foregroundzstdout-foregroundzstdout-backgroundzstderr-foregroundzstderr-backgroundzconsole-foregroundzconsole-backgroundzcontext-foregroundzcontext-backgroundz{ Warning: config.IdleConf.GetThemeDict - problem retrieving theme element %r from theme %r. returning default color: %r)r)r@r?r rrVr)rrZ themeNamer]rcrdrYrrr rb;sT    zIdleConf.GetThemeDictcCs |jdS)NTheme)current_colors_and_keys)rrrr CurrentTheme{szIdleConf.CurrentThemecCs |jdS)NZKeys)rg)rrrr CurrentKeysszIdleConf.CurrentKeyscCs|dkr dnd}|jd|dddd}d }|r>|jd|d d d }|sT|jd|d d d }|rz|rb|jn|j}||j|rz|S|dkrd S|jS)Nrfr;r<r:rrT)rrZname2)rnamez IDLE Classic)rZr?r@r default_keys)rrZcfgnamerrksourcerrr rgs  z IdleConf.current_colors_and_keyscCs,tjdddkrdStjdkr$dSdSdS)NwinzIDLE Classic WindowsdarwinzIDLE Classic OSXzIDLE Modern Unix)rHplatformrrrr rls  zIdleConf.default_keysc Cs|j|jdd}|j|jdd}x|D]}||kr*|j|q*WxdD]}|j|qJW|rg}xb|D]Z}|jd|dd d d rj|s|r|rd }nd }|jd||d d ddr|j|qj|j|qjW|S|SdS)Nrr=r[ AutoComplete CodeContextFormatParagraph ParenMatchenableTr)rrZ enable_editorZ enable_shellF)rrrX)rrrsrtru)RemoveKeyBindNamesr^appendr1rZ) r active_onlyZ editor_onlyZ shell_onlyZextnsZ userExtnsextn activeExtnsrrrr GetExtensionss4     zIdleConf.GetExtensionscCsdd|DS)NcSsg|]}|jds|qS) _bindings _cfgBindings)r}r~)endswith).0nrrr sz/IdleConf.RemoveKeyBindNames..r)rZ extnNameListrrr rwszIdleConf.RemoveKeyBindNamescCsJd}d|d}x4|jddD]$}x|j|D]}||kr.|}q.WqW|S)Nz<>r)ry)r|GetExtensionKeys)r virtualEventZextNameZvEventrzeventrrr GetExtnNameForEvents  zIdleConf.GetExtnNameForEventc Csb|d}|j}i}|jdj|r^|jdj|}x(|D] }d|d}||}|||<q:W|S)Nr~r=z<>)GetCurrentKeySetr?rr ) r extensionNamekeysNameZ activeKeysextKeys eventNames eventNamerbindingrrr rs   zIdleConf.GetExtensionKeyscCsh|d}i}|jdj|rd|jdj|}x6|D].}|jd||ddj}d|d}|||<q2W|S)Nr~r=rj)rz<>)r?rr rZsplit)rrrrrrrrrrr Z__GetRawExtensionKeyss   zIdleConf.__GetRawExtensionKeyscCsn|d}|j|}|jdj|rj|jdj|}x6|D].}|jd||ddj}d|d}|||<q8W|S)Nr}r=rj)rz<>)rr?rr rZr)rrZ bindsNameZextBindsrrrrrrr GetExtensionBindingss    zIdleConf.GetExtensionBindingscCs(|dd}|jd||dddj}|S)Nr<rjF)rrX)rZr)r keySetNameZeventStrrrrrr GetKeyBinding%s   zIdleConf.GetKeyBindingcCsP|j|j}tjdkrLx2|jD]&\}}dd|D}||kr"|||<q"W|S)NrpcSsg|]}|jddqS)z.) GetKeySetrirHrqitems)rresultkvZv2rrr r0s  zIdleConf.GetCurrentKeySetcCsh|j|}|jdd}xL|D]D}|j|}|rx0|D](}|||jkrPd||<||||<q4WqW|S)N)ryrj) GetCoreKeysr|_IdleConf__GetRawExtensionKeysvalues)rrZkeySetr{rzrrrrr rAs     zIdleConf.GetKeySetcCsd|d|jkS)Nz<>)r)rrrrr IsCoreBindingSszIdleConf.IsCoreBindingz<>z<>z<>z<>z<>z<>z<>z<>c:Csddgddgddgddgd gd gd gdgd gd gdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgd gd!d"gd#gd$gd%gd&gd'gd(gd)d*gd+gd,gd-gd.gd/gd0gd1gd2gd3gd4gd5gd6gd7gd8gd9gd:gd;gd9}|r|jd?j|p|jd?j|s8d@|f}t|d?|nXxV|D]N}|j||}|r^|||<n,||jkr>dA||||f}t|d?||q>W|S)BNz z z z z z z zz z zz zz zzzz zzz z z z z zz zz zzz z zzz z z zzz zz zzz z z z z z zzzzzzz zz z )9z<>z<>z <>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z <>z <>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>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@rr?rVrformer_extension_events)rrZ keyBindingsrYrrrrr rcs      zIdleConf.GetCoreKeysc Csg}|dkr|jd}n|dkr,|jd}ntd|jd}xn|D]f}|jd|dd}|jddkrpd }d }n"|jd}|d j}|dj}|rD|rD|j|||fqDW|j d d d |S)Nr[r:rzInvalid configSet specified HelpFiles;)rrrjrcSs|dS)Nrr)rrrr sz1IdleConf.GetExtraHelpSourceList..)key) r@r?r r rfindrstriprxsort) rr\Z helpSourcesr]rrr&ZmenuItemZhelpPathrrr GetExtraHelpSourceLists&        zIdleConf.GetExtraHelpSourceListcCs|jd|jd}|S)Nrr[)r)rZallHelpSourcesrrr GetAllExtraHelpSourcesLists z#IdleConf.GetAllExtraHelpSourcesListc Cs|j||ddd}|j||dddd}|j||dd d d }|d krtd d |d}tj|}|d}|d}|d krvd}|ddk}|||rdndfS)NZfontZcourier)rz font-sizerZ10)rrz font-boldrr)rrZ TkFixedFontT)rkr0rootfamilysize ZweightboldZnormal)rZractual) rrrWrrrrfZ actualFontrrr GetFonts     zIdleConf.GetFontcCs0x*|jD] }|j|j|j|jqWdS)N)r?r"r@)rrrrr rCs zIdleConf.LoadCfgFilescCs"x|jD]}|j|jqWdS)N)r@r8)rrrrr SaveUserCfgFiles s zIdleConf.SaveUserCfgFiles)F)NNTF)N)TFF)N)!rrrrrBrIrZr'r^rerbrhrirg staticmethodrlr|rwrrrrrrrrrrrrrrCrrrrr r9sB   ' @&  (    _  r9c GsH|f|}|tkrDyt|tjdWntk r8YnXtj|dS)N)r)_warnedrNrHrOr5add)msgrrrr rVs rVc@s@eZdZddZddZeddZddZd d Zd d Z d S) ConfigChangescCs2g|_x&tjD]}i||<|jj||qWdS)N)pagesidleConfr>rx)r config_typerrr r1s zConfigChanges.__init__cCs0||}t|}||kr i||<||||<dS)N)str)rrritemr&pagerrr add_option8s zConfigChanges.add_optioncCsNtj|j||r:tj|j|||kr:tj|j||Stj|j|||S)N)rr?rrr@r(r')rrrr&rrr save_option@szConfigChanges.save_optioncCstjdjd}x|D]~}d}||}xV|D]N}|dkrNtjdjdd}x,||jD]\}}|j||||r\d}q\Wq.W|rtj|jd}qWxdD]}tj|jqW|j|S)Nr:FrTr<r;)r<r;)rr@r8r+rrclear)rZchangedrZcfg_type_changedrrrr&rrr save_allMs&    zConfigChanges.save_allcCs6|||kr|||=tj|}|j||jdS)N)rr@r+r8)rrrZ configpagerrr delete_sectionks     zConfigChanges.delete_sectioncCsx|jD] }|jqWdS)N)rr)rrrrr rvs zConfigChanges.clearN) rrrrrrrrrrrrrr rs   rcsVddlmd \}}fddfdd}|tj|tjtd|d|d d dS) Nr)crc32cs.t|}td7a|jddtat|dS)Nrzutf-8)encoding)rlineencodecrcrN)objZtxt)rrr sprintsz_dump..sprintcstd|dxt|jD]v}||j}||xT|D]L}||j|}||x(|D] }|d||j||qhWq@WqWdS)N z = )rNsortedr<r*rr)rArr*rrr)rrr dumpCfgs    z_dump..dumpCfgz lines = z, crc = rj)sep)rr)zlibrrr?r@rN)rrrr)rrr _dumps    rrD)r:zidlelib.idle_test.test_configrF) verbosityexit)Z configparserrr.rHZ tkinter.fontrrR Exceptionrr r r r r#r9rr$rrVdictrrrZunittestr:rrrr s.  (H} c