§
    dŠtj1 ã            	       óX  — d 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 ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZdd	lmZmZmZ dd
lmZ ddlmZmZmZmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% e�ddl&m'Z' ddl(m)Z) 	 ddl*Z*n# e+$ r dZ*Y nw xY w	 ddl,m-Z- n# e+$ r dZ-Y nw xY w	 ddl.Z.n# e+$ r dZ.Y nw xY wddl/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:mZm;Z;m<Z<m=Z=  e6j>        ¦   «         Z?e? @                    dd¦  «         dg eA e6jB        ¦   «         ¦  «        z   ZCeCd„ e6D ¦   «         z  ZCe€g ZDnddgZDeDdgz   ZE eFed¦  «        r#eC G                     ejH        d¦  «        ¦  «         d„ ZId„ ZJd„ ZKd„ ZL G d„ deM¦  «        ZNdád „ZOd!„ ZPdâd"„ZQd#„ ZRd$„ ZSd%„ ZTd&„ ZU e"d'e<e;g¦  «        ejV         "                    d(d)d* e:d*¬+¦  «        fd,gg d-¢¬.¦  «        ed/„ ¦   «         ¦   «         ¦   «         ZW e"d0eC¦  «         e"d1g d2¢¦  «         e"d3g d4¢¦  «        d5„ ¦   «         ¦   «         ¦   «         ZX e"d0eC¦  «         e"d1dd6g¦  «        d7„ ¦   «         ¦   «         ZY e"d0eC¦  «        d8„ ¦   «         ZZd9„ Z[e e"d:g d;¢¦  «        d<„ ¦   «         ¦   «         Z\e e"d0g d=¢¦  «        d>„ ¦   «         ¦   «         Z]d?„ Z^ e"d@e6¦  «         e"dAe6¦  «        dB„ ¦   «         ¦   «         Z_dC„ Z`edD„ ¦   «         ZadE„ Zb e"d1g dF¢¦  «        dG„ ¦   «         Zc e"d0eE¦  «        dH„ ¦   «         ZdedI„ ¦   «         Zeee e"dJg dK¢¦  «         e"dLddMg¦  «        dN„ ¦   «         ¦   «         ¦   «         ¦   «         Zf e"d0eE¦  «        dO„ ¦   «         Zge e"d0eE¦  «        dP„ ¦   «         ¦   «         Zhe e"d0 eie?¦  «        dQhz
  ¦  «         e"dRdSdTg¦  «        dU„ ¦   «         ¦   «         ¦   «         Zje e"d0eD¦  «        dV„ ¦   «         ¦   «         Zke e"d0e6¦  «        dW„ ¦   «         ¦   «         ZldX„ Zm e"d0e6¦  «         e"dYdg dZ¢fd[g d\¢fg¦  «        d]„ ¦   «         ¦   «         Zne e"d0eE¦  «        d^„ ¦   «         ¦   «         Zod_„ Zpe e"d0eD¦  «        d`„ ¦   «         ¦   «         Zqda„ Zrdb„ Zsdc„ Zte e"d0eE¦  «        ejV         u                    dd¬e¦  «        df„ ¦   «         ¦   «         ¦   «         Zv G dg„ dhe3¦  «        Zwdi„ Zx e"d0eC¦  «        dj„ ¦   «         Zye e"d0eE¦  «         e"d1g dk¢¦  «        dl„ ¦   «         ¦   «         ¦   «         Zzdm„ Z{dn„ Z| e$edudo¬e¦  «        dp„ ¦   «         Z}dq„ Z~eEdd…         Ze €                    dr„  e�ds¦  «        D ¦   «         ¦  «         e e"d0e¦  «         e"d'e;e<g¦  «        dt„ ¦   «         ¦   «         ¦   «         Z‚ G du„ dve3¦  «        Zƒ e"d'e<e;g¦  «        dw„ ¦   «         Z„ e"d'e<e;g¦  «        dx„ ¦   «         Z…dy„ Z†dz„ Z‡ G d{„ d|ejˆ        j0        ¦  «        Z‰ e=d}e‰¦  «         e e"d0g d~¢¦  «         e"d'e<e;g¦  «        d„ ¦   «         ¦   «         ¦   «         ZŠe e"d1g d€¢¦  «         e"d0eE¦  «         e"d'e<e;g¦  «        d�„ ¦   «         ¦   «         ¦   «         ¦   «         Z‹d‚„ ZŒe e"dƒeE¦  «         e"d„eE¦  «         e"d'e<e;g¦  «        d…„ ¦   «         ¦   «         ¦   «         ¦   «         Z�e e"d'e<e;g¦  «         e"d†d‡dg¦  «        dˆ„ ¦   «         ¦   «         ¦   «         ZŽ e"d‰g dŠ¢¦  «        d‹„ ¦   «         Z� e"dŒg d�¢¦  «        dŽ„ ¦   «         Z�ed�„ ¦   «         Z‘ee e"d0eD¦  «        d�„ ¦   «         ¦   «         ¦   «         Z’d‘Z“e e"d0eD¦  «        d’„ ¦   «         ¦   «         Z”d“Z•d”Z–d•Z—d–Z˜e e"d0eDe€g ndgz   ¦  «         e"d—e–e—e˜g¦  «         e"d˜g d™¢¦  «        dš„ ¦   «         ¦   «         ¦   «         ¦   «         Z™d› š                    ej›         œ                    ej›         œ                    ej�        ¦  «        ¦  «        ¬œ¦  «        Zžed�„ ¦   «         ZŸdž š                    ej›         œ                    ej›         œ                    ej�        ¦  «        ¦  «        ¬œ¦  «        Z edŸ„ ¦   «         Z¡d „ Z¢d¡„ Z£ee e"d0eD¦  «        d¢„ ¦   «         ¦   «         ¦   «         Z¤d£„ Z¥eed¤„ ¦   «         ¦   «         Z¦d¥„ Z§d¦„ Z¨ejV         "                    d1g d§¢¦  «        d¨„ ¦   «         Z©d©„ Zªdª„ Z«ejV         "                    d1d6d[g¦  «        e e"d0 eie?¦  «        dQhz
  ¦  «        d«„ ¦   «         ¦   «         ¦   «         Z¬ e"d0eC¦  «         e"d1g d¬¢¦  «        d­„ ¦   «         ¦   «         Z­d®„ Z®d¯„ Z¯e e"d0e?¦  «         e"dRdSdTg¦  «         e"d1g d¬¢¦  «        d°„ ¦   «         ¦   «         ¦   «         ¦   «         Z° e"d0e?¦  «         e"dRdSdTg¦  «         e"d1g d¬¢¦  «        d±„ ¦   «         ¦   «         ¦   «         Z± e"d0e?¦  «         e"dRdSdTg¦  «         e"d1g d¬¢¦  «        d²„ ¦   «         ¦   «         ¦   «         Z² e"d0e?¦  «         e"d³dSdTg¦  «         e"d´dSdTg¦  «         e"d1g d¬¢¦  «        dµ„ ¦   «         ¦   «         ¦   «         ¦   «         Z³ e"d¶g d·¢¦  «         e"d³dSdTg¦  «         e"d´dSdTg¦  «        d¸„ ¦   «         ¦   «         ¦   «         Z´ee e"d0eD¦  «        d¹„ ¦   «         ¦   «         ¦   «         Zµ e"d0e€ddgng dº¢¦  «        d»„ ¦   «         Z¶e e"d0eD¦  «        d¼„ ¦   «         ¦   «         Z·e e"d'e<e;g¦  «        d½„ ¦   «         ¦   «         Z¸ e"d1dd6g¦  «         e"d¾g d¿¢¦  «        dÀ„ ¦   «         ¦   «         Z¹ e"d'e<e;g¦  «        dÁ„ ¦   «         ZºdÂ„ Z»dãdÃ„Z¼e e"d0ddg¦  «         e"d'e<e;g¦  «        dÄ„ ¦   «         ¦   «         ¦   «         Z½dädÅ„Z¾ejV        j¿         e"d'e<e;g¦  «         e"d0e€dgnddg¦  «        dÆ„ ¦   «         ¦   «         ¦   «         ZÀdÇ„ ZÁ e"d0e�ddgndg¦  «         e$e-du dÈ¬e¦  «        dÉ„ ¦   «         ¦   «         ZÂ e"d'e<e;g¦  «         e$e.dudÊ¬e¦  «        dË„ ¦   «         ¦   «         ZÃ e"d'e<e;g¦  «        dÌ„ ¦   «         ZÄdÍ„ ZÅdÎ„ ZÆdÏ„ ZÇdÐ„ ZÈee e"d1g dÑ¢¦  «        dÒ„ ¦   «         ¦   «         ¦   «         ZÉee e"dÓg dÔ¢¦  «         e"d1d6d*g¦  «         e"d'e<e;g¦  «        dÕ„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZÊe e"d1d6d*g¦  «         e"dÖg d×¢¦  «         e"d'e<e;g¦  «        dØ„ ¦   «         ¦   «         ¦   «         ¦   «         ZËe e"d1g dÙ¢¦  «        dÚ„ ¦   «         ¦   «         ZÌdÛ„ ZÍdádÜ„ZÎe e"d1d6d[g¦  «         e"d0eD¦  «         e"d'e<e;g¦  «        dÝ„ ¦   «         ¦   «         ¦   «         ¦   «         ZÏe e"d1d6d[g¦  «         e"d0eD¦  «        dÞ„ ¦   «         ¦   «         ¦   «         ZÐeejV         "                    d1d6d[g¦  «        dß„ ¦   «         ¦   «         ZÑeejV         "                    d1d6d[g¦  «        dà„ ¦   «         ¦   «         ZÒdS )åz
Test the parallel module.
é    N)Únullcontext©Úsqrt©ÚTimeoutError)ÚPicklingError)Úsleep)Úformat_exception)ÚdumpÚloadÚparallel)Úmp)ÚIS_GIL_DISABLEDÚnpÚwith_multiprocessingÚ
with_numpy)Úcheck_subprocess_callÚparametrizeÚraisesÚskipifÚwarns)Úget_reusable_executor)ÚQueueé   )Úparallel_sum)ÚLokyBackendÚMultiprocessingBackendÚParallelBackendBaseÚSequentialBackendÚThreadingBackend)	ÚBACKENDSÚParallelÚ	cpu_countÚdelayedÚeffective_n_jobsr   Úparallel_backendÚparallel_configÚregister_parallel_backendÚmultiprocessingc                 ó6   — g | ]}t          |         ¦   «         ‘ŒS © )r!   )Ú.0Úbackend_strs     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/joblib/test/test_parallel.pyú
<listcomp>r/   R   s#   € ÐKÐKÐK°;•x Ô,Ñ.Ô.ÐKÐKÐKó    ÚlokyÚ	threadingÚget_contextÚspawnc                  ó0   — t           t          j                 S ©N)r!   r   ÚDEFAULT_BACKENDr+   r0   r.   Úget_default_backend_instancer8   ^   s   € õ
 •HÔ,Ô-Ð-r0   c           	      óB   — t          | dt          | dd ¦  «        ¦  «        S )NÚ_poolÚ_workers)Úgetattr©Úbackends    r.   Úget_workersr?   f   s    € Ý�7˜G¥W¨W°jÀ$Ñ%GÔ%GÑHÔHÐHr0   c                 ó   — | |z  S r6   r+   )ÚxÚys     r.   ÚdivisionrC   j   s   € Øˆq‰5€Lr0   c                 ó   — | dz  S ©Né   r+   ©rA   s    r.   ÚsquarerH   n   s   € Øˆa‰4€Kr0   c                   ó   — e Zd ZdZd„ ZdS )ÚMyExceptionWithFinickyInitz,An exception class with non trivial __init__c                 ó   — d S r6   r+   )ÚselfÚaÚbÚcÚds        r.   Ú__init__z#MyExceptionWithFinickyInit.__init__u   s   € Øˆr0   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   r+   r0   r.   rJ   rJ   r   s)   € € € € € Ø6Ð6ðð ð ð ð r0   rJ   Fc                 óH   — | dk    r|rt          dddd¦  «        nt          ‚| S )Né   rM   rN   rO   rP   )rJ   Ú
ValueError)rA   Úcustom_exceptions     r.   Úexception_raiserr[   y   s8   € ØˆA‚v€vð  ðÕ& s¨C°°cÑ:Ô:Ð:åð	
ð
 €Hr0   c                 ó8   — t          j        d¦  «         t          ‚)Ngš™™™™™©?)Útimer	   ÚKeyboardInterruptrG   s    r.   Úinterrupt_raiserr_   ƒ   s   € Ý„JˆtÑÔÐÝ
Ðr0   c                 ó   — | dz  |z   |z   S )zNA module-level function so that it can be spawn with
    multiprocessing.
    rF   r+   )rA   rB   Úzs      r.   Úfrb   ˆ   s   € ð ˆa‰4�!‰8�a‰<Ðr0   c                  óN   — t          t          j        ¦   «         d         ¦  «        S ©Nr   )Útyper   Úget_active_backendr+   r0   r.   Ú_active_backend_typerg   �   s   € Ý•Ô+Ñ-Ô-¨aÔ0Ñ1Ô1Ð1r0   c                 ód   —  t          | |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        S )N©Ún_jobsr>   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   ©r$   rH   ©r,   Úis     r.   ú	<genexpr>z parallel_func.<locals>.<genexpr>”   sC   è è € ð :ð :Ø ˆ�•‰Œ˜ÑÔð:ð :ð :ð :ð :ð :r0   é   ©r"   Úrange)Úinner_n_jobsr>   s     r.   Úparallel_funcrt   “   sE   € Ø9�8˜<°Ð9Ñ9Ô9ð :ð :Ý$)¨!¡H¤Hð:ñ :ô :ñ ô ð r0   c                  ó.   — t          ¦   «         dk    sJ ‚d S rd   )r#   r+   r0   r.   Útest_cpu_countrv   š   s   € Ý‰;Œ;˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r0   c                  ó.   — t          ¦   «         dk    sJ ‚d S rd   ©r%   r+   r0   r.   Útest_effective_n_jobsry   ž   s   € ÝÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r0   Úcontextzbackend_n_jobs, expected_n_jobs)rp   rp   éÿÿÿÿ©rj   ©Nr   )zpositive-intznegative-intÚNone)Úidsc                 óª   —  | d|¬¦  «        5  t          d ¬¦  «        |k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          d ¬¦  «        dk    sJ ‚d S )Nr2   r|   r   rx   )rz   Úbackend_n_jobsÚexpected_n_jobss      r.   Útest_effective_n_jobs_Nonerƒ   ¢   sÄ   € ð 
ˆ� ^Ð	4Ñ	4Ô	4ð @ð @õ   tÐ,Ñ,Ô,°Ò?Ð?Ð?Ð?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ
  4Ð(Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ð-Ð-s   Ž2²6¹6r>   rj   )r   rF   r{   éþÿÿÿÚverbose)rF   é   éd   c                 ó¤   — d„ t          d¦  «        D ¦   «          t          || |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        k    sJ ‚d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r+   ©rH   ©r,   rA   s     r.   r/   z(test_simple_parallel.<locals>.<listcomp>¼   s   € Ð(Ð(Ð(˜!�F�1‰IŒIÐ(Ð(Ð(r0   é   ©rj   r>   r…   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   r‹   s     r.   ro   z'test_simple_parallel.<locals>.<genexpr>¾   s2   è è € Ð+Ð+˜Q€o…g�f�o„o�aÑÔÐ+Ð+Ð+Ð+Ð+Ð+r0   ©rr   r"   )r>   rj   r…   s      r.   Útest_simple_parallelr�   ¸   sw   € ð )Ð(�u Q™xœxÐ(Ñ(Ô(ð -­HØ˜w°ð-ñ -ô -à+Ð+¥%¨¡(¤(Ð+Ñ+Ô+ñ-,ô -,ò ,ð ,ð ,ð ,ð ,ð ,r0   rF   c                 óž  — d}t          j        d¦  «        } G d„ dt          ¦  «        } ||| d¬¦  «        } |d„ t          |¦  «        D ¦   «         ¦  «         t	          ¦   «         }|j        D ]H}|                     |¦  «        x}r/|                     ¦   «         \  }	}
|                     |
|	z
  ¦  «         ŒIt          |¦  «        dk    sJ ‚d S )	Nr‡   z(Done\s+\d+ out of \d+ \|)c                   ó   — e Zd Zg Zd„ ZdS )ú/test_parallel_pretty_print.<locals>.ParallelLogc                 ó:   — | j                              |¦  «         d S r6   )ÚmessagesÚappend)rL   Úmsgs     r.   Ú_printz6test_parallel_pretty_print.<locals>.ParallelLog._printÊ   s   € ØŒM× Ò  Ñ%Ô%Ð%Ð%Ð%r0   N)rS   rT   rU   r•   r˜   r+   r0   r.   ÚParallelLogr“   Ç   s(   € € € € € Øˆð	&ð 	&ð 	&ð 	&ð 	&r0   r™   i'  r�   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r+   ©r$   rb   rm   s     r.   r/   z.test_parallel_pretty_print.<locals>.<listcomp>Î   s&   € Ð4Ð4Ð4 ˆj�g•a‰jŒj˜‰mŒmÐ4Ð4Ð4r0   r   )
ÚreÚcompiler"   rr   Úsetr•   ÚsearchÚspanÚaddÚlen)r>   rj   Ún_tasksÚpatternr™   ÚexecutorÚlensÚmessageÚsrM   rN   s              r.   Útest_parallel_pretty_printr©   Á   sð   € ð €GÝŒjÐ6Ñ7Ô7€Gð&ð &ð &ð &ð &•hñ &ô &ð &ð ˆ{ &°'À5ÐIÑIÔI€HØ€HÐ4Ð4¥U¨7¡^¤^Ð4Ñ4Ô4Ñ5Ô5Ð5Ý‰5Œ5€DØÔ$ð ð ˆØ—’˜wÑ'Ô'Ð'ˆ1ð 	Ø—6’6‘8”8‰DˆAˆqØ�HŠH�Q˜‘U‰OŒOˆOøÝˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>r0   c                 óÀ  ‡— |                      t          j        ¦   «         dd¬¦  «         t          j        d¬¦  «        5 } t          d| ¬¦  «        d„ t          d	¦  «        D ¦   «         ¦  «        }|g d
¢k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   d„ |D ¦   «         }| dv st          | t          ¦  «        rdŠˆfd„|D ¦   «         }t          |¦  «        dk    sJ ‚d S )NÚnameÚ!some_new_name_for_the_main_thread)Útargetr«   ÚvalueT©ÚrecordrF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   r‹   s     r.   ro   z6test_main_thread_renamed_no_warning.<locals>.<genexpr>ä   sC   è è € ð 6
ð 6
Ø#$ˆO�G•F‰OŒO˜AÑÔð6
ð 6
ð 6
ð 6
ð 6
ð 6
r0   rp   )r   r   é   c                 ór   — g | ]4}d t          |j        ¦  «        v¯t          |j        t          ¦  «        °2|‘Œ5S )zworker timeout)Ústrr§   Ú
isinstanceÚDeprecationWarning©r,   Úws     r.   r/   z7test_main_thread_renamed_no_warning.<locals>.<listcomp>ì   sJ   € ð ð ð àØ¥3 q¤y¡>¤>Ð1Ð1Ý˜1œ9Õ&8Ñ9Ô9ð 2ð 	
à1Ð1Ð1r0   )Nr)   z3multi-threaded, use of fork() may lead to deadlocksc                 ó@   •— g | ]}‰t          |j        ¦  «        v¯|‘ŒS r+   )r´   r§   )r,   r¸   Úmessage_parts     €r.   r/   z7test_main_thread_renamed_no_warning.<locals>.<listcomp>ú   s+   ø€ ÐNÐNÐN˜!¨<½sÀ1Ä9¹~¼~Ð+MÐ+M�AÐ+MÐ+MÐ+Mr0   r   )
Úsetattrr2   Úcurrent_threadÚwarningsÚcatch_warningsr"   rr   rµ   r   r¢   )r>   ÚmonkeypatchÚwarninfoÚresultsrº   s       @r.   Ú#test_main_thread_renamed_no_warningrÂ   ×   sw  ø€ ð ×ÒÝÔ'Ñ)Ô)ØØ1ð ñ ô ð õ 
Ô	 ¨Ð	-Ñ	-Ô	-ð $°Ø5•( !¨WÐ5Ñ5Ô5ð 6
ð 6
Ý(-¨a©¬ð6
ñ 6
ô 6
ñ 
ô 
ˆð ˜)˜)˜)Ò#Ð#Ð#Ð#Ð#ð	$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ðð àðñ ô €Hð Ð+Ð+Ð+­zØÕ'ñ0ô 0Ð+ð MˆØNÐNÐNÐN˜xÐNÑNÔNˆõ
 ˆx‰=Œ=˜AÒÐÐÐÐÐs   Á <B	Â	BÂBc                 ój  — t          j        d¬¦  «        5 }t          j        d¦  «         t          | |¬¦  «         d d d ¦  «         n# 1 swxY w Y   d„ |D ¦   «         }|rN|rJt	          d„ |D ¦   «         ¦  «        }t
          rt          |¦  «        dk    nt          |¦  «        dk    }|o|S dS |rJ ‚dS )	NTr¯   Úalways)r>   rs   c                 ó   — g | ]	}|j         ‘Œ
