§
    (¶Õi÷  ã                   óê  — d dgZ ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddl
mZmZ ddlmZ dZd	Zd
ZdZ ej        ¦   «         Zd„ Zd„ Z G d„ de¦  «        Z G d„ d¦  «        Zd„ Z G d„ de¦  «        Z	 	 d%d„Zd„ Z G d„ de¦  «        Z  G d„ d e!¦  «        Z" G d„ de!¦  «        Z#e#Z$ G d„ de#¦  «        Z% G d „ d!e!¦  «        Z& G d"„ d#e&¦  «        Z' G d$„ de"¦  «        Z(dS )&ÚPoolÚ
ThreadPoolé    Né   )Úutil)Úget_contextÚTimeoutError)ÚwaitÚINITÚRUNÚCLOSEÚ	TERMINATEc                 ó.   — t          t          | Ž ¦  «        S ©N)ÚlistÚmap©Úargss    ú+/usr/lib/python3.11/multiprocessing/pool.pyÚmapstarr   /   s   € Ý•�T�
ÑÔÐó    c                 ó^   — t          t          j        | d         | d         ¦  «        ¦  «        S )Nr   r   )r   Ú	itertoolsÚstarmapr   s    r   Ústarmapstarr   2   s%   € Ý•	Ô! $ q¤'¨4°¬7Ñ3Ô3Ñ4Ô4Ð4r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRemoteTracebackc                 ó   — || _         d S r   ©Útb)Úselfr   s     r   Ú__init__zRemoteTraceback.__init__:   s   € ØˆŒˆˆr   c                 ó   — | j         S r   r   ©r    s    r   Ú__str__zRemoteTraceback.__str__<   s	   € ØŒwˆr   N)Ú__name__Ú
__module__Ú__qualname__r!   r$   © r   r   r   r   9   s2   € € € € € ðð ð ðð ð ð ð r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚExceptionWithTracebackc                 ó˜   — t          j        t          |¦  «        ||¦  «        }d                     |¦  «        }|| _        d|z  | _        d S )NÚ z

"""
%s""")Ú	tracebackÚformat_exceptionÚtypeÚjoinÚexcr   )r    r1   r   s      r   r!   zExceptionWithTraceback.__init__@   sB   € ÝÔ'­¨S©	¬	°3¸Ñ;Ô;ˆØ�WŠW�R‰[Œ[ˆØˆŒØ  2Ñ%ˆŒˆˆr   c                 ó,   — t           | j        | j        ffS r   )Úrebuild_excr1   r   r#   s    r   Ú
__reduce__z!ExceptionWithTraceback.__reduce__E   s   € Ý˜TœX t¤wÐ/Ð/Ð/r   N)r%   r&   r'   r!   r4   r(   r   r   r*   r*   ?   s2   € € € € € ð&ð &ð &ð
0ð 0ð 0ð 0ð 0r   r*   c                 ó.   — t          |¦  «        | _        | S r   )r   Ú	__cause__)r1   r   s     r   r3   r3   H   s   € Ý# BÑ'Ô'€C„MØ€Jr   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚMaybeEncodingErrorzVWraps possible unpickleable errors, so they can be
    safely sent through the socket.c                 ó¾   •— t          |¦  «        | _        t          |¦  «        | _        t          t          | ¦  «                             | j        | j        ¦  «         d S r   )Úreprr1   ÚvalueÚsuperr8   r!   )r    r1   r;   Ú	__class__s      €r   r!   zMaybeEncodingError.__init__T   sH   ø€ Ý˜‘9”9ˆŒÝ˜%‘[”[ˆŒ
ÝÕ  $Ñ'Ô'×0Ò0°´¸4¼:ÑFÔFÐFÐFÐFr   c                 ó(   — d| j         ›d| j        ›d�S )NzError sending result: 'z'. Reason: 'ú')r;   r1   r#   s    r   r$   zMaybeEncodingError.__str__Y   s"   € € Ø=A¼Z¸Z¸ZØ=A¼X¸X¸XðGð 	Gr   c                 ó(   — d| j         j        ›d| ›d�S )Nú<z: ú>)r=   r%   r#   s    r   Ú__repr__zMaybeEncodingError.__repr__]   s   € € Ø!œ^Ô4Ð4Ð4°d°d°dÐ;Ð;r   )r%   r&   r'   Ú__doc__r!   r$   rC   Ú__classcell__©r=   s   @r   r8   r8   P   sh   ø€ € € € € ð'ð 'ðGð Gð Gð Gð Gð
Gð Gð Gð<ð <ð <ð <ð <ð <ð <r   r8   r(   Fc                 ó¸  — |�=t          |t          ¦  «        r|dk    s"t          d                     |¦  «        ¦  «        ‚|j        }| j        }t          | d¦  «        r2| j                             ¦   «          |j	                             ¦   «          |� ||Ž  d}|�
|�r%||k     �r	  |¦   «         }	n+# t          t          f$ r t          j        d¦  «         Y nëw xY w|	€t          j        d¦  «         nÐ|	\  }
}}}}	 d ||i |¤Žf}n;# t          $ r.}|r|t          urt!          ||j        ¦  «        }d|f}Y d }~nd }~ww xY w	  ||
||f¦  «         nT# t          $ rG}t%          ||d         ¦  «        }t          j        d	|z  ¦  «          ||
|d|ff¦  «         Y d }~nd }~ww xY wd x}	x}
x}x}x}}|dz  }|�®|r||k     �°t          j        d
|z  ¦  «         d S )Nr   zMaxtasks {!r} is not validÚ_writerr   z)worker got EOFError or OSError -- exitingzworker got sentinel -- exitingTFz0Possible encoding error while sending result: %szworker exiting after %d tasks)Ú
isinstanceÚintÚAssertionErrorÚformatÚputÚgetÚhasattrrH   ÚcloseÚ_readerÚEOFErrorÚOSErrorr   ÚdebugÚ	ExceptionÚ_helper_reraises_exceptionr*   Ú__traceback__r8   )ÚinqueueÚoutqueueÚinitializerÚinitargsÚmaxtasksÚwrap_exceptionrM   rN   Ú	completedÚtaskÚjobÚiÚfuncr   ÚkwdsÚresultÚeÚwrappeds                     r   Úworkerrg   a   s•  € àÐ¥z°(½CÑ'@Ô'@ÐØ+3°qª=¨=ÝÐ9×@Ò@ÀÑJÔJÑKÔKÐKØ
Œ,€CØ
Œ+€CÝˆw˜	Ñ"Ô"ð !ØŒ×ÒÑÔÐØÔ×ÒÑ Ô Ð àÐØˆ�XÐÐà€IØ
Ð
˜xÑ
¨I¸Ò,@Ñ,@ð	Ø�3‘5”5ˆDˆDøÝ�'Ð"ð 	ð 	ð 	ÝŒJÐBÑCÔCÐCØˆEð	øøøð ˆ<ÝŒJÐ7Ñ8Ô8Ð8Øà#'Ñ ˆˆQ��d˜Dð	 Ø˜D˜D $Ð/¨$Ð/Ð/Ð0ˆFˆFøÝð 	 ð 	 ð 	 Øð ? $Õ.HÐ"HÐ"HÝ*¨1¨a¬oÑ>Ô>�Ø˜Q�ZˆFˆFˆFˆFˆFˆFøøøøð	 øøøð	,ØˆC��a˜Ð Ñ!Ô!Ð!Ð!øÝð 	,ð 	,ð 	,Ý(¨¨F°1¬IÑ6Ô6ˆGÝŒJÐIØññ ô ð àˆC��a˜% Ð)Ð*Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+øøøøð		,øøøð 48Ð7ˆÐ7ˆsÐ7�VÐ7˜dÐ7 T¨DØ�Q‰ˆ	ð7 Ñ
˜xÐ
¨I¸Ò,@Ñ,@õ8 	„JÐ.°Ñ:Ñ;Ô;Ð;Ð;Ð;sB   Â&
B1 Â1%CÃCÃ<
D Ä
D?Ä$D:Ä:D?ÅE Å
F#Å=FÆF#c                 ó   — | ‚)z@Pickle-able helper function for use by _guarded_task_generation.r(   )Úexs    r   rV   rV   Ž   s   € à
€Hr   c                   ó2   ‡ — e Zd ZdZddœˆ fd„
Zˆ fd„Zˆ xZS )Ú
_PoolCachezò
    Class that implements a cache for the Pool class that will notify
    the pool management threads every time the cache is emptied. The
    notification is done by the use of a queue that is provided when
    instantiating the cache.
    N©Únotifierc               óH   •— || _          t          ¦   «         j        |i |¤Ž d S r   )rm   r<   r!   )r    rm   r   rc   r=   s       €r   r!   z_PoolCache.__init__�   s,   ø€ Ø ˆŒØ�‰ŒÔ˜$Ð' $Ð'Ð'Ð'Ð'Ð'r   c                 ó†   •— t          ¦   «                              |¦  «         | s| j                             d ¦  «         d S d S r   )r<   Ú__delitem__rm   rM   )r    Úitemr=   s     €r   rp   z_PoolCache.__delitem__¡   sK   ø€ Ý‰Œ×Ò˜DÑ!Ô!Ð!ð ð 	$ØŒM×Ò˜dÑ#Ô#Ð#Ð#Ð#ð	$ð 	$r   )r%   r&   r'   rD   r!   rp   rE   rF   s   @r   rk   rk   –   sj   ø€ € € € € ðð ð +/ð (ð (ð (ð (ð (ð (ð (ð
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$r   rk   c                   óê  — e Zd ZdZdZed„ ¦   «         Z	 	 d)d„Zej	        e
fd„Zd„ Zd	„ Zed
„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zdi fd„Zd*d„Zd*d„Z	 	 d+d„Zd„ Zd,d„Zd,d„Zdi ddfd„Z	 	 d+d„Z	 	 d+d„Zed*d„¦   «         Ze d„ ¦   «         Z!ed„ ¦   «         Z"ed„ ¦   «         Z#ed „ ¦   «         Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(ed%„ ¦   «         Z)e d&„ ¦   «         Z*d'„ Z+d(„ Z,dS )-r   zS
    Class which supports an async version of applying functions to arguments.
    Tc                 ó   —  | j         |i |¤ŽS r   ©ÚProcess)Úctxr   rc   s      r   ru   zPool.Process³   s   € àˆsŒ{˜DÐ) DÐ)Ð)Ð)r   Nr(   c                 ó&  — g | _         t          | _        |pt          ¦   «         | _        |                      ¦   «          t          j        ¦   «         | _        | j                             ¦   «         | _	        t          | j	        ¬¦  «        | _        || _        || _        || _        |€t          j        ¦   «         pd}|dk     rt#          d¦  «        ‚|�*t%          |t&          ¦  «        r|dk    rt#          d¦  «        ‚|�t)          |¦  «        st+          d¦  «        ‚|| _        	 |                      ¦   «          nR# t0          $ rE | j         D ]}|j        €|                     ¦   «          Œ| j         D ]}|                     ¦   «          Œ‚ w xY w|                      ¦   «         }t;          j        t>          j         | j        | j        | j        | j!        | j        | j         | j"        | j#        | j        | j        | j        | j$        || j	        f¬¦  «        | _%        d| j%        _&        tN          | j%        _        | j%         (                    ¦   «          t;          j        t>          j)        | j        | j*        | j#        | j         | j        f¬¦  «        | _+        d| j+        _&        tN          | j+        _        | j+         (                    ¦   «          t;          j        t>          j,        | j#        | j-        | j        f¬¦  «        | _.        d| j.        _&        tN          | j.        _        | j.         (                    ¦   «          t_          j0        | | j1        | j        | j"        | j#        | j         | j	        | j%        | j+        | j.        | j        f	d	¬
