§
    Øjª2 ã            	       óÄ  — 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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l0Z0n# e-$ r dZ0Y nw xY wddl1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<mZm=Z=m>Z>m?Z? ej@        jA        ZB e8jC        ¦   «         ZDeD E                    dd¦  «         dg eF e8jG        ¦   «         ¦  «        z   ZHeHd„ e8D ¦   «         z  ZHe€g ZInddgZIeIdgz   ZJ eKed¦  «        r#eH L                     ejM        d¦  «        ¦  «         d„ ZNd„ ZOd„ ZPd„ ZQ G d„ deR¦  «        ZSdâd!„ZTd"„ ZUdãd#„ZVd$„ ZWd%„ ZXd&„ ZYd'„ ZZ e$d(e>e=g¦  «        ej@         $                    d)d*d+ e<d+¬,¦  «        fd-gg d.¢¬/¦  «        e d0„ ¦   «         ¦   «         ¦   «         Z[ e$d1eH¦  «         e$d2g d3¢¦  «         e$d4g d5¢¦  «        d6„ ¦   «         ¦   «         ¦   «         Z\ e$d1eH¦  «         e$d2dd7g¦  «        d8„ ¦   «         ¦   «         Z] e$d1eH¦  «        d9„ ¦   «         Z^d:„ Z_e  e$d;g d<¢¦  «        d=„ ¦   «         ¦   «         Z`e  e$d1g d>¢¦  «        d?„ ¦   «         ¦   «         Zad@„ Zb e$dAe8¦  «         e$dBe8¦  «        dC„ ¦   «         ¦   «         ZcdD„ Zde dE„ ¦   «         ZedF„ Zf e$d2g dG¢¦  «        dH„ ¦   «         Zg e$d1eJ¦  «        dI„ ¦   «         Zhe dJ„ ¦   «         Zie!e  e$dKg dL¢¦  «         e$dMddNg¦  «        dO„ ¦   «         ¦   «         ¦   «         ¦   «         Zj e$d1eJ¦  «        dP„ ¦   «         Zke  e$d1eJ¦  «        dQ„ ¦   «         ¦   «         Zle  e$d1 emeD¦  «        dRhz
  ¦  «         e$dSdTdUg¦  «        dV„ ¦   «         ¦   «         ¦   «         Zne  e$d1eI¦  «        dW„ ¦   «         ¦   «         Zoe  e$d1e8¦  «        dX„ ¦   «         ¦   «         ZpdY„ Zq e$d1e8¦  «         e$dZdg d[¢fd\g d]¢fg¦  «        d^„ ¦   «         ¦   «         Zre  e$d1eJ¦  «        d_„ ¦   «         ¦   «         Zsd`„ Zte  e$d1eI¦  «        da„ ¦   «         ¦   «         Zudb„ Zvdc„ Zwdd„ Zxe  e$d1eJ¦  «        ej@         y                    de¬f¦  «        dg„ ¦   «         ¦   «         ¦   «         Zz G dh„ die5¦  «        Z{dj„ Z| e$d1eH¦  «        dk„ ¦   «         Z}e  e$d1eJ¦  «         e$d2g dl¢¦  «        dm„ ¦   «         ¦   «         ¦   «         Z~dn„ Zej@        jA        do„ ¦   «         Z€ e&edudp¬f¦  «        dq„ ¦   «         Z�dr„ Z‚eJdd…         Zƒeƒ „                    ds„  e…dt¦  «        D ¦   «         ¦  «         e  e$d1eƒ¦  «         e$d(e=e>g¦  «        du„ ¦   «         ¦   «         ¦   «         Z† G dv„ dwe5¦  «        Z‡ e$d(e>e=g¦  «        dx„ ¦   «         Zˆ e$d(e>e=g¦  «        dy„ ¦   «         Z‰dz„ ZŠd{„ Z‹ G d|„ d}ejŒ        j2        ¦  «        Z� e?d~e�¦  «         e  e$d1g d¢¦  «         e$d(e>e=g¦  «        d€„ ¦   «         ¦   «         ¦   «         ZŽe  e$d2g d�¢¦  «         e$d1eJ¦  «         e$d(e>e=g¦  «        d‚„ ¦   «         ¦   «         ¦   «         ¦   «         Z�dƒ„ Z�e  e$d„eJ¦  «         e$d…eJ¦  «         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$d1eI¦  «        d‘„ ¦   «         ¦   «         ¦   «         Z–d’Z—e  e$d1eI¦  «        d“„ ¦   «         ¦   «         Z˜d”Z™d•Zšd–Z›d—Zœe  e$d1eIe€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$d1eI¦  «        d£„ ¦   «         ¦   «         ¦   «         Z¨d¤„ Z©e!e d¥„ ¦   «         ¦   «         Zªd¦„ Z«d§„ Z¬ej@         $                    d2g d¨¢¦  «        d©„ ¦   «         Z­dª„ Z®d«„ Z¯ej@         $                    d2d7d\g¦  «        e  e$d1 emeD¦  «        dRhz
  ¦  «        d¬„ ¦   «         ¦   «         ¦   «         Z° e$d1eH¦  «         e$d2g d­¢¦  «        d®„ ¦   «         ¦   «         Z±d¯„ Z²d°„ Z³e! e$d1eD¦  «         e$dSdTdUg¦  «         e$d2g d­¢¦  «        d±„ ¦   «         ¦   «         ¦   «         ¦   «         Z´ e$d1eD¦  «         e$dSdTdUg¦  «         e$d2g d­¢¦  «        d²„ ¦   «         ¦   «         ¦   «         Zµ e$d1eD¦  «         e$dSdTdUg¦  «         e$d2g d­¢¦  «        d³„ ¦   «         ¦   «         ¦   «         Z¶ e$d1eD¦  «         e$d´dTdUg¦  «         e$dµdTdUg¦  «         e$d2g d­¢¦  «        d¶„ ¦   «         ¦   «         ¦   «         ¦   «         Z· e$d·g d¸¢¦  «         e$d´dTdUg¦  «         e$dµdTdUg¦  «        d¹„ ¦   «         ¦   «         ¦   «         Z¸ej@        jA        e!e  e$d1eI¦  «        dº„ ¦   «         ¦   «         ¦   «         ¦   «         Z¹ e$d1e€ddgng d»¢¦  «        d¼„ ¦   «         Zºe  e$d1eI¦  «        d½„ ¦   «         ¦   «         Z»e  e$d(e>e=g¦  «        d¾„ ¦   «         ¦   «         Z¼ e$d2dd7g¦  «         e$d¿g dÀ¢¦  «        dÁ„ ¦   «         ¦   «         Z½ e$d(e>e=g¦  «        dÂ„ ¦   «         Z¾dÃ„ Z¿dädÄ„ZÀe  e$d1ddg¦  «         e$d(e>e=g¦  «        dÅ„ ¦   «         ¦   «         ¦   «         ZÁdådÆ„ZÂej@        jÃ         e$d(e>e=g¦  «         e$d1e€dgnddg¦  «        dÇ„ ¦   «         ¦   «         ¦   «         ZÄdÈ„ ZÅ e$d1e�ddgndg¦  «         e&e/du dÉ¬f¦  «        dÊ„ ¦   «         ¦   «         ZÆ e$d(e>e=g¦  «         e&e0dudË¬f¦  «        dÌ„ ¦   «         ¦   «         ZÇ e$d(e>e=g¦  «        dÍ„ ¦   «         ZÈdÎ„ ZÉdÏ„ ZÊdÐ„ ZËdÑ„ ZÌe!e  e$d2g dÒ¢¦  «        dÓ„ ¦   «         ¦   «         ¦   «         ZÍe!e  e$dÔg dÕ¢¦  «         e$d2d7d+g¦  «         e$d(e>e=g¦  «        dÖ„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZÎe  e$d2d7d+g¦  «         e$d×g dØ¢¦  «         e$d(e>e=g¦  «        dÙ„ ¦   «         ¦   «         ¦   «         ¦   «         ZÏe  e$d2g dÚ¢¦  «        dÛ„ ¦   «         ¦   «         ZÐdÜ„ ZÑdâdÝ„ZÒe  e$d2d7d\g¦  «         e$d1eI¦  «         e$d(e>e=g¦  «        dÞ„ ¦   «         ¦   «         ¦   «         ¦   «         ZÓe  e$d2d7d\g¦  «         e$d1eI¦  «        dß„ ¦   «         ¦   «         ¦   «         ZÔe ej@         $                    d2d7d\g¦  «        dà„ ¦   «         ¦   «         ZÕe ej@         $                    d2d7d\g¦  «        dá„ ¦   «         ¦   «         ZÖdS )æz
Test the parallel module.
é    N)Únullcontext©Úsqrt©ÚTimeoutError)ÚPicklingError)Úsleep)Úformat_exception)Úuuid4)Ú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     úŽ/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/joblib/test/test_parallel.pyú
<listcomp>r0   X   s#   € ÐKÐKÐK°;•x Ô,Ñ.Ô.ÐKÐKÐKó    ÚlokyÚ	threadingÚget_contextÚspawnc                  ó0   — t           t          j                 S ©N)r"   r   ÚDEFAULT_BACKENDr,   r1   r/   Úget_default_backend_instancer9   d   s   € õ
 •HÔ,Ô-Ð-r1   c           	      óB   — t          | dt          | dd ¦  «        ¦  «        S )NÚ_poolÚ_workers)Úgetattr©Úbackends    r/   Úget_workersr@   l   s    € Ý�7˜G¥W¨W°jÀ$Ñ%GÔ%GÑHÔHÐHr1   c                 ó   — | |z  S r7   r,   )ÚxÚys     r/   ÚdivisionrD   p   s   € Øˆq‰5€Lr1   c                 ó   — | dz  S ©Né   r,   ©rB   s    r/   ÚsquarerI   t   s   € Øˆa‰4€Kr1   c                   ó   — e Zd ZdZd„ ZdS )ÚMyExceptionWithFinickyInitz,An exception class with non trivial __init__c                 ó   — d S r7   r,   )ÚselfÚaÚbÚcÚds        r/   Ú__init__z#MyExceptionWithFinickyInit.__init__{   s   € Øˆr1   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rR   r,   r1   r/   rK   rK   x   s)   € € € € € Ø6Ð6ðð ð ð ð r1   rK   Fc                 óH   — | dk    r|rt          dddd¦  «        nt          ‚| S )Né   rN   rO   rP   rQ   )rK   Ú
ValueError)rB   Úcustom_exceptions     r/   Úexception_raiserr\      s8   € ØˆA‚v€vð  ðÕ& s¨C°°cÑ:Ô:Ð:åð	
ð
 €Hr1   c                 ó8   — t          j        d¦  «         t          ‚)Ngš™™™™™©?)Útimer	   ÚKeyboardInterruptrH   s    r/   Úinterrupt_raiserr`   ‰   s   € Ý„JˆtÑÔÐÝ
