o
    svXj…  ã                   @   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y)   d dlZY nw zd dl	m
Z
 W n ey?   dd„ Z
Y nw 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_randomizationÚpy3k_warningr   ú-z-W)ÚitemsÚgetattrÚsysÚflagsÚappendÚwarnoptions)Úflag_opt_mapÚargsÚflagÚoptr
   © r#   úJ/var/www/html/myproject/venv/lib/python3.10/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   ó&   t rt jt| g|¢R i |¤Ž d S d S ©N)Ú_loggerÚlogr9   ©Úmsgr    Úkwargsr#   r#   r$   r4   a   ó   ÿr4   c                 O   rC   rD   )rE   rF   ÚDEBUGrG   r#   r#   r$   r   f   rJ   r   c                 O   rC   rD   )rE   rF   ÚINFOrG   r#   r#   r$   r5   k   rJ   r5   c                 O   rC   rD   )rE   rF   r:   rG   r#   r#   r$   r6   p   rJ   r6   c                 O   rC   rD   )rE   rF   ÚWARNINGrG   r#   r#   r$   Úwarningt   rJ   rN   c                 O   rC   rD   )rE   rF   ÚERRORrG   r#   r#   r$   Úerrorx   rJ   rP   c                  C   s¶   ddl } |  ¡  zMtsH|  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 |  ¡  tS W |  ¡  tS W |  ¡  tS |  ¡  w )z0
    Returns logger used by multiprocessing
    r   Nr9   r:   Ú
unregisterr#   )ÚloggingÚ_acquireLockrE   Ú	getLoggerÚLOGGER_NAMEÚ	propagateÚaddLevelNamer9   r:   ÚhasattrÚatexitrQ   r'   ÚregisterÚ_exithandlersÚremover   Ú_releaseLock)rR   r#   r#   r$   r7   }   s,   


ïù
þr7   c                 C   sJ   ddl }tƒ }| t¡}| ¡ }| |¡ | |¡ | r!| | ¡ dat	S )zB
    Turn on logging and add a handler which prints to stderr
    r   NT)
rR   r7   Ú	FormatterÚDEFAULT_LOGGING_FORMATÚStreamHandlerÚsetFormatterÚ
addHandlerÚsetLevelÚ_log_to_stderrrE   )ÚlevelrR   ÚloggerÚ	formatterÚhandlerr#   r#   r$   r8   š   s   



r8   c                  C   sœ   t j d¡s	tƒ ‚z:dt jv r-t ¡ } |  d¡ |  d¡}|  	d¡}| 
t|¡ |d W S t ¡ }tj d¡}| 
tt |¡¡ |jW S  tyM   tƒ ‚w )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Úmodulesrj   Ú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ƒ ‚z/dt jv r*t ¡ }| d¡ | d¡}| 	t
| d| ¡¡ W dS tj d¡}| 	t
| ¡ W dS  tyB   tƒ ‚w )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.
    ri   rj   rk   NÚintrl   )r   rm   rn   ro   rp   rj   rq   rr   rt   ru   ÚPR_SET_PDEATHSIGÚcastrw   ry   rz   r}   )r�   r~   r€   r‚   r#   r#   r$   Úset_pdeathsigÅ   s   


ÿr‡   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z&
    Automatic retry after EINTR.
    c               
      sJ   	 zˆ | i |¤ŽW S  t y# } zt|ƒtjkr‚ W Y d }~nd }~ww qrD   )ro   r3   ÚerrnoÚEINTR)r    rI   Úexc©Úfuncr#   r$   Úwrappedá   s   ÿ€ÿýz_eintr_retry.<locals>.wrapped)Ú	functoolsÚwraps)rŒ   r�   r#   r‹   r$   Ú_eintr_retryÜ   s   r�   rD   )4Ú
__future__r   r   rˆ   rŽ   rY   rj   ÚImportErrorrw   Ú
subprocessr   Úmultiprocessing.utilr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Úcompatr3   Ú__all__rv   r…   ÚNOTSETr9   rK   rL   r:   rM   rO   rU   r_   rE   rd   r4   r   r5   r6   rN   rP   r7   r8   rƒ   r‡   r�   r#   r#   r#   r$   Ú<module>   sT   ÿÿ<	