S r+   )r§   r·   s     r.   r/   z*_assert_warning_nested.<locals>.<listcomp>  s   € Ð,Ð,Ð,˜a�”	Ð,Ð,Ð,r0   c              3   ó4   K  — | ]}d |j         d         v V — ŒdS )zbacked parallel loops cannotr   N)Úargs)r,   Úeachs     r.   ro   z)_assert_warning_nested.<locals>.<genexpr>
  s?   è è € ð 'ð 'ØCGÐ.°$´)¸A´,Ð>ð'ð 'ð 'ð 'ð 'ð 'r0   r   F)r½   r¾   Úsimplefilterrt   Úallr   r¢   )r>   rs   ÚexpectedrÀ   Úwarnings_are_correctÚwarnings_have_the_right_lengths         r.   Ú_assert_warning_nestedrÎ     s;  € Ý	Ô	 ¨Ð	-Ñ	-Ô	-ð B°ÝÔ˜hÑ'Ô'Ð'Ý˜g°LÐAÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð -Ð, 8Ð,Ñ,Ô,€HØð Øð 		KÝ#&ð 'ð 'ØKSð'ñ 'ô 'ñ $ô $Ð õ '6ÐM•�H‘” Ò"Ð"½3¸x¹=¼=ÈAÒ;Mð +ð (ÐJÐ,JÐJàˆuàÐÐˆ|Øˆts   –&AÁAÁAz%parent_backend,child_backend,expected))r1   r)   T)r1   r1   F)r)   r)   T)r)   r1   T)r2   r)   T)r2   r1   Tc                 ó,  ‡‡—  t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «          t          d| ¬¦  «        ˆˆfd„t          d¦  «        D ¦   «         ¦  «        }| dk    rt          |¦  «        sJ ‚d S t          |¦  «        sJ ‚d S )NrF   ri   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d d¬¦  «        V — Œ%dS )r   F©r>   rs   rË   N©r$   rÎ   ©r,   Ú_Úchild_backends     €r.   ro   z0test_nested_parallel_warnings.<locals>.<genexpr>(  sZ   øè è € ð /ð /ð ð 	(�Õ&Ñ'Ô'Ø!°¸Eð	
ñ 	
ô 	
ð/ð /ð /ð /ð /ð /r0   rŒ   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d ‰¬¦  «        V — Œ%dS )rF   rÑ   NrÒ   )r,   rÔ   rÕ   rË   s     €€r.   ro   z0test_nested_parallel_warnings.<locals>.<genexpr>0  sZ   øè è € ð 5ð 5ð ð 	(�Õ&Ñ'Ô'Ø!°¸Hð	
ñ 	
ô 	
ð5ð 5ð 5ð 5ð 5ð 5r0   r2   )r"   rr   ÚanyrÊ   )Úparent_backendrÕ   rË   Úress    `` r.   Útest_nested_parallel_warningsrÚ     sÛ   øø€ ð /…H�A˜~Ð.Ñ.Ô.ð /ð /ð /ð /õ �q‘”ð	/ñ /ô /ñ ô ð ð 5�(˜! ^Ð
4Ñ
4Ô
4ð 5ð 5ð 5ð 5ð 5õ �q‘”ð	5ñ 5ô 5ñ ô €Cð ˜Ò$Ð$Ý�3‰xŒxˆˆˆxˆˆå�3‰xŒxˆˆˆxˆˆr0   )r1   r)   r2   c                 ó¤   — dg}d„ }t          j        ||f¬¦  «        }|                     ¦   «          |                     ¦   «          |d         sJ ‚d S )NFc                 ó$  — t          j        d¬¦  «        5 } t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          |¦  «        ¦  «         t          |¦  «        dk    | d<   d S )NTr¯   rF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )çš™™™™™¹?N©r$   r	   ©r,   rÔ   s     r.   ro   zPtest_background_thread_parallelism.<locals>.background_thread.<locals>.<genexpr>F  s2   è è € ÐEÐE°q˜~�w¥u™~œ~¨cÑ2Ô2ÐEÐEÐEÐEÐEÐEr0   r²   r   )r½   r¾   r"   rr   Úprintr¢   )Úis_run_parallelrÀ   s     r.   Úbackground_threadz=test_background_thread_parallelism.<locals>.background_threadD  s×   € ÝÔ$¨DÐ1Ñ1Ô1ð 	F°XØ�H˜AÐÑÔÐEÐE½EÀ!¹H¼HÐEÑEÔEÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Få�c�(‰mŒmÑÔÐÝ  ™]œ]¨aÒ/ˆ˜ÑÐÐs   –1AÁAÁA)r­   rÇ   r   )r2   ÚThreadÚstartÚjoin)r>   râ   rã   Úts       r.   Ú"test_background_thread_parallelismrè   ?  sf   € ð �g€Oð0ð 0ð 0õ 	ÔÐ 1¸Ð8JÐKÑKÔK€AØ‡G‚G�I„I€IØ‡F‚F�H„H€HØ˜1ÔÐÐÐÐÐr0   c                 óh   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS ©ç{®Gáz„?Nrl   rà   s     r.   ro   znested_loop.<locals>.<genexpr>Q  s2   è è € Ð'PÐ'PÀ!¨­µ©¬¸Ñ(=Ô(=Ð'PÐ'PÐ'PÐ'PÐ'PÐ'Pr0   rq   r=   s    r.   Únested_looprí   P  s:   € Ø'…H�A˜wÐ'Ñ'Ô'Ð'PÐ'PÅuÈQÁxÄxÐ'PÑ'PÔ'PÑPÔPÐPÐPÐPr0   rÕ   rØ   c                 ón   ‡—  t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )NrF   ri   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r6   )r$   rí   rÓ   s     €r.   ro   z#test_nested_loop.<locals>.<genexpr>W  sG   øè è € ð /ð /Ø01Ð�•ÑÔ˜]Ñ+Ô+ð/ð /ð /ð /ð /ð /r0   rq   )rØ   rÕ   s    `r.   Útest_nested_looprð   T  s\   ø€ ð /…H�A˜~Ð.Ñ.Ô.ð /ð /ð /ð /Ý5:¸1±X´Xð/ñ /ô /ñ ô ð ð ð r0   c                 ó   — t           ‚r6   )rY   r=   s    r.   Úraise_exceptionrò   \  s   € Ý
Ðr0   c            	      ó8  — t          t          ¦  «        5  t          dd¬¦  «        5 }  |  t          t          ¦  «        d¦  «         t          t
          ¦  «        d¦  «        g¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NrF   r1   ri   )r   rY   r"   r$   rí   rò   )r   s    r.   Ú)test_nested_loop_with_exception_with_lokyrô   `  s8  € å	•
Ñ	Ô	ð Wð WÝ˜Q¨Ð/Ñ/Ô/ð 	W°8ØˆHÐ*•g�kÑ*Ô*¨6Ñ2Ô2Ð4LµG½OÑ4LÔ4LÈVÑ4TÔ4TÐUÑVÔVÐVð	Wð 	Wð 	Wñ 	Wô 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wøøøð 	Wð 	Wð 	Wð 	WðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wð Wð Ws5   •B§AA7Á+BÁ7A;	Á;BÁ>A;	Á?BÂBÂBc                  óº   ‡ — t          d¬¦  «        Š  t          dd¬¦  «        ˆ fd„t          d¦  «        D ¦   «         ¦  «         ‰                      ¦   «         sJ ‚dS )z1Input is mutable when using the threading backendrŒ   )ÚmaxsizerF   r2   ri   c              3   óR   •K  — | ]!} t          ‰j        ¦  «        d ¦  «        V — Œ"dS ©r   N)r$   Úput)r,   rÔ   Úqs     €r.   ro   z1test_mutate_input_with_threads.<locals>.<genexpr>j  s5   øè è € Ð+PÐ+PÀ!¨N­G°A´E©N¬N¸1Ñ,=Ô,=Ð+PÐ+PÐ+PÐ+PÐ+PÐ+Pr0   N)r   r"   rr   Úfull)rú   s   @r.   Útest_mutate_input_with_threadsrü   g  s`   ø€ å�aÐÑÔ€AØ+…H�A˜{Ð+Ñ+Ô+Ð+PÐ+PÐ+PÐ+PÅuÈQÁxÄxÐ+PÑ+PÔ+PÑPÔPÐPØ�6Š6‰8Œ8€O€Oˆ8€O€Or0   )r   rF   rp   c                 óŠ   — t          d¦  «        }d„ |D ¦   «          t          | ¬¦  «        d„ |D ¦   «         ¦  «        k    sJ ‚dS )z.Check the keyword argument processing of pmap.é
   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS ©r   ©rB   ©rb   r‹   s     r.   r/   z(test_parallel_kwargs.<locals>.<listcomp>r  s"   € Ð#Ð#Ð#˜!�Aˆa�1ˆI‰IŒIÐ#Ð#Ð#r0   r|   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS ©r   r  Nr›   r‹   s     r.   ro   z'test_parallel_kwargs.<locals>.<genexpr>r  sH   è è € ð ?ð ?Ø ˆ
�•‰
Œ
�1˜ÐÑÔð?ð ?ð ?ð ?ð ?ð ?r0   Nr�   )rj   Úlsts     r.   Útest_parallel_kwargsr  n  st   € õ �‰)Œ)€CØ#Ð#˜sÐ#Ñ#Ô#Ð'>¥x°vÐ'>Ñ'>Ô'>ð ?ð ?Ø$'ð?ñ ?ô ?ñ (ô (ò ð ð ð ð ð r0   c                 ó  — t          d¦  «        }d„ |D ¦   «         }t          d| ¬¦  «        5 }|j        }| |d„ |D ¦   «         ¦  «        k    sJ ‚| |d„ |D ¦   «         ¦  «        k    sJ ‚t          �%t	          |¦  «        t	          |j        ¦  «        u sJ ‚d d d ¦  «         n# 1 swxY w Y   t          �t	          |j        ¦  «        �J ‚| |d„ |D ¦   «         ¦  «        k    sJ ‚t          �t	          |j        ¦  «        �J ‚d S d S )Nrþ   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS r   r  r‹   s     r.   r/   z4test_parallel_as_context_manager.<locals>.<listcomp>z  s"   € Ð'Ð'Ð'˜a•�!�q�	‘	”	Ð'Ð'Ð'r0   r²   ri   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  r›   r‹   s     r.   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>ƒ  ó7   è è € Ð=Ð=°A˜Z�W¥Q™ZœZ¨¨QÐ/Ñ/Ô/Ð=Ð=Ð=Ð=Ð=Ð=r0   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  r›   r‹   s     r.   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>„  r
  r0   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  r›   r‹   s     r.   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>�  s7   è è € Ð9Ð9°˜�¥™œ A¨Ð+Ñ+Ô+Ð9Ð9Ð9Ð9Ð9Ð9r0   )rr   r"   Ú_backendr   r?   )r>   r  rË   ÚpÚmanaged_backends        r.   Ú test_parallel_as_context_managerr  w  s�  € å
�‰)Œ)€CØ'Ð' 3Ð'Ñ'Ô'€Hå	˜ GÐ	,Ñ	,Ô	,ð K°ð œ*ˆð ˜1˜1Ð=Ð=¸Ð=Ñ=Ô=Ñ=Ô=Ò=Ð=Ð=Ð=Ø˜1˜1Ð=Ð=¸Ð=Ñ=Ô=Ñ=Ô=Ò=Ð=Ð=Ð=õ ˆ>Ý˜Ñ/Ô/µ;¸q¼zÑ3JÔ3JÐJÐJÐJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kõ  
€~Ý˜1œ:Ñ&Ô&Ð.Ð.Ð.ð �q�qÐ9Ð9°SÐ9Ñ9Ô9Ñ9Ô9Ò9Ð9Ð9Ð9Ý	€~Ý˜1œ:Ñ&Ô&Ð.Ð.Ð.ð €~Ø.Ð.s   ­A*B#Â#B'Â*B'c                  óò   ‡ —  G d„ dt           ¦  «        Š t          t          d¬¦  «        5   t          dd¬¦  «        ˆ fd„t	          d	¦  «        D ¦   «         ¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z`Check that pmap captures the errors when it is passed an object
    that cannot be pickled.
    c                   ó   — e Zd Zd„ ZdS )ú1test_parallel_pickling.<locals>.UnpicklableObjectc                 ó    — t          d¦  «        ‚)NÚ123)ÚRuntimeError©rL   s    r.   Ú
__reduce__z<test_parallel_pickling.<locals>.UnpicklableObject.__reduce__œ  s   € Ý˜uÑ%Ô%Ð%r0   N)rS   rT   rU   r  r+   r0   r.   ÚUnpicklableObjectr  ›  s#   € € € € € ð	&ð 	&ð 	&ð 	&ð 	&r0   r  zthe task to send©ÚmatchrF   r1   ri   c              3   ób   •K  — | ])} t          t          ¦  «         ‰¦   «         ¦  «        V — Œ*d S r6   ©r$   Úid)r,   rÔ   r  s     €r.   ro   z)test_parallel_pickling.<locals>.<genexpr>   sN   øè è € ð +
ð +
Ø12ˆK�G•B‰KŒKÐ)Ð)Ñ+Ô+Ñ,Ô,ð+
ð +
ð +
ð +
ð +
ð +
r0   rþ   N)Úobjectr   r   r"   rr   )r  s   @r.   Útest_parallel_picklingr   •  sô   ø€ ð&ð &ð &ð &ð &�Fñ &ô &ð &õ 
•Ð%8Ð	9Ñ	9Ô	9ð 
ð 
Ø*�˜ 6Ð*Ñ*Ô*ð +
ð +
ð +
ð +
Ý6;¸B±i´ið+
ñ +
ô +
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   «4A,Á,A0Á3A0Ú	byteorder)ú<ú>ú=Ú
max_nbytesÚ1Mc                 ó�  ‡‡— d„ Št          j        d¦  «                             d¦  «                             | › d�¦  «        Š‰j        j        } t          dd|¬¦  «        ˆˆfd„t          d	¦  «        D ¦   «         ¦  «        }|D ]?\  }}||k    sJ ‚||j        j        k    sJ ‚t           j         	                    ‰|¦  «         Œ@d S )
Nc                 ó   — | | j         j        fS r6   )Údtyper!  rG   s    r.   Úinspect_byteorderz=test_parallel_byteorder_corruption.<locals>.inspect_byteorderª  s   € Ø�!”'Ô#Ð#Ð#r0   é   )rF   rp   Úi4rF   r1   )rj   r>   r%  c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r6   ©r$   )r,   rÔ   r*  rA   s     €€r.   ro   z5test_parallel_byteorder_corruption.<locals>.<genexpr>±  sP   øè è € ð Gð GØ*+Ð"�Ð!Ñ"Ô" 1Ñ%Ô%ðGð Gð Gð Gð Gð Gr0   rp   )
r   ÚarangeÚreshapeÚviewr)  r!  r"   rr   ÚtestingÚassert_array_equal)r!  r%  Úinitial_np_byteorderÚresultÚ
x_returnedÚbyteorder_in_workerr*  rA   s         @@r.   Ú"test_parallel_byteorder_corruptionr8  ¥  s  øø€ ð
$ð $ð $õ 	Œ	�!‰Œ×Ò˜VÑ$Ô$×)Ò)¨YÐ*:Ð*:Ð*:Ñ;Ô;€Aàœ7Ô,ÐàF�X˜Q¨¸:ÐFÑFÔFð Gð Gð Gð Gð GÝ/4°Q©x¬xðGñ Gô Gñ ô €Fð ,2ð 5ð 5Ñ'ˆ
Ð'Ø"Ð&:Ò:Ð:Ð:Ð:Ø" jÔ&6Ô&@Ò@Ð@Ð@Ð@Ý
Œ
×%Ò% a¨Ñ4Ô4Ð4Ð4ð5ð 5r0   c                 ó�   — t           t          d| d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        ¦  «        dk    sJ ‚d S )NrF   é   ©rj   r>   Útimeoutc              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )gü©ñÒMbP?Nrß   r‹   s     r.   ro   z0test_parallel_timeout_success.<locals>.<genexpr>À  sC   è è € ð <ð <Ø*+�•�‘”˜uÑ%Ô%ð<ð <ð <ð <ð <ð <r0   rþ   )r¢   r"   rr   r=   s    r.   Útest_parallel_timeout_successr>  »  st   € õ 	Ø;�H˜A w¸Ð;Ñ;Ô;ð <ð <Ý/4°R©y¬yð<ñ <ô <ñ ô ñ	
ô 	
ð
 ò	ð 	ð 	ð 	ð 	ð 	r0   c                 óÄ   — t          t          ¦  «        5   t          d| d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrF   rì   r;  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS ©rþ   Nrß   r‹   s     r.   ro   z-test_parallel_timeout_fail.<locals>.<genexpr>Í  sC   è è € ð :
ð :
Ø#$ˆN�G•E‰NŒN˜2ÑÔð:
ð :
ð :
ð :
ð :
ð :
r0   rþ   )r   r   r"   rr   r=   s    r.   Útest_parallel_timeout_failrB  È  s»   € õ 
•Ñ	Ô	ð 
ð 
Ø9�˜ 7°DÐ9Ñ9Ô9ð :
ð :
Ý(-¨b©	¬	ð:
ñ :
ô :
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
ó   •3AÁAÁAÚ
sequentialÚ	return_asÚ	generatorÚgenerator_unorderedc           
      ó^  — t          t          ¦  «        5  t           t          d| |d¬¦  «        d„ t	          d¦  «        D ¦   «         ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t           t          d| |d¬¦  «        d„ t	          d¦  «        D ¦   «         ¦  «        ¦  «         d S )NrF   rÞ   )rj   r>   rE  r<  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rA  rß   r‹   s     r.   ro   z<test_parallel_timeout_fail_with_generator.<locals>.<genexpr>Ú  sK   è è € ð Rð RØ'(�•�‘”˜rÑ"Ô"ðRð Rð Rð Rð Rð Rr0   rþ   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rë   rß   r‹   s     r.   ro   z<test_parallel_timeout_fail_with_generator.<locals>.<genexpr>á  sK   è è € ð M
ð M
Ø%&ˆN�G•E‰NŒN˜4Ñ Ô ðM
ð M
ð M
ð M
ð M
ð M
r0   )r   r   Úlistr"   rr   ©r>   rE  s     r.   Ú)test_parallel_timeout_fail_with_generatorrM  Ò  s%  € õ 
•Ñ	Ô	ð 
ð 
ÝØQ�H˜A w¸)ÈSÐQÑQÔQð Rð RÝ,1°"©I¬IðRñ Rô Rñ ô ñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 	ØL�˜ 7°iÈÐLÑLÔLð M
ð M
Ý*/°©)¬)ðM
ñ M
ô M
ñ 	
ô 	
ñô ð ð ð s   •AA"Á"A&Á)A&c           	      ó˜  — t           ��·t          t          ¦  «        5   t          d| ¬¦  «        d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t
          ¦  «        5   t          d| ¬¦  «        d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          d| ¬¦  «        5 }t          |j        ¦  «        €J ‚t          |j        ¦  «        }t          t          ¦  «        5   |d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        €J ‚t          |j        ¦  «        |usJ ‚d„ t          d	¦  «        D ¦   «          |d
„ t          d	¦  «        D ¦   «         ¦  «        k    sJ ‚t          |j        ¦  «        }t          t
          ¦  «        5   |d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        €J ‚t          |j        ¦  «        |usJ ‚d„ t          d	¦  «        D ¦   «          |d„ t          d	¦  «        D ¦   «         ¦  «        k    s"J |j	        |j
        |j        |j        f¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        �J ‚nOt          t
          ¦  «        5   t          d¬¦  «        d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5   t          d¬¦  «        d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5   t          dd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrF   ri   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r+   ©r$   rC   ©r,   rA   rB   s      r.   r/   z&test_error_capture.<locals>.<listcomp>ï  s1   € ÐIÐIÐI©T¨Q°Ð"•�Ñ"Ô" 1 aÑ(Ô(ÐIÐIÐIr0   )r   r   )r   r   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r+   ©r$   r_   r‹   s     r.   r/   z&test_error_capture.<locals>.<listcomp>ô  s,   € Ð>Ð>Ð>°!Ð*•Õ)Ñ*Ô*¨1Ñ-Ô-Ð>Ð>Ð>r0   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r+   rP  rQ  s      r.   r/   z&test_error_capture.<locals>.<listcomp>ý  s1   € ÐRÐRÐR±d°a¸Ð+�'¥(Ñ+Ô+¨A¨qÑ1Ô1ÐRÐRÐRr0   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS r   r  r‹   s     r.   r/   z&test_error_capture.<locals>.<listcomp>  ó"   € Ð1Ð1Ð1 !•A�a˜1�I‘I”IÐ1Ð1Ð1r0   rþ   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  r›   r‹   s     r.   ro   z%test_error_capture.<locals>.<genexpr>  óH   è è € ð >ð >Ø'(�
•�‘
”
˜1 Ð"Ñ"Ô"ð>ð >ð >ð >ð >ð >r0   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r+   rS  r‹   s     r.   r/   z&test_error_capture.<locals>.<listcomp>  s,   € ÐGÐGÐG¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐGÐGÐGr0   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS r   r  r‹   s     r.   r/   z&test_error_capture.<locals>.<listcomp>  rV  r0   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  r›   r‹   s     r.   ro   z%test_error_capture.<locals>.<genexpr>  rX  r0   r|   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r+   rS  r‹   s     r.   r/   z&test_error_capture.<locals>.<listcomp>"  s,   € ÐMÐMÐMÀÐ 9¥Õ(8Ñ 9Ô 9¸!Ñ <Ô <ÐMÐMÐMr0   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r+   rP  rQ  s      r.   r/   z&test_error_capture.<locals>.<listcomp>'  s1   € ÐTÐTÐT¹¸¸1Ð-�G¥HÑ-Ô-¨a°Ñ3Ô3ÐTÐTÐTr0   r   )rj   r…   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS )T)rZ   N©r$   r[   rm   s     r.   ro   z%test_error_capture.<locals>.<genexpr>+  s;   è è € ÐTÐTÀQÐ&�WÕ%Ñ&Ô& q¸4Ð@Ñ@Ô@ÐTÐTÐTÐTÐTÐTr0   r:  )r   r   ÚZeroDivisionErrorr"   Úzipr^   r?   r  rr   Ú
_iteratingÚn_completed_tasksÚn_dispatched_tasksÚ	_abortingrJ   )r>   r   Úoriginal_workerss      r.   Útest_error_capturerg  ç  s~  € õ
 
�~ÝÕ%Ñ&Ô&ð 	ð 	Ø/�H˜A wÐ/Ñ/Ô/ØIÐIµS¸ÀÑ5HÔ5HÐIÑIÔIñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 Õ%Ñ&Ô&ð 	ð 	Ø/�H˜A wÐ/Ñ/Ô/Ø>Ð>°vÐ>Ñ>Ô>ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ˜Q¨Ð0Ñ0Ô0ð #	°HÝ˜xÔ0Ñ1Ô1Ð=Ð=Ð=Ý*¨8Ô+<Ñ=Ô=ÐåÕ)Ñ*Ô*ð Tð TØ�ÐRÐR½cÀ&È&Ñ>QÔ>QÐRÑRÔRÑSÔSÐSðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tõ
 ˜xÔ0Ñ1Ô1Ð=Ð=Ð=õ ˜xÔ0Ñ1Ô1Ð9IÐIÐIÐIÐIà1Ð1¥u¨R¡y¤yÐ1Ñ1Ô1°X°Xð >ð >Ý,1°"©I¬Ið>ñ >ô >ñ 6ô 6ò ð ð ð õ  +¨8Ô+<Ñ=Ô=ÐÝÕ)Ñ*Ô*ð Ið IØ�ÐGÐGÀÐGÑGÔGÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ ˜xÔ0Ñ1Ô1Ð=Ð=Ð=õ ˜xÔ0Ñ1Ô1Ð9IÐIÐIÐIÐIà1Ð1¥u¨R¡y¤yÐ1Ñ1Ô1°X°Xð >ð >Ý,1°"©I¬Ið>ñ >ô >ñ 6ô 6ò ð ð ð Ô#ØÔ*ØÔ+ØÔ"ð	ñô ð ð ð9#	ð #	ð #	ñ #	ô #	ð #	ð #	ð #	ð #	ð #	ð #	øøøð #	ð #	ð #	ð #	õN ˜8Ô,Ñ-Ô-Ð5Ð5Ð5Ð5åÕ%Ñ&Ô&ð 	Oð 	OØ�H˜AÐÑÔÐMÐMÀfÐMÑMÔMÑNÔNÐNð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oõ
 
Õ!Ñ	"Ô	"ð Vð VØ�˜ÐÑÔÐTÐTÅÀFÈFÑ@SÔ@SÐTÑTÔTÑUÔUÐUðVð Vð Vñ Vô Vð Vð Vð Vð Vð Vð Vøøøð Vð Vð Vð Võ 
Õ*Ñ	+Ô	+ð 
ð 
Ø%�˜ 1Ð%Ñ%Ô%ØTÐTÍ%ÐPRÉ)Ì)ÐTÑTÔTñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
sµ   �3AÁA Á#A Á;%B,Â,B0Â3B0Ã?JÄ$D7Ä+JÄ7D;	Ä;JÄ>D;	Ä?BJÇG9Ç-JÇ9G=	Ç=JÈ G=	ÈBJÊJ"Ê%J"Ë$LÌLÌLÌ#2M!Í!M%Í(M%Î 2N?Î?OÏOc                 ó0  — dd„}t          d| ¬¦  «        5 }t          t          d¬¦  «        5   |d„  |d¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |d	„  |d
¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |d„  |d¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr   c              3   ó`   K  — t          d¦  «        D ]}|| k    rt          d¦  «        ‚|V — Œd S )Né   úIterator Raising Error)rr   rY   )Úraise_atrn   s     r.   Úmy_generatorz1test_error_in_task_iterator.<locals>.my_generator2  sH   è è € Ý�r‘”ð 	ð 	ˆAØ�HŠ}ˆ}Ý Ð!9Ñ:Ô:Ð:ØˆGˆGˆGˆGð	ð 	r0   rF   ri   rk  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z.test_error_in_task_iterator.<locals>.<genexpr>;  ó2   è è € ÐCÐC Qˆo�g•f‰oŒo˜aÑ Ô ÐCÐCÐCÐCÐCÐCr0   )rl  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z.test_error_in_task_iterator.<locals>.<genexpr>@  ro  r0   rŒ   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z.test_error_in_task_iterator.<locals>.<genexpr>D  s2   è è € ÐDÐD Qˆo�g•f‰oŒo˜aÑ Ô ÐDÐDÐDÐDÐDÐDr0   é   ©r   )r"   r   rY   )r>   rm  r  s      r.   Útest_error_in_task_iteratorrt  /  s•  € ðð ð ð õ 
˜ GÐ	,Ñ	,Ô	,ð E°å•JÐ&>Ð?Ñ?Ô?ð 	Dð 	DØˆAÐCÐC¨,¨,ÀÐ*BÑ*BÔ*BÐCÑCÔCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ
 •JÐ&>Ð?Ñ?Ô?ð 	Dð 	DØˆAÐCÐC¨,¨,ÀÐ*BÑ*BÔ*BÐCÑCÔCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ •JÐ&>Ð?Ñ?Ô?ð 	Eð 	EØˆAÐDÐD¨,¨,ÀÐ*CÑ*CÔ*CÐDÑDÔDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es|   –D­ AÁDÁA	ÁDÁ A	Á!DÁ: B&ÂDÂ&B*	Â*DÂ-B*	Â.DÃ C3Ã'DÃ3C7	Ã7DÃ:C7	Ã;DÄDÄDc                 ó6   — |                       d|z  ¦  «         d S )NzConsumed %s)r–   )ÚqueueÚitems     r.   Úconsumerrx  G  s   € Ø	‡L‚L� Ñ%Ñ&Ô&Ð&Ð&Ð&r0   zbatch_size, expected_queue)ú
Produced 0ú
Consumed 0ú
Produced 1ú
Consumed 1ú
Produced 2ú
Consumed 2ú
Produced 3ú
Consumed 3ú
Produced 4ú
Consumed 4ú
Produced 5ú
Consumed 5r²   )ry  r{  r}  r  rz  r|  r~  r€  r�  rƒ  r‚  r„  c                 óÆ   ‡— t          ¦   «         Šˆfd„} t          d|| ¬¦  «        ˆfd„ |¦   «         D ¦   «         ¦  «         ‰|k    sJ ‚t          ‰¦  «        dk    sJ ‚dS )z=Test that with only one job, Parallel does act as a iterator.c               3   óh   •K  — t          d¦  «        D ]} ‰                     d| z  ¦  «         | V — Œd S ©Nr+  zProduced %i©rr   r–   ©rn   rv  s    €r.   Úproducerz'test_dispatch_one_job.<locals>.producerx  óH   øè è € Ý�q‘”ð 	ð 	ˆAØ�LŠL˜¨Ñ*Ñ+Ô+Ð+ØˆGˆGˆGˆGð	ð 	r0   r   ©rj   Ú
batch_sizer>   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰|¦  «        V — Œ#d S r6   ©r$   rx  )r,   rA   rv  s     €r.   ro   z(test_dispatch_one_job.<locals>.<genexpr>}  sI   øè è € ð ?ð ?Ø()Ð�•ÑÔ˜% Ñ#Ô#ð?ð ?ð ?ð ?ð ?ð ?r0   é   N)rK  r"   r¢   )r>   r�  Úexpected_queuerŠ  rv  s       @r.   Útest_dispatch_one_jobr’  K  s©   ø€ õV ‰FŒF€Eðð ð ð ð ð
 ?…H�A *°gÐ>Ñ>Ô>ð ?ð ?ð ?ð ?Ø-5¨X©Z¬Zð?ñ ?ô ?ñ ô ð ð �NÒ"Ð"Ð"Ð"Ýˆu‰:Œ:˜ÒÐÐÐÐÐr0   c                 ó¨  ‡— t          j        ¦   «         }|                     ¦   «         Šˆfd„} t          ddd| ¬¦  «        ˆfd„ |¦   «         D ¦   «         ¦  «         t          ‰¦  «        }|d         dk    sJ ‚|d	d
…                              d¦  «        }|dk    sJ ‚|                     d¦  «        }||k    sJ ‚t          ‰¦  «        dk    sJ ‚d	S )zRCheck that using pre_dispatch Parallel does indeed dispatch items
    lazily.
    c               3   óh   •K  — t          d¦  «        D ]} ‰                     d| z  ¦  «         | V — Œd S r‡  rˆ  r‰  s    €r.   rŠ  z/test_dispatch_multiprocessing.<locals>.producer�  r‹  r0   rF   r   rp   )rj   r�  Úpre_dispatchr>   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰d ¦  «        V — Œ#dS )r×   Nr�  )r,   rÔ   rv  s     €r.   ro   z0test_dispatch_multiprocessing.<locals>.<genexpr>’  sQ   øè è € ð Fð FØ,-Ð�•ÑÔ˜% Ñ'Ô'ðFð Fð Fð Fð Fð Fr0   r   ry  Nr²   zConsumed anyr{   r  r�  )r   ÚManagerrK  r"   Úindexr¢   )r>   ÚmanagerrŠ  Úqueue_contentsÚfirst_consumption_indexÚproduced_3_indexrv  s         @r.   Útest_dispatch_multiprocessingr�  „  s'  ø€ õ Œj‰lŒl€GØ�LŠL‰NŒN€Eðð ð ð ð ð
 F…H�A !°!¸WÐEÑEÔEð Fð Fð Fð FØ19°±´ðFñ Fô Fñ ô ð õ ˜%‘[”[€NØ˜!Ô Ò,Ð,Ð,Ð,ð -¨R¨a¨RÔ0×6Ò6°~ÑFÔFÐØ" RÒ'Ð'Ð'Ð'à%×+Ò+¨LÑ9Ô9ÐØÐ5Ò5Ð5Ð5Ð5åˆu‰:Œ:˜ÒÐÐÐÐÐr0   c                  óà   — t          ddd¬¦  «        5 }  | d„ t          d¦  «        D ¦   «         ¦  «         | j                             ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   Úautor2   rŒ  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z/test_batching_auto_threading.<locals>.<genexpr>ª  ó0   è è € Ð	.Ð	.˜Qˆ+�'•"‰+Œ+�a‰.Œ.Ð	.Ð	.Ð	.Ð	.Ð	.Ð	.r0   éˆ  r   ©r"   rr   r  Úcompute_batch_size)r  s    r.   Útest_batching_auto_threadingr¥  ¤  sÁ   € õ
 
˜ v°{Ð	CÑ	CÔ	Cð 4ÀqØ	ˆÐ	.Ð	.¥%¨¡+¤+Ð	.Ñ	.Ô	.Ñ.Ô.Ð.ØŒz×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4ó   “AA#Á#A'Á*A'c                 óà   — t          dd| ¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «         |j                             ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   rŸ  rŒ  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z2test_batching_auto_subprocesses.<locals>.<genexpr>²  r¡  r0   r¢  r   r£  )r>   r  s     r.   Útest_batching_auto_subprocessesr©  ®  sÃ   € õ 
˜ v°wÐ	?Ñ	?Ô	?ð 3À1Ø	ˆÐ	.Ð	.¥%¨¡+¤+Ð	.Ñ	.Ô	.Ñ.Ô.Ð.ð
 Œz×,Ò,Ñ.Ô.°Ò2Ð2Ð2Ð2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3r¦  c                  óÄ   — t          t          ¦  «        5   t          ddd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zCMake sure that exception raised during dispatch are indeed capturedrF   é   r   )rj   r•  r…   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r_  rm   s     r.   ro   z*test_exception_dispatch.<locals>.<genexpr>½  sG   è è € ð 7
ð 7
Ø-.Ð%�GÕ$Ñ%Ô% aÑ(Ô(ð7
ð 7
ð 7
ð 7
ð 7
ð 7
r0   r:  N)r   rY   r"   rr   r+   r0   r.   Útest_exception_dispatchr­  º  s¹   € å	•
Ñ	Ô	ð 
ð 
Ø6�˜¨°AÐ6Ñ6Ô6ð 7
ð 7
Ý27¸±)´)ð7
ñ 7
ô 7
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
rC  c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r_  ©r,   Újs     r.   ro   z(nested_function_inner.<locals>.<genexpr>Ã  s6   è è € ÐGÐG¸Ð0•wÕ/Ñ0Ô0°Ñ3Ô3ÐGÐGÐGÐGÐGÐGr0   r:  rq   ©rn   s    r.   Únested_function_innerr³  Â  s8   € Ø…H�AÐÑÔÐGÐG½UÀ2¹Y¼YÐGÑGÔGÑGÔGÐGÐGÐGr0   c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   )r$   r³  r°  s     r.   ro   z(nested_function_outer.<locals>.<genexpr>Ç  s6   è è € ÐLÐL¸QÐ5•wÕ4Ñ5Ô5°aÑ8Ô8ÐLÐLÐLÐLÐLÐLr0   r:  rq   r²  s    r.   Únested_function_outerr¶  Æ  s8   € Ø…H�AÐÑÔÐLÐLÅ%ÈÁ)Ä)ÐLÑLÔLÑLÔLÐLÐLÐLr0   z'https://github.com/joblib/loky/pull/255©Úreasonc                 óˆ  — t          t          ¦  «        5 } t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   t	          |j        |j        |j        ¦  «        }d                     |¦  «        }d|v sJ ‚d|v sJ ‚d	|v sJ ‚t          |j        ¦  «        t          u sJ ‚dS )
z¯Ensure errors for nested joblib cases gets propagated

    We rely on the Python 3 built-in __cause__ system that already
    report this kind of information to the user.
    rF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   )r$   r¶  rm   s     r.   ro   z1test_nested_exception_dispatch.<locals>.<genexpr>Ô  sG   è è € ð ,
ð ,
Ø23Ð*�GÕ)Ñ*Ô*¨1Ñ-Ô-ð,
ð ,
ð ,
ð ,
ð ,
ð ,
r0   r:  NÚ r¶  r³  r[   )	r   rY   r"   rr   r
   re   r®   Útbræ   )r>   ÚexcinfoÚreport_linesÚreports       r.   Útest_nested_exception_dispatchrÀ  Ê  s%  € õ 
•
Ñ	Ô	ð 
˜wØ+�˜ 7Ð+Ñ+Ô+ð ,
ð ,
Ý7<¸R±y´yð,
ñ ,
ô ,
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ $ G¤L°'´-ÀÄÑLÔL€LØ�WŠW�\Ñ"Ô"€FØ" fÐ,Ð,Ð,Ð,Ø" fÐ,Ð,Ð,Ð,Ø Ð'Ð'Ð'Ð'å�”ÑÔ¥*Ð,Ð,Ð,Ð,Ð,Ð,s   •2AÁAÁAc                   ó"   — e Zd ZdZdd„Zdd„ZdS )ÚFakeParallelBackendz8Pretends to run concurrently while running sequentially.r   Nc                 óH   — |                       |¦  «        | _        || _        |S r6   )r%   rj   r   )rL   rj   r   Úbackend_argss       r.   Ú	configurezFakeParallelBackend.configureæ  s#   € Ø×+Ò+¨FÑ3Ô3ˆŒØ ˆŒØˆr0   c                 ó`   — |dk     r't          t          j        ¦   «         dz   |z   d¦  «        }|S )Nr   r   )Úmaxr   r#   ©rL   rj   s     r.   r%   z$FakeParallelBackend.effective_n_jobsë  s/   € Ø�AŠ:ˆ:Ý�œ™œ¨!Ñ+¨fÑ4°aÑ8Ô8ˆFØˆr0   rø   )r   )rS   rT   rU   rV   rÅ  r%   r+   r0   r.   rÂ  rÂ  ã  sB   € € € € € ØBÐBðð ð ð ð
ð ð ð ð ð r0   rÂ  c                  óà  — t          t          d¬¦  «        5  t          d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NzInvalid backend:r  zunit-testingr=   )r   rY   r"   r'   r+   r0   r.   Útest_invalid_backendrÊ  ñ  s3  € Ý	•
Ð"4Ð	5Ñ	5Ô	5ð )ð )Ý˜Ð(Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ 
•
Ð"4Ð	5Ñ	5Ô	5ð ð Ý ^Ð4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
•
Ð"4Ð	5Ñ	5Ô	5ð ð Ý ^Ð4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð sx   —4´8»8ÁBÁ&A4Á(BÁ4A8	Á8BÁ;A8	Á<BÂBÂBÂ,C#Â=CÂ?C#ÃC	ÃC#ÃC	ÃC#Ã#C'Ã*C'c                 ó>  — t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚d S )Nr   ri   z&n_jobs == 0 in Parallel has no meaningç      à?z2.3z$n_jobs could not be converted to intÚinvalid_str)r   rY   r"   Ú_initialize_backendr´   r®   )r>   r½  s     r.   Útest_invalid_njobsrÏ  þ  s°  € å	•
Ñ	Ô	ð B˜wÝ˜ 7Ð+Ñ+Ô+×?Ò?ÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bà3µs¸7¼=Ñ7IÔ7IÐIÐIÐIÐIå	•
Ñ	Ô	ð D˜wÝ˜ WÐ-Ñ-Ô-×AÒAÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dà3µs¸7¼=Ñ7IÔ7IÐIÐIÐIÐIå	•
Ñ	Ô	ð F˜wÝ˜ wÐ/Ñ/Ô/×CÒCÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fà1µS¸¼Ñ5GÔ5GÐGÐGÐGÐGå	•
Ñ	Ô	ð N˜wÝ˜¨wÐ7Ñ7Ô7×KÒKÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nà1µS¸¼Ñ5GÔ5GÐGÐGÐGÐGÐGÐGsG   •$AÁA	ÁA	Á<$B,Â,B0Â3B0Ã#$DÄDÄDÅ
$E:Å:E>ÆE>)Ú2gffffff@rF   c                 óð   — t          || ¬¦  «        }|                     ¦   «         dk    sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }t          d„ t	          |¦  «        D ¦   «         ¦  «        sJ ‚d S )Nri   rF   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z.test_njobs_converted_to_int.<locals>.<genexpr>  s2   è è € Ð2Ð2 1ˆO�G•F‰OŒO˜AÑÔÐ2Ð2Ð2Ð2Ð2Ð2r0   rþ   c              3   óB   K  — | ]\  }}|t          |¦  «        k    V — Œd S r6   rŠ   )r,   rn   Úrs      r.   ro   z.test_njobs_converted_to_int.<locals>.<genexpr>  s0   è è € Ð9Ð9¡$ ! Qˆq•F˜1‘I”IŠ~Ð9Ð9Ð9Ð9Ð9Ð9r0   )r"   Ú_effective_n_jobsrr   rÊ   Ú	enumerate)r>   rj   r  rÙ   s       r.   Útest_njobs_converted_to_intr×    s†   € õ 	˜¨Ð0Ñ0Ô0€AØ×ÒÑ Ô  AÒ%Ð%Ð%Ð%à
ˆ!Ð2Ð2­¨b©	¬	Ð2Ñ2Ô2Ñ
2Ô
2€CÝÐ9Ð9­)°C©.¬.Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9r0   c                  ó¤   — 	 t          dt          ¦  «         dt          v sJ ‚t          d         t          k    sJ ‚	 t          d= d S # t          d= w xY w)NÚtest_backend)r(   rÂ  r!   r+   r0   r.   Útest_register_parallel_backendrÚ    se   € ð%Ý! .Õ2EÑFÔFÐFØ¥Ð)Ð)Ð)Ð)Ý˜Ô'Õ+>Ò>Ð>Ð>Ð>Ð>å�^Ð$Ð$Ð$ø�H�^Ð$Ð$Ð$Ð$Ð$s   ‚8A Á
Ac                  óJ  — t           j        } t          ¦   «         t          ¦   «         k    sJ ‚	 t	          dt
          d         d¬¦  «         t          ¦   «         t          k    sJ ‚	 | t           _        n# | t           _        w xY wt          ¦   «         t          ¦   «         k    sJ ‚d S )Nr2   T)Úmake_default)r   r7   rg   r8   r(   r!   r    )Údefault_backend_origs    r.   Útest_overwrite_default_backendrÞ  %  sª   € Ý#Ô3ÐÝÑ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCð8Ý! +­x¸Ô/DÐSWÐXÑXÔXÐXÝ#Ñ%Ô%Õ)9Ò9Ð9Ð9Ð9Ð9ð $8�Ô Ð øÐ#7�Ô Ð7Ð7Ð7Ð7ÝÑ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCÐCÐCs   ®6A2 Á2B zOnly without multiprocessingc                  óp  — t          t          d¬¦  «        5   t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          d¬¦  «        5   t          ¦   «         d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz)joblib backend '.*' is not available on.*r  r1   r=   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z2test_backend_no_multiprocessing.<locals>.<genexpr>4  s2   è è € Ð FÐ F¸ ¥­¡¤°Ñ!3Ô!3Ð FÐ FÐ FÐ FÐ FÐ Fr0   rp   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z2test_backend_no_multiprocessing.<locals>.<genexpr>8  s2   è è € Ð8Ð8¨!�?•7�6‘?”? 1Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8r0   )r   ÚUserWarningr"   rr   r'   r+   r0   r.   Útest_backend_no_multiprocessingrã  1  sL  € å	�{Ð"MÐ	NÑ	NÔ	Nð Gð GØ �˜Ð Ñ Ô Ð FÐ F½UÀ1¹X¼XÐ FÑ FÔ FÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
 Ð	(Ñ	(Ô	(ð 9ð 9Ø�‰
Œ
Ð8Ð8­u°Q©x¬xÐ8Ñ8Ô8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s#   —1AÁAÁAÁ//B+Â+B/Â2B/c                 óê  —  | |d¬¦  «        5  t          j        ¦   «         \  }}|dk    sJ ‚t          d¦  «        dk    sJ ‚t          ¦   «         }|j        dk    sJ ‚|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚nÂ|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚n†|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚nJ| 
                    d¦  «        r5t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )Nrp   r|   r)   r1   r2   Útest_)r   rf   r%   r"   rj   re   r   r  r   r    Ú