¦  «        | _2        tN          | _        d S )Nrl   r   z&Number of processes must be at least 1r   z/maxtasksperchild must be a positive int or Nonezinitializer must be a callable©Útargetr   Té   )r   Úexitpriority)3Ú_poolr
   Ú_stater   Ú_ctxÚ_setup_queuesÚqueueÚSimpleQueueÚ
_taskqueueÚ_change_notifierrk   Ú_cacheÚ_maxtasksperchildÚ_initializerÚ	_initargsÚosÚ	cpu_countÚ
ValueErrorrI   rJ   ÚcallableÚ	TypeErrorÚ
_processesÚ_repopulate_poolrU   ÚexitcodeÚ	terminater0   Ú_get_sentinelsÚ	threadingÚThreadr   Ú_handle_workersru   Ú_inqueueÚ	_outqueueÚ_wrap_exceptionÚ_worker_handlerÚdaemonr   ÚstartÚ_handle_tasksÚ
_quick_putÚ_task_handlerÚ_handle_resultsÚ
_quick_getÚ_result_handlerr   ÚFinalizeÚ_terminate_poolÚ
_terminate)r    Ú	processesrZ   r[   ÚmaxtasksperchildÚcontextÚpÚ	sentinelss           r   r!   zPool.__init__·   s_  € ð ˆŒ
ÝˆŒàÐ,�{™}œ}ˆŒ	Ø×ÒÑÔÐÝÔ+Ñ-Ô-ˆŒð !%¤	× 5Ò 5Ñ 7Ô 7ˆÔÝ ¨$Ô*?Ð@Ñ@Ô@ˆŒØ!1ˆÔØ'ˆÔØ!ˆŒàÐÝœ™œÐ+¨!ˆIØ�qŠ=ˆ=ÝÐEÑFÔFÐFØÐ'ÝÐ.µÑ4Ô4ð TÐ8HÈAÒ8MÐ8MÝ Ð!RÑSÔSÐSàÐ"­8°KÑ+@Ô+@Ð"ÝÐ<Ñ=Ô=Ð=à#ˆŒð	Ø×!Ò!Ñ#Ô#Ð#Ð#øÝð 	ð 	ð 	Ø”Zð "ð "�Ø”:Ð%Ø—K’K‘M”M�MøØ”Zð ð �Ø—’‘”��Øð	øøøð ×'Ò'Ñ)Ô)ˆ	å(Ô/ÝÔ'Ø”+˜tœ°´	¸4¼<Ø”/ 4¤:¨t¬}¸d¼nØÔ# T¤^°TÔ5KØÔ&¨	°4Ô3HðJð ñ  ô  ˆÔð '+ˆÔÔ#Ý&)ˆÔÔ#ØÔ×"Ò"Ñ$Ô$Ð$õ 'Ô-ÝÔ%Ø”/ 4¤?°D´NØ”*˜dœkð+ðñ ô ˆÔð
 %)ˆÔÔ!Ý$'ˆÔÔ!ØÔ× Ò Ñ"Ô"Ð"å(Ô/ÝÔ'Ø”. $¤/°4´;Ð?ð ñ  ô  ˆÔð '+ˆÔÔ#Ý&)ˆÔÔ#ØÔ×"Ò"Ñ$Ô$Ð$åœ-Ø�$Ô&Ø”/ 4¤=°$´.À$Ä*ØÔ'¨Ô)=¸tÔ?QØÔ&¨¬ð5ð ðñ ô ˆŒõ ˆŒˆˆs   Ä"D7 Ä7AFc                 ó¦   — | j         |k    rC |d| ›�t          | ¬¦  «         t          | dd ¦  «        �| j                             d ¦  «         d S d S d S )Nz&unclosed running multiprocessing pool )Úsourcerƒ   )r}   ÚResourceWarningÚgetattrrƒ   rM   )r    Ú_warnr   s      r   Ú__del__zPool.__del__
  sy   € ØŒ;˜#ÒÐØˆEÐC¸4ÐCÐCÝ!¨$ð0ñ 0ô 0ð 0å�tÐ/°Ñ6Ô6ÐBØÔ%×)Ò)¨$Ñ/Ô/Ð/Ð/Ð/ð	 Ðð CÐBr   c           
      óp   — | j         }d|j        › d|j        › d| j        › dt	          | j        ¦  «        › d�	S )NrA   ú.z state=z pool_size=rB   )r=   r&   r'   r}   Úlenr|   )r    Úclss     r   rC   zPool.__repr__  sY   € ØŒnˆð0�C”Nð 0ð 0 SÔ%5ð 0ð 0Øœð0ð 0å  ¤™_œ_ð0ð 0ð 0ð 	1r   c                 óB   — | j         j        g}| j        j        g}g |¢|¢S r   )r–   rQ   rƒ   )r    Útask_queue_sentinelsÚself_notifier_sentinelss      r   r‘   zPool._get_sentinels  s1   € Ø $¤Ô 6Ð7ÐØ#'Ô#8Ô#@Ð"AÐØ@Ð%Ð@Ð(?Ð@Ð@r   c                 ó   — d„ | D ¦   «         S )Nc                 ó<   — g | ]}t          |d ¦  «        ¯|j        ‘ŒS )Úsentinel)rO   r¸   )Ú.0rg   s     r   ú
