o
    96dc	                  
   @   s   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ e  edZded	ed
 de	e defddZded	ed
 de	e de
e ddf
ddZdS )ze
Some light wrappers around Python's multiprocessing, to deal with cleanly
starting child processes.
    N)SpawnProcess)socket)CallableListOptional)Configspawnconfigtarget).Nsocketsreturnc                 C   sB   zt j }W n ty   d}Y nw | |||d}tjt|dS )a  
    Called in the parent process, to instantiate a new child process instance.
    The child is not yet started at this point.

    * config - The Uvicorn configuration instance.
    * target - A callable that accepts a list of sockets. In practice this will
               be the `Server.run()` method.
    * sockets - A list of sockets to pass to the server. Sockets are bound once
                by the parent process, and then passed to the child processes.
    Nr	   r
   r   stdin_fileno)r
   kwargs)sysstdinfilenoOSErrorr   Processsubprocess_started)r	   r
   r   r   r    r   jC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\uvicorn/_subprocess.pyget_subprocess   s   r   r   c                 C   s*   |dur
t |t_|   ||d dS )a  
    Called when the child process starts.

    * config - The Uvicorn configuration instance.
    * target - A callable that accepts a list of sockets. In practice this will
               be the `Server.run()` method.
    * sockets - A list of sockets to pass to the server. Sockets are bound once
                by the parent process, and then passed to the child processes.
    * stdin_fileno - The file number of sys.stdin, so that it can be reattached
                     to the child process.
    N)r   )osfdopenr   r   Zconfigure_loggingr   r   r   r   r   3   s   r   )__doc__multiprocessingr   r   Zmultiprocessing.contextr   r   typingr   r   r   Zuvicorn.configr   Zallow_connection_picklingZget_contextr   r   intr   r   r   r   r   <module>   s<    

!