
    h	                     4   S r SSKrSSKrSSKr\R                  " \5      rSr SSKr	SrSr SSKrSr " S S\5      r " S	 S
\5      r\R$                  SS j5       rg! \
 a    \R                  " S5         NNf = f! \
 a    \R                  " S5         Ncf = f)z\Common functionality for concurrent processing. The main entry point is :func:`create_pool`.    NFTz:concurrent.futures could not be imported and won't be usedz7multiprocessing could not be imported and won't be usedc                   $    \ rS rSrSrS rS rSrg)	DummyPool&   z?A class that mimics multiprocessing.pool.Pool for our purposes.c                     [        X5      $ N)map)selffunctionitemss      P/home/james-whalen/.local/lib/python3.13/site-packages/smart_open/concurrency.pyimap_unorderedDummyPool.imap_unordered(   s    8##    c                     g r    r	   s    r   	terminateDummyPool.terminate+   s    r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__r   r   r   r   r   &   s    I$r   r   c                   *    \ rS rSrSrS rS rS rSrg)ConcurrentFuturesPool/   z_A class that mimics multiprocessing.pool.Pool but uses concurrent futures instead of processes.c                 L    [         R                  R                  U5      U l        g r   )
concurrentfuturesThreadPoolExecutorexecutor)r	   max_workerss     r   __init__ConcurrentFuturesPool.__init__1   s    "**==kJr   c              #      #    U Vs/ s H  o0R                   R                  X5      PM     nn[        R                  R	                  U5       H  nUR                  5       v   M     g s  snf 7fr   )r"   submitr   r    as_completedresult)r	   r
   r   itemr    futures         r   r   $ConcurrentFuturesPool.imap_unordered4   sS     DIJED==''7EJ ((55g>F--/! ? Ks   A+$A&A A+c                 6    U R                   R                  SS9  g )NT)wait)r"   shutdownr   s    r   r   ConcurrentFuturesPool.terminate9   s    D)r   )r"   N)	r   r   r   r   r   r$   r   r   r   r   r   r   r   r   /   s    iK"
*r   r   c              #   b  #    [         (       a;  U (       a4  [        R                  SU 5        [        R                  R                  U S9nOQ[        (       a'  U (       a   [        R                  SU 5        [        U S9nO[        R                  S5        [        5       nUv   UR                  5         g 7f)Nz-creating multiprocessing pool with %i workers)	processesz0creating concurrent futures pool with %i workers)r#   zcreating dummy pool)
_MULTIPROCESSINGloggerinfomultiprocessingpoolPool_CONCURRENT_FUTURESr   r   r   )r2   r7   s     r   create_poolr:   =   sy     ICYO##((9(=		F	R$;)*{
JNNs   B-B/)   )r   
contextlibloggingwarnings	getLoggerr   r4   r9   concurrent.futuresr   ImportErrorwarnr3   multiprocessing.poolr6   objectr   r   contextmanagerr:   r   r   r   <module>rF      s    c   			8	$
  P  M
 *F *  M  PMMNOP  MMMKLMs"   A A< A98A9<BB