startswithrÂ  )rz   Úbackend_nameÚactive_backendÚactive_n_jobsr  s        r.   Úcheck_backend_context_managerrê  ;  sç  € Ø	ˆ� aÐ	(Ñ	(Ô	(ð ;ð ;Ý(0Ô(CÑ(EÔ(EÑ%ˆ˜Ø Ò!Ð!Ð!Ð!Ý Ñ"Ô" aÒ'Ð'Ð'Ð'Ý‰JŒJˆØŒx˜1Š}ˆ}ˆ}ˆ}ØÐ,Ò,Ð,Ý˜Ñ'Ô'Õ+AÐAÐAÐAÐAÝ˜œ
Ñ#Ô#Õ'=Ð=Ð=Ð=Ð=Ð=Ø˜VÒ#Ð#Ý˜Ñ'Ô'­;Ð6Ð6Ð6Ð6Ý˜œ
Ñ#Ô#¥{Ð2Ð2Ð2Ð2Ð2Ø˜[Ò(Ð(Ý˜Ñ'Ô'Õ+;Ð;Ð;Ð;Ð;Ý˜œ
Ñ#Ô#Õ'7Ð7Ð7Ð7Ð7Ð7Ø×$Ò$ WÑ-Ô-ð 	;Ý˜Ñ'Ô'Õ+>Ð>Ð>Ð>Ð>Ý˜œ
Ñ#Ô#Õ':Ð:Ð:Ð:Ð:ð#;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   ŽEE(Å(E,Å/E,c                 ó   — g | ]}d |z  ‘ŒS )ztest_backend_%dr+   rm   s     r.   r/   r/   Q  s   € Ð(QÐ(QÐ(QÀ1Ð):¸QÑ)>Ð(QÐ(QÐ(Qr0   rp   c                 ó’  ‡— |t           vr!|                      t           |t          ¦  «         t          ¦   «         t	          ¦   «         k    sJ ‚t          ‰|¦  «         t          ¦   «         t	          ¦   «         k    sJ ‚ t          dd¬¦  «        ˆfd„t          D ¦   «         ¦  «         t          ¦   «         t	          ¦   «         k    sJ ‚d S )NrF   r2   ri   c              3   óX   •K  — | ]$}|° t          t          ¦  «        ‰|¦  «        V — Œ%d S r6   )r$   rê  )r,   rN   rz   s     €r.   ro   z/test_backend_context_manager.<locals>.<genexpr>c  sR   øè è € ð ,ð ,àØð,Ø.�Õ-Ñ.Ô.¨w¸Ñ:Ô:ð,ð ,ð ,ð ,ð ,ð ,r0   )r!   ÚsetitemrÂ  rg   r8   rê  r"   Ú all_backends_for_context_manager)r¿   r>   rz   s     `r.   Útest_backend_context_managerrð  T  sæ   ø€ ð •hÐÐØ×Ò�H gÕ/BÑCÔCÐCåÑ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCå! '¨7Ñ3Ô3Ð3õ  Ñ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCð ,…H�A˜{Ð+Ñ+Ô+ð ,ð ,ð ,ð ,å1ð,ñ ,ô ,ñ ô ð õ  Ñ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCÐCÐCr0   c                   ó   — e Zd ZdZdd„ZdS )ÚParameterizedParallelBackendz9Pretends to run conncurrently while running sequentially.Nc                 ó6   — |€t          d¦  «        ‚|| _        d S )Nzparam should not be None)rY   Úparam)rL   rô  s     r.   rQ   z%ParameterizedParallelBackend.__init__p  s!   € Øˆ=ÝÐ7Ñ8Ô8Ð8ØˆŒ
ˆ
ˆ
r0   r6   rR   r+   r0   r.   rò  rò  m  s.   € € € € € ØCÐCðð ð ð ð ð r0   rò  c                 óh  — |                       t          dt          ¦  «         t          ¦   «         t	          ¦   «         k    sJ ‚ |ddd¬¦  «        5  t          j        ¦   «         \  }}t          |¦  «        t          u sJ ‚|j        dk    sJ ‚|dk    sJ ‚t          ¦   «         }|j
        dk    sJ ‚|j        |u sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |d„ t          d¦  «        D ¦   «         k    sJ ‚t          ¦   «         t	          ¦   «         k    sJ ‚d S )NÚparam_backendé*   rp   )rô  rj   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   ©r$   r   rm   s     r.   ro   z=test_parameterized_backend_context_manager.<locals>.<genexpr>ƒ  ó2   è è € Ð7Ð7¨�M•G�D‘M”M !Ñ$Ô$Ð7Ð7Ð7Ð7Ð7Ð7r0   rŒ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r+   r   rm   s     r.   r/   z>test_parameterized_backend_context_manager.<locals>.<listcomp>„  ó   € Ð1Ð1Ð1 1•t˜A‘w”wÐ1Ð1Ð1r0   )rî  r!   rò  rg   r8   r   rf   re   rô  r"   rj   r  rr   )r¿   rz   rè  ré  r  rÁ   s         r.   Ú*test_parameterized_backend_context_managerrý  v  s”  € à×Ò� /Õ3OÑPÔPÐPÝÑ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCà	ˆ�¨°1Ð	5Ñ	5Ô	5ð 8ð 8Ý(0Ô(CÑ(EÔ(EÑ%ˆ˜Ý�NÑ#Ô#Õ'CÐCÐCÐCÐCØÔ# rÒ)Ð)Ð)Ð)Ø Ò!Ð!Ð!Ð!Ý‰JŒJˆØŒx˜1Š}ˆ}ˆ}ˆ}ØŒz˜^Ð+Ð+Ð+Ð+Ø�!Ð7Ð7­e°A©h¬hÐ7Ñ7Ô7Ñ7Ô7ˆð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð Ð1Ð1­¨a©¬Ð1Ñ1Ô1Ò1Ð1Ð1Ð1õ  Ñ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCÐCÐCs   ÁBC(Ã(C,Ã/C,c                 ó@  — t          ¦   «         t          ¦   «         k    sJ ‚ | t          d¬¦  «        d¬¦  «        5  t          j        ¦   «         \  }}t          |¦  «        t          u sJ ‚|j        dk    sJ ‚|dk    sJ ‚t          ¦   «         }|j        dk    sJ ‚|j	        |u sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |d„ t          d¦  «        D ¦   «         k    sJ ‚t          ¦   «         t          ¦   «         k    sJ ‚d S )Né+   )rô  rŒ   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rù  rm   s     r.   ro   zFtest_directly_parameterized_backend_context_manager.<locals>.<genexpr>˜  rú  r0   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r+   r   rm   s     r.   r/   zGtest_directly_parameterized_backend_context_manager.<locals>.<listcomp>™  rü  r0   )rg   r8   rò  r   rf   re   rô  r"   rj   r  rr   )rz   rè  ré  r  rÁ   s        r.   Ú3test_directly_parameterized_backend_context_managerr  Š  s‡  € åÑ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCð 
ˆÕ-°BÐ7Ñ7Ô7ÀÐ	BÑ	BÔ	Bð 8ð 8Ý(0Ô(CÑ(EÔ(EÑ%ˆ˜Ý�NÑ#Ô#Õ'CÐCÐCÐCÐCØÔ# rÒ)Ð)Ð)Ð)Ø Ò!Ð!Ð!Ð!Ý‰JŒJˆØŒx˜1Š}ˆ}ˆ}ˆ}ØŒz˜^Ð+Ð+Ð+Ð+Ø�!Ð7Ð7­e°A©h¬hÐ7Ñ7Ô7Ñ7Ô7ˆð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð Ð1Ð1­¨a©¬Ð1Ñ1Ô1Ò1Ð1Ð1Ð1õ  Ñ!Ô!Õ%AÑ%CÔ%CÒCÐCÐCÐCÐCÐCs   ¼BCÃCÃCc                  óF   — t          d¦  «         t          j        ¦   «         S )NrÞ   )r	   ÚosÚgetpidr+   r0   r.   Úsleep_and_return_pidr  Ÿ  s   € Ý	ˆ#�J„J€JÝŒ9‰;Œ;Ðr0   c                  óà   — t          ¦   «         t          k    sJ ‚t          ¦   «                              ¦   «         dk    sJ ‚ t          d¬¦  «        d„ t	          d¦  «        D ¦   «         ¦  «        S )Nr   rF   r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   )r$   r  rà   s     r.   ro   z"get_nested_pids.<locals>.<genexpr>«  s4   è è € ÐPÐPÀ!Ð;�gÕ&:Ñ;Ô;Ñ=Ô=ÐPÐPÐPÐPÐPÐPr0   )rg   r    r"   rÕ  rr   r+   r0   r.   Úget_nested_pidsr	  ¤  so   € ÝÑ!Ô!Õ%5Ò5Ð5Ð5Ð5õ ‰:Œ:×'Ò'Ñ)Ô)¨QÒ.Ð.Ð.Ð.ð �8˜1ÐÑÔÐPÐPÅuÈQÁxÄxÐPÑPÔPÑPÔPÐPr0   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú	MyBackendz:Backend to test backward compatibility with older backendsc                 ó^   •— t          t          | ¦  «                             ¦   «         d         S rd   )Úsuperr  Úget_nested_backend)rL   Ú	__class__s    €r.   r  zMyBackend.get_nested_backend±  s&   ø€ õ •Y Ñ%Ô%×8Ò8Ñ:Ô:¸1Ô=Ð=r0   )rS   rT   rU   rV   r  Ú__classcell__)r  s   @r.   r  r  ®  s>   ø€ € € € € ØDÐDð>ð >ð >ð >ð >ð >ð >ð >ð >r0   r  Úback_compat_backend)r2   r1   r)   r  c                 óþ   —  | |¦  «        5   t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }|D ]$}t          t          |¦  «        ¦  «        dk    sJ ‚Œ%	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   )r$   r	  rà   s     r.   ro   z6test_nested_backend_context_manager.<locals>.<genexpr>Ã  s3   è è € Ð'VÐ'VÀqÐ(@­µÑ(@Ô(@Ñ(BÔ(BÐ'VÐ'VÐ'VÐ'VÐ'VÐ'Vr0   rþ   r   )r"   rr   r¢   rž   )rz   r>   Ú
pid_groupsÚ	pid_groups       r.   Ú#test_nested_backend_context_managerr  »  sÞ   € ð 
ˆ�Ñ	Ô	ð ,ð ,Ø'•X QÐ'Ñ'Ô'Ð'VÐ'VÍEÐRTÉIÌIÐ'VÑ'VÔ'VÑVÔVˆ
Ø#ð 	,ð 	,ˆIÝ•s˜9‘~”~Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ð+ð	,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   ŒAA2Á2A6Á9A6)rF   r{   Nc                 ó*  ‡ ‡‡— d„ Š t          d¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «          |‰ ‰¬¦  «        5   t          d¬¦  «        ˆ ˆˆfd„t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó®   — t          ¦   «         t          |          k    sJ ‚t          |¦  «        }t          ¦   «                              ¦   «         |k    sJ ‚d S r6   )rg   r!   r%   r"   rÕ  )Úexpected_backend_typeÚexpected_n_jobs     r.   Úcheck_nested_backendz?test_nested_backend_in_sequential.<locals>.check_nested_backendÐ  sW   € õ $Ñ%Ô%­Ð2GÔ)HÒHÐHÐHÐHõ *¨.Ñ9Ô9ˆÝ‰zŒz×+Ò+Ñ-Ô-°Ò?Ð?Ð?Ð?Ð?Ð?r0   r   r|   c              3   ó^   •K  — | ]'} t          ‰¦  «        t          j        d ¦  «        V — Œ(dS rø   )r$   r   r7   )r,   rÔ   r  s     €r.   ro   z4test_nested_backend_in_sequential.<locals>.<genexpr>Ú  sM   øè è € ð ð ØGHÐ%�Ð$Ñ%Ô%¥hÔ&>ÀÑBÔBðð ð ð ð ð r0   rþ   c              3   óJ   •K  — | ]} t          ‰¦  «        ‰‰¦  «        V — Œd S r6   r.  )r,   rÔ   r>   r  rj   s     €€€r.   ro   z4test_nested_backend_in_sequential.<locals>.<genexpr>ß  sJ   øè è € ð 
ð 
Ø?@Ð)�GÐ(Ñ)Ô)¨'°6Ñ:Ô:ð
ð 
ð 
ð 
ð 
ð 
r0   rq   )r>   rj   rz   r  s   `` @r.   Ú!test_nested_backend_in_sequentialr  È  s5  øøø€ ð@ð @ð @ð …H�AÐÑÔð ð ð ð ÝLQÐRTÉIÌIðñ ô ñ ô ð ð 
ˆ� Ð	(Ñ	(Ô	(ð 
ð 
Ø�˜ÐÑÔð 
ð 
ð 
ð 
ð 
ð 
ÝDIÈ"ÁIÄIð
ñ 
ô 
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Á5BÂBÂBc                 ó®   —  | |¦  «        5 }| t           u r|d         }| t          u r|d         }|j        |k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr>   r   )r'   r&   Únesting_level)rz   Úinner_backendÚexpected_levelÚctxr>   s        r.   Úcheck_nesting_levelr$  ä  s³   € Ø	ˆ�Ñ	Ô	ð 7 3Ø•oÐ%Ð%Ø˜)”nˆGØÕ&Ð&Ð&Ø˜!”fˆGØÔ$¨Ò6Ð6Ð6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   Œ0A
Á
AÁAÚouter_backendr!  c                 óB  ‡ ‡— t          ‰ |d¦  «          t          d|¬¦  «        ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «          ‰ ‰d¬¦  «        5   t          ¦   «         ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rF   ri   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS rø   ©r$   r$  ©r,   rÔ   rz   r!  s     €€r.   ro   z-test_backend_nesting_level.<locals>.<genexpr>õ  sL   øè è € ð .ð .ØDEÐ$�Õ#Ñ$Ô$ W¨m¸QÑ?Ô?ð.ð .ð .ð .ð .ð .r0   rþ   r|   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS rø   r(  r)  s     €€r.   ro   z-test_backend_nesting_level.<locals>.<genexpr>ú  sL   øè è € ð 
ð 
ØHIÐ(�GÕ'Ñ(Ô(¨°-ÀÑCÔCð
ð 
ð 
ð 
ð 
ð 
r0   )r$  r"   rr   )rz   r%  r!  s   ` `r.   Útest_backend_nesting_levelr+  í  s/  øø€ õ ˜ °Ñ2Ô2Ð2à-…H�A˜}Ð-Ñ-Ô-ð .ð .ð .ð .ð .ÝINÈrÉÌð.ñ .ô .ñ ô ð ð 
ˆ� qÐ	)Ñ	)Ô	)ð 
ð 
Ø�‰
Œ
ð 
ð 
ð 
ð 
ð 
ÝMRÐSUÉYÌYð
ñ 
ô 
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Á2BÂBÂBÚwith_retrieve_callbackTc                 ó‚  ‡‡‡— dd l Š G ˆˆfd„dt          ¦  «        }t          d|¦  «         d„ Š | d¦  «        5 } t          d¬¦  «        ˆfd„t	          d	¦  «        D ¦   «         ¦  «         | t
          u r|d
         j        dk    sJ ‚| t          u r|d         j        dk    sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )Nr   c                   ó8   •— e Zd ZdZ”Z” j        d„ ¦   «         ZdS )ú)test_retrieval_context.<locals>.MyBackendr   c              3   ó2   K  — | xj         dz  c_         d V — d S r}   r²  r  s    r.   Úretrieval_contextz;test_retrieval_context.<locals>.MyBackend.retrieval_context	  s"   è è € àˆFŒF�a‰KˆFŒFØˆEˆEˆEˆEˆEr0   N)rS   rT   rU   rn   Úsupports_retrieve_callbackÚcontextmanagerr1  )Ú
contextlibr,  s   €€r.   r  r/    s=   ø€ € € € € ØˆØ%;Ð"à	Ô	"ð	ð 	ñ 
#Ô	"ð	ð 	ð 	r0   r  Ú	retrievalc                 ób   —  t          d¬¦  «        d„ t          | ¦  «        D ¦   «         ¦  «        S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z>test_retrieval_context.<locals>.nested_call.<locals>.<genexpr>  s0   è è € Ð!CÐ!C°Q +¥'­"¡+¤+¨a¡.¤.Ð!CÐ!CÐ!CÐ!CÐ!CÐ!Cr0   rq   )Úns    r.   Únested_callz+test_retrieval_context.<locals>.nested_call  s2   € Ø!�x˜qÐ!Ñ!Ô!Ð!CÐ!C½%À¹(¼(Ð!CÑ!CÔ!CÑCÔCÐCr0   rF   r|   c              3   óH   •K  — | ]} t          ‰¦  «        |¦  «        V — Œd S r6   r.  )r,   rn   r9  s     €r.   ro   z)test_retrieval_context.<locals>.<genexpr>  s6   øè è € ÐEÐE°qÐ/�7 ;Ñ/Ô/°Ñ2Ô2ÐEÐEÐEÐEÐEÐEr0   rŒ   r>   r   )r4  r    r(   r"   rr   r'   rn   r&   )rz   r,  r  r#  r4  r9  s    `  @@r.   Útest_retrieval_contextr;  ÿ  s\  øøø€ ð ÐÐÐðð ð ð ð ð ð ð Õ$ñ ô ð õ ˜k¨9Ñ5Ô5Ð5ðDð Dð Dð 
ˆ�Ñ	Ô	ð ! Ø�˜ÐÑÔÐEÐEÐEÐE½EÀ!¹H¼HÐEÑEÔEÑEÔEÐEØ•oÐ%Ð%Ø�y”>Ô# qÒ(Ð(Ð(Ð(ØÕ&Ð&Ð&Ø�q”6”8˜q’=�=�=�=ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ¼A+B4Â4B8Â;B8r�  )r   r{   g¸…ëQ¸ö?c                 ó€   — t          t          ¦  «        5  t          | ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r�  )r   rY   r"   r=  s    r.   Útest_invalid_batch_sizer>    s…   € å	•
Ñ	Ô	ð (ð (Ý˜JÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   •3³7º7z)n_tasks, n_jobs, pre_dispatch, batch_size))rF   rF   rÊ   rŸ  )rF   rF   rj   rŸ  ©rþ   rF   rj   rŸ  )i  rF   rj   rŸ  r?  )rþ   r²   rj   rŸ  )éÈ   r�  rj   rŸ  )é   r�  ú
2 * n_jobsr   )éú   r�  rÊ   r   )rC  r�  rB  rX   )r@  r�  rB  rŸ  c                 ó¬   — |||dœ}d„ t          | ¦  «        D ¦   «         } t          di |¤Žd„ t          | ¦  «        D ¦   «         ¦  «        }||k    sJ ‚d S )N)rj   r•  r�  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r+   rŠ   rm   s     r.   r/   z0test_dispatch_race_condition.<locals>.<listcomp>:  s   € Ð2Ð2Ð2˜a•�q‘	”	Ð2Ð2Ð2r0   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z/test_dispatch_race_condition.<locals>.<genexpr>;  s2   è è € Ð LÐ L¸ ¥­¡¤°Ñ!3Ô!3Ð LÐ LÐ LÐ LÐ LÐ Lr0   r+   r�   )r£   rj   r•  r�  ÚparamsrË   rÁ   s          r.   Útest_dispatch_race_conditionrH  %  su   € ð( °ÈJÐWÐW€FØ2Ð2¥5¨¡>¤>Ð2Ñ2Ô2€HØ �hÐ Ð ˜Ð Ð Ð LÐ L½UÀ7¹^¼^Ð LÑ LÔ LÑLÔL€GØ�hÒÐÐÐÐÐr0   c                  óº   — t          j        ¦   «         } t          dd¬¦  «        }|j                             d¦  «        }|                     ¦   «         }|| k    sJ ‚d S )NrF   r)   ri   rz   )r   Úget_start_methodr"   Ú_backend_kwargsÚget)Úmp_start_methodr  rz   Ústart_methods       r.   Útest_default_mp_contextrO  ?  sa   € åÔ)Ñ+Ô+€OÝ˜Ð#4Ð5Ñ5Ô5€AØÔ×#Ò# IÑ.Ô.€GØ×+Ò+Ñ-Ô-€LØ˜?Ò*Ð*Ð*Ð*Ð*Ð*r0   c                 ó@  ‡— | dk    rt          j        d¦  «        } t          j                             d¦  «        }|                     dd¦  «        Št          j        ‰‰j        ¦  «          t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )Nr)   r4   r÷  iè  rF   ri   c              3   óh   •K  — | ],} t          t          j        ¦  «        ‰‰j        ¦  «        V — Œ-d S r6   )r$   r   ÚdotÚT)r,   rn   rM   s     €r.   ro   zAtest_no_blas_crash_or_freeze_with_subprocesses.<locals>.<genexpr>^  s9   øè è € Ð'RÐ'RÀA¨­µ´©¬¸¸1¼3Ñ(?Ô(?Ð'RÐ'RÐ'RÐ'RÐ'RÐ'Rr0   )
r   r3   r   ÚrandomÚRandomStateÚrandnrR  rS  r"   rr   )r>   ÚrngrM   s     @r.   Ú.test_no_blas_crash_or_freeze_with_subprocessesrX  H  sŸ   ø€ ð Ð#Ò#Ð#õ ”. Ñ)Ô)ˆõ Œ)×
Ò
 Ñ
