
    
8dMC                        d Z ddlZddlZddlZddlmZ ddlmZ ej        dk    rIej	        Z
d Zed             Zee_	        	 ddlmZ ej                            d	           n# e$ r Y nw xY wdd
lmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 dZ6 e7e.          Z8ddddiidfiZ9e9:                     edddd                     e9:                    e3           e8:                    e9            e7e/          Z; e7d d!d"d#$          Z<e<:                    e2           e<:                    d%d&i           e;:                    e<            e=e<>                                          Z< e=e9>                                          Z9 G d' de-e1          Z? G d( d)e?          Z@d* ZAeBd+k    r eA             dS dS ),z A minimal application using the Qt console-style Jupyter frontend.

This is not a complete console app, as subprocess will not be able to receive
input, there is no real readline support, among other limitations.
    N)warn)parsentc                     | S N )funcs    6lib/python3.11/site-packages/qtconsole/qtconsoleapp.py<lambda>r   &   s         c                    	 dd l }dd l}d}d}d                    |                    | ||                    }|j        j                            d|||           t          | ||           d S # t          | ||           w xY w)Nr      zError starting QtConsole )ctypes	tracebackjoinformat_exceptionwindlluser32MessageBoxWold_excepthook)exctypevaluetbr   r   MB_ICONERRORtitlemsgs           r
   gui_excepthookr   (   s    		/$$$$$$$$%L.E'')44WeRHHIICM ,,QULIII 7E2.....N7E2....s   AA- -B )r   zJupyter.Qtconsole)QtCoreQtGui	QtWidgets
QT_VERSION)boolean_flag)catch_config_error)JupyterWidget)RichJupyterWidget)styles__version__)
MainWindow)QtKernelClient)QtKernelManager)DictUnicodeCBoolAny)
JupyterApp
base_flagsbase_aliases)JupyterConsoleAppapp_aliases	app_flags)is_local_ipz>
jupyter qtconsole                      # start the qtconsole
plainJupyterQtConsoleAppTzDisable rich text support.bannerz"JupyterQtConsoleApp.display_bannerz-Display a banner upon starting the QtConsole.z3Don't display a banner upon starting the QtConsole.JupyterWidget.syntax_stylezJupyterQtConsoleApp.stylesheetzJupyterWidget.editorzConsoleWidget.paging)style
stylesheeteditorpagingzgui-completionzConsoleWidget.gui_completionc                       e Zd ZdZeZdZeZe	ge
j        z   Z ee          Z ee          Z ee          Z ee          ZeZeZ eddd          Z eddd          Z eddd	          Z eddd
          Z eddd          Zd Z ee           Z!d fd	Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+e,d fd	            Z- fdZ. xZ/S )r8   jupyter-qtconsolez
        The Jupyter QtConsole.

        This launches a Console-style application using Qt.  It is not a full
        console, in that launched terminal subprocesses will not be able to accept
        input.

    r   Tzpath to a custom CSS stylesheet)confighelpFz2Start the console window with the menu bar hidden.z#Start the console window maximized.zEUse a plaintext widget instead of rich text (plain can't print/save).z8Whether to display a banner upon starting the QtConsole.c                 l    |rdnd}|| j         j        _        |rt          | _        d S t
          | _        d S )Nr7   rich)rA   ConsoleWidgetkindr%   widget_factoryr&   )selfnameoldnewrF   s        r
   _plain_changedz"JupyterQtConsoleApp._plain_changed   sA    )ww6)-!& 	4"/D"3Dr   Nc                 ~    t                                          |           |                     | j                   d S r   )superparse_command_linebuild_kernel_argv
extra_args)rH   argv	__class__s     r
   rO   z&JupyterQtConsoleApp.parse_command_line   s7    ""4(((t/////r   c                    |                      |                                 | d          }i }| j        j        r
| j        |d<    |j        di | | j        |_        |                                }|	                    dd           | 
                    | j        d          }|                     |           ||_        ||_        d|_        d|_        | j        |_        | j        |_        |S )zW Create and return new frontend attached to new kernel, launched on localhost.
        T)connection_fileparentautorestartextra_arguments)shelliopubrA   local_kernelFr   )kernel_manager_class_new_connection_filekernel_manager	ipykernelkernel_argvstart_kernelkernel_client_classclient_factoryclientstart_channelsrG   rA   init_colorskernel_client	_existing