<listcomp>z.Pool._get_worker_sentinels.<locals>.<listcomp>  s8   € ð 8ð 8ð 8 FÝ" 6¨:Ñ6Ô6ð8�”ð 8ð 8ð 8r   r(   ©Úworkerss    r   Ú_get_worker_sentinelszPool._get_worker_sentinels  s#   € ð8ð 8Øð8ñ 8ô 8ð 	8r   c                 óà   — d}t          t          t          | ¦  «        ¦  «        ¦  «        D ]A}| |         }|j        �0t	          j        d|z  ¦  «         |                     ¦   «          d}| |= ŒB|S )z�Cleanup after any worker processes which have exited due to reaching
        their specified lifetime.  Returns True if any workers were cleaned up.
        FNúcleaning up worker %dT)ÚreversedÚranger±   r�   r   rT   r0   )ÚpoolÚcleanedra   rg   s       r   Ú_join_exited_workerszPool._join_exited_workers!  st   € ð
 ˆÝ�%¥ D¡	¤	Ñ*Ô*Ñ+Ô+ð 	ð 	ˆAØ˜!”WˆFØŒÐ*å”
Ð2°QÑ6Ñ7Ô7Ð7Ø—’‘”�Ø�Ø˜�GøØˆr   c                 ó¢   — |                       | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        ¦
  «
        S r   )Ú_repopulate_pool_staticr~   ru   r�   r|   r•   r–   r†   r‡   r…   r—   r#   s    r   rŽ   zPool._repopulate_pool1  sN   € Ø×+Ò+¨D¬I°t´|Ø,0¬OØ,0¬J¸¼Ø,0¬N¸DÔ<MØ,0¬NØ,0Ô,BØ,0Ô,@ñBô Bð 	Br   c
                 óD  — t          |t          |¦  «        z
  ¦  «        D ]}
 || t          ||||||	f¬¦  «        }|j                             dd¦  «        |_        d|_        |                     ¦   «          |                     |¦  «         t          j	        d¦  «         Œ€dS )z€Bring the number of pool processes up to the specified number,
        for use after reaping workers which have exited.
        rx   ru   Ú
PoolWorkerTzadded workerN)
rÁ   r±   rg   ÚnameÚreplacer™   rš   Úappendr   rT   )rv   ru   r¤   rÂ   rX   rY   rZ   r[   r¥   r]   ra   Úws               r   rÆ   zPool._repopulate_pool_static:  s¯   € õ �y¥3 t¡9¤9Ñ,Ñ-Ô-ð 
	'ð 
	'ˆAØ�˜¥FØ% xØ)Ø&Ð(8Ø,ð.ð/ñ /ô /ˆAð
 ”V—^’^ I¨|Ñ<Ô<ˆAŒFØˆAŒHØ�GŠG‰IŒIˆIØ�KŠK˜‰NŒNˆNÝŒJ�~Ñ&Ô&Ð&Ð&ð
	'ð 
	'r   c
                 ó„   — t                                |¦  «        r%t                                | |||||||||	¦
  «
         dS dS )zEClean up any exited workers and start replacements for them.
        N)r   rÄ   rÆ   )
rv   ru   r¤   rÂ   rX   rY   rZ   r[   r¥   r]   s
             r   Ú_maintain_poolzPool._maintain_poolM  s^   € õ ×$Ò$ TÑ*Ô*ð 	9Ý×(Ò(¨¨g°yÀ$Ø)0°(¸KØ)1Ð3CØ)7ñ9ô 9ð 9ð 9ð 9ð	9ð 	9r   c                 óÖ   — | j                              ¦   «         | _        | j                              ¦   «         | _        | j        j        j        | _        | j        j        j        | _	        d S r   )
r~   r�   r•   r–   rH   Úsendrœ   rQ   ÚrecvrŸ   r#   s    r   r   zPool._setup_queuesY  sN   € Øœ	×-Ò-Ñ/Ô/ˆŒØœ×.Ò.Ñ0Ô0ˆŒØœ-Ô/Ô4ˆŒØœ.Ô0Ô5ˆŒˆˆr   c                 óD   — | j         t          k    rt          d¦  «        ‚d S )NzPool not running)r}   r   rŠ   r#   s    r   Ú_check_runningzPool._check_running_  s&   € ØŒ;�#ÒÐÝÐ/Ñ0Ô0Ð0ð Ðr   c                 óT   — |                       |||¦  «                             ¦   «         S )zT
        Equivalent of `func(*args, **kwds)`.
        Pool must be running.
        )Úapply_asyncrN   )r    rb   r   rc   s       r   Úapplyz
Pool.applyc  s(   € ð
 ×Ò  d¨DÑ1Ô1×5Ò5Ñ7Ô7Ð7r   c                 ó`   — |                       ||t          |¦  «                             ¦   «         S )zx
        Apply `func` to each element in `iterable`, collecting the results
        in a list that is returned.
        )Ú
_map_asyncr   rN   ©r    rb   ÚiterableÚ	chunksizes       r   r   zPool.mapj  s(   € ð
 �Š˜t X­w¸	ÑBÔB×FÒFÑHÔHÐHr   c                 ó`   — |                       ||t          |¦  «                             ¦   «         S )zÌ
        Like `map()` method but the elements of the `iterable` are expected to
        be iterables as well and will be unpacked as arguments. Hence
        `func` and (a, b) becomes func(a, b).
        )rØ   r   rN   rÙ   s       r   r   zPool.starmapq  s(   € ð �Š˜t X­{¸IÑFÔF×JÒJÑLÔLÐLr   c                 ó@   — |                       ||t          |||¦  «        S )z=
        Asynchronous version of `starmap()` method.
        )rØ   r   ©r    rb   rÚ   rÛ   ÚcallbackÚerror_callbacks         r   Ústarmap_asynczPool.starmap_asyncy  s'   € ð
 �Š˜t X­{¸IØ'¨ñ9ô 9ð 	9r   c              #   ó¢   K  — 	 d}t          |¦  «        D ]\  }}||||fi fV — ŒdS # t          $ r}||dz   t          |fi fV — Y d}~dS d}~ww xY w)zšProvides a generator of tasks for imap and imap_unordered with
        appropriate handling for iterables which throw exceptions during
        iteration.éÿÿÿÿr   N)Ú	enumeraterU   rV   )r    Ú