#Ô
#€Cð 	�	Š	�$˜ÑÔ€AÝ„Fˆ1ˆaŒc�N„N€Nð (…H�A˜wÐ'Ñ'Ô'Ð'RÐ'RÐ'RÐ'RÍÈqÉÌÐ'RÑ'RÔ'RÑRÔRÐRÐRÐRr0   a  from joblib import Parallel, delayed

def square(x):
    return x ** 2

backend = "{}"
if backend == "spawn":
    from multiprocessing import get_context
    backend = get_context(backend)

print(Parallel(n_jobs=2, backend=backend)(
      delayed(square)(i) for i in range(5)))
c                 óÚ   — | dk    r+t          j        ¦   «         dk    rt          j        d¦  «         t                               | ¦  «        }t          t          j        d|gdd¬¦  «         d S )Nr)   ÚforkzVRequire fork start method to use interactively defined functions with multiprocessing.z-crþ   ú\[0, 1, 4, 9, 16\]©r<  Ústdout_regex)	r   rJ  ÚpytestÚskipÚ,UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_NO_MAINÚformatr   ÚsysÚ
executable)r>   Úcodes     r.   Ú2test_parallel_with_interactively_defined_functionsre  q  sƒ   € ð
 Ð#Ò#Ð#­Ô(;Ñ(=Ô(=ÀÒ(GÐ(GÝŒð.ñ	
ô 	
ð 	
õ 8×>Ò>¸wÑGÔG€DÝÝ	Œ˜˜tÐ$¨bÐ?Tðñ ô ð ð ð r0   a¼  import sys
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed

def run(f, x):
    return f(x)

{define_func}

if __name__ == "__main__":
    backend = "{backend}"
    if backend == "spawn":
        from multiprocessing import get_context
        backend = get_context(backend)

    callable_position = "{callable_position}"
    if callable_position == "delayed":
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(square)(i) for i in range(5)))
    elif callable_position == "args":
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(run)(square, i) for i in range(5)))
    else:
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(run)(f=square, x=i) for i in range(5)))
z!def square(x):
    return x ** 2
zcdef gen_square():
    def square(x):
        return x ** 2
    return square
square = gen_square()
zsquare = lambda x: x ** 2
Údefine_funcÚcallable_position)r$   rÇ   Úkwargsc           
      óÊ  — | dv r/|t           k    st          j        dk    rt          j        d¦  «         t
                               || |t          j         	                    t          j         	                    t          j        ¦  «        ¦  «        ¬¦  «        }|                     d¦  «        }|                     |¦  «         t          t          j        |j        gdd¬¦  «         d S )	N)r)   r4   Úwin32zNot picklable with pickle)rf  r>   rg  Újoblib_root_folderzunpicklable_func_script.pyrþ   r[  r\  )ÚSQUARE_MAINrb  Úplatformr^  r_  Ú)UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_MAINra  r  ÚpathÚdirnameÚjoblibÚ__file__ræ   Úwriter   rc  Ústrpath)r>   rf  rg  Útmpdirrd  Ú	code_files         r.   Ú0test_parallel_with_unpicklable_functions_in_argsrw  ±  sÖ   € ð Ð.Ð.Ð.Ø•{Ò"Ð"¥c¤l°gÒ&=Ð&=åŒÐ/Ñ0Ô0Ð0Ý4×;Ò;ØØØ+Ýœ7Ÿ?š?­2¬7¯?ª?½6¼?Ñ+KÔ+KÑLÔLð	 <ñ ô €Dð —’Ð8Ñ9Ô9€IØ‡O‚O�DÑÔÐÝÝ	Œ˜Ô*Ð+ØØ*ðñ ô ð ð ð r0   aý  import sys
import faulthandler
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed
from functools import partial

class MyClass:
    '''Class defined in the __main__ namespace'''
    def __init__(self, value):
        self.value = value


def square(x, ignored=None, ignored2=None):
    '''Function defined in the __main__ namespace'''
    return x.value ** 2


square2 = partial(square, ignored2='something')

# Here, we do not need the `if __name__ == "__main__":` safeguard when
# using the default `loky` backend (even on Windows).

# To make debugging easier
faulthandler.dump_traceback_later(30, exit=True)

# The following baroque function call is meant to check that joblib
# introspection rightfully uses cloudpickle instead of the (faster) pickle
# module of the standard library when necessary. In particular cloudpickle is
# necessary for functions and instances of classes interactively defined in the
# __main__ module.

print(Parallel(backend="loky", n_jobs=2)(
    delayed(square2)(MyClass(i), ignored=[dict(a=MyClass(1))])
    for i in range(5)
))
)rk  c                 óª   — |                       d¦  «        }|                     t          ¦  «         t          t          j        |j        gdd ¬¦  «         d S )Nz(joblib_interactively_defined_function.pyr[  )r]  r<  )ræ   rs  Ú5INTERACTIVE_DEFINED_FUNCTION_AND_CLASS_SCRIPT_CONTENTr   rb  rc  rt  ©ru  Úscripts     r.   Ú7test_parallel_with_interactively_defined_functions_lokyr|  ö  s\   € ð
 �[Š[ÐCÑDÔD€FØ
‡L‚LÕFÑGÔGÐGÝÝ	Œ˜œÐ(Ø*Øðñ ô ð ð ð r0   a…  import sys
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed, hash
import multiprocessing as mp
mp.util.log_to_stderr(5)

class MyList(list):
    '''MyList is interactively defined by MyList.append is a built-in'''
    def __hash__(self):
        # XXX: workaround limitation in cloudpickle
        return hash(self).__hash__()

l = MyList()

print(Parallel(backend="loky", n_jobs=2)(
    delayed(l.append)(i) for i in range(3)
))
c                 ó¬   — |                       d¦  «        }|                     t          ¦  «         t          t          j        |j        gddd¬¦  «         d S )Nz)joblib_interactive_bound_method_script.pyz\[None, None, None\]ÚLokyProcessé   )r]  Ústderr_regexr<  )ræ   rs  Ú9INTERACTIVELY_DEFINED_SUBCLASS_WITH_METHOD_SCRIPT_CONTENTr   rb  rc  rt  rz  s     r.   Ú:test_parallel_with_interactively_defined_bound_method_lokyr‚    s]   € à�[Š[ÐDÑEÔE€FØ
‡L‚LÕJÑKÔKÐKÝÝ	Œ˜œÐ(Ø,Ø#Øð	ñ ô ð ð ð r0   c                  ób   — t          g ¦  «        }  t          d¬¦  «        | ¦  «        g k    sJ ‚d S )NrF   r|   )Úiterr"   )Úexhausted_iterators    r.   Ú%test_parallel_with_exhausted_iteratorr†  )  s;   € Ý˜b™œÐØ�8˜1ÐÑÔÐ0Ñ1Ô1°RÒ7Ð7Ð7Ð7Ð7Ð7r0   c                 ó˜   — t          | t          j        ¦  «        st          dt	          | ¦  «        ¦  «        ‚|                      ¦   «         S )Nz#Expected np.memmap instance, got %r)rµ   r   ÚmemmapÚ	TypeErrorre   Úcopy)rM   s    r.   Úcheck_memmapr‹  .  s;   € Ý�a�œÑ#Ô#ð HÝÐ=½tÀA¹w¼wÑGÔGÐGØ�6Š6‰8Œ8€Or0   c                 óô  — d„ } t          dd| ¬¦  «        d„  |d¦  «        D ¦   «         ¦  «        }t          | |t          |¦  «        ¦  «        ¦  «        D ]%\  }}t          j                             ||¦  «         Œ& t          dd| ¬¦  «        d„  |d¦  «        D ¦   «         ¦  «        }t          | |t          |¦  «        ¦  «        ¦  «        D ]%\  }}t          j                             ||¦  «         Œ&d S )	Nc              3   óx   K  — t          | ¦  «        D ]'}t          j        dt          j        ¬¦  «        |z  V — Œ(d S )Nrþ   ©r)  )rr   r   ÚonesÚfloat32)r8  rn   s     r.   Úgenerate_arrayszBtest_auto_memmap_on_arrays_from_generator.<locals>.generate_arrays<  sJ   è è € Ý�q‘”ð 	4ð 	4ˆAÝ”'˜"¥B¤JÐ/Ñ/Ô/°!Ñ3Ð3Ð3Ð3Ð3ð	4ð 	4r0   rF   r   ©rj   r%  r>   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   ©r$   r‹  ©r,   rM   s     r.   ro   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>B  óN   è è € ð @ð @Ø%&Ð�•ÑÔ˜aÑ Ô ð@ð @ð @ð @ð @ð @r0   r‡   r²   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r”  r•  s     r.   ro   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>K  r–  r0   )r"   ra  r¢   r   r2  r3  )r>   r‘  rÁ   r5  rË   s        r.   Ú)test_auto_memmap_on_arrays_from_generatorr˜  4  sM  € ð4ð 4ð 4ð @�h˜a¨A°wÐ?Ñ?Ô?ð @ð @Ø*9¨/¸#Ñ*>Ô*>ð@ñ @ô @ñ ô €Gõ   ¨¨½¸W¹¼Ñ)FÔ)FÑGÔGð 8ð 8Ñˆ�Ý
Œ
×%Ò% h°Ñ7Ô7Ð7Ð7ð
 @�h˜a¨A°wÐ?Ñ?Ô?ð @ð @Ø*9¨/¸#Ñ*>Ô*>ð@ñ @ô @ñ ô €Gõ   ¨¨½¸W¹¼Ñ)FÔ)FÑGÔGð 8ð 8Ñˆ�Ý
Œ
×%Ò% h°Ñ7Ô7Ð7Ð7ð8ð 8r0   c                 ó   — | S r6   r+   )Úargs    r.   Úidentityr›  R  s   € Ø€Jr0   c                 óæ  ‡— |                       d¦  «        j        }t          j        }t	          j        |d¬¦  «        t	          j        |d¬¦  «        g}t          ||¦  «         t          |d¬¦  «        Š t          d¬¦  «        ˆfd„d	D ¦   «         ¦  «        \  }t          ‰d
         t          j        ¦  «        sJ ‚‰d
         j        |k    sJ ‚t          j                             ||¦  «         d S )Nz	test.mmapÚuint8rŽ  rÔ  )Ú	mmap_moderF   r|   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r6   )r$   r›  )r,   rÔ   rˆ  s     €r.   ro   z.test_memmap_with_big_offset.<locals>.<genexpr>^  s6   øè è € Ð"JÐ"JÀÐ#4¥7­8Ñ#4Ô#4°VÑ#<Ô#<Ð"JÐ"JÐ"JÐ"JÐ"JÐ"Jr0   rs  r   )ræ   rt  ÚmmapÚALLOCATIONGRANULARITYr   Úzerosr�  r   r   r"   rµ   rˆ  Úoffsetr2  r3  )ru  ÚfnameÚsizeÚobjr5  rˆ  s        @r.   Útest_memmap_with_big_offsetr§  V  sî   ø€ ð �KŠK˜Ñ$Ô$Ô,€EÝÔ%€DÝŒ8�D Ð(Ñ(Ô(­"¬'°$¸gÐ*FÑ*FÔ*FÐ
G€CÝˆˆeÑÔÐÝ�% 3Ð'Ñ'Ô'€FØ"• Ð"Ñ"Ô"Ð"JÐ"JÐ"JÐ"JÀcÐ"JÑ"JÔ"JÑJÔJ�I€VÝ�f˜Q”i¥¤Ñ+Ô+Ð+Ð+Ð+Ø�!Œ9Ô˜dÒ"Ð"Ð"Ð"Ý„J×!Ò! # vÑ.Ô.Ð.Ð.Ð.r0   c                  óh  — t          j        d¬¦  «        5 }  t          dd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          | ¦  «        dk    sJ ‚| d         }t          |j        t          ¦  «        sJ ‚t          |j        ¦  «        dk    sJ ‚d S )	NTr¯   r   )rj   r<  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   zFtest_warning_about_timeout_not_supported_by_backend.<locals>.<genexpr>f  s2   è è € Ð%LÐ%L¸Q o¥g­f¡o¤o°aÑ&8Ô&8Ð%LÐ%LÐ%LÐ%LÐ%LÐ%Lr0   é2   r   z’The backend class 'SequentialBackend' does not support timeout. You have set 'timeout=1' in Parallel but the 'timeout' parameter will not be used.)	r½   r¾   r"   rr   r¢   rµ   r§   râ  r´   )rÀ   r¸   s     r.   Ú3test_warning_about_timeout_not_supported_by_backendr«  d  s  € Ý	Ô	 ¨Ð	-Ñ	-Ô	-ð M°Ø%�˜ 1Ð%Ñ%Ô%Ð%LÐ%LÅ%ÈÁ)Ä)Ð%LÑ%LÔ%LÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Måˆx‰=Œ=˜AÒÐÐÐØ�Œ€AÝ�a”i¥Ñ-Ô-Ð-Ð-Ð-ÝˆqŒy‰>Œ>ð	òð ð ð ð ð s   –2AÁAÁAc                 ó   — || |<   |S r6   r+   )Ú
input_listr˜  r®   s      r.   Úset_list_valuer®  q  s   € Ø€JˆuÑØ€Lr0   )r   rF   r²   c                 óì   ‡— dgdz  Š t          | dd¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «        }t          |¦  «        }t          d„ t	          ‰|¦  «        D ¦   «         ¦  «        sJ ‚d S )Nr   rŒ   rF  r2   ©rj   rE  r>   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰||¦  «        V — Œ$d S r6   )r$   r®  )r,   rn   r­  s     €r.   ro   zPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>|  sS   øè è € ð Qð QØ67Ð�•ÑÔ 
¨A¨qÑ1Ô1ðQð Qð Qð Qð Qð Qr0   c              3   ó(   K  — | ]\  }}||k    V — Œd S r6   r+   ©r,   ÚvrÔ  s      r.   ro   zPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>ƒ  s*   è è € Ð:Ð:™$˜!˜Qˆq�AŠvÐ:Ð:Ð:Ð:Ð:Ð:r0   )r"   rr   rK  rÊ   ra  )rj   r5  r­  s     @r.   Ú=test_parallel_return_order_with_return_as_generator_parameterrµ  v  s£   ø€ ð
 ��q‘€JØP�X˜V¨{ÀKÐPÑPÔPð Qð Qð Qð QÝ;@À¹8¼8ðQñ Qô Qñ ô €Fõ
 �&‰\Œ\€FåÐ:Ð:¥# j°&Ñ"9Ô"9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:r0   c                 óB   — |rt          d¦  «         t          | ¦  «        S )Nr:  )r	   r   )ÚeÚdelays     r.   Ú_sqrt_with_delayr¹  †  s    € Øð Ýˆb‰	Œ	ˆ	Ý�‰7Œ7€Nr0   c                 óR  ‡—  t          |d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        Št          ˆfd„t          d¦  «        D ¦   «         ¦  «        }dgt          t          dd¦  «        ¦  «        z   }t	          d	„ t          ||¦  «        D ¦   «         ¦  «        sJ ‚‹d S )
NrG  r°  c              3   ó`   K  — | ])} t          t          ¦  «        |d z  |dk    ¦  «        V — Œ*dS )rF   r   N)r$   r¹  rm   s     r.   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>”  sY   è è € ð Wð WØ67Ð!�Õ Ñ!Ô! ! Q¡$¨¨aªÑ1Ô1ðWð Wð Wð Wð Wð Wr0   rþ   c              3   ó6   •K  — | ]}t          ‰¦  «        V — Œd S r6   )Únext)r,   rÔ   r5  s     €r.   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>˜  s)   øè è € Ð=Ð=¨q�d 6™lœlÐ=Ð=Ð=Ð=Ð=Ð=r0   é	   r   rF   c              3   ó(   K  — | ]\  }}||k    V — Œd S r6   r+   r³  s      r.   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>œ  s*   è è € ÐSÐS™$˜!˜Qˆq�AŠvÐSÐSÐSÐSÐSÐSr0   )r"   rr   ÚsortedrK  rÊ   ra  )r>   rj   Úquickly_returnedÚexpected_quickly_returnedr5  s       @r.   Ú8_test_parallel_unordered_generator_returns_fastest_firstrÃ  �  sÌ   ø€ ð W�X˜VÐ/DÈgÐVÑVÔVð Wð WÝ;@À¹9¼9ðWñ Wô Wñ ô €Fõ Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ=Ô=Ðà!" ¥d­5°°B©<¬<Ñ&8Ô&8Ñ 8ÐåÐSÐS¥#Ð&?ÐAQÑ"RÔ"RÐSÑSÔSÑSÔSÐSÐSÐSàˆˆr0   c                 ó&   — t          | |¦  «         d S r6   )rÃ  ©r>   rj   s     r.   Ú7test_parallel_unordered_generator_returns_fastest_firstrÆ  ¡  s   € õ =¸WÀfÑMÔMÐMÐMÐMr0   )r   rF   r„   r{   c                 ó  — dgdgdz  z   }t          t          ¦  «        5  t          j        ¦   «         } t          | |¬¦  «        d„ |D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         |z
  }|dk     sJ ‚d S )NrM   rþ   r‡   ri   c              3   óZ   K  — | ]&} t          t          j        ¦  «        |¦  «        V — Œ'd S r6   ©r$   r]   r	   rm   s     r.   ro   z%test_abort_backend.<locals>.<genexpr>±  s7   è è € Ð0XÐ0XÈAÐ1Dµ½¼Ñ1DÔ1DÀQÑ1GÔ1GÐ0XÐ0XÐ0XÐ0XÐ0XÐ0Xr0   rj  )r   r‰  r]   r"   )rj   r>   ÚdelaysÚt_startÚdts        r.   Útest_abort_backendrÍ  «  så   € ð ˆU�b�T˜C‘ZÑ€FÝ	•	Ñ	Ô	ð Yð YÝ”)‘+”+ˆØ0�˜¨Ð0Ñ0Ô0Ð0XÐ0XÐQWÐ0XÑ0XÔ0XÑXÔXÐXðYð Yð Yñ Yô Yð Yð Yð Yð Yð Yð Yøøøð Yð Yð Yð Yõ 
Œ‰Œ�wÑ	€BØ�Š7ˆ7ˆ7ˆ7ˆ7ˆ7s   Ÿ8A#Á#A'Á*A'c                 ó`   — t          j        t          d¦  «        t          ¬¦  «        }d|d<   |S )Ng    €„ArŽ  Fr   )r   r�  ÚintÚbool)rš  r5  s     r.   Úget_large_objectrÑ  ¶  s*   € ÝŒW•S˜‘\”\­Ð.Ñ.Ô.€FØ€Fˆ1�IØ€Mr0   c                 óÞ   — t          || |¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «        }t          |¦  «         t          |¦  «         ~d d d ¦  «         d S # 1 swxY w Y   d S )N)rj   r>   rE  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   )r$   rÑ  rm   s     r.   ro   z0_test_deadlock_with_generator.<locals>.<genexpr>Ä  s6   è è € ÐJÐJ¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐJÐJÐJÐJÐJÐJr0   rþ   )r"   rr   r½  )r>   rE  rj   r   r5  s        r.   Ú_test_deadlock_with_generatorrÔ  À  s·   € õ 
˜¨¸IÐ	FÑ	FÔ	Fð È(Ø�ÐJÐJÅÀbÁ	Ä	ÐJÑJÔJÑJÔJˆÝˆV‰ŒˆÝˆV‰ŒˆØð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   “AA"Á"A&Á)A&c                 ó(   — t          | ||¦  «         d S r6   )rÔ  )r>   rE  rj   s      r.   Útest_deadlock_with_generatorrÖ  Ê  s   € õ
 " '¨9°fÑ=Ô=Ð=Ð=Ð=r0   c                 ó~  — t          t          d¬¦  «        5  t          || |¬¦  «        } |d„ t          d¦  «        D ¦   «         ¦  «        }t	          j        ¦   «         } |d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          j        ¦   «         |z
  dk     s
