
    i)i                       d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	m
Z
 dZej                            e          ZddZddZej        dk    r eedd          ZddZdS ddZddZddZedk    r[ eed          r	  ej                     n# e$ r Y nw xY w e eej        dd                               ej        d           dS dS ) ac  Support for spawning a daemon process.

PyMongo only attempts to spawn the mongocryptd daemon process when automatic
client-side field level encryption is enabled. See
`Client-side Field Level Encryption <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/security/in-use-encryption/#client-side-field-level-encryption>`_ for more info.
    )annotationsN)AnyOptionalSequence
   popensubprocess.Popen[Any]timeoutOptional[float]returnOptional[int]c                \    	 |                      |          S # t          j        $ r Y dS w xY w)z,Implement wait timeout support for Python 3.)r
   N)wait
subprocessTimeoutExpired)r   r
   s     `/Users/user/workspace/sujinbaek/cqa-test-app/venv/lib/python3.11/site-packages/pymongo/daemon.py_popen_waitr   "   s@    zz'z***$   tts    ++Optional[subprocess.Popen[Any]]Nonec                    | 	d| _         dS dS )zpSilence 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   argsSequence[str]c                H   	 t          t          j        d          5 }t          j        | t
          |||          }t          |           ddd           dS # 1 swxY w Y   dS # t          $ r3}t          j	        d| d          d| t          d           Y d}~dS d}~ww xY w)	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)r   r,   r   excs       r   _spawn_daemonr4   =   s&   	bj%(( 1G"("3!""   *%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ! 	 	 	M]47]]X[]]         	s:   A$ .A
A$ AA$ AA$ $
B!.(BB!c                   	 t          t          j        d          5 }t          j        | d|||          cddd           S # 1 swxY w Y   n?# t
          $ r2}t          j        d| d          d| t          d	           Y d}~nd}~ww xY wdS )
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/   r0   r1   r2   )r   r,   r3   s      r   _spawnr7   \   s   	bj%(( G!'"!""                   ! 	 	 	M]47]]X[]]        	 ts9   A AA AA 	A
A 
B
(BB
c                    t           j        t          g}|                    |            t	          j        |d          }t          |t                     dS )z7Spawn a daemon process using a double subprocess.Popen.T)r6   N)sys
executable
_THIS_FILEextendr   r-   r   _WAIT_TIMEOUT)r   spawner_args	temp_procs      r   _spawn_daemon_double_popenr@   o   sO    
3D!!!$\TBBB	 	I}-----r   c                ^    t           j        rt          |            dS t          |            dS )zSpawn a daemon process (Unix).N)r9   r:   r@   r7   )r   s    r   r4   r4   x   s3     > 	&t,,,,, 4LLLLLr   __main__setsid   )r   r	   r
   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )__doc__
__future__r   r+   r   r9   r0   typingr   r   r   r=   pathrealpath__file__r;   r   r   platformgetattrr.   r4   r7   r@   __name__hasattrrC   OSErrorargv_exit r   r   <module>rS      s    # " " " " " 				     



  * * * * * * * * * * Wh''
       <7
,>
KK     >   &. . . .   " :72x   		   
 	"!&&!"""6"6777 s   B BB