Ðr1   c                 ó   — | dz  |z   |z   S )zNA module-level function so that it can be spawn with
    multiprocessing.
    rG   r,   )rB   rC   Úzs      r/   Úfrc   Ž   s   € ð ˆa‰4�!‰8�a‰<Ðr1   c                  óN   — t          t          j        ¦   «         d         ¦  «        S ©Nr   )Útyper   Úget_active_backendr,   r1   r/   Ú_active_backend_typerh   •   s   € Ý•Ô+Ñ-Ô-¨aÔ0Ñ1Ô1Ð1r1   c                 ód   —  t          | |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        S )N©Ún_jobsr?   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   ©r%   rI   ©r-   Úis     r/   ú	<genexpr>z parallel_func.<locals>.<genexpr>š   sC   è è € ð :ð :Ø ˆ�•‰Œ˜ÑÔð:ð :ð :ð :ð :ð :r1   é   ©r#   Úrange)Úinner_n_jobsr?   s     r/   Úparallel_funcru   ™   sE   € Ø9�8˜<°Ð9Ñ9Ô9ð :ð :Ý$)¨!¡H¤Hð:ñ :ô :ñ ô ð r1   c                  ó.   — t          ¦   «         dk    sJ ‚d S re   )r$   r,   r1   r/   Útest_cpu_countrw       s   € Ý‰;Œ;˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r1   c                  ó.   — t          ¦   «         dk    sJ ‚d S re   ©r&   r,   r1   r/   Útest_effective_n_jobsrz   ¤   s   € ÝÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r1   Úcontextzbackend_n_jobs, expected_n_jobs)rq   rq   éÿÿÿÿ©rk   ©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 )Nr3   r}   r   ry   )r{   Úbackend_n_jobsÚexpected_n_jobss      r/   Útest_effective_n_jobs_Noner„   ¨   sÄ   € ð 
ˆ� ^Ð	4Ñ	4Ô	4ð @ð @õ   tÐ,Ñ,Ô,°Ò?Ð?Ð?Ð?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ
  4Ð(Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ð-Ð-s   Ž2²6¹6r?   rk   )r   rG   r|   éþÿÿÿÚverbose)rG   é   éd   c                 ó¤   — d„ t          d¦  «        D ¦   «          t          || |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        k    sJ ‚d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r,   ©rI   ©r-   rB   s     r/   r0   z(test_simple_parallel.<locals>.<listcomp>Â   s   € Ð(Ð(Ð(˜!�F�1‰IŒIÐ(Ð(Ð(r1   é   ©rk   r?   r†   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rŒ   s     r/   rp   z'test_simple_parallel.<locals>.<genexpr>Ä   s2   è è € Ð+Ð+˜Q€o…g�f�o„o�aÑÔÐ+Ð+Ð+Ð+Ð+Ð+r1   ©rs   r#   )r?   rk   r†   s      r/   Útest_simple_parallelr‘   ¾   sw   € ð )Ð(�u Q™xœxÐ(Ñ(Ô(ð -­HØ˜w°ð-ñ -ô -à+Ð+¥%¨¡(¤(Ð+Ñ+Ô+ñ-,ô -,ò ,ð ,ð ,ð ,ð ,ð ,r1   rG   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 r7   )ÚmessagesÚappend)rM   Úmsgs     r/   Ú_printz6test_parallel_pretty_print.<locals>.ParallelLog._printÐ   s   € ØŒM× Ò  Ñ%Ô%Ð%Ð%Ð%r1   N)rT   rU   rV   r–   r™   r,   r1   r/   ÚParallelLogr”   Í   s(   € € € € € Øˆð	&ð 	&ð 	&ð 	&ð 	&r1   rš   i'  rŽ   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r,   ©r%   rc   rn   s     r/   r0   z.test_parallel_pretty_print.<locals>.<listcomp>Ô   s&   € Ð4Ð4Ð4 ˆj�g•a‰jŒj˜‰mŒmÐ4Ð4Ð4r1   r   )
ÚreÚcompiler#   rs   Úsetr–   ÚsearchÚspanÚaddÚlen)r?   rk   Ún_tasksÚpatternrš   ÚexecutorÚlensÚmessageÚsrN   rO   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˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>r1   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©ÚrecordrG   rj   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rŒ   s     r/   rp   z6test_main_thread_renamed_no_warning.<locals>.<genexpr>ê   sC   è è € ð 6
ð 6
Ø#$ˆO�G•F‰OŒO˜AÑÔð6
ð 6
ð 6
ð 6
ð 6
ð 6
r1   rq   )r   r   é   c                 ór   — g | ]4}d t          |j        ¦  «        v¯t          |j        t          ¦  «        °2|‘Œ5S )zworker timeout)Ústrr¨   Ú
isinstanceÚDeprecationWarning©r-   Úws     r/   r0   z7test_main_thread_renamed_no_warning.<locals>.<listcomp>ò   sJ   € ð ð ð àØ¥3 q¤y¡>¤>Ð1Ð1Ý˜1œ9Õ&8Ñ9Ô9ð 2ð 	
à1Ð1Ð1r1   )Nr*   z3multi-threaded, use of fork() may lead to deadlocksc                 ó@   •— g | ]}‰t          |j        ¦  «        v¯|‘ŒS r,   )rµ   r¨   )r-   r¹   Úmessage_parts     €r/   r0   z7test_main_thread_renamed_no_warning.<locals>.<listcomp>   s+   ø€ ÐNÐNÐN˜!¨<½sÀ1Ä9¹~¼~Ð+MÐ+M�AÐ+MÐ+MÐ+Mr1   r   )
Úsetattrr3   Úcurrent_threadÚwarningsÚcatch_warningsr#   rs   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?   rt   c                 ó   — g | ]	}|j         ‘Œ
S r,   )r¨   r¸   s     r/   r0   z*_assert_warning_nested.<locals>.<listcomp>  s   € Ð,Ð,Ð,˜a�”	Ð,Ð,Ð,r1   c              3   ó4   K  — | ]}d |j         d         v V — ŒdS )zbacked parallel loops cannotr   N)Úargs)r-   Úeachs     r/   rp   z)_assert_warning_nested.<locals>.<genexpr>  s?   è è € ð 'ð 'ØCGÐ.°$´)¸A´,Ð>ð'ð 'ð 'ð 'ð 'ð 'r1   r   F)r¾   r¿   Úsimplefilterru   Úallr   r£   )r?   rt   Ú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))r2   r*   T)r2   r2   F)r*   r*   T)r*   r2   T)r3   r*   T)r3   r2   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 )NrG   rj   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d d¬¦  «        V — Œ%dS )r   F©r?   rt   rÌ   N©r%   rÏ   ©r-   Ú_Úchild_backends     €r/   rp   z0test_nested_parallel_warnings.<locals>.<genexpr>.  sZ   øè è € ð /ð /ð ð 	(�Õ&Ñ'Ô'Ø!°¸Eð	
ñ 	
ô 	
ð/ð /ð /ð /ð /ð /r1   r�   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d ‰¬¦  «        V — Œ%dS )rG   rÒ   NrÓ   )r-   rÕ   rÖ   rÌ   s     €€r/   rp   z0test_nested_parallel_warnings.<locals>.<genexpr>6  sZ   øè è € ð 5ð 5ð ð 	(�Õ&Ñ'Ô'Ø!°¸Hð	
ñ 	
ô 	
ð5ð 5ð 5ð 5ð 5ð 5r1   r3   )r#   rs   Ú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ˆˆr1   )r2   r*   r3   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°   rG   r}   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )çš™™™™™¹?N©r%   r	   ©r-   rÕ   s     r/   rp   zPtest_background_thread_parallelism.<locals>.background_thread.<locals>.<genexpr>L  s2   è è € ÐEÐE°q˜~�w¥u™~œ~¨cÑ2Ô2ÐEÐEÐEÐEÐEÐEr1   r³   r   )r¾   r¿   r#   rs   Úprintr£   )Úis_run_parallelrÁ   s     r/   Úbackground_threadz=test_background_thread_parallelism.<locals>.background_threadJ  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   )r3   ÚThreadÚstartÚjoin)r?   rã   rä   Úts       r/   Ú"test_background_thread_parallelismré   E  sf   € ð �g€Oð0ð 0ð 0õ 	ÔÐ 1¸Ð8JÐKÑKÔK€AØ‡G‚G�I„I€IØ‡F‚F�H„H€HØ˜1ÔÐÐÐÐÐr1   c                 óh   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrG   rj   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS ©ç{®Gáz„?Nrm   rá   s     r/   rp   znested_loop.<locals>.<genexpr>W  s2   è è € Ð'PÐ'PÀ!¨­µ©¬¸Ñ(=Ô(=Ð'PÐ'PÐ'PÐ'PÐ'PÐ'Pr1   rr   r>   s    r/   Únested_looprî   V  s:   € Ø'…H�A˜wÐ'Ñ'Ô'Ð'PÐ'PÅuÈQÁxÄxÐ'PÑ'PÔ'PÑPÔPÐPÐPÐPr1   rÖ   rÙ   c                 ón   ‡—  t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )NrG   rj   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r7   )r%   rî   rÔ   s     €r/   rp   z#test_nested_loop.<locals>.<genexpr>]  sG   øè è € ð /ð /Ø01Ð�•ÑÔ˜]Ñ+Ô+ð/ð /ð /ð /ð /ð /r1   rr   )rÙ   rÖ   s    `r/   Útest_nested_looprñ   Z  s\   ø€ ð /…H�A˜~Ð.Ñ.Ô.ð /ð /ð /ð /Ý5:¸1±X´Xð/ñ /ô /ñ ô ð ð ð r1   c                 ó   — t           ‚r7   )rZ   r>   s    r/   Úraise_exceptionró   b  s   € Ý
Ðr1   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 )NrG   r2   rj   )r   rZ   r#   r%   rî   ró   )r   s    r/   Ú)test_nested_loop_with_exception_with_lokyrõ   f  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�   )ÚmaxsizerG   r3   rj   c              3   óR   •K  — | ]!} t          ‰j        ¦  «        d ¦  «        V — Œ"dS ©r   N)r%   Úput)r-   rÕ   Úqs     €r/   rp   z1test_mutate_input_with_threads.<locals>.<genexpr>p  s5   øè è € Ð+PÐ+PÀ!¨N­G°A´E©N¬N¸1Ñ,=Ô,=Ð+PÐ+PÐ+PÐ+PÐ+PÐ+Pr1   N)r   r#   rs   Úfull)rû   s   @r/   Útest_mutate_input_with_threadsrý   m  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€Or1   )r   rG   rq   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   ©rC   ©rc   rŒ   s     r/   r0   z(test_parallel_kwargs.<locals>.<listcomp>x  s"   € Ð#Ð#Ð#˜!�Aˆa�1ˆI‰IŒIÐ#Ð#Ð#r1   r}   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS ©r   r  Nrœ   rŒ   s     r/   rp   z'test_parallel_kwargs.<locals>.<genexpr>x  sH   è è € ð ?ð ?Ø ˆ
�•‰
Œ
�1˜ÐÑÔð?ð ?ð ?ð ?ð ?ð ?r1   Nr�   )rk   Úlsts     r/   Útest_parallel_kwargsr  t  st   € õ �‰)Œ)€CØ#Ð#˜sÐ#Ñ#Ô#Ð'>¥x°vÐ'>Ñ'>Ô'>ð ?ð ?Ø$'ð?ñ ?ô ?ñ (ô (ò ð ð ð ð ð r1   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/   r0   z4test_parallel_as_context_manager.<locals>.<listcomp>€  s"   € Ð'Ð'Ð'˜a•�!�q�	‘	”	Ð'Ð'Ð'r1   r³   rj   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  rœ   rŒ   s     r/   rp   z3test_parallel_as_context_manager.<locals>.<genexpr>‰  ó7   è è € Ð=Ð=°A˜Z�W¥Q™ZœZ¨¨QÐ/Ñ/Ô/Ð=Ð=Ð=Ð=Ð=Ð=r1   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  rœ   rŒ   s     r/   rp   z3test_parallel_as_context_manager.<locals>.<genexpr>Š  r  r1   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  rœ   rŒ   s     r/   rp   z3test_parallel_as_context_manager.<locals>.<genexpr>–  s7   è è € Ð9Ð9°˜�¥™œ A¨Ð+Ñ+Ô+Ð9Ð9Ð9Ð9Ð9Ð9r1   )rs   r#   Ú_backendr   r@   )r?   r  rÌ   ÚpÚmanaged_backends        r/   Ú test_parallel_as_context_managerr  }  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©rM   s    r/   Ú
__reduce__z<test_parallel_pickling.<locals>.UnpicklableObject.__reduce__¢  s   € Ý˜uÑ%Ô%Ð%r1   N)rT   rU   rV   r  r,   r1   r/   ÚUnpicklableObjectr  ¡  s#   € € € € € ð	&ð 	&ð 	&ð 	&ð 	&r1   r  zthe task to send©ÚmatchrG   r2   rj   c              3   ób   •K  — | ])} t          t          ¦  «         ‰¦   «         ¦  «        V — Œ*d S r7   ©r%   Úid)r-   rÕ   r  s     €r/   rp   z)test_parallel_pickling.<locals>.<genexpr>¦  sN   øè è € ð +
ð +
Ø12ˆK�G•B‰KŒKÐ)Ð)Ñ+Ô+Ñ,Ô,ð+
ð +
ð +
ð +
ð +
ð +
r1   rÿ   N)Úobjectr   r   r#   rs   )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 r7   )Údtyper"  rH   s    r/   Úinspect_byteorderz=test_parallel_byteorder_corruption.<locals>.inspect_byteorder°  s   € Ø�!”'Ô#Ð#Ð#r1   é   )rG   rq   Úi4rG   r2   )rk   r?   r&  c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r7   ©r%   )r-   rÕ   r+  rB   s     €€r/   rp   z5test_parallel_byteorder_corruption.<locals>.<genexpr>·  sP   øè è € ð Gð GØ*+Ð"�Ð!Ñ"Ô" 1Ñ%Ô%ðGð Gð Gð Gð Gð Gr1   rq   )
r   ÚarangeÚreshapeÚviewr*  r"  r#   rs   ÚtestingÚassert_array_equal)r"  r&  Úinitial_np_byteorderÚresultÚ
x_returnedÚbyteorder_in_workerr+  rB   s         @@r/   Ú"test_parallel_byteorder_corruptionr9  «  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ð 5r1   c                 ó�   — t           t          d| d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        ¦  «        dk    sJ ‚d S )NrG   é   ©rk   r?   Útimeoutc              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )gü©ñÒMbP?Nrà   rŒ   s     r/   rp   z0test_parallel_timeout_success.<locals>.<genexpr>Æ  sC   è è € ð <ð <Ø*+�•�‘”˜uÑ%Ô%ð<ð <ð <ð <ð <ð <r1   rÿ   )r£   r#   rs   r>   s    r/   Útest_parallel_timeout_successr?  Á  st   € õ 	Ø;�H˜A w¸Ð;Ñ;Ô;ð <ð <Ý/4°R©y¬yð<ñ <ô <ñ ô ñ	
ô 	
ð
 ò	ð 	ð 	ð 	ð 	ð 	r1   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 )NrG   rí   r<  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS ©rÿ   Nrà   rŒ   s     r/   rp   z-test_parallel_timeout_fail.<locals>.<genexpr>Ó  sC   è è € ð :
