a oeH@s\ddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZdZdZe jjjZddlZddlmZedjZedejjZdd Z d Z!d Z"d Z#d Z$dZ%dZ&dZ'dZ(dZ)z ej*Wn e+yde_*de_,Yn0dGddZ-ddZ.ddZ/dZ0dZ1dZ2dZ3d Z4d!Z5e0e1e2e3e4e5gZ6e jjj7Z8Gd"d#d#e8Z9Gd$d%d%ej:Z;Gd&d'd'ZGd*d+d+ej?Z@Gd,d-d-ejAZBd.ZCe>ZDGd/d0d0eDZEGd1d2d2e@ZFd3d4ZGd5d6ZHejIZJdaKdHd7d8ZLdId9d:ZMdJd;d<ZNd=d>ZOd?d@ZPdAdBZQdCdDZRdEdFZSdS)KNi i )winoutz :\s*(#.*)?$zU \s* ( return | break | continue | raise | pass ) \b z Traceback (asciiInteractive WindowZ FormatTitleZ FormatInputZ FormatOutputZFormatOutputError)irri"ZArial)rrrr1 Courier New)r rr rirr r )r rr rrr r >>> ... cCstt||SNwin32uiZ GetProfileValsectionProfile)Z preferencedefaultrCC:\Program Files\Certbot\pkgs\pythonwin\pywin\framework\interact.pyLoadPreferenceGsrcCstt||dSr)rZWriteProfileValr)ZprefNameZ prefValuerrrSavePreferenceKsrcCs@tj}|dt||kr|Stj}|dt||kr<|SdSr)sysps1lenps2)linerrrrrGetPromptPrefixOs rzInteractive EOLzInteractive OutputzInteractive PromptzInteractive BannerzInteractive ErrorzInteractive Error (final line)c@s6eZdZddZddZddZddZdd d Zd S)InteractiveFormattercCst||d|_dS)NF)FormatterParent__init__bannerDisplayed)self scintillarrrr"qs zInteractiveFormatter.__init__cCsxt|tjjj}||tt||tt ||t t ||t t ||tt||ttdSr)r! SetStylespywinr% formatterStyleZ RegisterStyleSTYLE_INTERACTIVE_EOLSTYLE_INTERACTIVE_PROMPT formatInputSTYLE_INTERACTIVE_OUTPUT formatOutputSTYLE_INTERACTIVE_BANNER formatTitleSTYLE_INTERACTIVE_ERRORformatOutputError!STYLE_INTERACTIVE_ERROR_FINALLINE)r$r)rrrr&us  zInteractiveFormatter.SetStylescCs(td||}||kr$tt||}|S)NZFormatr)r$namerrcrrrrsz#InteractiveFormatter.LoadPreferencec Cst|}|dkrdS|}|ddd}d}d}|} ||kr|} ||d|dd}|tkr| dvr|||d||}| tjdtjdfvrt}n"|||tttkrt }nt }n|tkr| tjtjdvr|||d||}| dvrt}n|}n|t fvrJ| dvr|||d||}t}n~|t kr| dvr|r|t j vr|||||d}t }n0|dkr| t j vr|||d||}t }n|t kr| dvr|||d||}t}n|tkr4| dvr|dks|dvr|||d||}t}n|} | |krb|| dd vrb| d} q8||d| |||| d}|durtjjj}n|j}| }| d}|| | dd}t}| |kr|} |d}q6||kr|||d|dS) Nrrzlatin-1  rz>[r)rdecoder*ZColorSegrrrr+tracebackHeaderr1r-string whitespacer3r/encodeZColorizePythonCodeGetStringStyler'r%r( STYLE_DEFAULTr4) r$Zcdoc styleStart stylePyStartZ lengthDocstateZchNextZstartSegiZ lastStateZchendrrrColorizeInteractiveCodes               z,InteractiveFormatter.ColorizeInteractiveCoderc Cs|jj||dd}d}d}|dkr|d}|rH|j|dvrH|d}q*|r||dkr||}d}|dur|jtjjjkrd}n|jtjjjkrd}|dur|dkr|j|d|j|d|j|} | |dkr|j}|durtjjj }|d kr |j |d} | | j}n|j r.t }n t}d |_ |j|d td d t||_|||||j|jd|_dS)NF)r9rz '"r6rTb)r)r%Z GetTextRangeZ SCIGetCharAtr>r4r'r(ZSTYLE_TQSSTRINGZSTYLE_TQDSTRINGr?Z SCIGetStyleAtZ GetStyleByNumr#r*r/ZSCIStartStylingarrayrZ style_bufferrEZSCISetStylingEx) r$startrDZ stringValr@rAZlookZstrstyleZ quote_charZlook_strZstylenumrrrColorizesN      zInteractiveFormatter.ColorizeN)rrF)__name__ __module__ __qualname__r"r&rrErNrrrrr ps  Xr c@s(eZdZdddZd ddZddZdS) PythonwinInteractiveInterpreterNcCs2|durtj}|dur|}||_tj||dSr)__main____dict__globalscodeInteractiveInterpreterr")r$localsrUrrrr"s z(PythonwinInteractiveInterpreter.__init__cCs$tjtdtj||dS)Nr)rstderrwriter:r9rVrWshowsyntaxerror)r$filenamerrrr[&sz/PythonwinInteractiveInterpreter.showsyntaxerrorcCs@zt||j|jWn&ty(Yn|Yn0dSr)execrUrX SystemExitZ showtraceback)r$rVrrrruncode,s  z'PythonwinInteractiveInterpreter.runcode)NN)N)rOrPrQr"r[r_rrrrrRs  rRc@seZdZd0ddZddZd1ddZd d Zd2d d Zd3ddZddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZdS)4InteractiveCoreNcCs ||_dSr)banner)r$rarrrr"6szInteractiveCore.__init__cCsd|_|_t|_||dkr||jdurpd}tjr@d}t j dt j t j |ft j dtjfn t j ttjd}|rddl}z*ttt|d|dd d |j|jWn*t j d |tjt j d Yn0|gdS) Nrrz , debug buildzPythonWin %s on %s%s. zLPortions %s - see 'Help/About PythonWin' for further copyright information. Z PYTHONSTARTUPrbr]T) dont_inheritz->>> Error executing PYTHONSTARTUP script %r )file) oldStdOut oldStdErrrRinterp OutputGrab GetTextLengthrardebugrrYrZversionplatform copyrightosenvirongetrSr]compileopenreadrT traceback print_excAppendToPrompt)r$suffixZrcfilerSrrrInit:sD     zInteractiveCore.InitDbgcCsZtj}|dur&dt_dt_tj}}nd|t_d|t_||j_||j_|g|dS)Nrrz[%s]>>> z[%s]... ) rrrrSrTrgrXrUrv)r$rUrXr4 oldPromptrrr SetContextcs   zInteractiveCore.SetContextcCs|jj|jjfSr)rgrUrXr$rrr GetContextqszInteractiveCore.GetContextrFcCs<|dkr|}||}|r8|ddvr8|dd}q|S)NrF)  ) LineFromCharZGetLine)r$rrrr DoGetLinets  zInteractiveCore.DoGetLinecCs||d}||}|rT||krT||t|||tjn0|t tjkrt|dkrx| d| tj||j j dd|sdSdtjgt|ddg}t||D]\}}|r| ||q|dS)z`Take a command and stick it at the end of the buffer (with python prompts inserted if required).rrrZiomarkzend-1cNr)flush GetLineCountrSetSelrir ReplaceSelrrstrrZidletextZmark_setrzipstrip)r$ZbufLinesrz lastLineNorZtermsZbufLineZtermrrrrv|s&      zInteractiveCore.AppendToPromptcCsh||d}||}|r2|tjtjfvrZ||t||| dn | ddS)Nrrr) rrrrrrrrirrrZ)r$rrrrrEnsureNoPrompts   zInteractiveCore.EnsureNoPromptcCsdgS)N interactiverr|rrr_GetSubConfigNamessz"InteractiveCore._GetSubConfigNamescCsf||jtj||jt||jttj j d}|dur\| |j jdtj|_nd|_dS)NZ IdleHistoryr)Z HookCommand OnSelectBlockrID_EDIT_SELECT_BLOCKOnEditCopyCodeID_EDIT_COPY_CODEOnEditExecClipboardID_EDIT_EXEC_CLIPBOARDr'r%ZIDLEenvironmentZ GetIDLEModuleZHistoryrrrrhistory)r$modrrr HookHandlersszInteractiveCore.HookHandlerscCs ||}|d}t|}|durd}|}|dkrXt||ddurNqX|d}q.|}||krt||ddur|q|d}q\nd}|}|dkr|ttjkrt||d}|durq|d}q|}||krt||d}|durq|ttjkr q|d}q|||fS)Nrr)rrrrrr)r$lineNorZ maxLineNoprefixflagZ startLineNoZ endLineNorrrGetBlockBoundarys>       z InteractiveCore.GetBlockBoundarycCsJ|\}}g}||krF||}tt|}||dg|}|d}q |SNr)rrr)r$linesrMrDZretListZthisLineZ promptLenrrrExtractCommands   zInteractiveCore.ExtractCommandcCs(tj|_tj|_|t_|t_|dSr)rstdoutrerYrfrr|rrrrhs zInteractiveCore.OutputGrabcCsP|jdurtj|kr|jt_|jdur8tj|kr8|jt_d|_d|_|dSr)rerrrfrYrr|rrr OutputReleases    zInteractiveCore.OutputReleasec Cs.|r||dS|d}|r4dS|}||\}}}|sp|gtt t j dS| ||f}|| dkrtd|||ddSttjdkpttjdk}|r|dn|d|dd|} | r | ddvr | dd} q|zV|j| dr@d}n4|jdurX|j| |gtt t j W|n |0|r*td ||ttjd} d} d } t| | kr| | t j!vr| | | } | d} qt"| r| d } nt#| r| dd} |tj| dS) NrrzPress ENTER to execute commandrrFz zzReady to continue the commandr )$SCIAutoCActiveZSCIAutoCComplete SCICancelZHandleSpecialLinerrrvr SetStatusTextZ LoadStringafxresZAFX_IDS_IDLEMESSAGErrrwin32apiZ GetKeyStatewin32conZVK_SHIFTZ VK_CONTROLrjoinrhrgZ runsourcerZ history_storerrrrrr;r<_is_block_opener_is_block_closer) r$eventZhaveGrabbedOutputrrMrDisCoderZ bNeedIndentsourceZcurLineposindentrrrProcessEnterEventsr                   z!InteractiveCore.ProcessEnterEventcCs2|s|r|ntd|ddS)Nz Cancelled.)rr)rZSCICallTipActiverrrrvr$rrrrProcessEscEventLs    zInteractiveCore.ProcessEscEventc CsP|}||\}}}||}||dd}|dkr@d}|||dS)Nrr6rr)rrZ LineIndexr) r$commandrVrrMrDrZ startIndexZendIndexrrrrUs zInteractiveCore.OnSelectBlockcCs|}|}g}|D]V}|tjrF|ttjd}||q|tjr|ttjd}||qtj |}t zt t jt|Wt n t 0dS)zmSanitizes code from interactive window, removing prompts and output, and inserts it in the clipboard.N)Z GetSelText splitlines startswithrrrappendrrnlineseprwin32clipboard OpenClipboardZSetClipboardDataCF_UNICODETEXTrCloseClipboard)r$rrVrZ out_linesrZout_coderrrr^s"      zInteractiveCore.OnEditCopyCodecCsrtzttj}Wtn t0|ddd}zt|dd}t|tj Wnt Yn0dS)z1Executes python code directly from the clipboard.r7rz r]N) rrZGetClipboardDatarrreplacerqr]rSrTrtru)r$rrVorrrrts z#InteractiveCore.OnEditExecClipboardcCsg}d}||tjdf|tj||tjdf||tjdf|\}}||krn||tdft t j r||t df||tj df|tj||tjdf||tjd f||tjd f|S) Nrz&UndozCu&tz&CopyzCopy code without promptsz"Execute python code from clipboardz&Pastez &Select allz Select &blockzView &Whitespace)rrZ ID_EDIT_UNDOrZ MF_SEPARATORZ ID_EDIT_CUTZ ID_EDIT_COPYZGetSelrrZIsClipboardFormatAvailablerrZ ID_EDIT_PASTEZID_EDIT_SELECT_ALLrZID_VIEW_WHITESPACE)r$retflagsrMrDrrrGetRightMenuItemss&    z!InteractiveCore.GetRightMenuItemscCstddSNrr GetMainFrameZMDINextrrrr MDINextEventszInteractiveCore.MDINextEventcCstddSrrrrrr MDIPrevEventszInteractiveCore.MDIPrevEventcCs|}|tkrDz|\}}|Wqtjy@Yq0ntzD|j}|dur|jdusn|dkrd}|_t dWnt yt dd}Yn0|dur| dS)Nrz'The last active Window has been closed.z"Can't find the last active window!) GetParentFramerrZ MDIGetActiveSetFocuserror lastActiveZ_obj_Z GetSafeHwndrAttributeErrorprint MDIActivate)r$rparentwndZisactiverrrrWindowBackEvents*       zInteractiveCore.WindowBackEvent)N)ry)rF)N)rOrPrQr"rxr{r}rrvrrrrrrhrrrrrrrrrrrrrrr`5s, )    $ O  r`c@s,eZdZddZddZddZddZd S) InteractiveViewcCs$t|tj||tj|_dSr)r`r"rWindowOutputViewr'Zdefault_scintilla_encodingencoding)r$docrrrr"s zInteractiveView.__init__cCst|Sr)r r|rrr_MakeColorizerszInteractiveView._MakeColorizercCs tj|||dSr)rrOnInitialUpdateZ SetWordWraprxr|rrrrs zInteractiveView.OnInitialUpdatecCstj|t|dSr)rrrr`r|rrrrs zInteractiveView.HookHandlersN)rOrPrQr"rrrrrrrrsrc@s&eZdZdddZddZddZdS) CInteractivePythonNc Cs2d|_tj|tttjjdd||t |dSNrr) IsFinalDestroyr WindowOutputr"rrZWQ_LINErCreate)r$makeDoc makeFramerrrr"s zCInteractivePython.__init__cCs |jr|tj||dSr)rrrr OnViewDestroy)r$viewrrrrsz CInteractivePython.OnViewDestroycCsd|_tj|dSr)rrrCloser|rrrrszCInteractivePython.Close)NN)rOrPrQr"rrrrrrrs rc@seZdZddZddZdS)InteractiveFramecCsd|_tj|dSr)rrWindowOutputFramer"r|rrrr"szInteractiveFrame.__init__cCs|r ||_dSr)r)r$ZbActiveZ wndActiveZ wndDeactiverrr OnMDIActivateszInteractiveFrame.OnMDIActivateN)rOrPrQr"rrrrrrsric@s,eZdZddZddZddZddZd S) DockedInteractiveViewcCs.t|||jtj||jtjdSr)DockedInteractiveViewParentrZ HookMessage OnSetFocusrZ WM_SETFOCUS OnKillFocusZ WM_KILLFOCUSr|rrrrs z"DockedInteractiveView.HookHandlerscCs||dSr)r SetActiveView)r$msgrrrrsz DockedInteractiveView.OnSetFocuscCsZ|d}}zt|}||k}WntjyBd}Yn0|rV|ddS)Nr6rr)rZCreateWindowFromHandleZGetTopLevelFramerrr)r$rZhwndZwparamrresetrrrrs   z!DockedInteractiveView.OnKillFocuscCs|d}tjjd|dz |j|kr<|dWntj yRYn0z"t |krtt dWntj yYn0t ||S)Nrdocked) ZGetWindowPlacementr' frameworkappZSaveWindowSizerZ GetActiveViewrrrrr OnDestroy)r$rZnewSizerrrrs zDockedInteractiveView.OnDestroyN)rOrPrQrrrrrrrrrs rc@s,eZdZddZddZddZddZd S) CDockedInteractivePythoncCsd|_||_t|dSr) bFirstCreateddockbarrr"r$rrrrr"$sz!CDockedInteractivePython.__init__c Csp|jr dSzt}|jr WdSWntjtfy<YdS0z|t}| WStjyjYdS0dSr) bCreatingrrclosingrr GetControlBar ID_DOCKED_INTERACTIVE_CONTROLBARZIsWindowVisible)r$framecbrrrNeedRecreateWindow)s   z+CDockedInteractivePython.NeedRecreateWindowcCsDz$tt}t|ddWntjy>tYn0dSr)rrrrShowControlBarrCreateDockedInteractiveWindowrrrrRecreateWindow8sz'CDockedInteractivePython.RecreateWindowcCsd|_td|}t|}tjjdd}|d|ddkrDd}tj tj Btj B}d}| |j ||||d|_||_d|_|jr||jdS)Nrrrr6r)rrir i)rInteractiveDocumentZ DoCreateDocrr'rrZLoadWindowSizerZWS_CHILDZ WS_VISIBLEZ WS_BORDER CreateWindowrrrZ GetFirstView currentViewtitleZSetTitle)r$rrZdefRectZstyleidrrrrAs zCDockedInteractivePython.CreateN)rOrPrQr"rrrrrrrr#s rcCst|atjSr)reditrrrrrInteractiveViewCreatorUsrcCslddlm}|}t}|t|dt||t j Bt j Bt j B| t jt|t jdS)Nr) DockingBarr)Zpywin.docking.DockingBarrrrrrrZ SetBarStyleZ GetBarStylerZ CBRS_TOOLTIPSZ CBRS_FLYBYZCBRS_SIZE_DYNAMICZ EnableDockingZCBRS_ALIGN_ANYZDockControlBarZAFX_IDW_DOCKBAR_BOTTOM)rZbarZcreatorrrrr[s(  rcCstdd}|rt||dS)zNCreate some sort of interactive window if the user's preference say we should.zShow at startuprN)rCreateInteractiveWindow)rrZbCreaterrr%CreateInteractiveWindowUserPreferences rcCsNtdusJdtdd}|r&tn t||tdus@JdtjdS)z>Create a standard or docked interactive window unconditionallyNz#Creating second interactive window!ZDockingrz7Created interactive window, but did not set the global!)rrrCreateMDIInteractiveWindowrr)rrZbDockingrrrrs  rcCs(|dur t}|durt}t||dadS)zACreate a standard (non-docked) interactive window unconditionallyNrr)rrrrr rrrr s r cCs6tdur2tjdur2tjtkr&n tdadS)a&Destroy the interactive window. This is different to Closing the window, which may automatically re-appear. Once destroyed, it can never be recreated, and a complete new instance must be created (which the various other helper functions will then do after making this call N)rrrrrrrrrrDestroyInteractiveWindows r cCsXtdurTtjdurTtjtkrFt}|t}||ddntjdS)zEClose the interactive window, allowing it to be re-created on demand.Nrr) rrrrrrrrZ DestroyWindow)rrrrrCloseInteractiveWindows  r cCs,tdurtntr"tntdS)zAIf the interactive window is visible, hide it, otherwise show it.N)rrrrr rrrrToggleInteractiveWindows  r cCsjtdurtnVtr"tnDtj}|tkrDtjn"tj t tjdS)z5Shows (or creates if necessary) an interactive windowN) rrrrrrrrrZ AutoRestorerrrrrShowInteractiveWindows    rcCstduot Sr)rrrrrrIsInteractiveWindowVisiblesr)r)NN)NN)NN)TrLrVrnr;rrtrSrZpywin.framework.appr'Zpywin.scintilla.controlZpywin.scintilla.formatterZpywin.scintilla.IDLEenvironmentrrrrrrr%r(ZtracererrrqsearchrVERBOSEmatchrr=r:rZvalueFormatTitleZvalueFormatInputZvalueFormatOutputZvalueFormatOutputErrorr0r,r.r2rrrrrrr*r-r+r/r1r3ZINTERACTIVE_STYLESZPythonSourceFormatterr!r rWrRr`rrrrrrrrrrrrZWindowOutputDocumentrrrrr r r r rrrrrrs         . &2