Format: application/x-python-code
1 o
2
3 �h� � @ s� d Z zddlZW n ey dZY nw ddlZddlZddlZddlZddlZddlm Z ddl
4 mZ ddlm
5 Z
6 G dd� de�ZG dd � d e�ZdS )
7 zA parent poller for unix.� N)�interrupt_main)�Thread)�
8 get_loggerc s( e Zd ZdZ� fdd�Zdd� Z� ZS )�ParentPollerUnixzxA Unix-specific daemon thread that terminates the program immediately
9 when the parent process no longer exists.
10 c s t � �� d| _dS )zInitialize the poller.TN)�super�__init__�daemon)�self�� __class__� �Lc:\Users\shubh\Videos\agent\nova\Lib\site-packages\ipykernel/parentpoller.pyr s
11
12 zParentPollerUnix.__init__c
13 C sr ddl m} zt�� dkrt� �d� t�d� t�d� W n t y7 } z|j |kr2W Y d}~q� d}~ww q)zRun the poller.r )�EINTRT� �-Parent appears to have exited, shutting down.g �?N)
14 �errnor �os�getppidr �warning�_exit�time�sleep�OSError)r r �er r r
15 �run s
16
17 ���zParentPollerUnix.run��__name__�
18 __module__�__qualname__�__doc__r r �
19 __classcell__r r r
20 r
21 r s r c s* e Zd ZdZd� fdd� Zdd� Z� ZS )�ParentPollerWindowsz�A Windows-specific daemon thread that listens for a special event that
22 signals an interrupt and, optionally, terminates the program immediately
23 when the parent process no longer exists.
24 Nc s@ |s|sJ �t � �� tdu rd}t|��d| _|| _|| _dS )a� Create the poller. At least one of the optional parameters must be
25 provided.
26
27 Parameters
28 ----------
29 interrupt_handle : HANDLE (int), optional
30 If provided, the program will generate a Ctrl+C event when this
31 handle is signaled.
32 parent_handle : HANDLE (int), optional
33 If provided, the program will terminate immediately when this
34 handle is signaled.
35 Nz#ParentPollerWindows requires ctypesT)r r �ctypes�ImportErrorr �interrupt_handle�
36 parent_handle)r r$ r% �msgr
37 r r
38 r 5 s
39
40 zParentPollerWindows.__init__c C s0 z
41 ddl m}m} W n ty ddlm}m} Y nw g }| jr'|�| j� | jr0|�| j� t� � d }|�
42 d�r>tjntj
43 } tjj�t|�|t|� |� d|�}|| kr`t|�k r�n n(||| }|| jkrytt�tj��rxt� n|| jkr�t� �d� t�d� n
44 |dk r�tjdd d
45 � dS qB)z-Run the poll loop. This method never returns.r )�INFINITE�
46 WAIT_OBJECT_0�64TFr r z�Parent poll failed. If the frontend dies,
47 the kernel may be left running. Please let us know
48 about your system (bitness, Python, etc.) at
49 ipython-dev@scipy.org� )�
50 stacklevelN)�_winapir'