ð :
Ø#$ˆN�G•E‰NŒN˜2ÑÔð:
ð :
ð :
ð :
ð :
ð :
r1   rÿ   )r   r   r#   rs   r>   s    r/   Útest_parallel_timeout_failrC  Î  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 )NrG   rß   )rk   r?   rF  r=  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rB  rà   rŒ   s     r/   rp   z<test_parallel_timeout_fail_with_generator.<locals>.<genexpr>à  sK   è è € ð Rð RØ'(�•�‘”˜rÑ"Ô"ðRð Rð Rð Rð Rð Rr1   rÿ   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rì   rà   rŒ   s     r/   rp   z<test_parallel_timeout_fail_with_generator.<locals>.<genexpr>ç  sK   è è € ð M
ð M
Ø%&ˆN�G•E‰NŒN˜4Ñ Ô ðM
ð M
ð M
ð M
ð M
ð M
r1   )r   r   Úlistr#   rs   ©r?   rF  s     r/   Ú)test_parallel_timeout_fail_with_generatorrN  Ø  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 )NrG   rj   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r,   ©r%   rD   ©r-   rB   rC   s      r/   r0   z&test_error_capture.<locals>.<listcomp>õ  s1   € ÐIÐIÐI©T¨Q°Ð"•�Ñ"Ô" 1 aÑ(Ô(ÐIÐIÐIr1   )r   r   )r   r   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r,   ©r%   r`   rŒ   s     r/   r0   z&test_error_capture.<locals>.<listcomp>ú  s,   € Ð>Ð>Ð>°!Ð*•Õ)Ñ*Ô*¨1Ñ-Ô-Ð>Ð>Ð>r1   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r,   rQ  rR  s      r/   r0   z&test_error_capture.<locals>.<listcomp>  s1   € ÐRÐRÐR±d°a¸Ð+�'¥(Ñ+Ô+¨A¨qÑ1Ô1ÐRÐRÐRr1   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS r  r  rŒ   s     r/   r0   z&test_error_capture.<locals>.<listcomp>  ó"   € Ð1Ð1Ð1 !•A�a˜1�I‘I”IÐ1Ð1Ð1r1   rÿ   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  rœ   rŒ   s     r/   rp   z%test_error_capture.<locals>.<genexpr>  óH   è è € ð >ð >Ø'(�
•�‘
”
˜1 Ð"Ñ"Ô"ð>ð >ð >ð >ð >ð >r1   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r,   rT  rŒ   s     r/   r0   z&test_error_capture.<locals>.<listcomp>  s,   € ÐGÐGÐG¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐGÐGÐGr1   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS r  r  rŒ   s     r/   r0   z&test_error_capture.<locals>.<listcomp>  rW  r1   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS r  rœ   rŒ   s     r/   rp   z%test_error_capture.<locals>.<genexpr>  rY  r1   r}   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r,   rT  rŒ   s     r/   r0   z&test_error_capture.<locals>.<listcomp>(  s,   € ÐMÐMÐMÀÐ 9¥Õ(8Ñ 9Ô 9¸!Ñ <Ô <ÐMÐMÐMr1   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r,   rQ  rR  s      r/   r0   z&test_error_capture.<locals>.<listcomp>-  s1   € ÐTÐTÐT¹¸¸1Ð-�G¥HÑ-Ô-¨a°Ñ3Ô3ÐTÐTÐTr1   r   )rk   r†   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS )T)r[   N©r%   r\   rn   s     r/   rp   z%test_error_capture.<locals>.<genexpr>1  s;   è è € ÐTÐTÀQÐ&�WÕ%Ñ&Ô& q¸4Ð@Ñ@Ô@ÐTÐTÐTÐTÐTÐTr1   r;  )r   r   ÚZeroDivisionErrorr#   Úzipr_   r@   r  rs   Ú
_iteratingÚn_completed_tasksÚn_dispatched_tasksÚ	_abortingrK   )r?   r   Úoriginal_workerss      r/   Útest_error_capturerh  í  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)rs   rZ   )Úraise_atro   s     r/   Úmy_generatorz1test_error_in_task_iterator.<locals>.my_generator8  sH   è è € Ý�r‘”ð 	ð 	ˆAØ�HŠ}ˆ}Ý Ð!9Ñ:Ô:Ð:ØˆGˆGˆGˆGð	ð 	r1   rG   rj   rl  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z.test_error_in_task_iterator.<locals>.<genexpr>A  ó2   è è € ÐCÐC Qˆo�g•f‰oŒo˜aÑ Ô ÐCÐCÐCÐCÐCÐCr1   )rm  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z.test_error_in_task_iterator.<locals>.<genexpr>F  rp  r1   r�   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z.test_error_in_task_iterator.<locals>.<genexpr>J  s2   è è € ÐDÐD Qˆo�g•f‰oŒo˜aÑ Ô ÐDÐDÐDÐDÐDÐDr1   é   ©r   )r#   r   rZ   )r?   rn  r  s      r/   Útest_error_in_task_iteratorru  5  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/   Úconsumerry  M  s   € Ø	‡L‚L� Ñ%Ñ&Ô&Ð&Ð&Ð&r1   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³   )rz  r|  r~  r€  r{  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©rs   r—   ©ro   rw  s    €r/   Úproducerz'test_dispatch_one_job.<locals>.producer~  óH   øè è € Ý�q‘”ð 	ð 	ˆAØ�LŠL˜¨Ñ*Ñ+Ô+Ð+ØˆGˆGˆGˆGð	ð 	r1   r   ©rk   Ú
batch_sizer?   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰|¦  «        V — Œ#d S r7   ©r%   ry  )r-   rB   rw  s     €r/   rp   z(test_dispatch_one_job.<locals>.<genexpr>ƒ  sI   øè è € ð ?ð ?Ø()Ð�•ÑÔ˜% Ñ#Ô#ð?ð ?ð ?ð ?ð ?ð ?r1   é   N)rL  r#   r£   )r?   rŽ  Úexpected_queuer‹  rw  s       @r/   Útest_dispatch_one_jobr“  Q  s©   ø€ õV ‰FŒF€Eðð ð ð ð ð
 ?…H�A *°gÐ>Ñ>Ô>ð ?ð ?ð ?ð ?Ø-5¨X©Z¬Zð?ñ ?ô ?ñ ô ð ð �NÒ"Ð"Ð"Ð"Ýˆu‰:Œ:˜ÒÐÐÐÐÐr1   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Œ  r1   rG   r   rq   )rk   rŽ  Úpre_dispatchr?   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰d ¦  «        V — Œ#dS )rØ   Nr�  )r-   rÕ   rw  s     €r/   rp   z0test_dispatch_multiprocessing.<locals>.<genexpr>˜  sQ   øè è € ð Fð FØ,-Ð�•ÑÔ˜% Ñ'Ô'ðFð Fð Fð Fð Fð Fr1   r   rz  Nr³   zConsumed anyr|   r€  r‘  )r   ÚManagerrL  r#   Úindexr£   )r?   Úmanagerr‹  Úqueue_contentsÚfirst_consumption_indexÚproduced_3_indexrw  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‰:Œ:˜ÒÐÐÐÐÐr1   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 )NrG   Úautor3   r�  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z/test_batching_auto_threading.<locals>.<genexpr>°  ó0   è è € Ð	.Ð	.˜Qˆ+�'•"‰+Œ+�a‰.Œ.Ð	.Ð	.Ð	.Ð	.Ð	.Ð	.r1   éˆ  r   ©r#   rs   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 )NrG   r   r�  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z2test_batching_auto_subprocesses.<locals>.<genexpr>¸  r¢  r1   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 capturedrG   é   r   )rk   r–  r†   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r`  rn   s     r/   rp   z*test_exception_dispatch.<locals>.<genexpr>Ã  sG   è è € ð 7
