
     O=dc	              
          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j                      ej        d          Zded	ed
         de	e         defdZded	ed
         de	e         de
e         ddf
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                     	 t           j                                        }n# t          $ r d}Y nw xY w| |||d}t                              t          |          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   s        =D:\Sites\api_v1\venv\Lib\site-packages\uvicorn/_subprocess.pyget_subprocessr      ss    $y''))    $	 F == 26=BBBs   ! 00r   c                     |t          j        |          t          _        |                                   ||           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   configure_loggingr   s       r   r   r   3   sJ    $ Il++	  F7    )__doc__multiprocessingr   r   multiprocessing.contextr   r   typingr   r   r   uvicorn.configr   allow_connection_picklingget_contextr	   r   intr    r   r   <module>r(      sI        				 



 0 0 0 0 0 0       + + + + + + + + + + ! ! ! ! ! ! ) ) + + +##G,,CCYC &\C 	C C C CBY &\ 3-	
 
     r   