result_jobrb   rÚ   ra   Úxre   s          r   Ú_guarded_task_generationzPool._guarded_task_generation�  s¥   è è € ð	JØˆAÝ! (Ñ+Ô+ð 6ð 6‘��1Ø! 1 d¨Q¨D°"Ð5Ð5Ð5Ð5Ð5ð6ð 6øåð 	Jð 	Jð 	JØ˜q ™sÕ$>ÀÀÀbÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIøøøøð	Jøøøs   „!' §
A±A	Á	Ar   c                 ó  — |                       ¦   «          |dk    rLt          | ¦  «        }| j                             |                      |j        ||¦  «        |j        f¦  «         |S |dk     r"t          d                     |¦  «        ¦  «        ‚t           
                    |||¦  «        }t          | ¦  «        }| j                             |                      |j        t          |¦  «        |j        f¦  «         d„ |D ¦   «         S )zP
        Equivalent of `map()` -- can be MUCH slower than `Pool.map()`.
        r   zChunksize must be 1+, not {0:n}c              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r   r(   ©r¹   Úchunkrq   s      r   ú	<genexpr>zPool.imap.<locals>.<genexpr>§  ó/   è è € Ð?Ð?˜U¸Ð?Ð?°�DÐ?Ð?Ð?Ð?Ð?Ð?Ð?r   )rÓ   ÚIMapIteratorr‚   rM   rç   Ú_jobÚ_set_lengthrŠ   rL   r   Ú
_get_tasksr   ©r    rb   rÚ   rÛ   rd   Útask_batchess         r   Úimapz	Pool.imapŒ  s!  € ð 	×ÒÑÔÐØ˜Š>ˆ>Ý! $Ñ'Ô'ˆFØŒO×Òà×1Ò1°&´+¸tÀXÑNÔNØÔ&ðñô ð ð
 ˆMà˜1Š}ˆ}Ý Ø5×<Ò<Ø!ñ#ô #ñ$ô $ð $õ  Ÿ?š?¨4°¸9ÑEÔEˆLÝ! $Ñ'Ô'ˆFØŒO×Òà×1Ò1°&´+Ý29Ø2>ñ@ô @ð Ô&ð	ñô ð ð @Ð? fÐ?Ñ?Ô?Ð?r   c                 ó  — |                       ¦   «          |dk    rLt          | ¦  «        }| j                             |                      |j        ||¦  «        |j        f¦  «         |S |dk     r"t          d                     |¦  «        ¦  «        ‚t           
                    |||¦  «        }t          | ¦  «        }| j                             |                      |j        t          |¦  «        |j        f¦  «         d„ |D ¦   «         S )zL
        Like `imap()` method but ordering of results is arbitrary.
        r   zChunksize must be 1+, not {0!r}c              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r   r(   rê   s      r   rì   z&Pool.imap_unordered.<locals>.<genexpr>Ã  rí   r   )rÓ   ÚIMapUnorderedIteratorr‚   rM   rç   rï   rð   rŠ   rL   r   rñ   r   rò   s         r   Úimap_unorderedzPool.imap_unordered©  s  € ð 	×ÒÑÔÐØ˜Š>ˆ>Ý*¨4Ñ0Ô0ˆFØŒO×Òà×1Ò1°&´+¸tÀXÑNÔNØÔ&ðñô ð ð
 ˆMà˜1Š}ˆ}Ý Ø5×<Ò<¸YÑGÔGñIô Ið IåŸ?š?¨4°¸9ÑEÔEˆLÝ*¨4Ñ0Ô0ˆFØŒO×Òà×1Ò1°&´+Ý29Ø2>ñ@ô @ð Ô&ð	ñô ð ð @Ð? fÐ?Ñ?Ô?Ð?r   c                 óž   — |                       ¦   «          t          | ||¦  «        }| j                             |j        d|||fgdf¦  «         |S )z;
        Asynchronous version of `apply()` method.
        r   N)rÓ   ÚApplyResultr‚   rM   rï   )r    rb   r   rc   rß   rà   rd   s          r   rÕ   zPool.apply_asyncÅ  sW   € ð
 	×ÒÑÔÐÝ˜T 8¨^Ñ<Ô<ˆØŒ×Ò˜vœ{¨A¨t°T¸4Ð@ÐAÀ4ÐHÑIÔIÐIØˆr   c                 ó@   — |                       ||t          |||¦  «        S )z9
        Asynchronous version of `map()` method.
        )rØ   r   rÞ   s         r   Ú	map_asynczPool.map_asyncÏ  s'   € ð
 �Š˜t X­w¸	À8Øñô ð 	r   c                 óø  — |                       ¦   «          t          |d¦  «        st          |¦  «        }|€<t          t	          |¦  «        t	          | j        ¦  «        dz  ¦  «        \  }}|r|dz  }t	          |¦  «        dk    rd}t                               |||¦  «        }t          | |t	          |¦  «        ||¬¦  «        }	| j	         
                    |                      |	j        ||¦  «        df¦  «         |	S )zY
        Helper function to implement map, starmap and their async counterparts.
        Ú__len__Né   r   r   ©rà   )rÓ   rO   r   Údivmodr±   r|   r   rñ   Ú	MapResultr‚   rM   rç   rï   )
r    rb   rÚ   ÚmapperrÛ   rß   rà   Úextraró   rd   s
             r   rØ   zPool._map_async×  s	  € ð
 	×ÒÑÔÐÝ�x Ñ+Ô+ð 	&Ý˜H‘~”~ˆHàÐÝ%¥c¨(¡m¤mµS¸¼±_´_ÀqÑ5HÑIÔIÑˆI�uØð Ø˜Q‘�	Ýˆx‰=Œ=˜AÒÐØˆIå—’ t¨X°yÑAÔAˆÝ˜4 ­C°©M¬M¸8Ø*8ð:ñ :ô :ˆàŒ×Òà×-Ò-¨f¬kØ.4Ø.:ñ<ô <ð ð	ñ	
ô 	
ð 	
ð ˆr   c                 ó¤   — t          | |¬¦  «         |                     ¦   «         s*|                     ¦   «          |                     ¦   «         ¯(d S d S )N)Útimeout)r	   ÚemptyrN   )r¨   Úchange_notifierr  s      r   Ú_wait_for_updateszPool._wait_for_updatesô  se   € åˆY Ð(Ñ(Ô(Ð(Ø!×'Ò'Ñ)Ô)ð 	"Ø×ÒÑ!Ô!Ð!ð "×'Ò'Ñ)Ô)ð 	"ð 	"ð 	"ð 	"ð 	"r   c                 ó   — t          j        ¦   «         }|j        t          k    s|r|j        t          k    ro|                      |||||||	|
||¦
  «
         g |                      |¦  «        ¢|¢}|                      ||¦  «         |j        t          k    °]|r|j        t          k    °o|                     d ¦  «         t          j
        d¦  «         d S )Nzworker handler exiting)r’   Úcurrent_threadr}   r   r   rÎ   r½   r	  rM   r   rT   )r²   ÚcacheÚ	taskqueuerv   ru   r¤   rÂ   rX   rY   rZ   r[   r¥   r]   r¨   r  ÚthreadÚcurrent_sentinelss                    r   r”   zPool._handle_workersú  sæ   € õ
 Ô)Ñ+Ô+ˆð Œm�sÒ"Ð" uÐ"°´Å)Ò1KÐ1KØ×Ò˜s G¨Y¸¸gØ'¨°hØ/°ñAô Að Að !O #×";Ò";¸DÑ"AÔ"AÐ NÀIÐ NÐà×!Ò!Ð"3°_ÑEÔEÐEð Œm�sÒ"Ð" uÐ"°´Å)Ò1KÐ1Kð 	�Š�dÑÔÐÝŒ
