
    &g                       S r SSKJr  SSKrSSKrSSKrSSKrSSKJrJ	r	J
r
  Sr\R                  R                  \5      rSS jrSS jr\R$                  S:X  a  \" \S	S
5      rSS jrgSS jrSS jrSS jr\S:X  aN  \" \S5      (       a   \R4                  " 5         \" \" \R8                  SS 5      5        \R:                  " S5        gg! \ a     N7f = f)zSupport for spawning a daemon process.

PyMongo only attempts to spawn the mongocryptd daemon process when automatic
client-side field level encryption is enabled. See
:ref:`automatic-client-side-encryption` for more info.
    )annotationsN)AnyOptionalSequence
   c                V     U R                  US9$ ! [        R                   a     gf = f)z,Implement wait timeout support for Python 3.)timeoutN)wait
subprocessTimeoutExpired)popenr	   s     SC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/daemon.py_popen_waitr   "   s0    zz'z**$$ s    ((c                    U b  SU l         gg)zhSilence Popen's ResourceWarning.

Note this should only be used if the process was created as a daemon.
Nr   )
returncode)r   s    r   _silence_resource_warningr   +   s          win32DETACHED_PROCESS   c           	     0    [        [        R                  S5       n[        R                  " U [
        UUUS9n[        U5        SSS5        g! , (       d  f       g= f! [         a-  n[        R                  " SU S    SU 3[        SS9   SnAgSnAff = f)	z!Spawn a daemon process (Windows).r+b)creationflagsstdinstderrstdoutNFailed to start r   +: is it on your $PATH?
Original exception:    
stacklevel)openosdevnullr   Popen_DETACHED_PROCESSr   FileNotFoundErrorwarningswarnRuntimeWarning)argsr$   r   excs       r   _spawn_daemonr-   =   s    	bjj%(G"(("3!"" *%0 )(( ! 	MM"47)+WX[W\]	s4   A (AA 
AA A 
B(#BBc           	         [        [        R                  S5       n[        R                  " U SUUUS9sSSS5        $ ! , (       d  f       g= f! [
         a-  n[        R                  " SU S    SU 3[        SS	9   SnAgSnAff = f)
z,Spawn the process and silence stdout/stderr.r   T)	close_fdsr   r   r   Nr   r   r   r   r    )	r"   r#   r$   r   r%   r'   r(   r)   r*   )r+   r$   r,   s      r   _spawnr0   \   s    	bjj%(G!''"!"" )((  ! 	MM"47)+WX[W\]
 	s1   A >	A 
AA A 
B#BBc                    [         R                  [        /nUR                  U 5        [        R
                  " USS9n[        U[        5        g)z7Spawn a daemon process using a double subprocess.Popen.T)r/   N)sys
executable
_THIS_FILEextendr   r%   r   _WAIT_TIMEOUT)r+   spawner_args	temp_procs      r   _spawn_daemon_double_popenr9   o   s<    
3D!$$\TB	 	I}-r   c                \    [         R                  (       a  [        U 5        g[        U 5        g)zSpawn a daemon process (Unix).N)r2   r3   r9   r0   )r+   s    r   r-   r-   x   s     >>&t, 4Lr   __main__setsid   )r   zsubprocess.Popen[Any]r	   zOptional[float]returnzOptional[int])r   Optional[subprocess.Popen[Any]]r>   None)r+   Sequence[str]r>   r@   )r+   rA   r>   r?   )__doc__
__future__r   r#   r   r2   r(   typingr   r   r   r6   pathrealpath__file__r4   r   r   platformgetattrr&   r-   r0   r9   __name__hasattrr<   OSErrorargv_exit r   r   <module>rP      s    # 	  
  * * WWh'
 <<7
,>
K>&." :2x  		 	"&!""67
 
  s   C CC