a „oe®0ã@sÊddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z dZ e rvddlZdd„Zndd„ZdZd d „Zd d „Zd d„Zdd„ZGdd„dƒZdd„ZedkrÆeƒdS)éNé)ÚkeycodescGs tj d tt|ƒ¡d¡dS)Nú Ú )ÚsysÚstderrÚwriteÚjoinÚmapÚstr©Úargs©rúAC:\Program Files\Certbot\pkgs\pythonwin\pywin\scintilla\config.pyÚtracesrcGsdS©Nrr rrrÚ!órécCsx| d¡}|dkr|d|…}| d¡}|dkrT| ¡rPtd|t|ƒfƒdSdS|d|… ¡||dd… ¡fS) Nú#rú=éÿÿÿÿz(Warning: Line %d: %s is an invalid entry©NN)Úrr)ÚfindÚrfindÚstripÚprintÚrepr)ÚlineÚlinenoZ comment_posZsep_posrrrÚ split_line&s   r!cCs~|ddkrz| d¡}|dkr&t|ƒ}|d|… ¡}z(| d¡}|d|…||dd…fWStyx|dfYS0dS) Nrú[ú]rrú:rr)rÚlenÚlowerÚindexÚ ValueError)rÚendÚrcÚirrrÚget_section_header3s    r,cCstj tjd|d¡S)Nrz.cfg)ÚosÚpathr ÚpywinÚ__path__)ÚfrrrÚfind_config_fileBsr2cCs.dd„dd„t tj tjdd¡¡DƒDƒS)NcSsg|]}tj |¡d‘qS)r)r-r.Úsplit©Ú.0ÚxrrrÚ Gsÿz%find_config_files..cSsg|]}tj |¡d‘qS)r)r-r.Úsplitextr4rrrr7Isÿrz*.cfg)Úglobr-r.r r/r0rrrrÚfind_config_filesFs þþr:c@steZdZdd„Zddd„Zddd„Zdd „Zd d „Zdd d„Zddd„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)Ú ConfigManagerc Cs`d|_d|_i|_d}t|dƒr2|}d|_d}nbzt|ƒ}t |¡}Wn$tjyl| d|¡YdS0||_tj   |¡|_ t d|j ƒtj   |¡dd}zÈt |d ƒ}z®t |¡}t|k}|rRt |¡} t |¡} t |¡} t |¡} | tjjkrRt ¡| krR|tj| krR|tj| krRt |¡|_t d |ƒW| ¡WdSW| ¡n | ¡0Wntjttfy†Yn0t |ƒ}d }i|_d } | ¡}|ršt|ƒ\}}|rò|durò| ¡}|sÚqò| d } t|ƒ\}}q¸|süqš|d kr| ||| ¡\}} n||dkr8| ||| ¡\}} n^|dkrV|  ||| ¡\}} n@|dkrt| !||| ¡\}} n"| d||f¡| ¡}| d } q¦|r¨| ¡|j "d ¡sÀ| d¡|js\|r\ztt |dƒ}t #t|¡t #t ¡|¡t #tjj|¡t #|tj|¡t #|tj|¡t #|j|¡| ¡WnttfyZYn0dS)NÚunknownFÚreadlinezzConfig file '%s' not foundzLoading configurationrz.cfcÚrbzConfiguration loaded cachedTrÚkeysÚ extensionsúidle extensionsÚgeneralz#Unrecognised section header '%s:%s'z#No keyboard definitions were loadedÚwb)$ÚfilenameÚ last_errorÚ key_to_eventsÚhasattrr2r-ÚstatÚerrorÚ report_errorr.Úbasenamerr8ÚopenÚmarshalÚloadÚcompiled_config_versionÚ importlibÚutilÚ MAGIC_NUMBERÚwin32apiZGetKeyboardLayoutNameÚST_MTIMEÚST_SIZEÚcacheÚcloseÚIOErrorÚEOFErrorr=r,Ú _load_keysÚ_load_extensionsÚ_load_idle_extensionsÚ _load_generalÚgetÚdump)Úselfr1Zb_closeÚfpZ compiled_nameZsrc_statÚcfZverÚokZ kblayoutnameÚmagicÚsizeÚmtimer rÚsectionÚ subsectionrrrÚ__init__Qs°         ÿ þ ý ü  þ      ÿ     zConfigManager.__init__Nc CsÆ|dur g}dg|}| d¡}|rn| dg¡}|D]8}td|dƒ| |¡}| ||¡|jr4| |j¡q4|j}| d¡}|duri}zt||ƒWn"t   ¡| d¡d}Yn0|rd} t |  ¡ƒD]:\} } t | ƒtjkrÔ| dd …d krÔ| | | ¡| d } qÔtd | d ƒ|D]X} | d i¡ | g¡D]<} z|j | ¡td| ƒWn| d| ¡Yn0q8q | d¡}d}|D](} | | i¡}| |¡|t|ƒ}qŒtd|dƒdS)NrrBzbased onzConfiguration based onz - loading.úextension codezExecuting extension code failedrrÚ_z#Configuration Extension code loadedZeventsrAzLoaded IDLE extensionz$Can not load the IDLE extension '%s'r?zConfiguration bound)Úget_datar^rÚ __class__Ú configurerErJÚbindingsÚexecÚ tracebackÚ print_excÚlistÚitemsÚtypeÚtypesÚ FunctionTypeZbindZidleZ IDLEExtensionZ update_keymapr%)r`ZeditorÚ subsectionsrBÚparentsÚparentroZcodeobÚnsZnumÚnameÚfuncrhÚextÚsubsection_keymapZ num_boundÚkeymaprrrrn­sV                 zConfigManager.configurec Cs¤|dur g}dg|}| d¡}|D]z}|j |¡}|durti}| |i¡}t| ¡ƒD]\}}|||<qX||j|<| |¡} | dur$t | d| d¡Sq$dS)Nrr?rr)rlrFr^rsrtrZ make_key_name) r`Úeventrxrrhr r€Zkey_infoZ map_eventÚinforrrÚget_key_bindingàs        zConfigManager.get_key_bindingcCs||_td|j|fƒdS)NzError in %s: %s)rErrD©r`ÚmsgrrrrJôszConfigManager.report_errorcCstd|j|fƒdS)NzWarning in %s: %s)rrDr„rrrÚreport_warningøszConfigManager.report_warningrcCs^| ¡}|d}|rPt|ƒddu}|rT|sT| d¡}|dkrT|d|…d}nd}|||fS)Nrrrr)r=r,r)r`rar ZbStripCommentsrÚbBreakÚposrrrÚ _readlineûsÿ zConfigManager._readlinecCs|j ||¡Sr)rVr^)r`r|Údefaultrrrrl szConfigManager.get_datacCs||j|<|Sr)rV)r`r|ÚdatarrrÚ _save_data s zConfigManager._save_datac Csli}| ||¡\}}}|rqXt||ƒ\}}|s0q| ¡}| |g¡} |  |¡| ||<q| d|¡||fS)NrB)r‰r!r&r^ÚappendrŒ) r`Ú sub_sectionrar r rr‡ÚkeyÚvalÚlrrrr]s    zConfigManager._load_generalc Cs˜| di¡}| |i¡}| ||¡\}}}|r0q|t||ƒ\}} | sDqt |¡\} } | durn| d||f¡q| || | f<q|||<| d|¡||fS)Nr?zLine %d: Invalid key name '%s')rlr^r‰r!rZparse_key_namer†rŒ) r`rŽrar Zmain_mapr rr‡rrZscÚflagrrrrZ"s   zConfigManager._load_keysc Csª|}g}| ||d¡\}}}|r"q.| |¡qz,td|d |¡|jdƒ}| d|¡WnFty } z.| j|} | d| j| | j f¡WYd} ~ n d} ~ 00||fS)Nrrrrprjz7Compiling extension code failed: File: %s Line %d %s) r‰rÚcompiler rDrŒÚ SyntaxErrorr rJr…) r`rŽrar Z start_linenoÚlinesrr‡ÚcZdetailsZ errlinenorrrr[8s* ý  ÿÿzConfigManager._load_extensionscCsf| d¡}|duri}g}| ||¡\}}}|r2qJ| ¡}|r| |¡q|||<| d|¡||fS)NrA)rlr‰rrrŒ)r`rŽrar Z extension_mapr@rr‡rrrr\Ps   z#ConfigManager._load_idle_extensions)N)N)r)N)Ú__name__Ú __module__Ú __qualname__rirnrƒrJr†r‰rlrŒr]rZr[r\rrrrr;Ps\ 3   r;cCsJddl}| ¡}d}t|ƒ}| d¡}| ¡|}tdt|ƒ|fƒdS)NrrŠr?zLoaded %s items in %.4f secs)ÚtimeZclockr;rlrr%)ršÚstartr1Úcmr ZtookrrrÚtestas  rÚ__main__)r9Úimportlib.utilrPrMr-rHrrqrvr/rSrrZ debuggingZwin32traceutilrrOr!r,r2r:r;rr—rrrrÚ s4