Ð+Ñ,Ô,Ð,Ð,Ð,r   c                 óJ  — t          j        ¦   «         }t          | j        d ¦  «        D ]Þ\  }}d }	 |D ]ˆ}|j        t
          k    rt          j        d¦  «          n™	  ||¦  «         Œ5# t          $ rG}	|d d…         \  }
}	 ||
          	                    |d|	f¦  «         n# t          $ r Y nw xY wY d }	~	Œ�d }	~	ww xY w|r.t          j        d¦  «         |r|d         nd} ||dz   ¦  «         	 d x}x}}
ŒË	 d x}x}}
 n# d x}x}}
w xY wt          j        d¦  «         	 t          j        d¦  «         |                     d ¦  «         t          j        d	¦  «         |D ]} |d ¦  «         Œn$# t          $ r t          j        d
¦  «         Y nw xY wt          j        d¦  «         d S )Nz'task handler found thread._state != RUNé   Fzdoing set_length()r   rã   ztask handler got sentinelz/task handler sending sentinel to result handlerz(task handler sending sentinel to workersz/task handler got OSError when sending sentinelsztask handler exiting)r’   r  ÚiterrN   r}   r   r   rT   rU   Ú_setÚKeyErrorrM   rS   )r  rM   rY   rÂ   r  r  ÚtaskseqÚ
set_lengthr_   re   r`   Úidxr§   s                r   r›   zPool._handle_tasks  sB  € åÔ)Ñ+Ô+ˆå#'¨	¬°tÑ#<Ô#<ð 	4ð 	4ÑˆG�ZØˆDð,à#ð ð �DØ”}­Ò+Ð+Ýœ
Ð#LÑMÔMÐMØ˜ð!Ø˜˜D™	œ	˜	˜	øÝ$ð !ð !ð !Ø#'¨¨¨¤8™˜˜Sð!Ø! #œJŸOšO¨C°%¸°Ñ<Ô<Ð<Ð<øÝ'ð !ð !ð !Ø ˜Dð!øøøøøøøøøøøøð	!øøøð "ð ,Ýœ
Ð#7Ñ8Ô8Ð8Ø)-Ð5˜d 1œg˜g°2˜Ø"˜
 3¨¡7Ñ+Ô+Ð+Øð (,Ð+�Ð+�w  ð à'+Ð+�Ð+�w   ø tÐ+�Ð+�w Ð+Ð+Ð+Ð+åŒJÐ2Ñ3Ô3Ð3ð
	JåŒJÐHÑIÔIÐIØ�LŠL˜ÑÔÐõ ŒJÐAÑBÔBÐBØð ð �Ø��D‘	”	�	�	ðøåð 	Jð 	Jð 	JÝŒJÐHÑIÔIÐIÐIÐIð	Jøøøõ 	Œ
Ð)Ñ*Ô*Ð*Ð*Ð*sl   ±*C=ÁA(Á'C=Á(
B9Á2B4Â BÂB4Â
B,	Â)B4Â+B,	Â,B4Â/C=Â4B9Â93C=Ã=DÄAE+ Å+FÆFc                 óR  — t          j        ¦   «         }	 	  |¦   «         }n,# t          t          f$ r t	          j        d¦  «         Y d S w xY w|j        t          k    r/|j        t          k    s
J d¦   «         ‚t	          j        d¦  «         nR|€t	          j        d¦  «         n;|\  }}}	 ||          	                    ||¦  «         n# t          $ r Y nw xY wd x}x}}ŒÉ|r«|j        t          k    r›	  |¦   «         }n,# t          t          f$ r t	          j        d¦  «         Y d S w xY w|€t	          j        d¦  «         Œa|\  }}}	 ||          	                    ||¦  «         n# t          $ r Y nw xY wd x}x}}|r|j        t          k    °›t          | d¦  «        rdt	          j        d¦  «         	 t          d	¦  «        D ]'}| j                             ¦   «         s n |¦   «          Œ(n# t          t          f$ r Y nw xY wt	          j        d
t          |¦  «        |j        ¦  «         d S )Nr   z.result handler got EOFError/OSError -- exitingzThread not in TERMINATEz,result handler found thread._state=TERMINATEzresult handler got sentinelz&result handler ignoring extra sentinelrQ   z"ensuring that outqueue is not fullé
   z7result handler exiting: len(cache)=%s, thread._state=%s)r’   r  rS   rR   r   rT   r}   r   r   r  r  rO   rÁ   rQ   Úpollr±   )rY   rN   r  r  r_   r`   ra   Úobjs           r   rž   zPool._handle_results=  s¿  € åÔ)Ñ+Ô+ˆð	$ðØ�s‘u”u��øÝ�XÐ&ð ð ð Ý”
ÐKÑLÔLÐLØ��ðøøøð Œ}¥Ò#Ð#Ø”}­	Ò1Ð1Ð1Ð3LÑ1Ô1Ð1Ý”
ÐIÑJÔJÐJØàˆ|Ý”
Ð8Ñ9Ô9Ð9Øà‰KˆC��CðØ�c”
—’  3Ñ'Ô'Ð'Ð'øÝð ð ð Ø�ðøøøà#Ð#ˆDÐ#�3˜ð+	$ð. ð 	$˜œ­Ò2Ð2ðØ�s‘u”u��øÝ�XÐ&ð ð ð Ý”
ÐKÑLÔLÐLØ��ðøøøð ˆ|Ý”
ÐCÑDÔDÐDØØ‰KˆC��CðØ�c”
—’  3Ñ'Ô'Ð'Ð'øÝð ð ð Ø�ðøøøà#Ð#ˆDÐ#�3˜ð ð 	$˜œ­Ò2Ð2õ" �8˜YÑ'Ô'ð 	ÝŒJÐ;Ñ<Ô<Ð<ðÝ˜r™œð ð �AØ#Ô+×0Ò0Ñ2Ô2ð Ø˜Ø�C‘E”E�E�EøøÝ�XÐ&ð ð ð Ø�ðøøøõ 	Œ
ÐLÝ�%‰jŒj˜&œ-ñ	)ô 	)ð 	)ð 	)ð 	)sW   –
! ¡%A
Á	A
Â*C Ã
CÃCÃ1
C< Ã<%D%Ä$D%ÅE# Å#
E0Å/E0Æ07G( Ç(G<Ç;G<c              #   ó€   K  — t          |¦  «        }	 t          t          j        ||¦  «        ¦  «        }|sd S | |fV — Œ-r   )r  Útupler   Úislice)rb   ÚitÚsizeræ   s       r   rñ   zPool._get_tasksy  sO   è è € å�"‰XŒXˆð	Ý•iÔ& r¨4Ñ0Ô0Ñ1Ô1ˆAØð Ø�Ø˜�)ˆOˆOˆOð		r   c                 ó    — t          d¦  «        ‚)Nz:pool objects cannot be passed between processes or pickled)ÚNotImplementedErrorr#   s    r   r4   zPool.__reduce__‚  s   € Ý!ØJñô ð 	r   c                 óÀ   — t          j        d¦  «         | j        t          k    r9t          | _        t          | j        _        | j                             d ¦  «         d S d S )Nzclosing pool)r   rT   r}   r   r   r˜   rƒ   rM   r#   s    r   rP   z
Pool.close‡  sV   € ÝŒ
�>Ñ"Ô"Ð"ØŒ;�#ÒÐÝˆDŒKÝ*/ˆDÔ Ô'ØÔ!×%Ò% dÑ+Ô+Ð+Ð+Ð+ð Ðr   c                 ón   — t          j        d¦  «         t          | _        |                      ¦   «          d S )Nzterminating pool)r   rT   r   r}   r£   r#   s    r   r�   zPool.terminateŽ  s0   € ÝŒ
Ð%Ñ&Ô&Ð&ÝˆŒØ�ŠÑÔÐÐÐr   c                 ó†  — t          j        d¦  «         | j        t          k    rt	          d¦  «        ‚| j        t
          t          fvrt	          d¦  «        ‚| j                             ¦   «          | j	                             ¦   «          | j
                             ¦   «          | j        D ]}|                     ¦   «          Œd S )Nzjoining poolzPool is still runningzIn unknown state)r   rT   r}   r   rŠ   r   r   r˜   r0   r�   r    r|   )r    r§   s     r   r0   z	Pool.join“  s¸   € ÝŒ