_may_closeconfirm_exit_confirm_exitdisplay_banner_display_banner)rH   r_   kwargsrh   widgets        r
   new_frontend_masterz'JupyterQtConsoleApp.new_frontend_master   s    22040I0I0K0K'+,0 3 
 
 ( 	9(,(8F$%##--f---(,(@%&--//$$4t$<<<$$DK26 % 8 8    .,  #0!%!4r   c                 N   |                      || j                  }|                                 |                                 |                     | j        d          }|                     |           d|_        d|_        d|_        | j	        |_
        ||_        d|_        |S )zCreate and return a new frontend attached to an existing kernel.

        Parameters
        ----------
        connection_file : str
            The connection_file path this frontend is to connect to
        rU   rA   Fr[   TN)rc   rA   load_connection_filerf   rG   rg   ri   rj   rl   rm   rn   rh   r_   )rH   rU   rh   rp   s       r
   new_frontend_connectionz+JupyterQtConsoleApp.new_frontend_connection   s     00+; 1 
 
 	**,,,$$&&&$$DK27 % 9 9   !$!%!4, $r   c                 l   |                      |j        j        | j                  }|                                 |                                 |                     | j        d          }|                     |           d|_        d|_	        d|_
        | j        |_        ||_        |j        |_        |S )zCreate and return a new frontend attached to an existing kernel.

        Parameters
        ----------
        current_widget : JupyterWidget
            The JupyterWidget whose kernel this frontend is to share
        rs   Fr[   T)rc   rh   rU   rA   rt   rf   rG   rg   ri   rj   rl   rm   rn   r_   )rH   current_widgetrh   rp   s       r
   new_frontend_slavez&JupyterQtConsoleApp.new_frontend_slave   s     000>0L0\)- 1 
 
 	**,,,$$&&&$$DK-2 % 4 4   !$!%!4, . =r   c                     t           j                                        6t          j        dg          | _        | j                            d           d S t           j                                        | _        d S )Nr@   )r!   QApplicationinstanceappsetApplicationName)rH   s    r
   init_qt_appzJupyterQtConsoleApp.init_qt_app  sd    !**,,4 -/B.CDDDHH''(;<<<<< -6688DHHHr   c                    t           j                            t           j                            t                              }t           j                            |ddd          }t          j        |          | j        _	        t          j                            | j        j	                   | j        }| j         pt          |          }|                     | j        |          | _        |                     | j                   | j        | j        _        | j         | j        _        | j        | j        _        | j        | j        _        | j        | j        _        | j        | j        _        t9          | j        | j        | j        | j        | j                  | _         | j!        | j         _!        | j         "                    | j                   | j         #                                 tH          j%        dk    r3| j&        r,| j         '                                (                    d           | j         )                    d           d S )	N	resourcesiconzJupyterConsole.svgr[   )rk   new_frontend_factoryslave_frontend_factoryconnection_frontend_factorydarwinFzJupyter QtConsole)*ospathabspathdirname__file__r   r    QIconr|   r   r!   rz   setWindowIconipexistingr6   rG   rA   rp   rg   ri   rj   rk   rl   rm   rn   r_   rh   r)   rq   rx   ru   windowlogadd_tab_with_frontendinit_menu_barsysplatformhide_menubarmenuBar
