a
    Šxd…  ã                   @   sb  d dl mZ d dlZd dlZd dlZd dlZzd dlZW n eyR   d dlZY n0 zd dl	m
Z
 W n ey~   dd„ Z
Y n0 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ g d	¢Zd
ZdZd ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&da'da(dd„ Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.d d!„ Z/d*d"d#„Z0d$d%„ Z1d&d'„ Z2d(d)„ Z3dS )+é    )Úabsolute_importN)Ú_args_from_interpreter_flagsc                  C   st   ddddddddd	d
dœ
} g }|   ¡ D ].\}}ttj|ƒ}|dkr&| d||  ¡ q&tjD ]}| d| ¡ q\|S )zrReturn a list of command-line arguments reproducing the current
        settings in sys.flags and sys.warnoptions.ÚdÚOÚBÚsÚSÚEÚvÚbÚRÚ3)
ÚdebugÚoptimizeÚdont_write_bytecodeÚno_user_siteÚno_siteÚignore_environmentÚverboseÚbytes_warningÚhash_randomizationZpy3k_warningr   ú-z-W)ÚitemsÚgetattrÚsysÚflagsÚappendÚwarnoptions)Úflag_opt_mapÚargsÚflagÚoptr
   © r"   úE/var/www/html/Ranjet/env/lib/python3.9/site-packages/billiard/util.pyr      s&    ö
r   )Ú_afterfork_registryÚ_afterfork_counterÚ_exit_functionÚ_finalizer_registryÚ_finalizer_counterÚFinalizeÚForkAwareLocalÚForkAwareThreadLockÚget_temp_dirÚ
is_exitingÚregister_after_forkÚ_run_after_forkersÚ_run_finalizersé   )Ú	get_errno)Ú	sub_debugr   ÚinfoÚsub_warningÚ
get_loggerÚlog_to_stderrr,   r.   r-   r)   r+   r*   ÚSUBDEBUGÚ
SUBWARNINGé   é   é
   é   é   é   é(   Úmultiprocessingz+[%(levelname)s/%(processName)s] %(message)sFc                 O   s"   t rt jt| g|¢R i |¤Ž d S ©N)Ú_loggerÚlogr8   ©Úmsgr   Úkwargsr"   r"   r#   r3   a   s    r3   c                 O   s"   t rt jt| g|¢R i |¤Ž d S rB   )rC   rD   ÚDEBUGrE   r"   r"   r#   r   f   s    r   c                 O   s"   t rt jt| g|¢R i |¤Ž d S rB   )rC   rD   ÚINFOrE   r"   r"   r#   r4   k   s    r4   c                 O   s"   t rt jt| g|¢R i |¤Ž d S rB   )rC   rD   r9   rE   r"   r"   r#   r5   p   s    r5   c                 O   s"   t rt jt| g|¢R i |¤Ž d S rB   )rC   rD   ÚWARNINGrE   r"   r"   r#   Úwarningt   s    rK   c                 O   s"   t rt jt| g|¢R i |¤Ž d S rB   )rC   rD   ÚERRORrE   r"   r"   r#   Úerrorx   s    rM   c                  C   sœ   ddl } |  ¡  z|ts‚|  t¡adt_|  td¡ |  td¡ t	t
dƒr^t
 t¡ t
 t¡ n$t
j tdi f¡ t
j tdi f¡ W |  ¡  n
|  ¡  0 tS )z0
    Returns logger used by multiprocessing
    r   Nr8   r9   Ú
unregisterr"   )ÚloggingÚ_acquireLockrC   Ú	getLoggerÚLOGGER_NAMEÚ	propagateÚaddLevelNamer8   r9   ÚhasattrÚatexitrN   r&   ÚregisterZ_exithandlersÚremover   Ú_releaseLock)rO   r"   r"   r#   r6   }   s    


r6   c                 C   sJ   ddl }tƒ }| t¡}| ¡ }| |¡ | |¡ | rB| | ¡ dat	S )zB
    Turn on logging and add a handler which prints to stderr
    r   NT)
rO   r6   Ú	FormatterÚDEFAULT_LOGGING_FORMATÚStreamHandlerÚsetFormatterÚ
addHandlerÚsetLevelÚ_log_to_stderrrC   )ÚlevelrO   ÚloggerÚ	formatterÚhandlerr"   r"   r#   r7   š   s    



r7   c                  C   s¨   t j d¡stƒ ‚zxdt jv rZt ¡ } |  d¡ |  d¡}|  	d¡}| 
t|¡ |d W S t ¡ }tj d¡}| 
tt |¡¡ |jW S W n ty¢   tƒ ‚Y n0 dS )zE
    Return the current value of the parent process death signal
    ÚlinuxÚcffiúint prctl (int __option, ...);zint *Nr   ú	libc.so.6)r   ÚplatformÚ
startswithÚOSErrorÚmodulesrf   ÚFFIÚcdefÚnewÚdlopenÚprctlÚPR_GET_PDEATHSIGÚctypesÚc_intÚcdllÚLoadLibraryÚbyrefÚvalueÚ	Exception)ÚffiÚargÚCÚsigÚlibcr"   r"   r#   Úget_pdeathsig­   s     




r   c                 C   sˆ   t j d¡stƒ ‚zXdt jv rPt ¡ }| d¡ | d¡}| 	t
| d| ¡¡ ntj d¡}| 	t
| ¡ W n ty‚   tƒ ‚Y n0 dS )am  
    Set the parent process death signal of the calling process to sig
    (either a signal value in the range 1..maxsig, or 0 to clear).
    This is the signal that the calling process will get when its parent dies.
    This value is cleared for the child of a fork(2) and
    (since Linux 2.4.36 / 2.6.23) when executing a set-user-ID or set-group-ID binary.
    re   rf   rg   NÚintrh   )r   ri   rj   rk   rl   rf   rm   rn   rp   rq   ÚPR_SET_PDEATHSIGÚcastrs   ru   rv   ry   )r}   rz   r|   r~   r"   r"   r#   Úset_pdeathsigÅ   s    


rƒ   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z&
    Automatic retry after EINTR.
    c               
      sL   zˆ | i |¤ŽW S  t yD } zt|ƒtjkr0‚ W Y d }~q d }~0 0 q d S rB   )rk   r2   ÚerrnoZEINTR)r   rG   Úexc©Úfuncr"   r#   Úwrappedá   s
    z_eintr_retry.<locals>.wrapped)Ú	functoolsÚwraps)r‡   rˆ   r"   r†   r#   Ú_eintr_retryÜ   s    r‹   )N)4Ú
__future__r   r   r„   r‰   rV   rf   ÚImportErrorrs   Ú
subprocessr   Zmultiprocessing.utilr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Úcompatr2   Ú__all__rr   r   ÚNOTSETr8   rH   rI   r9   rJ   rL   rR   r[   rC   r`   r3   r   r4   r5   rK   rM   r6   r7   r   rƒ   r‹   r"   r"   r"   r#   Ú<module>	   sN   <	