J d	¦   «         ‚~d S )
Nú)This Parallel instance is already runningr  rL  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rø   rß   rà   s     r.   ro   z/test_multiple_generator_call.<locals>.<genexpr>Û  s2   è è € Ð:Ð:¨1�^•W�U‘^”^ AÑ&Ô&Ð:Ð:Ð:Ð:Ð:Ð:r0   rþ   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z/test_multiple_generator_call.<locals>.<genexpr>Ý  s0   è è € Ð;Ð;¨1˜�¥™œ A™œÐ;Ð;Ð;Ð;Ð;Ð;r0   r‡   rF   ú[The error should be raised immediately when submitting a new task but it took more than 2s.)r   r  r"   rr   r]   )r>   rE  rj   r   ÚgrË  Úgen2s          r.   Útest_multiple_generator_callrÞ  Ò  s  € õ 
•Ð$OÐ	PÑ	PÔ	Pð <ð <Ý˜F¨G¸yÐIÑIÔIˆØˆHÐ:Ð:µ°b±	´	Ð:Ñ:Ô:Ñ:Ô:ˆÝ”)‘+”+ˆØˆxÐ;Ð;µ°c±
´
Ð;Ñ;Ô;Ñ;Ô;ˆð	<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$ð	$ñ %Ô$Ð$ð
 	
ˆˆs   —A*BÂBÂBc                 ó°  — t          || |¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «        }t          j        ¦   «         }t          t          d¬¦  «        5   |d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         |z
  dk     s
J d	¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   ~d S )
NrL  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rA  rß   rà   s     r.   ro   z7test_multiple_generator_call_managed.<locals>.<genexpr>ð  s2   è è € Ð;Ð;¨A�^•W�U‘^”^ BÑ'Ô'Ð;Ð;Ð;Ð;Ð;Ð;r0   rþ   rØ  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z7test_multiple_generator_call_managed.<locals>.<genexpr>ó  s0   è è € Ð=Ð=¨Q˜+�'¥"™+œ+ a™.œ.Ð=Ð=Ð=Ð=Ð=Ð=r0   r‡   rF   rÛ  )r"   rr   r]   r   r  )r>   rE  rj   r   rÜ  rË  Úg2s          r.   Ú$test_multiple_generator_call_managedrã  è  s^  € õ 
�& '°YÐ	?Ñ	?Ô	?ð 

À8ØˆHÐ;Ð;µ°r±´Ð;Ñ;Ô;Ñ;Ô;ˆÝ”)‘+”+ˆÝ•LÐ(SÐTÑTÔTð 	>ð 	>Ø�Ð=Ð=µ%¸±*´*Ð=Ñ=Ô=Ñ=Ô=ˆBð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>õ Œy‰{Œ{˜WÑ$ qÒ(Ð(Ð(ð(ñ )Ô(Ð(Ð(ð

ð 

ð 

ñ 

ô 

ð 

ð 

ð 

ð 

ð 

ð 

øøøð 

ð 

ð 

ð 

ð 	
ˆˆs6   “AC
Á#BÂC
ÂB	ÂC
ÂB	Â'C
Ã
CÃCÚreturn_as_1Úreturn_as_2c           
      óþ  —  t          || |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        } t          || |¬¦  «        d„ t          dd¦  «        D ¦   «         ¦  «        }|dk    rt          |¦  «        }|dk    rt          |¦  «        }t          d„ t	          |t          d¦  «        ¦  «        D ¦   «         ¦  «        sJ ‚t          d„ t	          |t          dd¦  «        ¦  «        D ¦   «         ¦  «        sJ ‚d S )	NrL  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS ©rF   Nrù  rm   s     r.   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>  sO   è è € ð Að AØ !ˆ�•‰Œ�a˜‘dÑÔðAð Að Að Að Að Ar0   rþ   c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS rè  rù  rm   s     r.   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>  sO   è è € ð Bð BØ !ˆ�•‰Œ�a˜‘dÑÔðBð Bð Bð Bð Bð Br0   rj  rG  c              3   ó(   K  — | ]\  }}||k    V — Œd S r6   r+   ©r,   rÙ   rn   s      r.   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>  s*   è è € Ð8Ð8™F˜C ˆs�aŠxÐ8Ð8Ð8Ð8Ð8Ð8r0   c              3   ó(   K  — | ]\  }}||k    V — Œd S r6   r+   rë  s      r.   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>  s*   è è € Ð=Ð=™F˜C ˆs�aŠxÐ=Ð=Ð=Ð=Ð=Ð=r0   )r"   rr   rÀ  rÊ   ra  )r>   rä  rå  rj   rÜ  râ  s         r.   Ú&test_multiple_generator_call_separatedrí  þ  s6  € ð 	A�� °KÐ@Ñ@Ô@ð Að AÝ%*¨2¡Y¤YðAñ Aô Añ 	ô 	€Að 
B��& '°[Ð	AÑ	AÔ	Að Bð BÝ%*¨2¨r¡]¤]ðBñ Bô Bñ 
ô 
€Bð Ð+Ò+Ð+Ý�1‰IŒIˆàÐ+Ò+Ð+Ý�B‰ZŒZˆåÐ8Ð8¥c¨!­U°2©Y¬YÑ&7Ô&7Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8ÝÐ=Ð=¥c¨"­e°B¸©m¬mÑ&<Ô&<Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=r0   zbackend, error))r1   T)r2   F)rD  Fc                 ó˜  — | dk    rt           €t          j        d¦  «         t          d| |¬¦  «        } |d„ t	          d¦  «        D ¦   «         ¦  «        }t          j        |d„ ¦  «        }|rt          t          d¬	¦  «        nt          ¦   «         }|5  t          j
        ¦   «         } t          d| |¬¦  «        d
„ t	          dd¦  «        D ¦   «         ¦  «        }|dk    rt          |¦  «        }t          d„ t          |t	          dd¦  «        ¦  «        D ¦   «         ¦  «        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j
        ¦   «         |z
  dk     sJ ‚d}	|j        r,|	dk     r&|	dz  }	t          j        d¦  «         |j        r|	dk     °&t          j
        ¦   «         |z
  dk     sJ ‚ |j        ¦   «         dk    r	|j        sJ ‚d S d S )Nr1   zRequires multiprocessingrF   rL  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rA  rß   rm   s     r.   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>&  s2   è è € Ð7Ð7¨�•�‘” Ñ#Ô#Ð7Ð7Ð7Ð7Ð7Ð7r0   rþ   c                  ó    — t          d¦  «        S )NzGenerator collected)rá   r+   r0   r.   ú<lambda>z;test_multiple_generator_call_separated_gc.<locals>.<lambda>'  s   € ¥uÐ-BÑ'CÔ'C€ r0   z The executor underlying Parallelr  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS rè  rù  rm   s     r.   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>3  sO   è è € ð @
ð @
Ø$%ˆM�G•D‰MŒM˜!˜Q™$ÑÔð@
ð @
ð @
ð @
ð @
ð @
r0   rj  rG  c              3   ó(   K  — | ]\  }}||k    V — Œd S r6   r+   rë  s      r.   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>:  s*   è è € Ð@Ð@¡  Q�3˜!’8Ð@Ð@Ð@Ð@Ð@Ð@r0   rŒ   r   rp   r   rÌ  )r   r^  r_  r"   rr   ÚweakrefÚfinalizer   r  r   r]   rÀ  rÊ   ra  Úaliver	   rÕ  re  )
r>   rä  rå  Úerrorr   rÜ  Úg_wrr#  rË  Úretrys
             r.   Ú)test_multiple_generator_call_separated_gcrú    sh  € ð 	�6ÒÐ¥ 
ÝŒÐ.Ñ/Ô/Ð/õ ˜ 7°kÐBÑBÔB€HØˆÐ7Ð7­U°2©Y¬YÐ7Ñ7Ô7Ñ7Ô7€AÝÔ˜AÐCÐCÑDÔD€Dð ð	��|Ð#EÐFÑFÔFÐFå‰]Œ]ð ð
 
ð Að Aõ
 ”)‘+”+ˆØ?�H�Q °;Ð?Ñ?Ô?ð @
ð @
Ý).¨r°2©¬ð@
ñ @
ô @
ñ 
ô 
ˆð Ð/Ò/Ð/Ý�q‘	”	ˆAåÐ@Ð@­#¨aµ°r¸2±´Ñ*?Ô*?Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aõ Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$Ð$ð €EØ
Œ*ð ˜ š˜Ø�‰
ˆÝŒ
�3‰Œˆð Œ*ð ˜ š˜õ Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$Ð$à!€xÔ!Ñ#Ô# qÒ(Ð(ð Ô!Ð!Ð!Ð!ð )Ð(ð 	"Ð!s   ÂBD4Ä4D8Ä;D8c                 óÌ  — |j         }t          dd| |¬¦  «        5 } |d„ t          j                             d¦  «        gdz  D ¦   «         ¦  «         t	          t          j        |¦  «        ¦  «        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          d¦  «        D ]'}t          j        |¦  «        s nt          d¦  «         Œ(t          d	¦  «        ‚t          dd| ¬
¦  «        } |d„ t          j                             d¦  «        gdz  D ¦   «         ¦  «         t          d¦  «        D ](}t          j        |¦  «        s d S t          d¦  «         Œ)t          d	¦  «        ‚)NrF   r   )rj   r%  r>   Útemp_folderc              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r”  r•  s     r.   ro   z(test_memmapping_leaks.<locals>.<genexpr>V  s5   è è € Ð	GÐ	G qÐ
�'•,Ñ
Ô
 Ñ
"Ô
"Ð	GÐ	GÐ	GÐ	GÐ	GÐ	Gr0   rþ   r   r‡   rÞ   z/temporary directory of Parallel was not removedr’  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r”  r•  s     r.   ro   z(test_memmapping_leaks.<locals>.<genexpr>f  s5   è è € ÐCÐC 1Ð…g�lÑÔ˜AÑÔÐCÐCÐCÐCÐCÐCr0   )
rt  r"   r   rT  r¢   r  Úlistdirrr   r	   ÚAssertionError)r>   ru  r  rÔ   s       r.   Útest_memmapping_leaksr  K  s»  € ð Œ^€Fõ 
˜ q°'ÀvÐ	NÑ	NÔ	Nð +ÐRSØ	ˆÐ	GÐ	G­R¬Y×-=Ò-=¸bÑ-AÔ-AÐ,BÀQÑ,FÐ	GÑ	GÔ	GÑGÔGÐGõ •2”:˜fÑ%Ô%Ñ&Ô&¨Ò*Ð*Ð*Ð*Ð*ð	+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +õ �3‰ZŒZð Pð PˆÝŒz˜&Ñ!Ô!ð 	ØˆEÝˆc‰
Œ
ˆ
ˆ
åÐNÑOÔOÐOõ 	˜ a°Ð9Ñ9Ô9€AØ€AÐCÐC­¬×)9Ò)9¸"Ñ)=Ô)=Ð(>ÀÑ(BÐCÑCÔCÑCÔCÐCå�3‰ZŒZð Pð PˆÝŒz˜&Ñ!Ô!ð 	ØˆEˆEÝˆc‰
Œ
ˆ
ˆ
åÐNÑOÔOÐOs   ›ABÂB
ÂB
)Nr1   r2   c                 ó¦   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }|d„ t          d¦  «        D ¦   «         k    sJ ‚d S )NrF   ri   c              3   óH   K  — | ]} t          d „ ¦  «        |¦  «        V — ŒdS )c                 ó   — | dz  S rE   r+   rG   s    r.   rñ  z2test_lambda_expression.<locals>.<genexpr>.<lambda>v  s
   € ˜!˜Q™$€ r0   Nr.  rm   s     r.   ro   z)test_lambda_expression.<locals>.<genexpr>u  sH   è è € ð 2ð 2Ø'(Ð���ÑÔ Ñ"Ô"ð2ð 2ð 2ð 2ð 2ð 2r0   rþ   c                 ó   — g | ]}|d z  ‘ŒS ©rF   r+   rm   s     r.   r/   z*test_lambda_expression.<locals>.<listcomp>x  s   € Ð/Ð/Ð/ �q˜!‘tÐ/Ð/Ð/r0   rq   )r>   rÁ   s     r.   Útest_lambda_expressionr  p  sr   € ð
 2�h˜a¨Ð1Ñ1Ô1ð 2ð 2Ý,1°"©I¬Ið2ñ 2ô 2ñ ô €Gð Ð/Ð/¥U¨2¡Y¤YÐ/Ñ/Ô/Ò/Ð/Ð/Ð/Ð/Ð/r0   c                 ó®  ‡— d}d}d|z  Št          d|| ¬¦  «        } |ˆfd„t          |¦  «        D ¦   «         ¦  «         |j        j        |j        j        k    sJ ‚|j        j        |j        j        k    sJ ‚ |ˆfd„t          |¦  «        D ¦   «         ¦  «         |j        j        |j        j        k    sJ ‚|j        j        |j        j        k    sJ ‚dS )	zCTest that a parallel backend correctly resets its batch statistics.rF   iô  g       @rþ   )r…   rj   r>   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r6   rÉ  ©r,   rn   Ú	task_times     €r.   ro   z6test_backend_batch_statistics_reset.<locals>.<genexpr>„  ó8   øè è € Ð>Ð>¨Ð…g�dŒjÑÔ˜)Ñ$Ô$Ð>Ð>Ð>Ð>Ð>Ð>r0   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r6   rÉ  r
  s     €r.   ro   z6test_backend_batch_statistics_reset.<locals>.<genexpr>‹  r  r0   N)r"   rr   r  Ú_effective_batch_sizeÚ_DEFAULT_EFFECTIVE_BATCH_SIZEÚ_smoothed_batch_durationÚ _DEFAULT_SMOOTHED_BATCH_DURATION)r>   rj   Ún_inputsr  r  s       @r.   Ú#test_backend_batch_statistics_resetr  {  s  ø€ ð €FØ€HØ�h‘€Iå˜ F°GÐ<Ñ<Ô<€AØ€AÐ>Ð>Ð>Ð>­e°H©o¬oÐ>Ñ>Ô>Ñ>Ô>Ð>ØŒ:Ô+¨q¬zÔ/WÒWÐWÐWÐWà	Œ
Ô+ØŒ:Ô6ò	7ð 	7ð 	7ð 	7ð €AÐ>Ð>Ð>Ð>­e°H©o¬oÐ>Ñ>Ô>Ñ>Ô>Ð>ØŒ:Ô+¨q¬zÔ/WÒWÐWÐWÐWà	Œ
Ô+ØŒ:Ô6ò	7ð 	7ð 	7ð 	7ð 	7ð 	7r0   c                 óì  — dD ]¾}t          t          |¬¦  «        j        ¦  «        t          ¦   «         u sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t          u sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t
          u sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t          u sJ ‚Œ¿t          dd	d¬
¦  «        }t          |j        ¦  «        t
          u sJ ‚ | d	d¬¦  «        5  t          d¬¦  «        }t          |j        ¦  «        t
          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        t
          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          d¬¦  «        }t          |j        ¦  «        t          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        t          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )N)r   rF   r{   r|   Úthreads©rj   ÚpreferÚ	processesÚ	sharedmem©rj   ÚrequirerF   r1   )rj   r>   r  ©r  rp   ©r  r   )re   r"   r  r8   r    r   rj   )rz   rj   r  s      r.   Ú$test_backend_hinting_and_constraintsr  “  sµ  € ð ð 
4ð 
4ˆÝ•H FÐ+Ñ+Ô+Ô4Ñ5Ô5Õ9UÑ9WÔ9WÐWÐWÐWÐWå˜F¨9Ð5Ñ5Ô5ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3å˜F¨;Ð7Ñ7Ô7ˆÝ�A”JÑÔ¥;Ð.Ð.Ð.Ð.å˜F¨KÐ8Ñ8Ô8ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3Ð3õ 	˜ 6°)Ð<Ñ<Ô<€AÝ�”
ÑÔ�{Ð*Ð*Ð*Ð*à	ˆ� Ð	"Ñ	"Ô	"ð ð õ ˜IÐ&Ñ&Ô&ˆÝ�A”JÑÔ¥;Ð.Ð.Ð.Ð.ØŒx˜1Š}ˆ}ˆ}ˆ}ˆ}ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
ˆ� Ð	"Ñ	"Ô	"ð ð å˜A iÐ0Ñ0Ô0ˆÝ�A”JÑÔ¥;Ð.Ð.Ð.Ð.ØŒx˜1Š}ˆ}ˆ}ˆ}ˆ}ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
ˆ� Ð	"Ñ	"Ô	"ð ð õ
 ˜[Ð)Ñ)Ô)ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3ØŒx˜1Š}ˆ}ˆ}ˆ}ˆ}ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
ˆ� Ð	"Ñ	"Ô	"ð ð Ý˜A {Ð3Ñ3Ô3ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3ØŒx˜1Š}ˆ}ˆ}ˆ}ˆ}ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð sH   Ã>;EÅE
ÅE
Å<F'Æ'F+Æ.F+Æ?;HÈHÈHÈ<I)É)I-É0I-r  )Nr  r  c                 óh  — d„ t          d¦  «        D ¦   «         } t          | |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }||k    sJ ‚t          || ¬¦  «        5   t          ¦   «         d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   ||k    sJ ‚d S )Nc                 ó   — g | ]}|d z  ‘ŒS r  r+   rm   s     r.   r/   z7test_backend_hinting_always_running.<locals>.<listcomp>È  s   € Ð0Ð0Ð0 ˜˜1™Ð0Ð0Ð0r0   rþ   r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z6test_backend_hinting_always_running.<locals>.<genexpr>Ê  sC   è è € ð 5ð 5Ø ˆ�•‰Œ˜ÑÔð5ð 5ð 5ð 5ð 5ð 5r0   )r  rj   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   rl   rm   s     r.   ro   z6test_backend_hinting_always_running.<locals>.<genexpr>Ð  s2   è è € ÐCÐC°A˜_�W¥V™_œ_¨QÑ/Ô/ÐCÐCÐCÐCÐCÐCr0   )rr   r"   r'   )rj   r  Úexpected_resultsrÁ   s       r.   Ú#test_backend_hinting_always_runningr$  Ã  s+  € ð
 1Ð0¥e¨B¡i¤iÐ0Ñ0Ô0Ðà4�h˜f¨VÐ4Ñ4Ô4ð 5ð 5Ý$)¨"¡I¤Ið5ñ 5ô 5ñ ô €Gð Ð&Ò&Ð&Ð&Ð&å	 ¨vÐ	6Ñ	6Ô	6ð Dð DØ•(‘*”*ÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCˆðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð DàÐ&Ò&Ð&Ð&Ð&Ð&Ð&s   Á$/BÂB#Â&B#c                 ó¦  —  G d„ dt           ¦  «        } | |¦   «         ¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        |u sJ ‚t          dd¬¦  «        }t          |j        ¦  «        |u sJ ‚	 d d d ¦  «         n# 1 swxY w Y    G d„ d	t           ¦  «        } | |¦   «         ¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        |u sJ ‚|                      ¦   «         \  }}|d
k    sJ ‚|d
k    sJ ‚t          ddd¬¦  «        }t          |j        ¦  «        t
          u sJ ‚|                      ¦   «         \  }}d}|                     ¦   «         |k    sJ ‚|d
k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t           |¦   «         d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ú[test_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackendTc                 ó   — d S r6   r+   r  s    r.   Úapply_asynczgtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.apply_asyncÜ  ó   € ØˆDr0   c                 ó   — |S r6   r+   rÈ  s     r.   r%   zltest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.effective_n_jobsß  ó   € ØˆMr0   N©rS   rT   rU   Úsupports_sharedmemÚuse_threadsr)  r%   r+   r0   r.   ÚMyCustomThreadingBackendr'  Ø  s=   € € € € € Ø!ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r0   r0  rF   r  r  r  r  c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ú\test_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackendFc                 ó   — d S r6   r+   r  s    r.   r)  zhtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.apply_asyncí  r*  r0   c                 ó   — |S r6   r+   rÈ  s     r.   r%   zmtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.effective_n_jobsð  r,  r0   Nr-  r+   r0   r.   ÚMyCustomProcessingBackendr2  é  s=   € € € € € Ø"ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r0   r5  r»  rþ   )rj   r  r…   z…Using ThreadingBackend as joblib backend instead of MyCustomProcessingBackend as the latter does not provide shared memory semantics.©r>   r  )	r   r"   re   r  Ú
readouterrr    Ústripr   rY   )Úcapsysrz   r0  r  r5  ÚoutÚerrrË   s           r.   Ú9test_backend_hinting_and_constraints_with_custom_backendsr<  Ô  s  € ðð ð ð ð Õ#6ñ ô ð ð 
ˆÐ)Ð)Ñ+Ô+Ñ	,Ô	,ð <ð <Ý˜A kÐ2Ñ2Ô2ˆÝ�A”JÑÔÐ#;Ð;Ð;Ð;Ð;å˜A {Ð3Ñ3Ô3ˆÝ�A”JÑÔÐ#;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ðð ð ð ð Õ$7ñ ô ð ð 
ˆÐ*Ð*Ñ,Ô,Ñ	-Ô	-ð ð Ý˜A kÐ2Ñ2Ô2ˆÝ�A”JÑÔÐ#<Ð<Ð<Ð<Ð<à×$Ò$Ñ&Ô&‰ˆˆSØ�bŠyˆyˆyˆyØ�bŠyˆyˆyˆyå˜A {¸BÐ?Ñ?Ô?ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3à×$Ò$Ñ&Ô&‰ˆˆSð8ð 	ð
 �yŠy‰{Œ{˜hÒ&Ð&Ð&Ð&Ø�bŠyˆyˆyˆyˆyð%ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ( 
•
Ñ	Ô	ð Kð KÝÐ2Ð2Ñ4Ô4¸kÐJÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Ks7   §ABÂBÂBÂ8B;F Æ FÆFÆGÇG
ÇG
c                  óx  — t          t          ¦  «        5  t          d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          �}t          t          ¦  «        5  t          dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          d	d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )
NÚinvalidr  r  r  r  )r  r  r1   r6  r)   )r   rY   r"   r   r+   r0   r.   Ú,test_invalid_backend_hinting_and_constraintsr?    s†  € Ý	•
Ñ	Ô	ð #ð #Ý˜	Ð"Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ 
•
Ñ	Ô	ð $ð $Ý˜Ð#Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $õ 
•
Ñ	Ô	ð :ð :õ 	˜¨[Ð9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :õ
 
€~õ •JÑÔð 	:ð 	:Ý˜V¨[Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:å•JÑÔð 	Eð 	EÝÐ.¸ÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð €~sT   •2²6¹6ÁA.Á.A2Á5A2ÂB+Â+B/Â2B/ÃC/Ã/C3Ã6C3ÄD-Ä-D1Ä4D1c                 ó.  ‡ ‡— t          d¬¦  «        5 }t          |j        ¦  «        j        |j        j        fg}‰ dk    r|cddd¦  «         S  |ˆˆ fd„t          d¦  «        D ¦   «         ¦  «        }||d         z   cddd¦  «         S # 1 swxY w Y   dS )zCPerform nested parallel calls and introspect the backend on the wayrF   r|   r   Nc              3   óV   •K  — | ]#} t          t          ¦  «        dd ‰dz
  i‰¤ŽV — Œ$dS )Úlimitr   Nr+   )r$   Ú_recursive_backend_info)r,   rn   rh  rB  s     €€r.   ro   z*_recursive_backend_info.<locals>.<genexpr>'  sY   øè è € ð 
