
    wg                     z    d Z ddlmZ ddlmZ ddlmZ ddlmZ	 ddl
mZ dd	giZd
dgZedd       Zd Zd Zd Zy)z,
Thin wrappers around `concurrent.futures`.
    )contextmanager)length_hint)	cpu_count   )tqdm)TqdmWarningzgithub.com/	casperdcl
thread_mapprocess_mapc              #      K   t        | dd      }|xs | j                         }t        |||      }| j                  |       | || `y| j                  |       yw)z>get (create if necessary) and then restore `tqdm_class`'s lock_lockN)getattrget_lockset_lockr   )
tqdm_class	lock_nameold_locklocks       \/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/tqdm/contrib/concurrent.pyensure_lockr      sd      z7D1H,z**,D4D)D
JH%s   AAc                    |j                         }d|vrt        |d         |d<   |j                  dt              }|j                  dt	        dt               dz               }|j                  dd      }|j                  d	d
      }t        ||      5 }	 | ||j                  |	f      5 }
t         | |
j                  |g|d|ifi |      cddd       cddd       S # 1 sw Y   nxY w	 ddd       y# 1 sw Y   yxY w)a  
    Implementation of `thread_map` and `process_map`.

    Parameters
    ----------
    tqdm_class  : [default: tqdm.auto.tqdm].
    max_workers  : [default: min(32, cpu_count() + 4)].
    chunksize  : [default: 1].
    lock_name  : [default: "":str].
    totalr   r   max_workers       	chunksize   r    )r   )r   initializerinitargsN)
copyr   pop	tqdm_autominr   r   r   listmap)PoolExecutorfn	iterablestqdm_kwargskwargsr   r   r   r   lkexs              r   _executor_mapr.      s    Ff%il3wL)4J**]CIK!O,DEK

;*I

;+I	Z9	5 [kz?R?R$&5* 	[-/
6266"#Ny#NI#NYRXYZ	[ 	[[ [	[ 	[ 	[[ [ [s$   C:+&C$	C:$C-	)C::Dc                 .    ddl m} t        || g|i |S )a  
    Equivalent of `list(map(fn, *iterables))`
    driven by `concurrent.futures.ThreadPoolExecutor`.

    Parameters
    ----------
    tqdm_class  : optional
        `tqdm` class to use for bars [default: tqdm.auto.tqdm].
    max_workers  : int, optional
        Maximum number of workers to spawn; passed to
        `concurrent.futures.ThreadPoolExecutor.__init__`.
        [default: max(32, cpu_count() + 4)].
    r   )ThreadPoolExecutor)concurrent.futuresr0   r.   )r(   r)   r*   r0   s       r   r
   r
   6   s     6+RK)K{KK    c                     ddl m} |r:d|vr6t        t        t        |            }|dkD  rddlm}  |d|z  t        d       d	|vr|j                         }d
|d	<   t        || g|i |S )a  
    Equivalent of `list(map(fn, *iterables))`
    driven by `concurrent.futures.ProcessPoolExecutor`.

    Parameters
    ----------
    tqdm_class  : optional
        `tqdm` class to use for bars [default: tqdm.auto.tqdm].
    max_workers  : int, optional
        Maximum number of workers to spawn; passed to
        `concurrent.futures.ProcessPoolExecutor.__init__`.
        [default: min(32, cpu_count() + 4)].
    chunksize  : int, optional
        Size of chunks sent to worker processes; passed to
        `concurrent.futures.ProcessPoolExecutor.map`. [default: 1].
    lock_name  : str, optional
        Member of `tqdm_class.get_lock()` to use [default: mp_lock].
    r   )ProcessPoolExecutorr   i  )warnzIterable length %d > 1000 but `chunksize` is not set. This may seriously degrade multiprocess performance. Set `chunksize=1` or more.r   )
stacklevelr   mp_lock)
r1   r4   maxr&   r   warningsr5   r   r!   r.   )r(   r)   r*   r4   longest_iterable_lenr5   s         r   r   r   H   s    & 7[3  #3{I#>?$&% /1EF , +%!&&(#,K ,bL9LLLr2   N)r   )__doc__
contextlibr   operatorr   osr   autor   r#   stdr   
__author____all__r   r.   r
   r    r2   r   <module>rD      sW    &    $ k]+

' 
& 
&[2L$!Mr2   