ð 7
Ø-.Ð%�GÕ$Ñ%Ô% aÑ(Ô(ð7
ð 7
ð 7
ð 7
ð 7
ð 7
r1   r;  N)r   rZ   r#   rs   r,   r1   r/   Útest_exception_dispatchr®  À  s¹   € å	•
Ñ	Ô	ð 
ð 
Ø6�˜¨°AÐ6Ñ6Ô6ð 7
ð 7
Ý27¸±)´)ð7
ñ 7
ô 7
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
rD  c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrG   r}   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r`  ©r-   Újs     r/   rp   z(nested_function_inner.<locals>.<genexpr>É  s6   è è € ÐGÐG¸Ð0•wÕ/Ñ0Ô0°Ñ3Ô3ÐGÐGÐGÐGÐGÐGr1   r;  rr   ©ro   s    r/   Únested_function_innerr´  È  s8   € Ø…H�AÐÑÔÐGÐG½UÀ2¹Y¼YÐGÑGÔGÑGÔGÐGÐGÐGr1   c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrG   r}   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   )r%   r´  r±  s     r/   rp   z(nested_function_outer.<locals>.<genexpr>Í  s6   è è € ÐLÐL¸QÐ5•wÕ4Ñ5Ô5°aÑ8Ô8ÐLÐLÐLÐLÐLÐLr1   r;  rr   r³  s    r/   Únested_function_outerr·  Ì  s8   € Ø…H�AÐÑÔÐLÐLÅ%ÈÁ)Ä)ÐLÑLÔLÑLÔLÐLÐLÐLr1   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.
    rG   rj   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   )r%   r·  rn   s     r/   rp   z1test_nested_exception_dispatch.<locals>.<genexpr>Ú  sG   è è € ð ,
ð ,
Ø23Ð*�GÕ)Ñ*Ô*¨1Ñ-Ô-ð,
ð ,
ð ,
ð ,
ð ,
ð ,
r1   r;  NÚ r·  r´  r\   )	r   rZ   r#   rs   r
   rf   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 r7   )r&   rk   r   )rM   rk   r   Úbackend_argss       r/   Ú	configurezFakeParallelBackend.configureì  s#   € Ø×+Ò+¨FÑ3Ô3ˆŒØ ˆŒØˆr1   c                 ó`   — |dk     r't          t          j        ¦   «         dz   |z   d¦  «        }|S )Nr   r   )Úmaxr   r$   ©rM   rk   s     r/   r&   z$FakeParallelBackend.effective_n_jobsñ  s/   € Ø�AŠ:ˆ:Ý�œ™œ¨!Ñ+¨fÑ4°aÑ8Ô8ˆFØˆr1   rù   )r   )rT   rU   rV   rW   rÆ  r&   r,   r1   r/   rÃ  rÃ  é  sB   € € € € € ØBÐBðð ð ð ð