�>Ñ"Ô"Ð"ØŒ;�#ÒÐÝÐ4Ñ5Ô5Ð5ØŒ[¥­	Ð 2Ð2Ð2ÝÐ/Ñ0Ô0Ð0ØÔ×!Ò!Ñ#Ô#Ð#ØÔ×ÒÑ!Ô!Ð!ØÔ×!Ò!Ñ#Ô#Ð#Ø”ð 	ð 	ˆAØ�FŠF‰HŒHˆHˆHð	ð 	r   c                 óz  — t          j        d¦  «         | j                             ¦   «          |                     ¦   «         ru| j                             ¦   «         r`| j                             ¦   «          t          j	        d¦  «         |                     ¦   «         r| j                             ¦   «         °Zd S d S d S d S )Nz7removing tasks from inqueue until task handler finishedr   )
r   rT   Ú_rlockÚacquireÚis_aliverQ   r  rÑ   ÚtimeÚsleep)rX   Útask_handlerr   s      r   Ú_help_stuff_finishzPool._help_stuff_finishŸ  sÆ   € õ 	Œ
ÐLÑMÔMÐMØŒ×ÒÑ Ô Ð Ø×#Ò#Ñ%Ô%ð 	¨'¬/×*>Ò*>Ñ*@Ô*@ð 	ØŒO× Ò Ñ"Ô"Ð"ÝŒJ�q‰MŒMˆMð ×#Ò#Ñ%Ô%ð 	¨'¬/×*>Ò*>Ñ*@Ô*@ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r   c
                 óÈ  — t          j        d¦  «         t          |_        |                     d ¦  «         t          |_        t          j        d¦  «         |                      ||t          |¦  «        ¦  «         |                     ¦   «         s"t          |	¦  «        dk    rt          d¦  «        ‚t          |_        |                     d ¦  «         |                     d ¦  «         t          j        d¦  «         t          j
        ¦   «         |ur|                     ¦   «          |rJt          |d         d¦  «        r4t          j        d¦  «         |D ]}
|
j        €|
                     ¦   «          Œt          j        d¦  «         t          j
        ¦   «         |ur|                     ¦   «          t          j        d	¦  «         t          j
        ¦   «         |ur|                     ¦   «          |rst          |d         d¦  «        r_t          j        d
¦  «         |D ]J}
|
                     ¦   «         r0t          j        d|
j        z  ¦  «         |
                     ¦   «          ŒGd S d S d S )Nzfinalizing poolz&helping task handler/workers to finishr   z.Cannot have cache with result_hander not alivezjoining worker handlerr�   zterminating workerszjoining task handlerzjoining result handlerzjoining pool workersr¿   )r   rT   r   r}   rM   r-  r±   r)  rK   r’   r  r0   rO   r�   r�   Úpid)r²   r  rX   rY   rÂ   r  Úworker_handlerr,  Úresult_handlerr  r§   s              r   r¢   zPool._terminate_pool¨  sb  € õ 	Œ
Ð$Ñ%Ô%Ð%õ
 !*ˆÔØ×Ò˜DÑ!Ô!Ð!å'ˆÔåŒ
Ð;Ñ<Ô<Ð<Ø×Ò˜w¨µc¸$±i´iÑ@Ô@Ð@à×'Ò'Ñ)Ô)ð 	Bµ°E±
´
¸a²°Ý Ø@ñBô Bð Bõ !*ˆÔØ×Ò˜DÑ!Ô!Ð!Ø�Š�TÑÔÐõ 	Œ
Ð+Ñ,Ô,Ð,ÝÔ#Ñ%Ô%¨^Ð;Ð;Ø×ÒÑ!Ô!Ð!ð ð 	"•G˜D œG [Ñ1Ô1ð 	"ÝŒJÐ,Ñ-Ô-Ð-Øð "ð "�Ø”:Ð%Ø—K’K‘M”M�MøåŒ
Ð)Ñ*Ô*Ð*ÝÔ#Ñ%Ô%¨\Ð9Ð9Ø×ÒÑÔÐåŒ
Ð+Ñ,Ô,Ð,ÝÔ#Ñ%Ô%¨^Ð;Ð;Ø×ÒÑ!Ô!Ð!àð 	•G˜D œG [Ñ1Ô1ð 	ÝŒJÐ-Ñ.Ô.Ð.Øð ð �Ø—:’:‘<”<ð å”JÐ6¸¼Ñ>Ñ?Ô?Ð?Ø—F’F‘H”H�Høð	ð 	ð 	ð 	ðð r   c                 ó.   — |                       ¦   «          | S r   )rÓ   r#   s    r   Ú	__enter__zPool.__enter__Þ  s   € Ø×ÒÑÔÐØˆr   c                 ó.   — |                       ¦   «          d S r   )r�   )r    Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zPool.__exit__â  s   € Ø�ŠÑÔÐÐÐr   )NNr(   NNr   )NNN)r   )-r%   r&   r'   rD   r—   Ústaticmethodru   r!   ÚwarningsÚwarnr   r®   rC   r‘   r½   rÄ   rŽ   rÆ   rÎ   r   rÓ   rÖ   r   r   rá   rç   rô   rø   rÕ   rü   rØ   r	  Úclassmethodr”   r›   rž   rñ   r4   rP   r�   r0   r-  r¢   r3  r8  r(   r   r   r   r   ­   sa  € € € € € ðð ð €Oàð*ð *ñ „\ð*ð CEØ04ðOð Oð Oð Oðf %œM¨sð 0ð 0ð 0ð 0ð1ð 1ð 1ðAð Að Að
 ð8ð 8ñ „\ð8ð ðð ñ „\ððBð Bð Bð ð'ð 'ñ „\ð'ð$ ð	9ð 	9ñ „\ð	9ð6ð 6ð 6ð1ð 1ð 1ð  "¨ð 8ð 8ð 8ð 8ðIð Ið Ið IðMð Mð Mð Mð FJØð9ð 9ð 9ð 9ð	Jð 	Jð 	Jð@ð @ð @ð @ð:@ð @ð @ð @ð8 &(¨b¸4Øðð ð ð ð BFØðð ð ð ð KOØðð ð ð ð: ð"ð "ð "ñ „\ð"ð
 ð-ð -ñ „[ð-ð( ð++ð ++ñ „\ð++ðZ ð9)ð 9)ñ „\ð9)ðv ðð ñ „\ððð ð ð
