o =?hJ@sddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z Gdddej Z Gd d d ZGd d d e ZGd ddZedkrXddlmZedddddSdS)N)*)Frame Scrollbar)macosx) ScrolledList)ListedToplevelc@s4eZdZddZddZddZddZd d Zd S) IdbcCs||_tj|dSN)guibdbBdb__init__)selfr r7/opt/alt/python310/lib64/python3.10/idlelib/debugger.pyr sz Idb.__init__cCsJ||r |dS||}z |j||WdSty$YdSwr ) in_rpc_codeset_step_Idb__frame2messager interactionZTclError)rframemessagerrr user_lines   z Idb.user_linecCs4||r |dS||}|j|||dSr )rrrr r)rrinforrrruser_exceptions  zIdb.user_exceptioncCs>|jjdr dS|j}|jj}d|vrd|vrdS||S)Nzrpc.pyTidlelibZdebuggerF)f_code co_filenamecountf_backr)rrZ prev_frameZ prev_namerrrr#s zIdb.in_rpc_codecCsF|j}|j}|j}tj|}d||f}|jdkr!d||jf}|S)Nz%s:%s?z%s: %s())rrf_linenoospathbasenameco_name)rrcodefilenamelinenor#rrrrZ__frame2message/s   zIdb.__frame2messageN)__name__ __module__ __qualname__r rrrrrrrrr s   rc@seZdZdZZZZd1ddZddZd1ddZ dd Z d1d d Z d d Z ddZ ddZddZddZddZddZddZdZddZddZd d!ZdZdZd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Z dS)3DebuggerNcCs:|durt|}||_||_d|_|d|_d|_dSNr)rpyshellidbrmake_gui interacting nesting_level)rr-r.rrrr >s zDebugger.__init__csRjdkrjdfdddSz d_jjWd_Sd_w)Nrdcs jSr )runrargsrrrhs zDebugger.run..)r1 abort_looprootZafterr0r.r3)rr5rr4rr3Hs  z Debugger.runcCsbz|Wn tyYnw|jr|jdS|jr%|jd|_|j|j dSr ) quit Exceptionr0topZbell stackviewercloser-Zclose_debuggerdestroyrZeventrrrr>ps    zDebugger.closecCs>|j}|j|_|j|_}t||_}|jd|jd|d|j|j d|jt ||_ }|j j ddg|_ }t|d|jd|_}||t|d |jd|_}||t|d |jd|_}||t|d |jd|_}||t|d |jd|_}|||D]}|jd d|j ddqt ||_}|jj dd|jst||j_|jdt|d|j |jd|_!|j!j"ddd|j#st||j_#t|d|j$|j#d|_%|j%j"ddd|j&st||j_&|j&dt|d|j'|j&d|_(|j(j"ddd|j)st||j_)t|d|j*|j)d|_+|j+j"dddt,|dd|_-|j-j ddt,|dd|_.|j.j ddd|j./d|_0t |dd|_1|j1j dddt ||_2|j2j dddt |dd|_3|j3j ddd|j4r| |j&4r|'|j)4r|*dSdS)Nz Debug ControlZDebugZWM_DELETE_WINDOWzw)anchorZGo)textcommandZStepZOverZOutZQuitdisabledstateleft)sider7ZStack)rCrDZvariablerrowcolumnZSourceLocalsGlobalsx)rBfill background)heightbothexpandrP)5r-flistr9rr<Zwm_titleZ wm_iconnameZ wm_protocolr>ZbindrbframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr: configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)rr-r9r<rWZblbr`rrrr/s                         zDebugger.make_guic Csl||_|jj|d|r<|\}}}z|j}Wnty%dt|}Ynw|dur9z d|t|f}WnYd}nd}d}|j}|jj||d|j} | r`|j |j|\} } | | | | d|j rn||jD]} | jdd qq|j|jd7_|jjd d |jd8_|jD]} | jd d q|jjdd|jjd|jdd|_dS) NrCz%sz%s: %sZyellow)rCrQr7ZnormalrFZvwait::idledebugwaitrE)rrmr_r(AttributeErrorstrrornr=r. get_stack load_stackshow_variablesrfrssync_source_linerYr<wakeupr1r9tkcall) rrrrtypevaluetbZm1ZbgsvstackirtrrrrsJ          zDebugger.interactioncCs^|j}|sdS||\}}|dd|dddkr+tj|r-|j||dSdSdS)Nr7z<>)r_Debugger__frame2fileliner!r"existsrVZ gotofileline)rrr&r'rrrr}s(zDebugger.sync_source_linecCs|j}|j}|j}||fSr )rrr )rrr%r&r'rrrZ__frame2filelineszDebugger.__frame2filelinecC|j|dSr )r.Z set_continuer8rrrrrZ   z Debugger.contcCrr )r.rr8rrrrr\rz Debugger.stepcC|j|j|dSr )r.Zset_nextrr8rrrrr] z Debugger.nextcCrr )r.Z set_returnrr8rrrrr^rz Debugger.retcCrr )r.Zset_quitr8rrrrr:rz Debugger.quitcCs|jjddddS)Nrcrw1)r9rrrrrrr8szDebugger.abort_loopcCs|js*|jr*t|j|j||_}|jr(|j|jd\}}| ||dSdS|j}|r;|js;d|_| d|jd<dS)Nr7rR) r=rars StackViewerrprVrr.rzr{r>)rrrrrrrrd$szDebugger.show_stackcCs|jr |dSdSr )rfrsr}rrrrrg1s  zDebugger.show_sourcecCs|d|_|dSr,)rr|)rZ stackitemrrr show_frame5rzDebugger.show_framecCL|j}|jr|st|jd|_n|r d|_|d|jd<|dS)NrMr7rR) localsviewerrhrsNamespaceViewerrqr>r|)rlvrrrri<   zDebugger.show_localscCr)NrNr7rR) globalsviewerrjrsrrrr>r|)rgvrrrrkHrzDebugger.show_globalsrcCsx|j}|j}|j}|sd}}n|j}|j}|r |r ||ur d}|r,||||jjj|r:||||jjjdSdSr ) rrrf_locals f_globals load_dictr-ZinterpZrpcclt)rforcerrrZldictZgdictrrrr|Ts zDebugger.show_variablescC|j||dSr )r.Z set_breakrr&r'rrrset_breakpoint_heredzDebugger.set_breakpoint_herecCrr )r.Z clear_breakrrrrclear_breakpoint_heregrzDebugger.clear_breakpoint_herecCs|j|dSr )r.Zclear_all_file_breaks)rr&rrrclear_file_breaksjszDebugger.clear_file_breaksc CsJ|jjjD]}|jj}z|jD]}|||qWqty"YqwdS)z=Load PyShellEditorWindow breakpoints into subprocess debuggerN)r-rVZ inversedictior&Z breakpointsrrx)rZeditwinr&r'rrrload_breakpointsms  zDebugger.load_breakpointsr )r)!r(r)r*rarfrhrjr r3r>r/rr}rrZr\r]r^r:r8r=rdrgrrrrirkr|rrrrrrrrr+:s8  ( K1   r+c@sVeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)rcCs<tr t||ntj||dd||_||_g|_dS)NP)width)rZisAquaTkrr rVr r)rmasterrVr rrrr ys  zStackViewer.__init__Nc Cs||_|tt|D]N}||\}}z|jd}Wnd}Y|j}|j}|j} ddl} | ||} | } | dvrFd||| f} nd|| || f} ||krVd| } | | q |durg| |dSdS)Nr(rr)rrvNz%s, line %d: %sz%s.%s(), line %d: %sz> ) rclearrangelenrrrr$ linecachegetlinestripr[Zselect) rrindexrrr'modnamer%r&funcnamerZ sourcelineitemrrrr{s2   zStackViewer.load_stackcCs|jr t||SdSoverride base methodN)rr popup_eventr@rrrrs zStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)rzGo to source line)labelrDzShow stack frameN)menuZ add_commandgoto_source_lineshow_stack_frame)rrrrr fill_menus zStackViewer.fill_menucCs:d|kr t|jkrndS|j|j|dSdS)rrN)rrr rrrrrr on_selects zStackViewer.on_selectcCs||dSr)rgrrrr on_doubleszStackViewer.on_doublecCs|jd}||dS)Nactive)listboxrrgrrrrrs zStackViewer.goto_source_linecCsF|jd}d|krt|jkr!ndS|j|j|dSdS)Nrr)rrrrr rrrrrrs  zStackViewer.show_stack_framecCsnd|krt|jksdSdS|j|\}}|j}|j}tj|r3|j|}|r5| |dSdSdSr,) rrrrr!r"isfilerVopenZgotoline)rrrr'r%r&Zeditrrrrgs  zStackViewer.show_sourcer ) r(r)r*r r{rrrrrrrgrrrrrws  rc@s,eZdZd ddZdZd ddZdd ZdS) rNc Cs d}d}|r dt|}||_||_ddl}||_d|j_d|j_t||_ }|j j dddt ||dd d |_ |j j d d t |d d|_}|j dddt|tdtd|dd||fd|_} | j dddd| j|d<|j| d<t| |_} | jdd| dd|_||dS)Nr(<r7rSrTZgroove)rC borderwidthZreliefrO)rPvbar)namerighty)rIrP,)rR scrollregionrH)rIrPrUrDZyscrollcommandnw)ZwindowrB)rrtitlereprlibReprrepr maxstringmaxotherrrrXrlrrrZCanvasminmaxcanvasZyviewrcsubframeZ create_windowZsfidr) rrrdictrrRrrrrrrrrr s4      zNamespaceViewer.__init__rrcCs^||jur |s dS|j}|j}t|jD]}|qd|_|s0t|dd}|jdddnH| }t |} d} | D];} || } |j | } |rP| dd} t|| d}|j| dddt |ddd }| d| |j| ddd| d} q<||_||}|}|j}dd||f|jd <|d krd |d <|jdd dS||d <|jdd dS)NNonerurrJr7rr)rKrLZsticky)rrrrrR)rU)rrrlistchildrenvaluesr?rlrekeyssortedrZEntryinsertZupdate_idletasksZwinfo_reqwidthZwinfo_reqheightrrX)rrrZ rpc_clientrrclZ keys_listnamesrKrrZsvaluerrRrrrrrsF        zNamespaceViewer.load_dictcCs|jdSr )rr?rrrrr>szNamespaceViewer.closer )rN)r(r)r*r rrr>rrrrrs    6r__main__)mainzidlelib.idle_test.test_debuggerrF) verbosityexit)r r!ZtkinterZ tkinter.ttkrrrrZidlelib.scrolledlistrZidlelib.windowrr rr+rrr(Zunittestrrrrrs"   .?SX