ð ð ð ð ð r1   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   rZ   r#   r(   r,   r1   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   rj   z&n_jobs == 0 in Parallel has no meaningç      à?z2.3z$n_jobs could not be converted to intÚinvalid_str)r   rZ   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@rG   c                 óð   — t          || ¬¦  «        }|                     ¦   «         dk    sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }t          d„ t	          |¦  «        D ¦   «         ¦  «        sJ ‚d S )Nrj   rG   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z.test_njobs_converted_to_int.<locals>.<genexpr>  s2   è è € Ð2Ð2 1ˆO�G•F‰OŒO˜AÑÔÐ2Ð2Ð2Ð2Ð2Ð2r1   rÿ   c              3   óB   K  — | ]\  }}|t          |¦  «        k    V — Œd S r7   r‹   )r-   ro   Úrs      r/   rp   z.test_njobs_converted_to_int.<locals>.<genexpr>  s0   è è € Ð9Ð9¡$ ! Qˆq•F˜1‘I”IŠ~Ð9Ð9Ð9Ð9Ð9Ð9r1   )r#   Ú_effective_n_jobsrs   rË   Ú	enumerate)r?   rk   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Ð9r1   c                  óà   — dt          t          ¦   «         ¦  «        z   } 	 t          | t          ¦  «         | t          v sJ ‚t          |          t          k    sJ ‚	 t          | = d S # t          | = w xY w)Nztest_backend-)rµ   r   r)   rÃ  r"   )Útest_backends    r/   Útest_register_parallel_backendrÛ  "  sy   € Ø"¥S­©¬¡\¤\Ñ1€Lð#Ý! ,Õ0CÑDÔDÐDØ�xÐ'Ð'Ð'Ð'Ý˜Ô%Õ)<Ò<Ð<Ð<Ð<Ð<å�\Ð"Ð"Ð"ø�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 )Nr3   T)Úmake_default)r   r8   rh   r9   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  r2   r>   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z2test_backend_no_multiprocessing.<locals>.<genexpr>>  s2   è è € Ð FÐ F¸ ¥­¡¤°Ñ!3Ô!3Ð FÐ FÐ FÐ FÐ FÐ Fr1   rq   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z2test_backend_no_multiprocessing.<locals>.<genexpr>B  s2   è è € Ð8Ð8¨!�?•7�6‘?”? 1Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8r1   )r   ÚUserWarningr#   rs   r(   r,   r1   r/   Útest_backend_no_multiprocessingrä  ;  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 )Nrq   r}   r*   r2   r3   Útest_)r   rg   r&   r#   rk   rf   r   r  r   r!   Ú
startswithrÃ  )r{   Úbackend_nameÚactive_backendÚactive_n_jobsr  s        r/   Úcheck_backend_context_managerrë  E  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,   rn   s     r/   r0   r0   [  s   € Ð(QÐ(QÐ(QÀ1Ð):¸QÑ)>Ð(QÐ(QÐ(Qr1   rq   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 )NrG   r3   rj   c              3   óX   •K  — | ]$}|° t          t          ¦  «        ‰|¦  «        V — Œ%d S r7   )r%   rë  )r-   rO   r{   s     €r/   rp   z/test_backend_context_manager.<locals>.<genexpr>m  sR   øè è € ð ,ð ,àØð,Ø.�Õ-Ñ.Ô.¨w¸Ñ:Ô:ð,ð ,ð ,ð ,ð ,ð ,r1   )r"   ÚsetitemrÃ  rh   r9   rë  r#   Ú all_backends_for_context_manager)rÀ   r?   r{   s     `r/   Útest_backend_context_managerrñ  ^  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ÐCr1   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)rZ   Úparam)rM   rõ  s     r/   rR   z%ParameterizedParallelBackend.__init__z  s!   € Øˆ=ÝÐ7Ñ8Ô8Ð8ØˆŒ
ˆ
ˆ
r1   r7   rS   r,   r1   r/   ró  ró  w  s.   € € € € € ØCÐCðð ð ð ð ð r1   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é*   rq   )rõ  rk   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   ©r%   r   rn   s     r/   rp   z=test_parameterized_backend_context_manager.<locals>.<genexpr>�  ó2   è è € Ð7Ð7¨�M•G�D‘M”M !Ñ$Ô$Ð7Ð7Ð7Ð7Ð7Ð7r1   r�   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r,   r   rn   s     r/   r0   z>test_parameterized_backend_context_manager.<locals>.<listcomp>Ž  ó   € Ð1Ð1Ð1 1•t˜A‘w”wÐ1Ð1Ð1r1   )rï  r"   ró  rh   r9   r   rg   rf   rõ  r#   rk   r  rs   )rÀ   r{   ré  rê  r  rÂ   s         r/   Ú*test_parameterized_backend_context_managerrþ  €  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 r7   rú  rn   s     r/   rp   zFtest_directly_parameterized_backend_context_manager.<locals>.<genexpr>¢  rû  r1   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r,   r   rn   s     r/   r0   zGtest_directly_parameterized_backend_context_manager.<locals>.<listcomp>£  rý  r1   )rh   r9   ró  r   rg   rf   rõ  r#   rk   r  rs   )r{   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,   r1   r/   Úsleep_and_return_pidr  ©  s   € Ý	ˆ#�J„J€JÝŒ9‰;Œ;Ðr1   c                  óà   — t          ¦   «         t          k    sJ ‚t          ¦   «                              ¦   «         dk    sJ ‚ t          d¬¦  «        d„ t	          d¦  «        D ¦   «         ¦  «        S )Nr   rG   r}   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r7   )r%   r  rá   s     r/   rp   z"get_nested_pids.<locals>.<genexpr>µ  s4   è è € ÐPÐPÀ!Ð;�gÕ&:Ñ;Ô;Ñ=Ô=ÐPÐPÐPÐPÐPÐPr1   )rh   r!   r#   rÖ  rs   r,   r1   r/   Úget_nested_pidsr
  ®  so   € ÝÑ!Ô!Õ%5Ò5Ð5Ð5Ð5õ ‰:Œ:×'Ò'Ñ)Ô)¨QÒ.Ð.Ð.Ð.ð �8˜1ÐÑÔÐPÐPÅuÈQÁxÄxÐPÑPÔPÑPÔPÐPr1   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 re   )Úsuperr  Úget_nested_backend)rM   Ú	__class__s    €r/   r  zMyBackend.get_nested_backend»  s&   ø€ õ •Y Ñ%Ô%×8Ò8Ñ:Ô:¸1Ô=Ð=r1   )rT   rU   rV   rW   r  Ú__classcell__)r  s   @r/   r  r  ¸  s>   ø€ € € € € ØDÐDð>ð >ð >ð >ð >ð >ð >ð >ð >r1   r  Úback_compat_backend)r3   r2   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 )NrG   r}   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r7   )r%   r
  rá   s     r/   rp   z6test_nested_backend_context_manager.<locals>.<genexpr>Í  s3   è è € Ð'VÐ'VÀqÐ(@­µÑ(@Ô(@Ñ(BÔ(BÐ'VÐ'VÐ'VÐ'VÐ'VÐ'Vr1   rÿ   r   )r#   rs   r£   rŸ   )r{   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)rG   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 r7   )rh   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×+Ò+Ñ-Ô-°Ò?Ð?Ð?Ð?Ð?Ð?r1   r   r}   c              3   ó^   •K  — | ]'} t          ‰¦  «        t          j        d ¦  «        V — Œ(dS rù   )r%   r   r8   )r-   rÕ   r  s     €r/   rp   z4test_nested_backend_in_sequential.<locals>.<genexpr>ä  sM   øè è € ð ð ØGHÐ%�Ð$Ñ%Ô%¥hÔ&>ÀÑBÔBðð ð ð ð ð r1   rÿ   c              3   óJ   •K  — | ]} t          ‰¦  «        ‰‰¦  «        V — Œd S r7   r/  )r-   rÕ   r?   r  rk   s     €€€r/   rp   z4test_nested_backend_in_sequential.<locals>.<genexpr>é  sJ   øè è € ð 
ð 
Ø?@Ð)�GÐ(Ñ)Ô)¨'°6Ñ:Ô:ð
ð 
ð 
ð 
ð 
ð 
r1   rr   )r?   rk   r{   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)r{   Ú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   rG   rj   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS rù   ©r%   r%  ©r-   rÕ   r{   r"  s     €€r/   rp   z-test_backend_nesting_level.<locals>.<genexpr>ÿ  sL   øè è € ð .ð .ØDEÐ$�Õ#Ñ$Ô$ W¨m¸QÑ?Ô?ð.ð .ð .ð .ð .ð .r1   rÿ   r}   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS rù   r)  r*  s     €€r/   rp   z-test_backend_nesting_level.<locals>.<genexpr>  sL   øè è € ð 
ð 
ØHIÐ(�GÕ'Ñ(Ô(¨°-ÀÑCÔCð
ð 
ð 
ð 
ð 
ð 
r1   )r%  r#   rs   )r{   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ˆEr1   N)rT   rU   rV   ro   Úsupports_retrieve_callbackÚcontextmanagerr2  )Ú
contextlibr-  s   €€r/   r  r0    s=   ø€ € € € € ØˆØ%;Ð"à	Ô	"ð	ð 	ñ 
#Ô	"ð	ð 	ð 	r1   r  Ú	retrievalc                 ób   —  t          d¬¦  «        d„ t          | ¦  «        D ¦   «         ¦  «        S )NrG   r}   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z>test_retrieval_context.<locals>.nested_call.<locals>.<genexpr>  s0   è è € Ð!CÐ!C°Q +¥'­"¡+¤+¨a¡.¤.Ð!CÐ!CÐ!CÐ!CÐ!CÐ!Cr1   rr   )Úns    r/   Únested_callz+test_retrieval_context.<locals>.nested_call  s2   € Ø!�x˜qÐ!Ñ!Ô!Ð!CÐ!C½%À¹(¼(Ð!CÑ!CÔ!CÑCÔCÐCr1   rG   r}   c              3   óH   •K  — | ]} t          ‰¦  «        |¦  «        V — Œd S r7   r/  )r-   ro   r:  s     €r/   rp   z)test_retrieval_context.<locals>.<genexpr>  s6   øè è € ÐEÐE°qÐ/�7 ;Ñ/Ô/°Ñ2Ô2ÐEÐEÐEÐEÐEÐEr1   r�   r?   r   )r5  r!   r)   r#   rs   r(   ro   r'   )r{   r-  r  r$  r5  r:  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   rZ   r#   r>  s    r/   Útest_invalid_batch_sizer?  )  s…   € å	•
Ñ	Ô	ð (ð (Ý˜JÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   •3³7º7z)n_tasks, n_jobs, pre_dispatch, batch_size))rG   rG   rË   r   )rG   rG   rk   r   ©rÿ   rG   rk   r   )i  rG   rk   r   r@  )rÿ   r³   rk   r   )éÈ   r‘  rk   r   )é   r‘  ú
2 * n_jobsr   )éú   r‘  rË   r   )rD  r‘  rC  rY   )rA  r‘  rC  r   c                 ó¬   — |||dœ}d„ t          | ¦  «        D ¦   «         } t          di |¤Žd„ t          | ¦  «        D ¦   «         ¦  «        }||k    sJ ‚d S )N)rk   r–  rŽ  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r,   r‹   rn   s     r/   r0   z0test_dispatch_race_condition.<locals>.<listcomp>D  s   € Ð2Ð2Ð2˜a•�q‘	”	Ð2Ð2Ð2r1   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z/test_dispatch_race_condition.<locals>.<genexpr>E  s2   è è € Ð LÐ L¸ ¥­¡¤°Ñ!3Ô!3Ð LÐ LÐ LÐ LÐ LÐ Lr1   r,   r�   )r¤   rk   r–  rŽ  ÚparamsrÌ   rÂ   s          r/   Útest_dispatch_race_conditionrI  /  su   € ð( °ÈJÐWÐW€FØ2Ð2¥5¨¡>¤>Ð2Ñ2Ô2€HØ �hÐ Ð ˜Ð Ð Ð LÐ L½UÀ7¹^¼^Ð LÑ LÔ LÑLÔL€GØ�hÒÐÐÐÐÐr1   c                  óº   — t          j        ¦   «         } t          dd¬¦  «        }|j                             d¦  «        }|                     ¦   «         }|| k    sJ ‚d S )NrG   r*   rj   r{   )r   Úget_start_methodr#   Ú_backend_kwargsÚget)Úmp_start_methodr  r{   Ústart_methods       r/   Útest_default_mp_contextrP  I  sa   € åÔ)Ñ+Ô+€OÝ˜Ð#4Ð5Ñ5Ô5€AØÔ×#Ò# IÑ.Ô.€GØ×+Ò+Ñ-Ô-€LØ˜?Ò*Ð*Ð*Ð*Ð*Ð*r1   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*   r5   rø  iè  rG   rj   c              3   óh   •K  — | ],} t          t          j        ¦  «        ‰‰j        ¦  «        V — Œ-d S r7   )r%   r   ÚdotÚT)r-   ro   rN   s     €r/   rp   zAtest_no_blas_crash_or_freeze_with_subprocesses.<locals>.<genexpr>h  s9   øè è € Ð'RÐ'RÀA¨­µ´©¬¸¸1¼3Ñ(?Ô(?Ð'RÐ'RÐ'RÐ'RÐ'RÐ'Rr1   )
r   r4   r   ÚrandomÚRandomStateÚrandnrS  rT  r#   rs   )r?   ÚrngrN   s     @r/   Ú.test_no_blas_crash_or_freeze_with_subprocessesrY  R  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ÐRr1   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   rK  ÚpytestÚskipÚ,UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_NO_MAINÚformatr   ÚsysÚ
executable)r?   Úcodes     r/   Ú2test_parallel_with_interactively_defined_functionsrf  {  sƒ   € ð
 Ð#Ò#Ð#­Ô(;Ñ(=Ô(=ÀÒ(GÐ(GÝŒð.ñ	
ô 	
ð 	
õ 8×>Ò>¸wÑGÔG€DÝÝ	Œ˜˜tÐ$¨bÐ?Tðñ ô ð ð ð r1   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*   r5   Úwin32zNot picklable with pickle)rg  r?   rh  Újoblib_root_folderzunpicklable_func_script.pyrÿ   r\  r]  )ÚSQUARE_MAINrc  Úplatformr_  r`  Ú)UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_MAINrb  r  ÚpathÚdirnameÚjoblibÚ__file__rç   Úwriter   rd  Ústrpath)r?   rg  rh  Útmpdirre  Ú	code_files         r/   Ú0test_parallel_with_unpicklable_functions_in_argsrx  »  sÖ   € ð Ð.Ð.Ð.Ø•{Ò"Ð"¥c¤l°gÒ&=Ð&=åŒÐ/Ñ0Ô0Ð0Ý4×;Ò;ØØØ+Ýœ7Ÿ?š?­2¬7¯?ª?½6¼?Ñ+KÔ+KÑLÔLð	 <ñ ô €Dð —’Ð8Ñ9Ô9€IØ‡O‚O�DÑÔÐÝÝ	Œ˜Ô*Ð+ØØ*ðñ ô ð ð ð r1   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)
))
)rl  c                 óª   — |                       d¦  «        }|                     t          ¦  «         t          t          j        |j        gdd ¬¦  «         d S )Nz(joblib_interactively_defined_function.pyr\  )r^  r=  )rç   rt  Ú5INTERACTIVE_DEFINED_FUNCTION_AND_CLASS_SCRIPT_CONTENTr   rc  rd  ru  ©rv  Úscripts     r/   Ú7test_parallel_with_interactively_defined_functions_lokyr}     s\   € ð
 �[Š[ÐCÑDÔD€FØ
‡L‚LÕFÑGÔGÐGÝÝ	Œ˜œÐ(Ø*Øðñ ô ð ð ð r1   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ç   rt  Ú9INTERACTIVELY_DEFINED_SUBCLASS_WITH_METHOD_SCRIPT_CONTENTr   rc  rd  ru  r{  s     r/   Ú:test_parallel_with_interactively_defined_bound_method_lokyrƒ  '  s]   € à�[Š[ÐDÑEÔE€FØ
‡L‚LÕJÑKÔKÐKÝÝ	Œ˜œÐ(Ø,Ø#Øð	ñ ô ð ð ð r1   c                  ób   — t          g ¦  «        }  t          d¬¦  «        | ¦  «        g k    sJ ‚d S )NrG   r}   )Úiterr#   )Úexhausted_iterators    r/   Ú%test_parallel_with_exhausted_iteratorr‡  3  s;   € Ý˜b™œÐØ�8˜1ÐÑÔÐ0Ñ1Ô1°RÒ7Ð7Ð7Ð7Ð7Ð7r1   c                 ó˜   — t          | t          j        ¦  «        st          dt	          | ¦  «        ¦  «        ‚|                      ¦   «         S )Nz#Expected np.memmap instance, got %r)r¶   r   ÚmemmapÚ	TypeErrorrf   Úcopy)rN   s    r/   Úcheck_memmaprŒ  8  s;   € Ý�a�œÑ#Ô#ð HÝÐ=½tÀA¹w¼wÑGÔGÐGØ�6Š6‰8Œ8€Or1   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*  )rs   r   ÚonesÚfloat32)r9  ro   s     r/   Úgenerate_arrayszBtest_auto_memmap_on_arrays_from_generator.<locals>.generate_arraysF  sJ   è è € Ý�q‘”ð 	4ð 	4ˆAÝ”'˜"¥B¤JÐ/Ñ/Ô/°!Ñ3Ð3Ð3Ð3Ð3ð	4ð 	4r1   rG   r   ©rk   r&  r?   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   ©r%   rŒ  ©r-   rN   s     r/   rp   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>L  óN   è è € ð @ð @Ø%&Ð�•ÑÔ˜aÑ Ô ð@ð @ð @ð @ð @ð @r1   rˆ   r³   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r•  r–  s     r/   rp   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>U  r—  r1   )r#   rb  r£   r   r3  r4  )r?   r’  rÂ   r6  rÌ   s        r/   Ú)test_auto_memmap_on_arrays_from_generatorr™  >  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ð 8r1   c                 ó   — | S r7   r,   )Úargs    r/   Úidentityrœ  \  s   € Ø€Jr1   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_moderG   r}   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r7   )r%   rœ  )r-   rÕ   r‰  s     €r/   rp   z.test_memmap_with_big_offset.<locals>.<genexpr>h  s6   øè è € Ð"JÐ"JÀÐ#4¥7­8Ñ#4Ô#4°VÑ#<Ô#<Ð"JÐ"JÐ"JÐ"JÐ"JÐ"Jr1   rt  r   )rç   ru  ÚmmapÚALLOCATIONGRANULARITYr   Úzerosr�  r   r   r#   r¶   r‰  Úoffsetr3  r4  )rv  ÚfnameÚsizeÚobjr6  r‰  s        @r/   Útest_memmap_with_big_offsetr¨  `  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Ñ.Ô.Ð.Ð.Ð.r1   c                  ód  — t          j        ¦   «         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 )Nr   )rk   r=  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   zFtest_warning_about_timeout_not_supported_by_backend.<locals>.<genexpr>p  s2   è è € Ð%LÐ%L¸Q o¥g­f¡o¤o°aÑ&8Ô&8Ð%LÐ%LÐ%LÐ%LÐ%LÐ%Lr1   é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#   rs   r£   r¶   r¨   rã  rµ   )rÁ   r¹   s     r/   Ú3test_warning_about_timeout_not_supported_by_backendr¬  n  s  € Ý	Œ‰Œð M˜8Ø%�˜ 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 r7   r,   )Ú
input_listr™  r¯   s      r/   Úset_list_valuer¯  {  s   € Ø€JˆuÑØ€Lr1   )r   rG   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�   rG  r3   ©rk   rF  r?   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰||¦  «        V — Œ$d S r7   )r%   r¯  )r-   ro   r®  s     €r/   rp   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r1   c              3   ó(   K  — | ]\  }}||k    V — Œd S r7   r,   ©r-   ÚvrÕ  s      r/   rp   zPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>�  s*   è è € Ð:Ð:™$˜!˜Qˆq�AŠvÐ:Ð:Ð:Ð:Ð:Ð:r1   )r#   rs   rL  rË   rb  )rk   r6  r®  s     @r/   Ú=test_parallel_return_order_with_return_as_generator_parameterr¶  €  s£   ø€ ð
 ��q‘€JØP�X˜V¨{ÀKÐPÑPÔPð Qð Qð Qð QÝ;@À¹8¼8ðQñ Qô Qñ ô €Fõ
 �&‰\Œ\€FåÐ:Ð:¥# j°&Ñ"9Ô"9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:r1   c                 óB   — |rt          d¦  «         t          | ¦  «        S )Nr;  )r	   r   )ÚeÚdelays     r/   Ú_sqrt_with_delayrº  �  s    € Øð Ýˆb‰	Œ	ˆ	Ý�‰7Œ7€Nr1   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 )
NrH  r±  c              3   ó`   K  — | ])} t          t          ¦  «        |d z  |dk    ¦  «        V — Œ*dS )rG   r   N)r%   rº  rn   s     r/   rp   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>ž  sY   è è € ð Wð WØ67Ð!�Õ Ñ!Ô! ! Q¡$¨¨aªÑ1Ô1ðWð Wð Wð Wð Wð Wr1   rÿ   c              3   ó6   •K  — | ]}t          ‰¦  «        V — Œd S r7   )Únext)r-   rÕ   r6  s     €r/   rp   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>¢  s)   øè è € Ð=Ð=¨q�d 6™lœlÐ=Ð=Ð=Ð=Ð=Ð=r1   é	   r   rG   c              3   ó(   K  — | ]\  }}||k    V — Œd S r7   r,   r´  s      r/   rp   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>¦  s*   è è € ÐSÐS™$˜!˜Qˆq�AŠvÐSÐSÐSÐSÐSÐSr1   )r#   rs   ÚsortedrL  rË   rb  )r?   rk   Úquickly_returnedÚexpected_quickly_returnedr6  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àˆˆr1   c                 ó&   — t          | |¦  «         d S r7   )rÄ  ©r?   rk   s     r/   Ú7test_parallel_unordered_generator_returns_fastest_firstrÇ  «  s   € õ =¸WÀfÑMÔMÐMÐMÐMr1   )r   rG   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 )NrN   rÿ   rˆ   rj   c              3   óZ   K  — | ]&} t          t          j        ¦  «        |¦  «        V — Œ'd S r7   ©r%   r^   r	   rn   s     r/   rp   z%test_abort_backend.<locals>.<genexpr>»  s7   è è € Ð0XÐ0XÈAÐ1Dµ½¼Ñ1DÔ1DÀQÑ1GÔ1GÐ0XÐ0XÐ0XÐ0XÐ0XÐ0Xr1   rk  )r   rŠ  r^   r#   )rk   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›  r6  s     r/   Úget_large_objectrÒ  À  s*   € ÝŒW•S˜‘\”\­Ð.Ñ.Ô.€FØ€Fˆ1�IØ€Mr1   c                 óÞ   — t          || |¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «        }t          |¦  «         t          |¦  «         ~d d d ¦  «         d S # 1 swxY w Y   d S )N)rk   r?   rF  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   )r%   rÒ  rn   s     r/   rp   z0_test_deadlock_with_generator.<locals>.<genexpr>Î  s6   è è € ÐJÐJ¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐJÐJÐJÐJÐJÐJr1   rÿ   )r#   rs   r¾  )r?   rF  rk   r   r6  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 r7   )rÕ  )r?   rF  rk   s      r/   Útest_deadlock_with_generatorr×  Ô  s   € õ
 " '¨9°fÑ=Ô=Ð=Ð=Ð=r1   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  rM  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rù   rà   rá   s     r/   rp   z/test_multiple_generator_call.<locals>.<genexpr>å  s2   è è € Ð:Ð:¨1�^•W�U‘^”^ AÑ&Ô&Ð:Ð:Ð:Ð:Ð:Ð:r1   rÿ   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z/test_multiple_generator_call.<locals>.<genexpr>ç  s0   è è € Ð;Ð;¨1˜�¥™œ A™œÐ;Ð;Ð;Ð;Ð;Ð;r1   rˆ   rG   ú[The error should be raised immediately when submitting a new task but it took more than 2s.)r   r  r#   rs   r^   )r?   rF  rk   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 )
NrM  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rB  rà   rá   s     r/   rp   z7test_multiple_generator_call_managed.<locals>.<genexpr>ú  s2   è è € Ð;Ð;¨A�^•W�U‘^”^ BÑ'Ô'Ð;Ð;Ð;Ð;Ð;Ð;r1   rÿ   rÙ  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z7test_multiple_generator_call_managed.<locals>.<genexpr>ý  s0   è è € Ð=Ð=¨Q˜+�'¥"™+œ+ a™.œ.Ð=Ð=Ð=Ð=Ð=Ð=r1   rˆ   rG   rÜ  )r#   rs   r^   r   r  )r?   rF  rk   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 )	NrM  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS ©rG   Nrú  rn   s     r/   rp   z9test_multiple_generator_call_separated.<locals>.<genexpr>  sO   è è € ð Að AØ !ˆ�•‰Œ�a˜‘dÑÔðAð Að Að Að Að Ar1   rÿ   c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS ré  rú  rn   s     r/   rp   z9test_multiple_generator_call_separated.<locals>.<genexpr>  sO   è è € ð Bð BØ !ˆ�•‰Œ�a˜‘dÑÔðBð Bð Bð Bð Bð Br1   rk  rH  c              3   ó(   K  — | ]\  }}||k    V — Œd S r7   r,   ©r-   rÚ   ro   s      r/   rp   z9test_multiple_generator_call_separated.<locals>.<genexpr>  s*   è è € Ð8Ð8™F˜C ˆs�aŠxÐ8Ð8Ð8Ð8Ð8Ð8r1   c              3   ó(   K  — | ]\  }}||k    V — Œd S r7   r,   rì  s      r/   rp   z9test_multiple_generator_call_separated.<locals>.<genexpr>  s*   è è € Ð=Ð=™F˜C ˆs�aŠxÐ=Ð=Ð=Ð=Ð=Ð=r1   )r#   rs   rÁ  rË   rb  )r?   rå  ræ  rk   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Ñ&<Ô&<Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=r1   zbackend, error))r2   T)r3   F)rE  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 )Nr2   zRequires multiprocessingrG   rM  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS rB  rà   rn   s     r/   rp   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>0  s2   è è € Ð7Ð7¨�•�‘” Ñ#Ô#Ð7Ð7Ð7Ð7Ð7Ð7r1   rÿ   c                  ó    — t          d¦  «        S )NzGenerator collected)râ   r,   r1   r/   ú<lambda>z;test_multiple_generator_call_separated_gc.<locals>.<lambda>1  s   € ¥uÐ-BÑ'CÔ'C€ r1   z The executor underlying Parallelr  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS ré  rú  rn   s     r/   rp   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>=  sO   è è € ð @
ð @
Ø$%ˆM�G•D‰MŒM˜!˜Q™$ÑÔð@
ð @
ð @
ð @
ð @
ð @
r1   rk  rH  c              3   ó(   K  — | ]\  }}||k    V — Œd S r7   r,   rì  s      r/   rp   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>D  s*   è è € Ð@Ð@¡  Q�3˜!’8Ð@Ð@Ð@Ð@Ð@Ð@r1   r�   r   rq   r   rÍ  )r   r_  r`  r#   rs   ÚweakrefÚfinalizer   r  r   r^   rÁ  rË   rb  Úaliver	   rÖ  rf  )
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	¦  «        ‚)NrG   r   )rk   r&  r?   Útemp_folderc              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r•  r–  s     r/   rp   z(test_memmapping_leaks.<locals>.<genexpr>a  s5   è è € Ð	GÐ	G qÐ
�'•,Ñ
Ô
 Ñ
"Ô
"Ð	GÐ	GÐ	GÐ	GÐ	GÐ	Gr1   rÿ   r   rˆ   rß   z/temporary directory of Parallel was not removedr“  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r•  r–  s     r/   rp   z(test_memmapping_leaks.<locals>.<genexpr>q  s5   è è € ÐCÐC 1Ð…g�lÑÔ˜AÑÔÐCÐCÐCÐCÐCÐCr1   )
ru  r#   r   rU  r£   r  Úlistdirrs   r	   ÚAssertionError)r?   rv  r  rÕ   s       r/   Útest_memmapping_leaksr  U  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
)Nr2   r3   c                 ó¦   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }|d„ t          d¦  «        D ¦   «         k    sJ ‚d S )NrG   rj   c              3   óH   K  — | ]} t          d „ ¦  «        |¦  «        V — ŒdS )c                 ó   — | dz  S rF   r,   rH   s    r/   rò  z2test_lambda_expression.<locals>.<genexpr>.<lambda>�  s
   € ˜!˜Q™$€ r1   Nr/  rn   s     r/   rp   z)test_lambda_expression.<locals>.<genexpr>€  sH   è è € ð 2ð 2Ø'(Ð���ÑÔ Ñ"Ô"ð2ð 2ð 2ð 2ð 2ð 2r1   rÿ   c                 ó   — g | ]}|d z  ‘ŒS ©rG   r,   rn   s     r/   r0   z*test_lambda_expression.<locals>.<listcomp>ƒ  s   € Ð/Ð/Ð/ �q˜!‘tÐ/Ð/Ð/r1   rr   )r?   rÂ   s     r/   Útest_lambda_expressionr  {  sr   € ð
 2�h˜a¨Ð1Ñ1Ô1ð 2ð 2Ý,1°"©I¬Ið2ñ 2ô 2ñ ô €Gð Ð/Ð/¥U¨2¡Y¤YÐ/Ñ/Ô/Ò/Ð/Ð/Ð/Ð/Ð/r1   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.rG   iô  g       @rÿ   )r†   rk   r?   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r7   rÊ  ©r-   ro   Ú	task_times     €r/   rp   z6test_backend_batch_statistics_reset.<locals>.<genexpr>�  ó8   øè è € Ð>Ð>¨Ð…g�dŒjÑÔ˜)Ñ$Ô$Ð>Ð>Ð>Ð>Ð>Ð>r1   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r7   rÊ  r  s     €r/   rp   z6test_backend_batch_statistics_reset.<locals>.<genexpr>–  r  r1   N)r#   rs   r  Ú_effective_batch_sizeÚ_DEFAULT_EFFECTIVE_BATCH_SIZEÚ_smoothed_batch_durationÚ _DEFAULT_SMOOTHED_BATCH_DURATION)r?   rk   Ú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ð 	7r1   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   rG   r|   r}   Úthreads©rk   ÚpreferÚ	processesÚ	sharedmem©rk   ÚrequirerG   r2   )rk   r?   r  ©r  rq   ©r  r   )rf   r#   r  r9   r!   r   rk   )r{   rk   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,   rn   s     r/   r0   z7test_backend_hinting_always_running.<locals>.<listcomp>Ó  s   € Ð0Ð0Ð0 ˜˜1™Ð0Ð0Ð0r1   rÿ   r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z6test_backend_hinting_always_running.<locals>.<genexpr>Õ  sC   è è € ð 5ð 5Ø ˆ�•‰Œ˜ÑÔð5ð 5ð 5ð 5ð 5ð 5r1   )r  rk   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   rm   rn   s     r/   rp   z6test_backend_hinting_always_running.<locals>.<genexpr>Û  s2   è è € ÐCÐC°A˜_�W¥V™_œ_¨QÑ/Ô/ÐCÐCÐCÐCÐCÐCr1   )rs   r#   r(   )rk   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 r7   r,   r  s    r/   Úapply_asynczgtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.apply_asyncç  ó   € ØˆDr1   c                 ó   — |S r7   r,   rÉ  s     r/   r&   zltest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.effective_n_jobsê  ó   € ØˆMr1   N©rT   rU   rV   Úsupports_sharedmemÚuse_threadsr*  r&   r,   r1   r/   ÚMyCustomThreadingBackendr(  ã  s=   € € € € € Ø!ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r1   r1  rG   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 r7   r,   r  s    r/   r*  zhtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.apply_asyncø  r+  r1   c                 ó   — |S r7   r,   rÉ  s     r/   r&   zmtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.effective_n_jobsû  r-  r1   Nr.  r,   r1   r/   ÚMyCustomProcessingBackendr3  ô  s=   € € € € € Ø"ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r1   r6  r¼  rÿ   )rk   r  r†   z…Using ThreadingBackend as joblib backend instead of MyCustomProcessingBackend as the latter does not provide shared memory semantics.©r?   r  )	r   r#   rf   r  Ú