,ð ,ð ,ðð ð ð

ð 
ð 
ð ðð ñ „\ðð ð3ð 3ñ „[ð3ðjð ð ðð ð ð ð r   c                   óV   — e Zd Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Z e	e
j        ¦  «        ZdS )	rú   c                 óÈ   — || _         t          j        ¦   «         | _        t	          t
          ¦  «        | _        |j        | _        || _        || _	        | | j        | j        <   d S r   )
r|   r’   ÚEventÚ_eventÚnextÚjob_counterrï   r„   Ú	_callbackÚ_error_callback)r    rÂ   rß   rà   s       r   r!   zApplyResult.__init__ë  sS   € ØˆŒ
Ý”oÑ'Ô'ˆŒÝ�Ñ%Ô%ˆŒ	Ø”kˆŒØ!ˆŒØ-ˆÔØ!%ˆŒ�D”IÑÐÐr   c                 ó4   — | j                              ¦   «         S r   )r@  Úis_setr#   s    r   ÚreadyzApplyResult.readyô  s   € ØŒ{×!Ò!Ñ#Ô#Ð#r   c                 ó|   — |                       ¦   «         s"t          d                     | ¦  «        ¦  «        ‚| j        S )Nz{0!r} not ready)rG  rŠ   rL   Ú_successr#   s    r   Ú
successfulzApplyResult.successful÷  s7   € Ø�zŠz‰|Œ|ð 	=ÝÐ.×5Ò5°dÑ;Ô;Ñ<Ô<Ð<ØŒ}Ðr   Nc                 ó:   — | j                              |¦  «         d S r   )r@  r	   ©r    r  s     r   r	   zApplyResult.waitü  s   € ØŒ×Ò˜Ñ!Ô!Ð!Ð!Ð!r   c                 óŒ   — |                       |¦  «         |                      ¦   «         st          ‚| j        r| j        S | j        ‚r   )r	   rG  r   rI  Ú_valuerL  s     r   rN   zApplyResult.getÿ  sD   € Ø�	Š	�'ÑÔÐØ�zŠz‰|Œ|ð 	ÝÐØŒ=ð 	Ø”;Ðà”+Ðr   c                 ó  — |\  | _         | _        | j        r!| j         r|                      | j        ¦  «         | j        r!| j         s|                      | j        ¦  «         | j                             ¦   «          | j        | j        = d | _        d S r   )	rI  rN  rC  rD  r@  Úsetr„   rï   r|   ©r    ra   r  s      r   r  zApplyResult._set  sŠ   € Ø%(Ñ"ˆŒ�t”{ØŒ>ð 	(˜dœmð 	(Ø�NŠN˜4œ;Ñ'Ô'Ð'ØÔð 	.¨¬ð 	.Ø× Ò  ¤Ñ-Ô-Ð-ØŒ�ŠÑÔÐØŒK˜œ	Ð"ØˆŒ
ˆ
ˆ
r   r   )r%   r&   r'   r!   rG  rJ  r	   rN   r  r<  ÚtypesÚGenericAliasÚ__class_getitem__r(   r   r   rú   rú   é  s‰   € € € € € ð&ð &ð &ð$ð $ð $ðð ð ð
"ð "ð "ð "ðð ð ð ðð ð ð $˜ EÔ$6Ñ7Ô7ÐÐÐr   rú   c                   ó   — e Zd Zd„ Zd„ ZdS )r  c                 ó  — t                                | |||¬¦  «         d| _        d g|z  | _        || _        |dk    r/d| _        | j                             ¦   «          | j        | j	        = d S ||z  t          ||z  ¦  «        z   | _        d S )Nr   Tr   )rú   r!   rI  rN  Ú
_chunksizeÚ_number_leftr@  rP  r„   rï   Úbool)r    rÂ   rÛ   Úlengthrß   rà   s         r   r!   zMapResult.__init__  s�   € Ý×Ò˜T 4¨Ø,:ð 	ñ 	<ô 	<ð 	<àˆŒØ�f˜v‘oˆŒØ#ˆŒØ˜Š>ˆ>Ø !ˆDÔØŒK�OŠOÑÔÐØ”˜DœIÐ&Ð&Ð&à &¨	Ñ 1µD¸À)Ñ9KÑ4LÔ4LÑ LˆDÔÐÐr   c                 ó  — | xj         dz  c_         |\  }}|rƒ| j        r||| j        || j        z  |dz   | j        z  …<   | j         dk    rP| j        r|                      | j        ¦  «         | j        | j        = | j                             ¦   «          d | _	        d S d S |s| j        rd| _        || _        | j         dk    rP| j
        r|  
                    | j        ¦  «         | j        | j        = | j                             ¦   «          d | _	        d S d S )Nr   r   F)rX  rI  rN  rW  rC  r„   rï   r@  rP  r|   rD  )r    ra   Úsuccess_resultÚsuccessrd   s        r   r  zMapResult._set)  s1  € ØÐÔ˜QÑÐÔØ(‰ˆ�Øð 	"�t”}ð 	"ØCIˆDŒK˜˜$œ/Ñ)¨1¨Q©3°´Ñ*?Ð?Ñ@ØÔ  AÒ%Ð%Ø”>ð 0Ø—N’N 4¤;Ñ/Ô/Ð/Ø”K ¤	Ð*Ø”—’Ñ!Ô!Ð!Ø!�”
�
�
ð &Ð%ð ð %˜tœ}ð %à %�”Ø$�”ØÔ  AÒ%Ð%àÔ'ð 6Ø×(Ò(¨¬Ñ5Ô5Ð5Ø”K ¤	Ð*Ø”—’Ñ!Ô!Ð!Ø!�”
�
�
ð &Ð%r   N)r%   r&   r'   r!   r  r(   r   r   r  r    s5   € € € € € ðMð Mð Mð"ð "ð "ð "ð "r   r  c                   ó2   — e Zd Zd„ Zd„ Zdd„ZeZd„ Zd„ ZdS )rî   c                 ó*  — || _         t          j        t          j        ¦   «         ¦  «        | _        t          t          ¦  «        | _        |j        | _        t          j
        ¦   «         | _        d| _        d | _        i | _        | | j        | j        <   d S )Nr   )r|   r’   Ú	ConditionÚLockÚ_condrA  rB  rï   r„   ÚcollectionsÚdequeÚ_itemsÚ_indexÚ_lengthÚ	_unsorted)r    rÂ   s     r   r!   zIMapIterator.__init__G  st   € ØˆŒ