setVisiblesetWindowTitle)rH   	base_path	icon_pathr   r\   s        r
   init_qt_elementsz$JupyterQtConsoleApp.init_qt_elements  s    GOOBGOOH$=$=>>	GLLKAUVV	I..,,TX];;;W M)=k"oo))5A * C C%%% $%)]!2$($5!&*&9#%)%8"$($6! -1->595M7;7N<@<X	" " " ())$+666!!### <8##(9#K!!,,U333""#677777r   c                 (   | j         }d|v r|j        j        nd}d|v r|j        j        nd}d|v r|j        j        nd}|r%|                                }|dv rd}n1|dv rd}n*d	}n'|r#|d
k    rd	}nt          j        |          rd}nd}nd}|rJt          j	        ||          |_        ||_        |
                                 |                                 n|r|                    |           | j        r|t          j                            | j                  rAt#          | j                  5 }|                                }ddd           n# 1 swxY w Y   nt'          d| j        z            |r||_        |                                 dS dS )z$Configure the coloring of the widgetzZMQInteractiveShell.colorsNr:   zJupyterWidget.style_sheet)lightbglightr   )darklinuxr   nocolorbw)colorszStylesheet %r not found.)rA   ZMQInteractiveShellr   r%   syntax_stylestyle_sheetlowerr'   
dark_stylesheet_from_template_syntax_style_changed_style_sheet_changedset_default_styler<   r   r   isfileopenreadIOError)rH   rp   cfgr   r;   sheetfs          r
   rg   zJupyterQtConsoleApp.init_colors1  s,    k3OSV3V3V(//\`2NRU2U2U!..[_1LPS1S1S!--Y]  	<<>>F--- ,,,  	d{{ "5)) ! F  	4!'!;E6!J!JF"'F((***'')))) 	4$$F$333? 	Lw~~do.. L$/** %aFFHHE% % % % % % % % % % % % % % % 84?JKKK 	*!&F'')))))	* 	*s   /EEEc                      t          j         t           j         fd           t          j                    }|j                            d            |                    d           | _        dS )zallow clean shutdown on sigintc                 .                         d          S )N)exit)sigframerH   s     r
   r   z1JupyterQtConsoleApp.init_signal.<locals>.<lambda>g  s    		" r   c                      d S r   r   r   r   r
   r   z1JupyterQtConsoleApp.init_signal.<locals>.<lambda>m  s    d r      N)signalSIGINTr   QTimertimeoutconnectstart_sigint_timer)rH   timers   ` r
   init_signalzJupyterQtConsoleApp.init_signale  sf    fm%E%E%E%EFFF ll+++C"r   c           
      0   |v r| j                             d|d                    fd| j                                                 D                                  |                                }||                             |                    |S dS )zWarn about deprecated config.z1Use %s in config, not %s. Outdated config:
    %sz
    c              3   N   K   | ]\  }}d                      ||          V   dS )z{name}.{key} = {value!r})keyr   rI   N)format).0r   r   old_names      r
   	<genexpr>z8JupyterQtConsoleApp._deprecate_config.<locals>.<genexpr>x  s[         #U /55#U;C 6 E E     r   N)r   warningr   rA   itemscopymerge)rH   r   r   new_names     ` r
   _deprecate_configz%JupyterQtConsoleApp._deprecate_configr  s    s??HD(     '+k(&;&A&A&C&C       ((**CMH...J ?r   c                 ,   t           j                            d          rrt           j        dk    rdddl}	 ddlm}m} t          |                                          |u r|	                     |                       dS dS # t          $ r Y dS w xY wdS dS )a  
        Same workaround fix as https://github.com/ipython/ipykernel/pull/456

        Set default asyncio policy to be compatible with tornado
        Tornado 6 (at least) is not compatible with the default
        asyncio implementation on Windows
        Pick the older SelectorEventLoopPolicy on Windows
        if the known-incompatible default policy is in use.
        do this as early as possible to make it a low priority and overrideable
        ref: https://github.com/tornadoweb/tornado/issues/2608
        FIXME: if/when tornado supports the defaults in asyncio,
               remove and bump tornado requirement for py38
        win)      r   N)WindowsProactorEventLoopPolicyWindowsSelectorEventLoopPolicy)r   r   
startswithversion_infoasyncior   r   typeget_event_loop_policyset_event_loop_policyImportError)rH   r   r   r   s       r
   _init_asyncio_patchz'JupyterQtConsoleApp._init_asyncio_patch  s     <""5)) 	Tc.>&.H.HNNNT        557788<ZZZ 112P2P2R2RSSSSS [Z	    	T 	T.H.Hs   B 
