HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/sphinx/util/__pycache__/parallel.cpython-310.pyc
o

�$�a�
@sdZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
mZzddlZWney=dZYnwddlmZddlmZe�e�Zeoaejdkoaejdko`e��d	kZGd
d�d�ZGdd
�d
�Zddeedededee	fdd�Z dS)z�
    sphinx.util.parallel
    ~~~~~~~~~~~~~~~~~~~~

    Parallel building utilities.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�sqrt)�Any�Callable�Dict�List�Optional�Sequence)�SphinxParallelError)�logging�posix)���Darwinc	@sJeZdZdZddeddfdd�Zdded	ed
eddfdd�Zdd
d�Z	dS)�SerialTaskszEHas the same interface as ParallelTasks, but executes tasks directly.��nproc�returnNcC�dS�N���selfrrr�6/usr/lib/python3/dist-packages/sphinx/util/parallel.py�__init__*�zSerialTasks.__init__�	task_func�arg�result_funccCs,|dur	||�}n|�}|r||�dSdSrr)rrrr�resrrr�add_task-s
�zSerialTasks.add_taskcCrrr�rrrr�join5rzSerialTasks.join�r�NN�rN)
�__name__�
__module__�__qualname__�__doc__�intrrrrr!rrrrr's
rc	@szeZdZdZdeddfdd�Zdeded	eddfd
d�Zdded	ed
eddfdd�Z	ddd�Z
ddd�Zdefdd�Z
dS)�
ParallelTasksz1Executes *nproc* tasks in parallel after forking.rrNcCs4||_i|_i|_i|_i|_i|_d|_d|_dS)Nr)r�
_result_funcs�_args�_procs�_precvs�_precvsWaiting�	_pworking�_taskidrrrrr<s
zParallelTasks.__init__�pipe�funcrc	
Cs�z(t��}|���|dur|�}n||�}Wd�n1s wYd}Wn%tyM}zd}t�|j|�d��}|t��f}WYd}~nd}~wwt�	|j
�|�||j
|f�dS)NFTr)r
�LogCollector�collect�
BaseException�	traceback�format_exception_only�	__class__�strip�
format_exc�convert_serializable�logs�send)	rr2r3r�	collector�ret�failed�err�errmsgrrr�_processMs"
����zParallelTasks._processrrcCst|j}|jd7_|pdd�|j|<||j|<t�d�\}}tj|j|||fd�}||j|<||j|<|�	�dS)NrcSrrr)r�resultrrr�<lambda>`sz(ParallelTasks.add_task.<locals>.<lambda>F)�target�args)
r1r+r,�multiprocessing�Pipe�ProcessrDr-r/�	_join_one)rrrr�tid�precv�psend�procrrrr]s
�

zParallelTasks.add_taskcCsDz|jr|��s
t�d�|jsWdSWdSty!|���w)Ng{�G�z�?)r0rL�time�sleep�	Exception�	terminater rrrr!is
��zParallelTasks.joincCsTt|j�D]"}|j|��|j�|�|j�|�|j�|�|jd8_qdS)Nr)�listr.r-rTr+�popr0)rrMrrrrTss�zParallelTasks.terminatec
Cs�d}|j��D]D\}}|��rK|��\}}}|rt|��|D]}t�|�q|j�|�|j	�|�|�|j
|��|j�|�|jd8_d}nq|j
rx|j|jkrx|j
��\}}	|	|j|<|j
|��|jd7_|j
rx|j|jksU|S)NFrT)r.�items�poll�recvr	�logger�handler+rVr,r-r!r0r/r�popitem�start)
r�
joined_anyrMr2�excr=rE�log�newtid�newprecvrrrrL{s,�

�zParallelTasks._join_oner#r$)r%r&r'r(r)rrrrDrr!rT�boolrLrrrrr*9s


r*�
�	argumentsr�maxbatchrcsjt��}||��|krtt|||����dkrd�t|��\}}|r)|d7}��fdd�t|�D�S)Nrrcs$g|]}�|�|d���qSr"r)�.0�i�re�	chunksizerr�
<listcomp>�s$zmake_chunks.<locals>.<listcomp>)�lenr)r�divmod�range)rerrf�nargs�nchunks�restrrir�make_chunks�srr)rd)!r(�os�platform�sysrQr7�mathr�typingrrrrrrrI�ImportError�
sphinx.errorsr	�sphinx.utilr
�	getLoggerr%rZ�name�version_info�system�parallel_availablerr*�strr)rrrrrr�<module>s0
 �
��([