readouterrr!   Ústripr   rZ   )Úcapsysr{   r1  r  r6  Ú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  r2   r7  r*   )r   rZ   r#   r   r,   r1   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 wayrG   r}   r   Nc              3   óV   •K  — | ]#} t          t          ¦  «        dd ‰dz
  i‰¤ŽV — Œ$dS )Úlimitr   Nr,   )r%   Ú_recursive_backend_info)r-   ro   ri  rC  s     €€r/   rp   z*_recursive_backend_info.<locals>.<genexpr>2  sY   øè è € ð 
ð 
àð -�GÕ+Ñ,Ô,ÐGÐG°5¸1±9ÐGÀÐGÐGð
ð 
ð 
ð 
ð 
ð 
r1   r   )r#   rf   r  rT   r!  rs   )rC  ri  r  Ú
this_levelrÂ   s   ``   r/   rD  rD  +  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 )NrG   r}   ÚBackendr   )r!   r   )r    rG   )rD  Útitle)r{   r?   Úbackend_types_and_levelsÚtop_level_backend_typeÚexpected_types_and_levelss        r/   Útest_nested_parallelism_limitrL  9  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 r7   )r%   Ú_recursive_parallelrn   s     r/   rp   z&_recursive_parallel.<locals>.<genexpr>L  s4   è è € ÐGÐG¸Ð2•gÕ1Ñ2Ô2Ñ4Ô4ÐGÐGÐGÐGÐGÐGr1   rG   rr   )Únesting_limits    r/   rO  rO  J  s+   € à�8‰:Œ:ÐGÐG½eÀA¹h¼hÐGÑGÔGÑGÔGÐGr1   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 )NrG   r}   r2   r   )ÚTerminatedWorkerErrorz1Loky worker crash when serializing RecursionError)r   ÚBaseExceptionrO  r¯   Ú&joblib.externals.loky.process_executorrR  r¶   r   r_  ÚxfailÚRecursionError)r{   r?   r¾  ÚexcrR  s        r/   Útest_thread_bomb_mitigationrX  O  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  ÚenvironrM  r   )Úenv_varsÚvars     r/   Ú_run_parallel_sumrd  k  sF   € Ø€Hðð 	,ð 	,ˆõ œ
Ÿš sÑ+Ô+ˆ�‰ˆØ•\ #Ñ&Ô&Ð&Ð&r1   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 )NrG   rj   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r7   )r%   rd  rá   s     r/   rp   z-test_parallel_thread_limit.<locals>.<genexpr>}  sE   è è € ð 2ð 2Ø)*Ð"�Õ!Ñ"Ô"Ñ$Ô$ð2ð 2ð 2ð 2ð 2ð 2r1   r   Ú_THREADSr`  Ú1)r#   rs   rÈ  r$   ÚitemsÚendswithrµ   )r?   rÂ   Úexpected_num_threadsÚworker_env_varsÚomp_num_threadsr¬   r¯   s          r/   Útest_parallel_thread_limitrn  z  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à˜|Ò+Ð+Ð+Ð+Ø ’|�|�|�|�|ð	$ð$ð $r1   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   rZ   )r{   s    r/   Ú)test_dask_backend_when_dask_not_installedrq  ‹  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 re   r,   )rM   rÈ   ri  s      r/   rÆ  z=test_zero_worker_backend.<locals>.ZeroWorkerBackend.configure—  ó   € Ø�1r1   Nc                 ó    — t          d¦  «        ‚)NzNo worker availabler   )rM   ÚfuncÚcallbacks      r/   r*  z?test_zero_worker_backend.<locals>.ZeroWorkerBackend.apply_asyncš  s   € ÝÐ4Ñ5Ô5Ð5r1   c                 ó   — dS re   r,   rÉ  s     r/   r&   zDtest_zero_worker_backend.<locals>.ZeroWorkerBackend.effective_n_jobs�  rv  r1   r7   )rT   rU   rV   rÆ  r*  r&   r,   r1   r/   ÚZeroWorkerBackendrt  –  sF   € € € € € ð	ð 	ð 	ð	6ð 	6ð 	6ð 	6ð	ð 	ð 	ð 	ð 	r1   r{  z&ZeroWorkerBackend has no active workerr  rG   r}   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r7   r  rn   s     r/   rp   z+test_zero_worker_backend.<locals>.<genexpr>£  s0   è è € Ð@Ð@°!˜{�w¥r™{œ{¨1™~œ~Ð@Ð@Ð@Ð@Ð@Ð@r1   )r!   r_  r   r  r#   rs   )r{   r{  Ú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 r7   )ÚMY_GLOBAL_VARIABLEr,   r1   r/   Úcheck_globalsz@test_globals_update_at_each_parallel_call.<locals>.check_globals®  s   € å!Ð!r1   rG   r}   c              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r7   r/  ©r-   ro   r‚  s     €r/   rp   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>´  óE   øè è € ð 1ð 1Ø%&Ð��ÑÔÑ Ô ð1ð 1ð 1ð 1ð 1ð 1r1   zchanged valuec              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r7   r/  r„  s     €r/   rp   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>¾  r…  r1   )r�  r#   rs   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Ð+<Ò<Ð<Ð<Ð<Ð<Ð<r1   c                  ó²   — dd l } | j                             dd¦  «        } | j        ||¦  «         t	          j        d¦  «        }|                     ¦   «         S )Nr   rˆ   Úthreadpoolctl)ÚnumpyrU  rW  rS  r_  ÚimportorskipÚthreadpool_info)r   rN   rŠ  s      r/   Ú_check_numpy_threadpool_limitsrŽ  Ê  sX   € ØÐÐÐð
 	Œ	�Š˜˜SÑ!Ô!€AØ
