<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    if@"                     @   s   d Z ddl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Ze	 Z
dadd Zee G dd deZd	d
 ZG dd dejZG dd dejZdS )z"Brian Quinlan (brian@sweetapp.com)    N)_baseFc                  C   sB   da tt } | D ]\}}|d  q| D ]\}}|  q,d S NT)	_shutdownlist_threads_queuesitemsputjoin)r   tq r   >/opt/alt/python38/lib64/python3.8/concurrent/futures/thread.py_python_exit!   s    r   c                   @   s   e Zd Zdd Zdd ZdS )	_WorkItemc                 C   s   || _ || _|| _|| _d S N)futurefnargskwargs)selfr   r   r   r   r   r   r   __init__.   s    z_WorkItem.__init__c              
   C   sf   | j  sd S z| j| j| j}W n2 tk
rT } z| j | d } W 5 d }~X Y nX | j | d S r   )r   Zset_running_or_notify_cancelr   r   r   BaseExceptionset_exceptionZ
set_result)r   resultexcr   r   r   run4   s    
z_WorkItem.runN)__name__
__module____qualname__r   r   r   r   r   r   r   -   s   r   c                 C   s   |d k	rRz||  W n< t k
rP   tjjddd |  }|d k	rJ|  Y d S X zx|jdd}|d k	r|  ~|  }|d k	r|j  ~qT|  }t	s|d ks|j	r|d k	rd|_	|
d  W d S ~qTW n$ t k
r   tjjddd Y nX d S )NzException in initializer:T)exc_info)blockzException in worker)r   r   ZLOGGERZcritical_initializer_failedgetr   _idle_semaphorereleaser   r   )Zexecutor_referenceZ
work_queueinitializerinitargsZexecutor	work_itemr   r   r   _workerB   s8    

r(   c                   @   s   e Zd ZdS )BrokenThreadPoolN)r   r   r   r   r   r   r   r)   m   s   r)   c                   @   sf   e Zd Ze jZdddZdd Ze	j
jje_e	j
jje_dd	 Zd
d ZdddZe	j
jje_dS )ThreadPoolExecutorN r   c                 C   s   |d krt dt pdd }|dkr.td|d k	rFt|sFtd|| _t | _	t
d| _t | _d| _d| _t
 | _|pd|   | _|| _|| _d S )	N          r   z"max_workers must be greater than 0zinitializer must be a callableFzThreadPoolExecutor-%d)minos	cpu_count
ValueErrorcallable	TypeError_max_workersqueueZSimpleQueue_work_queue	threadingZ	Semaphorer#   set_threads_brokenr   ZLock_shutdown_lock_counter_thread_name_prefix_initializer	_initargs)r   Zmax_workersZthread_name_prefixr%   r&   r   r   r   r   x   s$    


zThreadPoolExecutor.__init__c               
   O   s   t | dkr| ^}}} nV| s&tdnHd|krZ|d}| ^}} dd l}|jdtdd ntdt | d  |jf |jrt|j|j	rt
d	t	rt
d
t }t||| |}|j| |  |W  5 Q R  S Q R X d S )N   zDdescriptor 'submit' of 'ThreadPoolExecutor' object needs an argumentr   r   z.Passing 'fn' as keyword argument is deprecated)
stacklevelz6submit expected at least 1 positional argument, got %dr-   z*cannot schedule new futures after shutdownz6cannot schedule new futures after interpreter shutdown)lenr4   popwarningswarnDeprecationWarningr<   r;   r)   r   RuntimeErrorr   ZFuturer   r7   r   _adjust_thread_count)r   r   r   r   rE   fwr   r   r   submit   s6    

 

zThreadPoolExecutor.submitc                 C   s   | j jddrd S | jfdd}t| j}|| jk rd| jp>| |f }tj|t	t
| || j| j| jfd}d|_|  | j| | jt|< d S )Nr   )Ztimeoutc                 S   s   | d  d S r   )r   )_r   r   r   r   
weakref_cb   s    z;ThreadPoolExecutor._adjust_thread_count.<locals>.weakref_cbz%s_%d)nametargetr   T)r#   acquirer7   rC   r:   r5   r>   r8   ZThreadr(   weakrefrefr?   r@   Zdaemonstartaddr   )r   rN   Znum_threadsZthread_namer
   r   r   r   rI      s&    



z'ThreadPoolExecutor._adjust_thread_countc              	   C   sb   | j R d| _z| j }W n tjk
r6   Y qTY nX |d k	r|jt| j qW 5 Q R X d S )NzBA thread initializer failed, the thread pool is not usable anymore)	r<   r;   r7   Z
get_nowaitr6   ZEmptyr   r   r)   )r   r'   r   r   r   r!      s    
z&ThreadPoolExecutor._initializer_failedTc              	   C   s@   | j  d| _| jd  W 5 Q R X |r<| jD ]}|  q.d S r   )r<   r   r7   r   r:   r	   )r   waitr
   r   r   r   shutdown   s    
zThreadPoolExecutor.shutdown)Nr+   Nr   )T)r   r   r   	itertoolscount__next__r=   r   rL   r   Executor__text_signature____doc__rI   r!   rW   r   r   r   r   r*   s   s   
    
& 
r*   )
__author__atexitZconcurrent.futuresr   rX   r6   r8   rR   r0   WeakKeyDictionaryr   r   r   registerobjectr   r(   ZBrokenExecutorr)   r[   r*   r   r   r   r   <module>   s   	
+