ð 
àð -�GÕ+Ñ,Ô,ÐGÐG°5¸1±9ÐGÀÐGÐGð
ð 
ð 
ð 
ð 
ð 
r0   r   )r"   re   r  rS   r   rr   )rB  rh  r  Ú
this_levelrÁ   s   ``   r.   rC  rC     s  øø€ õ 
˜Ð	Ñ	Ô	ð '˜qÝ˜AœJÑ'Ô'Ô0°!´*Ô2JÐKÐLˆ
Ø�AŠ:ˆ:Øð'ð 'ð 'ð 'ñ 'ô 'ð 'ð 'ð �!ð 
ð 
ð 
ð 
ð 
å˜1‘X”Xð
ñ 
ô 
ñ 
ô 
ˆð ˜G AœJÑ&ð'ð 'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   “.B
Á/B
Â
BÂBc                 óº   —  | |d¬¦  «        5  t          ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         dz   }|dfdddg}||k    sJ ‚d S )NrF   r|   ÚBackendr   )r    r   )r   rF   )rC  Útitle)rz   r>   Úbackend_types_and_levelsÚtop_level_backend_typeÚexpected_types_and_levelss        r.   Útest_nested_parallelism_limitrK  .  sÂ   € ð 
ˆ� Ð	#Ñ	#Ô	#ð =ð =Ý#:Ñ#<Ô#<Ð ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð %Ÿ]š]™_œ_¨yÑ8Ðà	 Ð#ØØ Ø ð	!Ðð $Ð'@Ò@Ð@Ð@Ð@Ð@Ð@s   Ž)©-°-c                 ó^   —  t          ¦   «         d„ t          d¦  «        D ¦   «         ¦  «        S )z6A horrible function that does recursive parallel callsc              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   )r$   Ú_recursive_parallelrm   s     r.   ro   z&_recursive_parallel.<locals>.<genexpr>A  s4   è è € ÐGÐG¸Ð2•gÕ1Ñ2Ô2Ñ4Ô4ÐGÐGÐGÐGÐGÐGr0   rF   rq   )Únesting_limits    r.   rN  rN  ?  s+   € à�8‰:Œ:ÐGÐG½eÀA¹h¼hÐGÑGÔGÑGÔGÐGr0   c                 ón  —  | |d¬¦  «        5  t          t          ¦  «        5 }t          ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |j        }|dk    r1ddlm} t          ||t          f¦  «        rt          j	        d¦  «         t          |t          ¦  «        sJ ‚d S )NrF   r|   r1   r   )ÚTerminatedWorkerErrorz1Loky worker crash when serializing RecursionError)r   ÚBaseExceptionrN  r®   Ú&joblib.externals.loky.process_executorrQ  rµ   r   r^  ÚxfailÚRecursionError)rz   r>   r½  ÚexcrQ  s        r.   Útest_thread_bomb_mitigationrW  D  sK  € ð 
ˆ� Ð	#Ñ	#Ô	#ð "ð "Ý•MÑ"Ô"ð 	" gÝÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð Œ-€CØ�&ÒÐð 	QÐPÐPÐPÐPÐPå�cÐ1µ=ÐAÑBÔBð 	Nõ ŒLÐLÑMÔMÐMå�c�>Ñ*Ô*Ð*Ð*Ð*Ð*Ð*s1   ŽA£>²A¾A	ÁAÁA	ÁAÁAÁAc                  óv   — i } dD ]$}t           j                             |¦  «        | |<   Œ%| t          d¦  «        fS )N)ÚOMP_NUM_THREADSÚOPENBLAS_NUM_THREADSÚMKL_NUM_THREADSÚVECLIB_MAXIMUM_THREADSÚNUMEXPR_NUM_THREADSÚNUMBA_NUM_THREADSÚ
ENABLE_IPCr‡   )r  ÚenvironrL  r   )Úenv_varsÚvars     r.   Ú_run_parallel_sumrc  `  sF   € Ø€Hðð 	,ð 	,ˆõ œ
Ÿš sÑ+Ô+ˆ�‰ˆØ•\ #Ñ&Ô&Ð&Ð&r0   zNeed OpenMP helper compiledc                 óp  —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }t          t          ¦   «         dz  d¦  «        }|D ]b\  }}||k    sJ ‚|                     ¦   «         D ]@\  }}|                     d¦  «        r|t          |¦  «        k    sJ ‚Œ0|dk    sJ ‚|dk    sJ ‚ŒAŒcd S )NrF   ri   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   )r$   rc  rà   s     r.   ro   z-test_parallel_thread_limit.<locals>.<genexpr>r  sE   è è € ð 2ð 2Ø)*Ð"�Õ!Ñ"Ô"Ñ$Ô$ð2ð 2ð 2ð 2ð 2ð 2r0   r   Ú_THREADSr_  Ú1)r"   rr   rÇ  r#   ÚitemsÚendswithr´   )r>   rÁ   Úexpected_num_threadsÚworker_env_varsÚomp_num_threadsr«   r®   s          r.   Útest_parallel_thread_limitrm  o  s  € ð 2�h˜a¨Ð1Ñ1Ô1ð 2ð 2Ý.3°A©h¬hð2ñ 2ô 2ñ ô €Gõ �y™{œ{¨aÑ/°Ñ3Ô3ÐØ,3ð $ð $Ñ(ˆ˜ØÐ"6Ò6Ð6Ð6Ð6Ø*×0Ò0Ñ2Ô2ð 	$ð 	$‰KˆD�%Ø�}Š}˜ZÑ(Ô(ð $Ø¥Ð$8Ñ 9Ô 9Ò9Ð9Ð9Ð9Ð9à˜|Ò+Ð+Ð+Ð+Ø ’|�|�|�|�|ð	$ð$ð $r0   zThis test requires daskc                 óz   — t          t          d¬¦  «        5   | d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzPlease install daskr  Údask)r   rY   )rz   s    r.   Ú)test_dask_backend_when_dask_not_installedrp  €  s‰   € õ 
•
Ð"7Ð	8Ñ	8Ô	8ð ð Øˆ�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   —0°4·4c                 óN  —  G d„ dt           ¦  «        }d} |  |¦   «         ¦  «        5  t          j        t          |¬¦  «        5   t	          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó"   — e Zd Zd„ Zdd„Zd„ ZdS )ú3test_zero_worker_backend.<locals>.ZeroWorkerBackendc                 ó   — dS rd   r+   )rL   rÇ   rh  s      r.   rÅ  z=test_zero_worker_backend.<locals>.ZeroWorkerBackend.configureŒ  ó   € Ø�1r0   Nc                 ó    — t          d¦  «        ‚)NzNo worker availabler   )rL   ÚfuncÚcallbacks      r.   r)  z?test_zero_worker_backend.<locals>.ZeroWorkerBackend.apply_async�  s   € ÝÐ4Ñ5Ô5Ð5r0   c                 ó   — dS rd   r+   rÈ  s     r.   r%   zDtest_zero_worker_backend.<locals>.ZeroWorkerBackend.effective_n_jobs’  ru  r0   r6   )rS   rT   rU   rÅ  r)  r%   r+   r0   r.   ÚZeroWorkerBackendrs  ‹  sF   € € € € € ð	ð 	ð 	ð	6ð 	6ð 	6ð 	6ð	ð 	ð 	ð 	ð 	r0   rz  z&ZeroWorkerBackend has no active workerr  rF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r6   r  rm   s     r.   ro   z+test_zero_worker_backend.<locals>.<genexpr>˜  s0   è è € Ð@Ð@°!˜{�w¥r™{œ{¨1™~œ~Ð@Ð@Ð@Ð@Ð@Ð@r0   )r    r^  r   r  r"   rr   )rz   rz  Úexpected_msgs      r.   Útest_zero_worker_backendr}  ‡  sq  € ðð ð ð ð Õ,ñ ô ð ð <€LØ	ˆÐ"Ð"Ñ$Ô$Ñ	%Ô	%ð Að AÝŒ]�<¨|Ð<Ñ<Ô<ð 	Að 	AØ�H˜AÐÑÔÐ@Ð@µu¸Q±x´xÐ@Ñ@Ô@Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	AðAð Að Añ Aô Að Að Að Að Að Að Að Aøøøð Að Að Að Að Að As5   ©BÁ1BÁ6BÂB	ÂBÂ	B	Â
BÂBÂ!Bc                  óv  ‡— da d„ Š ‰¦   «         dk    sJ ‚ t          d¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «        } t          | ¦  «        dhk    sJ ‚da  ‰¦   «         dk    sJ ‚ t          d¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «        } t          | ¦  «        dhk    sJ ‚d S )Nzoriginal valuec                  ó   — t           S r6   )ÚMY_GLOBAL_VARIABLEr+   r0   r.   Úcheck_globalsz@test_globals_update_at_each_parallel_call.<locals>.check_globals£  s   € å!Ð!r0   rF   r|   c              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r6   r.  ©r,   rn   r�  s     €r.   ro   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>©  óE   øè è € ð 1ð 1Ø%&Ð��ÑÔÑ Ô ð1ð 1ð 1ð 1ð 1ð 1r0   zchanged valuec              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r6   r.  rƒ  s     €r.   ro   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>³  r„  r0   )r€  r"   rr   rž   )Úworkers_global_variabler�  s    @r.   Ú)test_globals_update_at_each_parallel_callr‡  ›  s*  ø€ ð *Ðð"ð "ð "ð ˆ=‰?Œ?Ð.Ò.Ð.Ð.Ð.à0�h¨aÐ0Ñ0Ô0ð 1ð 1ð 1ð 1Ý*/°©(¬(ð1ñ 1ô 1ñ ô Ðõ Ð&Ñ'Ô'Ð,<Ð+=Ò=Ð=Ð=Ð=ð )ÐØˆ=‰?Œ?˜oÒ-Ð-Ð-Ð-à0�h¨aÐ0Ñ0Ô0ð 1ð 1ð 1ð 1Ý*/°©(¬(ð1ñ 1ô 1ñ ô Ðõ Ð&Ñ'Ô'¨OÐ+<Ò<Ð<Ð<Ð<Ð<Ð<r0   c                  ó²   — dd l } | j                             dd¦  «        } | j        ||¦  «         t	          j        d¦  «        }|                     ¦   «         S )Nr   r‡   Úthreadpoolctl)ÚnumpyrT  rV  rR  r^  ÚimportorskipÚthreadpool_info)r   rM   r‰  s      r.   Ú_check_numpy_threadpool_limitsr�  ¿  sX   € ØÐÐÐð
 	Œ	�Š˜˜SÑ!Ô!€AØ
€B„Fˆ1ˆa�L„L€LÝÔ'¨Ñ8Ô8€MØ×(Ò(Ñ*Ô*Ð*r0   c                 óˆ   — |D ]}|d         | d         k    r
|d         c S Œt          d                     | ¦  «        ¦  «        ‚)NÚfilepathÚnum_threadsz,An unexpected module was loaded in child:
{})rY   ra  )Úchild_moduleÚparent_infoÚparent_modules      r.   Ú_parent_max_num_threads_forr”  Ë  s`   € Ø$ð 0ð 0ˆØ˜Ô$¨°ZÔ(@Ò@Ð@Ø  Ô/Ð/Ð/Ð/ð Aå
Ø7×>Ò>¸|ÑLÔLñô ð r0   c                 óv   — | D ]5}|D ]0}t          ||¦  «        }t          ||¦  «        |h}|d         |v sJ ‚Œ1Œ6d S )Nr�  )r”  Úmin)Úworkers_infor’  r�  Úchild_threadpool_infor‘  Úparent_max_num_threadsrË   s          r.   Úcheck_child_num_threadsrš  Ô  sw   € ð ".ð ;ð ;ÐØ1ð 	;ð 	;ˆLÝ%@Ø˜kñ&ô &Ð"õ ˜KÐ)?Ñ@Ô@À+ÐNˆHØ Ô.°(Ð:Ð:Ð:Ð:Ð:ð	;ð;ð ;r0   )rF   r²   r„   r{   c                 ó|  — t          ¦   «         }t          |¦  «        dk    rt          j        d¬¦  «          t	          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }t          | ¦  «        } | dk    r|d         d	         }nt          t          ¦   «         | z  d¦  «        }t          |||¦  «         d S )
Nr   ú&Need a version of numpy linked to BLASr·  r1   rÅ  c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   ©r$   r�  rm   s     r.   ro   z;test_threadpool_limitation_in_child_loky.<locals>.<genexpr>í  sM   è è € ð Gð GØ67Ð/�Õ.Ñ/Ô/Ñ1Ô1ðGð Gð Gð Gð Gð Gr0   rF   r   r�  ©
r�  r¢   r^  r_  r"   rr   r%   rÇ  r#   rš  )rj   r’  Úworkers_threadpool_infosÚexpected_child_num_threadss       r.   Ú(test_threadpool_limitation_in_child_lokyr¢  á  sã   € õ 1Ñ2Ô2€KÝ
ˆ;ÑÔ˜1ÒÐÝŒÐCÐDÑDÔDÐDàF�x°¸vÐFÑFÔFð Gð GÝ;@À¹8¼8ðGñ Gô Gñ  ô  Ðõ ˜fÑ%Ô%€FØ�‚{€{Ø%0°¤^°MÔ%BÐ"Ð"å%(­©¬¸Ñ)>ÀÑ%BÔ%BÐ"åØ  +Ð/Iñô ð ð ð r0   Úinner_max_num_threads)r   rF   r²   Nc                 óÎ  — t          ¦   «         }t          |¦  «        dk    rt          j        d¬¦  «          | d|¬¦  «        5   t	          |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }|d	k    r|d         d
         }n$|€ t          t          ¦   «         |z  d	¦  «        }n|}t          |||¦  «         d S )Nr   rœ  r·  r1   ©r£  r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r6   rž  rm   s     r.   ro   z>test_threadpool_limitation_in_child_context.<locals>.<genexpr>  sE   è è € ð ;
ð ;
Ø:;Ð3�GÕ2Ñ3Ô3Ñ5Ô5ð;
ð ;
ð ;
ð ;
ð ;
ð ;
r0   rF   r   r�  rŸ  )rz   rj   r£  r’  r   r¡  s         r.   Ú+test_threadpool_limitation_in_child_contextr§  ü  sV  € õ 1Ñ2Ô2€KÝ
ˆ;ÑÔ˜1ÒÐÝŒÐCÐDÑDÔDÐDà	ˆ�Ð/DÐ	EÑ	EÔ	Eð 
ð 
Ø#:¥8°6Ð#:Ñ#:Ô#:ð ;
ð ;
Ý?DÀQ¹x¼xð;
ñ ;
ô ;
ñ $
ô $
Ð ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 ˜fÑ%Ô%€FØ�‚{€{Ø%0°¤^°MÔ%BÐ"Ð"Ø	Ð	&Ý%(­©¬¸Ñ)>ÀÑ%BÔ%BÐ"Ð"à%:Ð"åØ  +Ð/Iñô ð ð ð s   Á1BÂBÂBÚvar_name)rZ  r[  rY  c                 óÈ  ‡‡— t          |¦  «        dk    rt          j        d¦  «         t          d¬¦  «                             ¦   «          d„ Št
          j                             ‰¦  «        }	 dt
          j        ‰<    t          |¬¦  «        ˆˆfd„t          d	¦  «        D ¦   «         ¦  «        }|ddgk    sJ ‚ | d
d¬¦  «        5   t          |¬¦  «        ˆˆfd„t          d	¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |ddgk    sJ ‚	 |€t
          j        ‰= d S |t
          j        ‰<   d S # |€t
          j        ‰= n|t
          j        ‰<   w xY w)Nr   zSkip test when n_jobs == 1T©Úreusec                 ó@   — t           j                             | ¦  «        S r6   )r  r`  rL  )r¨  s    r.   Ú_get_envz>test_threadpool_limitation_in_child_override.<locals>._get_env,  s   € ÝŒz�~Š~˜hÑ'Ô'Ð'r0   Ú4r|   c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r6   r.  ©r,   rn   r­  r¨  s     €€r.   ro   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>3  s6   øè è € Ð)XÐ)XÈ!Ð*;­'°(Ñ*;Ô*;¸HÑ*EÔ*EÐ)XÐ)XÐ)XÐ)XÐ)XÐ)Xr0   rF   r1   r¥  c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r6   r.  r°  s     €€r.   ro   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>7  sG   øè è € ð .ð .Ø01Ð!•˜Ñ!Ô! (Ñ+Ô+ð.ð .ð .ð .ð .ð .r0   rg  )
r%   r^  r_  r   Úshutdownr  r`  rL  r"   rr   )rz   rj   r¨  Úoriginal_var_valuerÁ   r­  s     `  @r.   Ú,test_threadpool_limitation_in_child_overrider´    sö  øø€ õ ˜ÑÔ 1Ò$Ð$ÝŒÐ0Ñ1Ô1Ð1õ  Ð%Ñ%Ô%×.Ò.Ñ0Ô0Ð0ð(ð (ð (õ œŸš¨Ñ1Ô1Ðð6Ø"�Œ
�8Ñà)•( &Ð)Ñ)Ô)Ð)XÐ)XÐ)XÐ)XÐ)XÍuÐUVÉxÌxÐ)XÑ)XÔ)XÑXÔXˆØ˜3 ˜*Ò$Ð$Ð$Ð$àˆW�V°1Ð5Ñ5Ô5ð 	ð 	Ø-•h fÐ-Ñ-Ô-ð .ð .ð .ð .ð .Ý5:¸1±X´Xð.ñ .ô .ñ ô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˜3 ˜*Ò$Ð$Ð$Ð$Ð$ð Ð%Ý”
˜8Ð$Ð$Ð$à#5�BŒJ�xÑ Ð Ð øð Ð%Ý”
˜8Ð$Ð$à#5�BŒJ�xÑ Ð5Ð5Ð5Ð5s1   Á/AE  Ã4DÃ<E  ÄDÄE  ÄDÄE  Å !E!)rF   r²   r{   c                 ó¬   — d„ } || ¦  «         t          d¬¦  «        }t          d¦  «        D ]%} || ¦  «         t          d¬¦  «        }||k    sJ ‚Œ&d S )Nc                 óŠ   ‡— t          d¦  «        Š t          | ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )Nrþ   r|   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r6   )r$   Úsum)r,   rn   rA   s     €r.   ro   zAtest_loky_reuse_workers.<locals>.parallel_call.<locals>.<genexpr>K  s1   øè è € ÐCÐC°A ¥­¡¤¨Q¡¤ÐCÐCÐCÐCÐCÐCr0   r�   )rj   rA   s    @r.   Úparallel_callz.test_loky_reuse_workers.<locals>.parallel_callI  sJ   ø€ Ý�"‰IŒIˆØ�˜ÐÑÔÐCÐCÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCÐCÐCÐCr0   Trª  rþ   )r   rr   )rj   r¹  Úfirst_executorrÔ   r¥   s        r.   Útest_loky_reuse_workersr»  C  s‹   € ðDð Dð Dð
 €M�&ÑÔÐÝ*°Ð6Ñ6Ô6€Nõ �2‰YŒYð *ð *ˆØˆ�fÑÔÐÝ(¨tÐ4Ñ4Ô4ˆØ˜>Ò)Ð)Ð)Ð)Ð)ð*ð *r0   c                 ó2   — d| t          j        ¦   «         <   d S )NÚinitialized)r  r  )Ústatuss    r.   Ú_set_initializedr¿  Y  s   € Ø'€F�2Œ9‰;Œ;ÑÐÐr0   c                 óL  — t          j        ¦   «         }|                      |d ¦  «        }|dv sJ d|› �¦   «         ‚|sd S d| |<   t          j        ¦   «         dz   }t	          d„ |                      ¦   «         D ¦   «         ¦  «        }t          j        ¦   «         |k     rb||k     r\t          j        d¦  «         t	          d„ |                      ¦   «         D ¦   «         ¦  «        }t          j        ¦   «         |k     r||k     °\t          j        ¦   «         |k    rt          d¦  «        ‚|S )	N)r½  Ústartedz2worker should have been in initialized state, got rÁ  r:  c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS ©rÁ  r+   ©r,   Úpidr´  s      r.   r/   z!_check_status.<locals>.<listcomp>i  s!   € ÐHÐHÐH™V˜S !¸¸iº¸�S¸¸¸r0   rÞ   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS rÃ  r+   rÄ  s      r.   r/   z!_check_status.<locals>.<listcomp>l  s!   € ÐLÐLÐL¡  a¸QÀ)º^¸^˜¸^¸^¸^r0   z-Waited more than 30s to start all the workers)r  r  rL  r]   r¢   rh  r	   r   )r¾  rj   Úwait_workersrÅ  ÚstateÚdeadlineÚ	n_starteds          r.   Ú_check_statusrË  ]  s!  € Ý