€B„Fˆ1ˆa�L„L€LÝÔ'¨Ñ8Ô8€MØ×(Ò(Ñ*Ô*Ð*r1   c                 óˆ   — |D ]}|d         | d         k    r
|d         c S Œt          d                     | ¦  «        ¦  «        ‚)NÚfilepathÚnum_threadsz,An unexpected module was loaded in child:
{})rZ   rb  )Úchild_moduleÚparent_infoÚparent_modules      r/   Ú_parent_max_num_threads_forr•  Ö  s`   € Ø$ð 0ð 0ˆØ˜Ô$¨°ZÔ(@Ò@Ð@Ø  Ô/Ð/Ð/Ð/ð Aå
Ø7×>Ò>¸|ÑLÔLñô ð r1   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Ø Ô.°(Ð:Ð:Ð:Ð:Ð:ð	;ð;ð ;r1   )rG   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¸  r2   rÆ  c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r7   ©r%   rŽ  rn   s     r/   rp   z;test_threadpool_limitation_in_child_loky.<locals>.<genexpr>ø  sM   è è € ð Gð GØ67Ð/�Õ.Ñ/Ô/Ñ1Ô1ðGð Gð Gð Gð Gð Gr1   rG   r   r‘  ©
rŽ  r£   r_  r`  r#   rs   r&   rÈ  r$   r›  )rk   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ñô ð ð ð r1   Úinner_max_num_threads)r   rG   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¸  r2   ©r¤  r}   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r7   rŸ  rn   s     r/   rp   z>test_threadpool_limitation_in_child_context.<locals>.<genexpr>  sE   è è € ð ;
ð ;
Ø:;Ð3�GÕ2Ñ3Ô3Ñ5Ô5ð;
ð ;
ð ;
ð ;
ð ;
ð ;
r1   rG   r   r‘  r   )r{   rk   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)r[  r\  rZ  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 r7   )r  ra  rM  )r©  s    r/   Ú_get_envz>test_threadpool_limitation_in_child_override.<locals>._get_env7  s   € ÝŒz�~Š~˜hÑ'Ô'Ð'r1   Ú4r}   c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r7   r/  ©r-   ro   r®  r©  s     €€r/   rp   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>>  s6   øè è € Ð)XÐ)XÈ!Ð*;­'°(Ñ*;Ô*;¸HÑ*EÔ*EÐ)XÐ)XÐ)XÐ)XÐ)XÐ)Xr1   rG   r2   r¦  c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r7   r/  r±  s     €€r/   rp   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>B  sG   øè è € ð .ð .Ø01Ð!•˜Ñ!Ô! (Ñ+Ô+ð.ð .ð .ð .ð .ð .r1   rh  )
r&   r_  r`  r   Úshutdownr  ra  rM  r#   rs   )r{   rk   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!)rG   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 r7   )r%   Úsum)r-   ro   rB   s     €r/   rp   zAtest_loky_reuse_workers.<locals>.parallel_call.<locals>.<genexpr>V  s1   øè è € ÐCÐC°A ¥­¡¤¨Q¡¤ÐCÐCÐCÐCÐCÐCr1   r�   )rk   rB   s    @r/   Úparallel_callz.test_loky_reuse_workers.<locals>.parallel_callT  sJ   ø€ Ý�"‰IŒIˆØ�˜ÐÑÔÐCÐCÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCÐCÐCÐCr1   Tr«  rÿ   )r   rs   )rk   rº  Úfirst_executorrÕ   r¦   s        r/   Útest_loky_reuse_workersr¼  N  s‹   € ðDð Dð Dð
 €M�&ÑÔÐÝ*°Ð6Ñ6Ô6€Nõ �2‰YŒYð *ð *ˆØˆ�fÑÔÐÝ(¨tÐ4Ñ4Ô4ˆØ˜>Ò)Ð)Ð)Ð)Ð)ð*ð *r1   c                 ó2   — d| t          j        ¦   «         <   d S )NÚinitialized)r  r  )Ústatuss    r/   Ú_set_initializedrÀ  d  s   € Ø'€F�2Œ9‰;Œ;ÑÐÐr1   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/   r0   z!_check_status.<locals>.<listcomp>t  s!   € ÐHÐHÐH™V˜S !¸¸iº¸�S¸¸¸r1   rß   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS rÄ  r,   rÅ  s      r/   r0   z!_check_status.<locals>.<listcomp>w  s!   € ÐLÐLÐL¡  a¸QÀ)º^¸^˜¸^¸^¸^r1   z-Waited more than 30s to start all the workers)r  r  rM  r^   r£   ri  r	   r   )r¿  rk   Úwait_workersrÆ  ÚstateÚdeadlineÚ	n_starteds          r/   Ú_check_statusrÌ  h  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à€Jr1   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?   rk   ÚinitializerÚinitargsc              3   óT   •K  — | ]"} t          t          ¦  «        ‰‰¦  «        V — Œ#d S r7   ©r%   rÌ  ©r-   ro   rk   r¿  s     €€r/   rp   z+test_initializer_context.<locals>.<genexpr>�  s8   øè è € ÐNÐN¸aÐ)•7�=Ñ)Ô)¨&°&Ñ9Ô9ÐNÐNÐNÐNÐNÐNr1   rˆ   )r   r˜  ÚdictrÀ  r#   rs   )rk   r?   r{   rš  r¿  s   `   @r/   Útest_initializer_contextrÕ    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 r7   rÒ  rÓ  s     €€r/   rp   z,test_initializer_parallel.<locals>.<genexpr>   s8   øè è € ÐAÐA°Ð…g�mÑÔ˜V VÑ,Ô,ÐAÐAÐAÐAÐAÐAr1   rˆ   )r   r˜  rÔ  r#   rÀ  rs   )rk   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r1   c                 ó’  ‡ ‡— d}t          j        ¦   «         }|                     ¦   «         Št          ¦   «         }t	          |¦  «        D ]`} t          d‰ t          ‰f¬¦  «        ˆ ˆfd„t	          ‰ ¦  «        D ¦   «         ¦  «        }|                     t          |¦  «        ¦  «        }Œat          |¦  «        ‰ k    s