ÝÔ(­¬Ñ)9Ô)9Ñ:Ô:ˆŒ
Ý�Ñ%Ô%ˆŒ	Ø”kˆŒÝ!Ô'Ñ)Ô)ˆŒØˆŒØˆŒØˆŒØ!%ˆŒ�D”IÑÐÐr   c                 ó   — | S r   r(   r#   s    r   Ú__iter__zIMapIterator.__iter__R  s   € Øˆr   Nc                 ó¾  — | j         5  	 | j                             ¦   «         }n™# t          $ rŒ | j        | j        k    rd | _        t          d ‚| j                              |¦  «         	 | j                             ¦   «         }n5# t          $ r( | j        | j        k    rd | _        t          d ‚t          d ‚w xY wY nw xY wd d d ¦  «         n# 1 swxY w Y   |\  }}|r|S |‚r   )
rb  re  ÚpopleftÚ
IndexErrorrf  rg  r|   ÚStopIterationr	   r   )r    r  rq   r]  r;   s        r   rA  zIMapIterator.nextU  sE  € ØŒZð 	1ð 	1ð1Ø”{×*Ò*Ñ,Ô,��øÝð 1ð 1ð 1Ø”; $¤,Ò.Ð.Ø!%�D”JÝ'¨TÐ1Ø”
—’ Ñ(Ô(Ð(ð1Øœ;×.Ò.Ñ0Ô0�D�DøÝ!ð 1ð 1ð 1Ø”{ d¤lÒ2Ð2Ø%)˜œ
Ý+°Ð5Ý&¨DÐ0ð	1øøøð �Dð1øøøð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð  ‰ˆ�Øð 	ØˆLØˆsJ   ˆC	Š$£C	¤AB:Á(BÂB:Â2B4Â4B:Â7C	Â9B:Â:C	Ã	CÃCc                 ó
  — | j         5  | j        |k    r©| j                             |¦  «         | xj        dz  c_        | j        | j        v rW| j                             | j        ¦  «        }| j                             |¦  «         | xj        dz  c_        | j        | j        v °W| j                              ¦   «          n
|| j        |<   | j        | j        k    r| j        | j	        = d | _
        d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   )rb  rf  re  rË   rh  ÚpopÚnotifyrg  r„   rï   r|   rQ  s      r   r  zIMapIterator._setm  sE  € ØŒZð 	"ð 	"ØŒ{˜aÒÐØ”×"Ò" 3Ñ'Ô'Ð'Ø�”˜qÑ �”Ø”k T¤^Ð3Ð3Øœ.×,Ò,¨T¬[Ñ9Ô9�CØ”K×&Ò& sÑ+Ô+Ð+Ø�K”K 1Ñ$�K”Kð ”k T¤^Ð3Ð3ð ”
×!Ò!Ñ#Ô#Ð#Ð#à$'�”˜qÑ!àŒ{˜dœlÒ*Ð*Ø”K ¤	Ð*Ø!�”
ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   ˆC#C8Ã8C<Ã?C<c                 óÎ   — | j         5  || _        | j        | j        k    r-| j                              ¦   «          | j        | j        = d | _        d d d ¦  «         d S # 1 swxY w Y   d S r   )rb  rg  rf  rr  r„   rï   r|   )r    rZ  s     r   rð   zIMapIterator._set_length~  s«   € ØŒZð 	"ð 	"Ø!ˆDŒLØŒ{˜dœlÒ*Ð*Ø”
×!Ò!Ñ#Ô#Ð#Ø”K ¤	Ð*Ø!�”
ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   ˆAAÁAÁ!Ar   )	r%   r&   r'   r!   rj  rA  Ú__next__r  rð   r(   r   r   rî   rî   E  sk   € € € € € ð	&ð 	&ð 	&ðð ð ðð ð ð ð, €Hð"ð "ð "ð""ð "ð "ð "ð "r   rî   c                   ó   — e Zd Zd„ ZdS )r÷   c                 ó  — | j         5  | j                             |¦  «         | xj        dz  c_        | j                              ¦   «          | j        | j        k    r| j        | j        = d | _        d d d ¦  «         d S # 1 swxY w Y   d S rp  )	rb  re  rË   rf  rr  rg  r„   rï   r|   rQ  s      r   r  zIMapUnorderedIterator._setŒ  sÊ   € ØŒZð 	"ð 	"ØŒK×Ò˜sÑ#Ô#Ð#ØˆKŒK˜1ÑˆKŒKØŒJ×ÒÑÔÐØŒ{˜dœlÒ*Ð*Ø”K ¤	Ð*Ø!�”
ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   ˆA(A=Á=BÂBN)r%   r&   r'   r  r(   r   r   r÷   r÷   Š  s#   € € € € € ð"ð "ð "ð "ð "r   r÷   c                   ón   — e Zd ZdZed„ ¦   «         Zdd„Zd„ Zd„ Zed„ ¦   «         Z	ed	„ ¦   «         Z
d
„ ZdS )r   Fc                 ó   — ddl m}  ||i |¤ŽS )Nr   rt   )Údummyru   )rv   r   rc   ru   s       r   ru   zThreadPool.Processœ  s)   € à"Ð"Ð"Ð"Ð"Ð"Øˆw˜Ð% Ð%Ð%Ð%r   Nr(   c                 ó@   — t                                | |||¦  «         d S r   )r   r!   )r    r¤   rZ   r[   s       r   r!   zThreadPool.__init__¡  s    € Ý�Š�d˜I {°HÑ=Ô=Ð=Ð=Ð=r   c                 óª   — t          j        ¦   «         | _        t          j        ¦   «         | _        | j        j        | _        | j        j        | _        d S r   )r€   r�   r•   r–   rM   rœ   rN   rŸ   r#   s    r   r   zThreadPool._setup_queues¤  s>   € ÝÔ)Ñ+Ô+ˆŒÝÔ*Ñ,Ô,ˆŒØœ-Ô+ˆŒØœ.Ô,ˆŒˆˆr   c                 ó   — | j         j        gS r   )rƒ   rQ   r#   s    r   r‘   zThreadPool._get_sentinelsª  s   € ØÔ%Ô-Ð.Ð.r   c                 ó   — g S r   r(   r»   s    r   r½   z ThreadPool._get_worker_sentinels­  s   € àˆ	r   c                 ó°   — 	 	 |                       d¬¦  «         Œ# t          j        $ r Y nw xY wt          |¦  «        D ]}|                      d ¦  «         Œd S )NTF)Úblock)rN   r€   ÚEmptyrÁ   rM   )rX   r,  r   ra   s       r   r-  zThreadPool._help_stuff_finish±  s{   € ð	ð)Ø—’ %�Ñ(Ô(Ð(ð)øåŒ{ð 	ð 	ð 	ØˆDð	øøøå�t‘”ð 	ð 	ˆAØ�KŠK˜ÑÔÐÐð	ð 	s   ‚ š,«,c                 ó.   — t          j        |¦  «         d S r   )r*  r+  )r    r¨   r  r  s       r   r	  zThreadPool._wait_for_updates¼  s   € ÝŒ
�7ÑÔÐÐÐr   )NNr(   )r%   r&   r'   r—   r9  ru   r!   r   r‘   r½   r-  r	  r(   r   r   r   r   ™  s©   € € € € € Ø€Oàð&ð &ñ „\ð&ð>ð >ð >ð >ð-ð -ð -ð/ð /ð /ð ðð ñ „\ðð ðð ñ „\ððð ð ð ð r   )Nr(   NF))Ú__all__rc  r   rˆ   r€   r’   r*  r-   rR  r:  r,   r   r   r   Ú
connectionr	   r
   r   r   r   ÚcountrB  r   r   rU   r   r*   r3   r8   rg   rV   Údictrk   Úobjectr   rú   ÚAsyncResultr  rî   r÷   r   r(   r   r   ú<module>rˆ     sï  ðð �<Ð
 €ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€ð Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð ð €Ø€Ø€Ø€	ð ˆiŒoÑÔ€ðð ð ð5ð 5ð 5ðð ð ð ð �iñ ô ð ð0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ðð ð ð<ð <ð <ð <ð <˜ñ <ô <ð <ð" GKØð+<ð +<ð +<ð +<ðZð ð ð$ð $ð $ð $ð $�ñ $ô $ð $ð.vð vð vð vð vˆ6ñ vô vð vðx)8ð )8ð )8ð )8ð )8�&ñ )8ô )8ð )8ðV €ð%"ð %"ð %"ð %"ð %"�ñ %"ô %"ð %"ðV?"ð ?"ð ?"ð ?"ð ?"�6ñ ?"ô ?"ð ?"ðJ	"ð 	"ð 	"ð 	"ð 	"˜Lñ 	"ô 	"ð 	"ð$ð $ð $ð $ð $�ñ $ô $ð $ð $ð $r   