Œ)‰+Œ+€CØ�JŠJ�s˜DÑ!Ô!€EØÐ.Ð.Ð.Ð.ØD¸UÐDÐDñ /Ô.Ð.ð ð Øˆà€Fˆ3�KåŒy‰{Œ{˜RÑ€HÝÐHÐH v§|¢|¡~¤~ÐHÑHÔHÑIÔI€IÝ
Œ)‰+Œ+˜Ò
 Ð
  Y°Ò%7Ð%7ÝŒ
�3‰ŒˆÝÐLÐL¨6¯<ª<©>¬>ÐLÑLÔLÑMÔMˆ	õ Œ)‰+Œ+˜Ò
 Ð
  Y°Ò%7Ð%7õ „y�{„{�hÒÐÝÐJÑKÔKÐKà€Jr0   c                 ó  ‡ ‡— t          j        ¦   «         }|                     ¦   «         Š ||‰ t          ‰f¬¦  «        5   t	          ¦   «         ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r>   rj   ÚinitializerÚinitargsc              3   óT   •K  — | ]"} t          t          ¦  «        ‰‰¦  «        V — Œ#d S r6   ©r$   rË  ©r,   rn   rj   r¾  s     €€r.   ro   z+test_initializer_context.<locals>.<genexpr>„  s8   øè è € ÐNÐN¸aÐ)•7�=Ñ)Ô)¨&°&Ñ9Ô9ÐNÐNÐNÐNÐNÐNr0   r‡   )r   r—  Údictr¿  r"   rr   )rj   r>   rz   r™  r¾  s   `   @r.   Útest_initializer_contextrÔ  t  sñ   øø€ õ
 Œj‰lŒl€GØ�\Š\‰^Œ^€Fð 
ˆØØÝ$Ø�ð	
ñ 
ô 
ð Oð Oð 	�‰
Œ
ÐNÐNÐNÐNÐNÅ5ÈÁ:Ä:ÐNÑNÔNÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os   ¿2A>Á>BÂBc                 óÐ   ‡ ‡— t          j        ¦   «         }|                     ¦   «         Š t          |‰ t          ‰f¬¦  «        ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )NrÍ  c              3   óT   •K  — | ]"} t          t          ¦  «        ‰‰¦  «        V — Œ#d S r6   rÑ  rÒ  s     €€r.   ro   z,test_initializer_parallel.<locals>.<genexpr>•  s8   øè è € ÐAÐA°Ð…g�mÑÔ˜V VÑ,Ô,ÐAÐAÐAÐAÐAÐAr0   r‡   )r   r—  rÓ  r"   r¿  rr   )rj   r>   r™  r¾  s   `  @r.   Útest_initializer_parallelr×  ‡  sƒ   øø€ õ Œj‰lŒl€GØ�\Š\‰^Œ^€Fð…HØØÝ$Ø�ð	ñ ô ð
 BÐAÐAÐAÐAµe¸C±j´jÐAÑAÔAñBô Bð Bð Bð Br0   c                 ó’  ‡ ‡— d}t          j        ¦   «         }|                     ¦   «         Št          ¦   «         }t	          |¦  «        D ]`} t          d‰ t          ‰f¬¦  «        ˆ ˆfd„t	          ‰ ¦  «        D ¦   «         ¦  «        }|                     t          |¦  «        ¦  «        }Œat          |¦  «        ‰ k    s
J d¦   «         ‚d S )Nrp   r1   rÍ  c              3   óX   •K  — | ]$} t          t          ¦  «        ‰‰d ¬¦  «        V — Œ%dS ©T)rÇ  NrÑ  rÒ  s     €€r.   ro   z*test_initializer_reused.<locals>.<genexpr>¨  óP   øè è € ð 

ð 

àð #�G•MÑ"Ô" 6¨6ÀÐEÑEÔEð

ð 

ð 

ð 

ð 

ð 

r0   z=The workers should be reused when the initializer is the same)	r   r—  rÓ  rž   rr   r"   r¿  Úunionr¢   ©rj   Ún_repetitionsr™  Úpidsrn   rÁ   r¾  s   `     @r.   Útest_initializer_reusedrà  ˜  sç   øø€ ð
 €MÝŒj‰lŒl€GØ�\Š\‰^Œ^€Få‰5Œ5€DÝ�=Ñ!Ô!ð 
(ð 
(ˆð
•(ØØÝ(Ø�Yð	
ñ 
ô 
ð


ð 

ð 

ð 

ð 

å˜6‘]”]ð

ñ 

ô 

ñ
ô 
ˆð �zŠz�#˜g™,œ,Ñ'Ô'ˆˆÝˆt‰9Œ9˜ÒÐÐØGñ ÔÐÐÐr0   c                 ó˜  ‡ ‡— d}t          j        ¦   «         }t          ¦   «         }t          |¦  «        D ]t}|                     ¦   «         Š t          d‰ t          ‰f¬¦  «        ˆ ˆfd„t          ‰ ¦  «        D ¦   «         ¦  «        }|                     t          |¦  «        ¦  «        }Œut          |¦  «        |‰ z  k    s
J d¦   «         ‚d S )Nrp   r1   rÍ  c              3   óX   •K  — | ]$} t          t          ¦  «        ‰‰d ¬¦  «        V — Œ%dS rÚ  rÑ  rÒ  s     €€r.   ro   z.test_initializer_not_reused.<locals>.<genexpr>Ã  rÛ  r0   zFThe workers should not be reused when the initializer arguments change)	r   r—  rž   rr   rÓ  r"   r¿  rÜ  r¢   rÝ  s   `     @r.   Útest_initializer_not_reusedrã  ²  sì   øø€ ð €MÝŒj‰lŒl€Gå‰5Œ5€DÝ�=Ñ!Ô!ð (ð (ˆØ—’‘”ˆð
•(ØØÝ(Ø�Yð	
ñ 
ô 
ð


ð 

ð 

ð 

ð 

å˜6‘]”]ð

ñ 

ô 

ñ
ô 
ˆð �zŠz�#˜g™,œ,Ñ'Ô'ˆˆÝˆt‰9Œ9˜¨Ñ.Ò.Ð.Ð.ØPñ /Ô.Ð.Ð.Ð.r0   )F)r   r   )rp   r6   )ÓrV   r   r  rœ   rb  r2   r]   r½   rô  r4  r   Úmathr   r)   r   Úpickler   r	   Ú	tracebackr
   r^  rq  r   r   r   Újoblib._multiprocessing_helpersr   Újoblib.test.commonr   r   r   r   Újoblib.testingr   r   r   r   r   Újoblib.externals.lokyr   rv  r   ÚposixÚImportErrorÚ _openmp_test_helper.parallel_sumr   ÚdistributedÚjoblib._parallel_backendsr   r   r   r   r    Újoblib.parallelr!   r"   r#   r$   r%   r&   r'   r(   rŠ  ÚRETURN_GENERATOR_BACKENDSÚpoprÀ  ÚkeysÚALL_VALID_BACKENDSÚPROCESS_BACKENDSÚPARALLEL_BACKENDSÚhasattrr–   r3   r8   r?   rC   rH   Ú	ExceptionrJ   r[   r_   rb   rg   rt   rv   ry   Úmarkrƒ   r�   r©   rÂ   rÎ   rÚ   rè   rí   rð   rò   rô   rü   r  r  r   r8  r>  rB  rž   rM  rg  rt  rx  r’  r�  r¥  r©  r­  r³  r¶  rT  rÀ  rÂ  rÊ  rÏ  r×  rÚ  rÞ  rã  rê  rï  Úextendrr   rð  rò  rý  r  r  r	  Ú_parallel_backendsr  r  r  r$  r+  r;  r>  rH  rO  rX  r`  re  rn  rl  ÚSQUARE_LOCALÚSQUARE_LAMBDArw  ra  ro  rp  rr  ry  r|  r�  r‚  r†  r‹  r˜  r›  r§  r«  r®  rµ  r¹  rÃ  rÆ  rÍ  rÑ  rÔ  rÖ  rÞ  rã  rí  rú  r  r  r  r  r$  r<  r?  rC  rK  rN  Úno_coverrW  rc  rm  rp  r}  r‡  r�  r”  rš  r¢  r§  r´  r»  r¿  rË  rÔ  r×  rà  rã  r+   r0   r.   ú<module>rÿ     s[  ððð ð €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à €€€à €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tà€>à;Ð;Ð;Ð;Ð;Ð;à Ð Ð Ð Ð Ð ðØ€L€L€L€LøØð ð ð Ø€E€E€EðøøøðØ>Ð>Ð>Ð>Ð>Ð>Ð>øØð ð ð Ø€L€L€LðøøøðØÐÐÐÐøØð ð ð Ø€K€K€Kðøøøðð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð *˜HœM™OœOÐ Ø × Ò Ð/°Ñ 6Ô 6Ð 6à�V˜f˜f ] X¤]¡_¤_Ñ5Ô5Ñ5Ð à ÐKÐKÀ(ÐKÑKÔKÑ KÐ Ø€:ØÐÐà)¨6Ð2ÐØ$¨ }Ñ4Ð à
€7ˆ2ˆ}ÑÔð 7à×Ò˜n˜bœn¨WÑ5Ô5Ñ6Ô6Ð6ð.ð .ð .ðIð Ið Iðð ð ðð ð ðð ð ð ð  ñ ô ð ðð ð ð ðð ð ð
ð ð ð ð2ð 2ð 2ðð ð ðð ð ð"ð "ð "ð €ˆY˜Ð*:Ð;Ñ<Ô<Ø„×ÒØ%ØˆbÐ"Ð"¨"Ð-Ñ-Ô-Ð.°	Ð:Ø0Ð0Ð0ð ñ ô ð
 ð.ð .ñ Ôñô ñ =Ô<ð.ð €ˆYÐ*Ñ+Ô+Ø€ˆX�~�~�~Ñ&Ô&Ø€ˆY˜˜˜Ñ%Ô%ð,ð ,ñ &Ô%ñ 'Ô&ñ ,Ô+ð,ð €ˆYÐ*Ñ+Ô+Ø€ˆX˜˜1�vÑÔðð ñ Ôñ ,Ô+ðð( €ˆYÐ*Ñ+Ô+ð'ð 'ñ ,Ô+ð'ðTð ð ð0 Ø€Ø+ðð ð ñ
ô 
ðð ñ
ô 
ñ Ôðð2 Ø€ˆYÐ@Ð@Ð@ÑAÔAðð ñ BÔAñ ÔððQð Qð Qð €ˆ_˜hÑ'Ô'Ø€Ð˜xÑ(Ô(ðð ñ )Ô(ñ (Ô'ððð ð ð ðWð Wñ ÔðWðð ð ð €ˆX�y�y�yÑ!Ô!ðð ñ "Ô!ðð €ˆYÐ)Ñ*Ô*ð/ð /ñ +Ô*ð/ð: ð
ð 
ñ Ôð
ð ØØ€ˆ[˜/˜/˜/Ñ*Ô*Ø€ˆ\˜A˜t˜9Ñ%Ô%ð5ð 5ñ &Ô%ñ +Ô*ñ Ôñ „ð5ð$ €ˆYÐ)Ñ*Ô*ð	ð 	ñ +Ô*ð	ð Ø€ˆYÐ)Ñ*Ô*ð
ð 
ñ +Ô*ñ Ôð
ð Ø€ˆY˜˜Ð5Ñ6Ô6¸,¸ÑGÑHÔHØ€ˆ[˜;Ð(=Ð>Ñ?Ô?ðð ñ @Ô?ñ IÔHñ Ôðð$ Ø€ˆYÐ(Ñ)Ô)ðC
ð C
ñ *Ô)ñ ÔðC
ðL Ø€ˆY˜Ñ!Ô!ðEð Eñ "Ô!ñ ÔðEð,'ð 'ð 'ð €ˆY˜Ñ!Ô!Ø€Ø ð ðð ð ð	
ð$ ðð ð ð	
ð%$ñ'ô 'ðPð ñQ'ô 'ñ "Ô!ðRð  Ø€ˆYÐ)Ñ*Ô*ðð ñ +Ô*ñ Ôðð<4ð 4ð 4ð Ø€ˆYÐ(Ñ)Ô)ð3ð 3ñ *Ô)ñ Ôð3ð
ð 
ð 
ðHð Hð HðMð Mð Mð Ø€ˆYÐ)Ñ*Ô*Ø„×ÒÐCÐÑDÔDð-ð -ñ EÔDñ +Ô*ñ Ôð-ð,ð ð ð ð Ð+ñ ô ð ð
ð 
ð 
ð €ˆYÐ*Ñ+Ô+ðHð Hñ ,Ô+ðHð$ Ø€ˆYÐ)Ñ*Ô*Ø€ˆX�}�}�}Ñ%Ô%ð:ð :ñ &Ô%ñ +Ô*ñ Ôð:ð%ð %ð %ð	Dð 	Dð 	Dð €ˆ�$ˆÐ=Ð>Ñ>Ô>ð9ð 9ñ ?Ô>ð9ð;ð ;ð ;ð* $5°Q°Q°QÔ#7Ð  Ø  × 'Ò 'Ð(QÐ(QÈÈÈaÉÌÐ(QÑ(QÔ(QÑ RÔ RÐ Rð Ø€ˆYÐ8Ñ9Ô9Ø€ˆYÐ)¨?Ð;Ñ<Ô<ðDð Dñ =Ô<ñ :Ô9ñ ÔðDð,ð ð ð ð Ð#4ñ ô ð ð €ˆY˜Ð*:Ð;Ñ<Ô<ðDð Dñ =Ô<ðDð& €ˆY˜Ð*:Ð;Ñ<Ô<ðDð Dñ =Ô<ðDð(ð ð ð
Qð Qð Qð>ð >ð >ð >ð >�Ô)Ô5ñ >ô >ð >ð Ð Ð/°Ñ ;Ô ;Ð ;ð Ø€ˆYÐWÐWÐWÑXÔXØ€ˆY˜Ð*:Ð;Ñ<Ô<ð,ð ,ñ =Ô<ñ YÔXñ Ôð,ð Ø€ˆX�}�}�}Ñ%Ô%Ø€ˆYÐ)Ñ*Ô*Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð
ð 
ñ =Ô<ñ +Ô*ñ &Ô%ñ Ôð
ð07ð 7ð 7ð Ø€ˆ_Ð/Ñ0Ô0Ø€ˆ_Ð/Ñ0Ô0Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð
ð 
ñ =Ô<ñ 1Ô0ñ 1Ô0ñ Ôð
ð Ø€ˆY˜Ð*:Ð;Ñ<Ô<Ø€Ð%¨¨e }Ñ5Ô5ð!ð !ñ 6Ô5ñ =Ô<ñ Ôð!ð: €ˆ\˜=˜=˜=Ñ)Ô)ð(ð (ñ *Ô)ð(ð
 €Ø/ðð ð ñô ð ð ñ!ô ð ð ð+ð +ñ Ôð+ð ØØ€ˆYÐ(Ñ)Ô)ðSð Sñ *Ô)ñ Ôñ „ðSð,0Ð ,ð  Ø€ˆYÐ(Ñ)Ô)ðð ñ *Ô)ñ Ôðð-Ð )ð@€ð€ð€ð
 Ø€ˆYÐ(°"°*¨B¨BÀ7À)ÑLÑMÔMØ€ˆ]˜[¨,¸ÐFÑGÔGØ€Ð Ð"?Ð"?Ð"?Ñ@Ô@ðð ñ AÔ@ñ HÔGñ NÔMñ Ôðð,(9÷P ‚F˜bœgŸošo¨b¬g¯oªo¸f¼oÑ.NÔ.NÑOÔO€FÑPÔPðQ 6ðV ð
ð 
ñ Ôð
ð=÷, ‚F˜bœgŸošo¨b¬g¯oªo¸f¼oÑ.NÔ.NÑOÔO€FÑPÔPð- :ð2 ðð ñ Ôðð8ð 8ð 8ð
ð ð ð ØØ€ˆYÐ(Ñ)Ô)ð8ð 8ñ *Ô)ñ Ôñ „ð8ð6ð ð ð Øð	/ð 	/ñ Ôñ „ð	/ð
ð 
ð 
ðð ð ð
 „×Ò˜ 9 9 9Ñ-Ô-ð;ð ;ñ .Ô-ð;ðð ð ðð ð ð" „×Ò˜ A q 6Ñ*Ô*ð Ø€ˆY˜˜Ð5Ñ6Ô6¸,¸ÑGÑHÔHðNð Nñ IÔHñ Ôñ	 +Ô*ðNð €ˆYÐ*Ñ+Ô+Ø€ˆX�~�~�~Ñ&Ô&ðð ñ 'Ô&ñ ,Ô+ððð ð ðð ð ð Ø€ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ð>ð >ñ 'Ô&ñ @Ô?ñ 3Ô2ñ „ð>ð €ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ð
ð 
ñ 'Ô&ñ @Ô?ñ 3Ô2ð
ð& €ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ð
ð 
ñ 'Ô&ñ @Ô?ñ 3Ô2ð
ð& €ˆYÐ1Ñ2Ô2Ø€ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆX�~�~�~Ñ&Ô&ð>ð >ñ 'Ô&ñ BÔAñ BÔAñ 3Ô2ð>ð& €Øðð ð ñô ð €ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆ]˜[Ð*?Ð@ÑAÔAð)"ð )"ñ BÔAñ BÔAñô ð)"ðX ØØ€ˆYÐ(Ñ)Ô)ðPð Pñ *Ô)ñ Ôñ „ðPðD €Ø r z��{Ð#Ð#Ð7RÐ7RÐ7Rñô ð0ð 0ñô ð0ð Ø€ˆYÐ(Ñ)Ô)ðð ñ *Ô)ñ Ôðð, Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð+ð +ñ =Ô<ñ Ôð+ð\ €ˆX˜˜1�vÑÔØ€ˆXÐ5Ð5Ð5Ñ6Ô6ð'ð 'ñ 7Ô6ñ Ôð'ð €ˆY˜Ð*:Ð;Ñ<Ô<ð3Kð 3Kñ =Ô<ð3KðlEð Eð Eð*'ð 'ð 'ð 'ð Ø€ˆY˜ Ð-Ñ.Ô.Ø€ˆY˜Ð*:Ð;Ñ<Ô<ðAð Añ =Ô<ñ /Ô.ñ ÔðAðHð Hð Hð Hð
 „ÔØ€ˆY˜Ð*:Ð;Ñ<Ô<Ø€ˆY¨"¨*˜+˜˜¸6À;Ð:OÑQÔQð+ð +ñ RÔQñ =Ô<ñ Ôð+ð2'ð 'ð 'ð €ˆY¨2¨>˜$ ˜˜À¸vÑGÔGØ€ˆ˜ÐÐ%BÐCÑCÔCð$ð $ñ DÔCñ HÔGð$ð €ˆY˜Ð*:Ð;Ñ<Ô<Ø€ˆ˜4ÐÐ(AÐBÑBÔBðð ñ CÔBñ =Ô<ðð
 €ˆY˜Ð*:Ð;Ñ<Ô<ðAð Añ =Ô<ðAð&=ð =ð =ðH	+ð 	+ð 	+ðð ð ð
;ð 
;ð 
;ð ØØ€ˆX�~�~�~Ñ&Ô&ðð ñ 'Ô&ñ Ôñ „ðð0 ØØ€Ð$ o o oÑ6Ô6Ø€ˆX˜˜2�wÑÔØ€ˆY˜Ð*:Ð;Ñ<Ô<ðð ñ =Ô<ñ  Ôñ 7Ô6ñ Ôñ „ð
ð6 Ø€ˆX˜˜2�wÑÔØ€ˆZÐWÐWÐWÑXÔXØ€ˆY˜Ð*:Ð;Ñ<Ô<ð 6ð  6ñ =Ô<ñ YÔXñ  Ôñ Ôð 6ðF Ø€ˆX�z�z�zÑ"Ô"ð*ð *ñ #Ô"ñ Ôð*ð((ð (ð (ðð ð ð ð. Ø€ˆX˜˜1�vÑÔØ€ˆYÐ(Ñ)Ô)Ø€ˆY˜Ð*:Ð;Ñ<Ô<ðOð Oñ =Ô<ñ *Ô)ñ Ôñ ÔðOð Ø€ˆX˜˜1�vÑÔØ€ˆYÐ(Ñ)Ô)ðBð Bñ *Ô)ñ Ôñ ÔðBð Ø„×Ò˜ A q 6Ñ*Ô*ðð ñ +Ô*ñ Ôðð0 Ø„×Ò˜ A q 6Ñ*Ô*ðð ñ +Ô*ñ Ôðð ð s6   ÂB ÂBÂBÂB" Â"B,Â+B,Â0B5 Â5B?Â>B?