BBc                 ,   t           j        dk    r8t          d          }t          t                    }||k     rdt          j        d<   |                                  |                                  t                      	                    |           | j
        rd S dD ]8\  }}|                     | j        ||          }|r|                     |           9t          j	        | |           |                                  |                                  d S )Nr   z5.15.21QT_MAC_WANTS_LAYER))IPythonQtConsoleAppJupyterQtConsole)IPythonWidgetr%   )RichIPythonWidgetr&   )r   r   r   r"   r   environr   r~   rN   
initialize_dispatchingr   rA   update_configr3   r   r   )rH   rR   v_5_15_2	v_currentr   r   r   rS   s          r
   r   zJupyterQtConsoleApp.initialize  s    <8##XHj))I8##36
/0  """4    	F#
 	( 	(Hh
 ((hIIC (""3'''$T$///r   c                     t                                                       | j        r| j                                         n| j                                         | j                                         | j                                         d S r   )	rN   r   maximizer   showMaximizedshowraise_r|   exec_)rH   rS   s    r
   r   zJupyterQtConsoleApp.start  sy     = 	K%%''''K 	r   r   )0__name__
__module____qualname__rI   r(   versiondescription	_examplesexamplesr%   r3   classesr,   flagsaliasesr/   qt_flagsfrontend_flags
qt_aliasesfrontend_aliasesr*   rc   r+   r]   r-   r<   r.   r   r   r7   rm   rL   r&   rG   rO   rq   ru   rx   r~   r   rg   r   r   r   r$   r   r   __classcell__rS   s   @r
   r8   r8      s6       DGK Ho 1 99GDKKEd7mmGS]]Ns:(*D.0 0 0J 5tAC C CL uU424 4 4H E%TV V VE U4G  N4 4 4 S*++N0 0 0 0 0 0
  8  2  29 9 9"8 "8 "8H1* 1* 1*h# # #   T T T<      4        r   c                        e Zd Z fdZ xZS )r   c                 d    t          dt                      t                      j        |i | d S )Nz:IPythonQtConsoleApp is deprecated; use JupyterQtConsoleApp)r   DeprecationWarningrN   __init__)rH   akwrS   s      r
   r  zIPythonQtConsoleApp.__init__  s=    I	! 	! 	!!"r"""""r   )r   r   r   r  r  r  s   @r
   r   r     s8        # # # # # # # # #r   r   c                  8    t                                            d S r   )r8   launch_instancer   r   r
   mainr    s    '')))))r   __main__)C__doc__r   r   r   warningsr   packaging.versionr   rI   
excepthookr   undocr   r   r   shell32'SetCurrentProcessExplicitAppUserModelIDAttributeErrorqtpyr   r    r!   r"   traitlets.config.applicationr#   r$   qtconsole.jupyter_widgetr%   qtconsole.rich_jupyter_widgetr&   	qtconsoler'   r(   qtconsole.mainwindowr)   qtconsole.clientr*   qtconsole.managerr+   	traitletsr,   r-   r.   r/   jupyter_core.applicationr0   r1   r2   jupyter_client.consoleappr3   r4   r5   jupyter_client.localinterfacesr6   r   dictr   r   updater   r   setkeysr8   r   r  r   r   r   r
   <module>r%     s    
			  



       # # # # # #$ 7d??^N E

/ 
/ U
/ $CN!!!!!!>>?RSSSS    6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ; ; ; ; ; ; 2 2 2 2 2 2 ; ; ; ; ; ; ) ) ) ) ) ) ) ) + + + + + + + + + + + + - - - - - -            J I I I I I I I I I         
 7 6 6 6 6 6	 	Z%4(89(* 	239     		    X    $|

T(1##  
   +    
  #$BC D D D z    S""##
3x}}D D D D D*&7 D D DN
# # # # #- # # #* * * zDFFFFF s    A$ $A,+A,