
    Ch                         S r  SSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr   " S S\5      r " S S	\5      rg! \ a    Sr NGf = f)
zA parent poller for unix.    N)interrupt_main)Thread)
get_loggerc                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )ParentPollerUnix   zpA Unix-specific daemon thread that terminates the program immediately
when the parent process no longer exists.
c                 0   > [         TU ]  5         SU l        g)zInitialize the poller.TN)super__init__daemon)self	__class__s    iC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\ipykernel/parentpoller.pyr   ParentPollerUnix.__init__   s        c                 $   SSK Jn    [        R                  " 5       S:X  a/  [	        5       R                  S5        [        R                  " S5        [        R                  " S5        Ma  ! [         a  nUR                   U:X  a   SnAM  e SnAff = f)zRun the poller.r   )EINTR   -Parent appears to have exited, shutting down.g      ?N)
errnor   osgetppidr   warning_exittimesleepOSError)r   r   es      r   runParentPollerUnix.run   sm     	 ::<1$L(()XYHHQK

3   77e#s   AA) )
B3B
	B

B)r   	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classcell__r   s   @r   r   r      s    
 r   r   c                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )ParentPollerWindows/   zA Windows-specific daemon thread that listens for a special event that
signals an interrupt and, optionally, terminates the program immediately
when the parent process no longer exists.
c                    > U(       d	  U(       d   e[         TU ]  5         [        c  Sn[        U5      eSU l        Xl        X l        g)ak  Create the poller. At least one of the optional parameters must be
provided.

Parameters
----------
interrupt_handle : HANDLE (int), optional
    If provided, the program will generate a Ctrl+C event when this
    handle is signaled.
parent_handle : HANDLE (int), optional
    If provided, the program will terminate immediately when this
    handle is signaled.
Nz#ParentPollerWindows requires ctypesT)r
   r   ctypesImportErrorr   interrupt_handleparent_handle)r   r0   r1   msgr   s       r   r   ParentPollerWindows.__init__5   sC      =00>7Cc"" 0*r   c                     SSK JnJn  / nU R
                  (       a  UR                  U R
                  5        U R                  (       a  UR                  U R                  5        [        R                  " 5       S   nUR                  S5      (       a  [        R                  O[        R                  n [        R                  R                  R!                  [#        U5      U[#        U5      -  " U6 SU5      nX&s=::  a  [#        U5      :  a  O  OX6U-
     nXpR
                  :X  a=  [%        [&        R(                  " [&        R*                  5      5      (       a
  [-        5         O[XpR                  :X  a/  [/        5       R1                  S5        [2        R4                  " S5        OUS:  a  [6        R8                  " SSS	9  g
GM  ! [         a    SSKJnJn   GNf = f)z-Run the poll loop. This method never returns.r   )INFINITEWAIT_OBJECT_064Fr   r   zParent poll failed.  If the frontend dies,
                the kernel may be left running.  Please let us know
                about your system (bitness, Python, etc.) at
                ipython-dev@scipy.org   )
stacklevelN)_winapir5   r6   r/   _subprocessr0   appendr1   platformarchitecture
startswithr.   c_int64c_intwindllkernel32WaitForMultipleObjectslencallablesignal	getsignalSIGINTr   r   r   r   r   warningswarn)r   r5   r6   handlesarchrA   resulthandles           r   r   ParentPollerWindows.runK   sh   	<7
   NN4001NN4--.$$&q)"&//$"7"7V\\ ]]++BBGW%0	F 5W5 -!78222   0 0 ?@@&(111L(()XYHHQK!)  ! ;   	<;;	<s   G   GG)r   r0   r1   )NNr!   r)   s   @r   r+   r+   /   s    
+,. .r   r+   )r&   r.   r/   r   r=   rG   r   rJ   _threadr   	threadingr   traitlets.logr   r   r+    r   r   <module>rU      s[     
     "  $v 6J& JQ  Fs   A AA