J d¦   «         ‚d S )Nrq   r2   rÎ  c              3   óX   •K  — | ]$} t          t          ¦  «        ‰‰d ¬¦  «        V — Œ%dS ©T)rÈ  NrÒ  rÓ  s     €€r/   rp   z*test_initializer_reused.<locals>.<genexpr>³  óP   øè è € ð 

ð 

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

ð 

ð 

ð 

ð 

ð 

r1   z=The workers should be reused when the initializer is the same)	r   r˜  rÔ  rŸ   rs   r#   rÀ  Úunionr£   ©rk   Ún_repetitionsrš  Úpidsro   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ñ ÔÐÐÐr1   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 )Nrq   r2   rÎ  c              3   óX   •K  — | ]$} t          t          ¦  «        ‰‰d ¬¦  «        V — Œ%dS rÛ  rÒ  rÓ  s     €€r/   rp   z.test_initializer_not_reused.<locals>.<genexpr>Î  rÜ  r1   zFThe workers should not be reused when the initializer arguments change)	r   r˜  rŸ   rs   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ñ /Ô.Ð.Ð.Ð.r1   )F)r   r   )rq   r7   )×rW   r¡  r  r�   rc  r3   r^   r¾   rõ  r5  r   Úmathr   r*   r   Úpickler   r	   Ú	tracebackr
   Úuuidr   r_  rr  r   r   r   Újoblib._multiprocessing_helpersr   Újoblib.test.commonr   r   r   r   Újoblib.testingr   r   r   r   r   Újoblib.externals.lokyr   rw  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)   ÚmarkÚthread_unsafeÚ
pytestmarkr‹  ÚRETURN_GENERATOR_BACKENDSÚpoprÁ  ÚkeysÚALL_VALID_BACKENDSÚPROCESS_BACKENDSÚPARALLEL_BACKENDSÚhasattrr—   r4   r9   r@   rD   rI   Ú	ExceptionrK   r\   r`   rc   rh   ru   rw   rz   r„   r‘   rª   rÃ   rÏ   rÛ   ré   rî   rñ   ró   rõ   rý   r  r  r!  r9  r?  rC  rŸ   rN  rh  ru  ry  r“  rž  r¦  rª  r®  r´  r·  rU  rÁ  rÃ  rË  rÐ  rØ  rÛ  rß  rä  rë  rð  Úextendrs   rñ  ró  rþ  r  r  r
  Ú_parallel_backendsr  r  r  r%  r,  r<  r?  rI  rP  rY  ra  rf  ro  rm  ÚSQUARE_LOCALÚSQUARE_LAMBDArx  rb  rp  rq  rs  rz  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@  rD  rL  rO  Úno_coverrX  rd  rn  rq  r~  rˆ  rŽ  r•  r›  r£  r¨  rµ  r¼  rÀ  rÌ  rÕ  rØ  rá  rä  r,   r1   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( Â(B2Â1B2Â6B; Â;CÃC