§
    €zIf¸! ã            	       ó¦  — 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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 dd
lmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% e�ddl&m'Z' ddl(m)Z) 	 ddl*Z*n# e+$ r dZ*Y nw xY w	 ddl,m-Z- n# e+$ r dZ-Y nw xY w	 ddl.Z.n# e+$ r dZ.Y nw xY wddl/m0Z0 ddl/m1Z1 ddl/m2Z2 ddl/m3Z3 ddl/m4Z4 ddl5m6Z6m7Z7 ddl5m8Z8 ddl5m9Z9 ddl5m:Z: ddl5m;Z;m<Z< ddl5mZm=Z=m>Z>  e=j?        ¦   «         Z@e@ A                    dd¦  «         dg eB e=jC        ¦   «         ¦  «        z   ZDeDd „ e=D ¦   «         z  ZDe€g ZEndd!gZEeEd"gz   ZF eGed#¦  «        r#eD H                     ejI        d$¦  «        ¦  «         e=e>         ZJd%„ ZKd&„ ZLd'„ ZM G d(„ d)eN¦  «        ZOdãd+„ZPd,„ ZQdäd-„ZRd.„ ZSd/„ ZTd0„ ZUd1„ ZV e!d2e8e9g¦  «        ejW         !                    d3d4d5 e;d5¬6¦  «        fd7gg d8¢¬9¦  «        ed:„ ¦   «         ¦   «         ¦   «         ZX e!d;eD¦  «         e!d<g d=¢¦  «         e!d>g d?¢¦  «        d@„ ¦   «         ¦   «         ¦   «         ZY e!d;eD¦  «        dA„ ¦   «         ZZdB„ Z[e e!dCg dD¢¦  «        dE„ ¦   «         ¦   «         Z\e e!d;g dF¢¦  «        dG„ ¦   «         ¦   «         Z]dH„ Z^ e!dIe=¦  «         e!dJe=¦  «        dK„ ¦   «         ¦   «         Z_dL„ Z`edM„ ¦   «         ZadN„ Zb e!d<g dO¢¦  «        dP„ ¦   «         Zc e!d;eF¦  «        dQ„ ¦   «         ZdedR„ ¦   «         Zeee e!dSg dT¢¦  «        dU„ ¦   «         ¦   «         ¦   «         Zf e!d;eF¦  «        dV„ ¦   «         Zge e!d;eF¦  «        dW„ ¦   «         ¦   «         Zhe e!d;eE¦  «        dX„ ¦   «         ¦   «         Zie e!d;e=¦  «        dY„ ¦   «         ¦   «         ZjdZ„ Zk e!d;e=¦  «         e!d[dg d\¢fd]g d^¢fg¦  «        d_„ ¦   «         ¦   «         Zle e!d;eF¦  «        d`„ ¦   «         ¦   «         Zmda„ Zne e!d;eE¦  «        db„ ¦   «         ¦   «         Zodc„ Zpdd„ Zqde„ Zre e!d;eF¦  «        ejW         s                    df¬g¦  «        dh„ ¦   «         ¦   «         ¦   «         Zt G di„ dje0¦  «        Zudk„ Zv e!d;eD¦  «        dl„ ¦   «         Zwe e!d;eF¦  «         e!d<g dm¢¦  «        dn„ ¦   «         ¦   «         ¦   «         Zxdo„ Zydp„ Zz e$edudq¬g¦  «        dr„ ¦   «         Z{ds„ Z|eFdd…         Z}e} ~                    dt„  edu¦  «        D ¦   «         ¦  «         e e!d;e}¦  «         e!d2e9e8g¦  «        dv„ ¦   «         ¦   «         ¦   «         Z€ G dw„ dxe0¦  «        Z� e!d2e8e9g¦  «        dy„ ¦   «         Z‚ e!d2e8e9g¦  «        dz„ ¦   «         Zƒd{„ Z„d|„ Z… G d}„ d~ej†        j4        ¦  «        Z‡ e:de‡¦  «         e e!d;g d€¢¦  «         e!d2e8e9g¦  «        d�„ ¦   «         ¦   «         ¦   «         Zˆe e!d<g d‚¢¦  «         e!d;eF¦  «         e!d2e8e9g¦  «        dƒ„ ¦   «         ¦   «         ¦   «         ¦   «         Z‰d„„ ZŠe e!d…eF¦  «         e!d†eF¦  «         e!d2e8e9g¦  «        d‡„ ¦   «         ¦   «         ¦   «         ¦   «         Z‹e e!d2e8e9g¦  «         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!d;eE¦  «        d’„ ¦   «         ¦   «         ¦   «         Z�d“Z‘e e!d;eE¦  «        d”„ ¦   «         ¦   «         Z’d•Z“d–Z”d—Z•d˜Z–e e!d;eEe€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¡d¤„ Z¢ee e!d;eE¦  «        d¥„ ¦   «         ¦   «         ¦   «         Z£d¦„ Z¤eed§„ ¦   «         ¦   «         Z¥d¨„ Z¦d©„ Z§ejW         !                    d<g dª¢¦  «        d«„ ¦   «         Z¨d¬„ Z©d­„ ZªejW         !                    d<d®d]g¦  «        e e!d; e«e@¦  «        d¯hz
  ¦  «        d°„ ¦   «         ¦   «         ¦   «         Z¬ejW         !                    d<d®d5g¦  «         e!d2e8e9g¦  «         e$e.du d±¬g¦  «        d²„ ¦   «         ¦   «         ¦   «         Z­ e!d;eD¦  «         e!d<g d³¢¦  «        d´„ ¦   «         ¦   «         Z®dµ„ Z¯d¶„ Z°e e!d;e@¦  «         e!d·d¸d¹g¦  «         e!d<g d³¢¦  «        dº„ ¦   «         ¦   «         ¦   «         ¦   «         Z±eejW         !                    d<d®d5g¦  «         e!d·d¸d¹g¦  «         e!d2e8e9g¦  «         e$e.du d±¬g¦  «        d»„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z² e!d;e@¦  «         e!d·d¸d¹g¦  «         e!d<g d³¢¦  «        d¼„ ¦   «         ¦   «         ¦   «         Z³ e!d;e@¦  «         e!d·d¸d¹g¦  «         e!d<g d³¢¦  «        d½„ ¦   «         ¦   «         ¦   «         Z´ e!d;e@¦  «         e!d¾d¸d¹g¦  «         e!d¿d¸d¹g¦  «         e!d<g d³¢¦  «        dÀ„ ¦   «         ¦   «         ¦   «         ¦   «         Zµ e!dÁg dÂ¢¦  «         e!d¾d¸d¹g¦  «         e!d¿d¸d¹g¦  «        dÃ„ ¦   «         ¦   «         ¦   «         Z¶ee e!d;eE¦  «        dÄ„ ¦   «         ¦   «         ¦   «         Z· e!d;e€dd"gng dÅ¢¦  «        dÆ„ ¦   «         Z¸e e!d;eE¦  «        dÇ„ ¦   «         ¦   «         Z¹e e!d2e8e9g¦  «        dÈ„ ¦   «         ¦   «         Zº e!d2e8e9g¦  «        dÉ„ ¦   «         Z»dÊ„ Z¼dådË„Z½e e!d;d!d"g¦  «         e!d2e8e9g¦  «        dÌ„ ¦   «         ¦   «         ¦   «         Z¾e e!d2e8e9g¦  «         e$e.du d±¬g¦  «        dÍ„ ¦   «         ¦   «         ¦   «         Z¿dædÎ„ZÀejW        jÁ         e!d2e8e9g¦  «         e!d;e€d"gnd!d"g¦  «        dÏ„ ¦   «         ¦   «         ¦   «         ZÂdÐ„ ZÃ e!d;e�dd!gndg¦  «         e$e-du dÑ¬g¦  «        dÒ„ ¦   «         ¦   «         ZÄ e!d2e8e9g¦  «         e$e.dud±¬g¦  «        dÓ„ ¦   «         ¦   «         ZÅ e!d2e8e9g¦  «        dÔ„ ¦   «         ZÆdÕ„ ZÇdÖ„ ZÈd×„ ZÉdØ„ ZÊee e!d<g dÙ¢¦  «        dÚ„ ¦   «         ¦   «         ¦   «         ZËee e!dÛg dÜ¢¦  «         e!d<d®d5g¦  «         e!d2e8e9g¦  «        dÝ„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZÌe e!d<d®d5g¦  «         e!dÞg dß¢¦  «         e!d2e8e9g¦  «        dà„ ¦   «         ¦   «         ¦   «         ¦   «         ZÍe e!d<g dá¢¦  «        dâ„ ¦   «         ¦   «         ZÎdS )çz
Test the parallel module.
é    N)Úformat_exception©Úsqrt)Úsleep)ÚPicklingError)Únullcontext©ÚTimeoutError©Úparallel)ÚdumpÚload)Úmp)ÚnpÚ
with_numpy)Úwith_multiprocessing)ÚIS_PYPYÚforce_gc_pypy)ÚparametrizeÚraisesÚcheck_subprocess_callÚskipifÚwarns)Úget_reusable_executor)ÚQueueé   )Úparallel_sum)ÚSequentialBackend)ÚThreadingBackend)ÚMultiprocessingBackend)ÚParallelBackendBase)ÚLokyBackend)ÚParallelÚdelayed)Úparallel_config)Úparallel_backend)Úregister_parallel_backend)Úeffective_n_jobsÚ	cpu_count)r   ÚBACKENDSÚDEFAULT_BACKENDÚmultiprocessingc                 ó6   — g | ]}t          |         ¦   «         ‘ŒS © )r*   )Ú.0Úbackend_strs     úM/var/www/piapp/venv/lib/python3.11/site-packages/joblib/test/test_parallel.pyú
<listcomp>r2   M   s#   € ÐKÐKÐK°;•x Ô,Ñ.Ô.ÐKÐKÐKó    ÚlokyÚ	threadingÚget_contextÚspawnc           	      óB   — t          | dt          | dd ¦  «        ¦  «        S )NÚ_poolÚ_workers)Úgetattr©Úbackends    r1   Úget_workersr>   [   s    € Ý�7˜G¥W¨W°jÀ$Ñ%GÔ%GÑHÔHÐHr3   c                 ó   — | |z  S ©Nr.   )ÚxÚys     r1   ÚdivisionrC   _   s   € Øˆq‰5€Lr3   c                 ó   — | dz  S ©Né   r.   ©rA   s    r1   ÚsquarerH   c   s   € Ø�‰6€Mr3   c                   ó   — e Zd ZdZd„ ZdS )ÚMyExceptionWithFinickyInitz1An exception class with non trivial __init__
    c                 ó   — d S r@   r.   )ÚselfÚaÚbÚcÚds        r1   Ú__init__z#MyExceptionWithFinickyInit.__init__j   s   € Øˆr3   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   r.   r3   r1   rJ   rJ   g   s-   € € € € € ðð ðð ð ð ð r3   rJ   Fc                 óH   — | dk    r|rt          dddd¦  «        nt          ‚| S )Né   rM   rN   rO   rP   )rJ   Ú
ValueError)rA   Úcustom_exceptions     r1   Úexception_raiserr[   n   s4   € ØˆA‚v€và"ð3Õ)¨#¨s°C¸Ñ=Ô=Ð=Ý(2ð	4à€Hr3   c                 ó8   — t          j        d¦  «         t          ‚)Ngš™™™™™©?)Útimer   ÚKeyboardInterruptrG   s    r1   Úinterrupt_raiserr_   u   s   € Ý„Jˆs�O„O€OÝ
Ðr3   c                 ó   — | dz  |z   |z   S )zO A module-level function so that it can be spawn with
    multiprocessing.
    rF   r.   )rA   rB   Úzs      r1   Úfrb   z   s   € ð �‰6�A‰:˜‰>Ðr3   c                  óN   — t          t          j        ¦   «         d         ¦  «        S ©Nr   )Útyper   Úget_active_backendr.   r3   r1   Ú_active_backend_typerg   �   s   € Ý•Ô+Ñ-Ô-¨aÔ0Ñ1Ô1Ð1r3   c                 ód   —  t          | |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        S )N©Ún_jobsr=   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   ©r$   rH   ©r/   Úis     r1   ú	<genexpr>z parallel_func.<locals>.<genexpr>†   sC   è è € ð :.ð :.Ø ˆ�•‰Œ˜ÑÔð:.ð :.ð :.ð :.ð :.ð :.r3   é   ©r#   Úrange)Úinner_n_jobsr=   s     r1   Úparallel_funcrt   …   sE   € Ø9�8˜<°Ð9Ñ9Ô9ð :.ð :.Ý$)¨!¡H¤Hð:.ñ :.ô :.ñ .ô .ð .r3   c                  ó.   — t          ¦   «         dk    sJ ‚d S rd   )r)   r.   r3   r1   Útest_cpu_countrv   ‹   s   € Ý‰;Œ;˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r3   c                  ó.   — t          ¦   «         dk    sJ ‚d S rd   ©r(   r.   r3   r1   Útest_effective_n_jobsry   �   s   € ÝÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r3   Úcontextzbackend_n_jobs, expected_n_jobs)rp   rp   éÿÿÿÿ©rj   ©Nr   )zpositive-intznegative-intÚNone)Úidsc                 óª   —  | d|¬¦  «        5  t          d ¬¦  «        |k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          d ¬¦  «        dk    sJ ‚d S )Nr5   r|   r   rx   )rz   Úbackend_n_jobsÚexpected_n_jobss      r1   Útest_effective_n_jobs_Nonerƒ   “   sÄ   € ð 
ˆ� ^Ð	4Ñ	4Ô	4ð @ð @õ   tÐ,Ñ,Ô,°Ò?Ð?Ð?Ð?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ
  4Ð(Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ð-Ð-s   Ž2²6¹6r=   rj   )r   rF   r{   éþÿÿÿÚverbose)rF   é   éd   c                 ó¤   — d„ t          d¦  «        D ¦   «          t          || |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        k    sJ ‚d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   ©rH   ©r/   rA   s     r1   r2   z(test_simple_parallel.<locals>.<listcomp>¬   s   € Ð)Ð)Ð)˜1�V�A‰YŒYÐ)Ð)Ð)r3   é   )rj   r=   r…   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   r‹   s     r1   ro   z'test_simple_parallel.<locals>.<genexpr>®   sC   è è € ð &6ð &6Ø'(�•�‘” Ñ"Ô"ð&6ð &6ð &6ð &6ð &6ð &6r3   ©rr   r#   )r=   rj   r…   s      r1   Útest_simple_parallelr�   ¨   s‚   € ð *Ð)¥ a¡¤Ð)Ñ)Ô)ð&�H˜F¨GØ$ð&ñ &ô &ð&6ð &6Ý,1°!©H¬Hð&6ñ &6ô &6ñ6ô 6ò6ð 6ð 6ð 6ð 6ð 6r3   c                 ól  — |                      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 ¦   «         }t          |¦  «        dk    sJ ‚d S )NÚnameÚ!some_new_name_for_the_main_thread)Útargetr‘   ÚvalueT©ÚrecordrF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   r‹   s     r1   ro   z6test_main_thread_renamed_no_warning.<locals>.<genexpr>¼   sC   è è € ð 62ð 62Ø#$ˆO�G•F‰OŒO˜AÑÔð62ð 62ð 62ð 62ð 62ð 62r3   rp   )r   r   é   c                 ó>   — g | ]}d t          |j        ¦  «        v¯|‘ŒS )zworker timeout)ÚstrÚmessage©r/   Úws     r1   r2   z7test_main_thread_renamed_no_warning.<locals>.<listcomp>Â   s+   € ÐNÐNÐN�aÐ'7½sÀ1Ä9¹~¼~Ð'MÐ'M�Ð'MÐ'MÐ'Mr3   r   )Úsetattrr5   Úcurrent_threadÚwarningsÚcatch_warningsr#   rr   Úlen)r=   ÚmonkeypatchÚwarninfoÚresultss       r1   Ú#test_main_thread_renamed_no_warningr¦   ²   s)  € ð ×Ò�yÔ7Ñ9Ô9ÀØAð ñ Cô Cð Cõ 
Ô	 ¨Ð	-Ñ	-Ô	-ð $°Ø5•( !¨WÐ5Ñ5Ô5ð 62ð 62Ý(-¨a©¬ð62ñ 62ô 62ñ 2ô 2ˆà˜)˜)˜)Ò#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð OÐN˜8ÐNÑNÔN€Hõ
 ˆx‰=Œ=˜AÒÐÐÐÐÐs   ¿<BÂBÂBc                 ó’  — t          j        d¬¦  «        5 }t          j        d¦  «         t          | |¬¦  «         d d d ¦  «         n# 1 swxY w Y   d„ |D ¦   «         }|rb|r^t	          d„ |D ¦   «         ¦  «        }t          t          j        dd¦  «        rt          |¦  «        d	k    nt          |¦  «        d	k    }|o|S dS |rJ ‚dS )
NTr•   Úalways)r=   rs   c                 ó   — g | ]	}|j         ‘Œ
S r.   )r›   rœ   s     r1   r2   z*_assert_warning_nested.<locals>.<listcomp>Ï   s   € Ð,Ð,Ð,˜a�”	Ð,Ð,Ð,r3   c              3   ó4   K  — | ]}d |j         d         v V — ŒdS )zbacked parallel loops cannotr   N)Úargs)r/   Úeachs     r1   ro   z)_assert_warning_nested.<locals>.<genexpr>Ò   sA   è è € ð 'ð 'àð /°$´)¸A´,Ð>ð'ð 'ð 'ð 'ð 'ð 'r3   ÚnogilFr   )	r    r¡   Úsimplefilterrt   Úallr;   ÚsysÚflagsr¢   )r=   rs   Úexpectedr¤   Úwarnings_are_correctÚwarnings_have_the_right_lengths         r1   Ú_assert_warning_nestedrµ   Ê   sM  € Ý	Ô	 ¨Ð	-Ñ	-Ô	-ð 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Ý#&ð 'ð 'à$ð'ñ 'ô 'ñ $ô $Ð õ '.­c¬i¸À%Ñ&HÔ&Hð (•�H‘” Ò"Ð"Ý˜‘]”] aÒ'ð +ð (ÐJÐ,JÐJàˆuàÐÐÐØˆts   –&AÁAÁAz%parent_backend,child_backend,expected))r4   r,   T)r4   r4   F)r,   r,   T)r,   r4   T)r5   r,   T)r5   r4   Tc                 ó‚  ‡‡—  t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «          t          d| ¬¦  «        ˆˆfd„t          d¦  «        D ¦   «         ¦  «        }| dk    r>t          r$t          |¦  «        st	          j        d¬¦  «         t          |¦  «        sJ ‚d S t          |¦  «        sJ ‚d S )	NrF   ri   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d d¬¦  «        V — Œ%dS )r   F©r=   rs   r²   N©r$   rµ   ©r/   Ú_Úchild_backends     €r1   ro   z0test_nested_parallel_warnings.<locals>.<genexpr>ï   s[   øè è € ð /ð /ð ð 	(�Õ&Ñ'Ô'Ø!°Øð	ñ 	ô 	ð/ð /ð /ð /ð /ð /r3   rŒ   c              3   óX   •K  — | ]$} t          t          ¦  «        ‰d ‰¬¦  «        V — Œ%dS )rF   r¸   Nr¹   )r/   r»   r¼   r²   s     €€r1   ro   z0test_nested_parallel_warnings.<locals>.<genexpr>ö   s[   øè è € ð 5ð 5ð ð 	(�Õ&Ñ'Ô'Ø!°Øð	ñ 	ô 	ð5ð 5ð 5ð 5ð 5ð 5r3   r5   zThis test often fails in PyPy.©Úreason)r#   rr   r   ÚanyÚpytestÚxfailr¯   )Úparent_backendr¼   r²   Úress    `` r1   Útest_nested_parallel_warningsrÅ   ã   s  øø€ ð /…H�A˜~Ð.Ñ.Ô.ð /ð /ð /ð /õ �q‘”ð	/ñ /ô /ñ ô ð ð 5�(˜! ^Ð
4Ñ
4Ô
4ð 5ð 5ð 5ð 5ð 5õ �q‘”ð	5ñ 5ô 5ñ ô €Cð ˜Ò$Ð$Ýð 	B�3˜s™8œ8ð 	BåŒLÐ @ÐAÑAÔAÐAÝ�3‰xŒxˆˆˆˆˆå�3‰xŒxˆˆˆˆˆr3   )r4   r,   r5   c                 ó¤   — dg}d„ }t          j        ||f¬¦  «        }|                     ¦   «          |                     ¦   «          |d         sJ ‚d S )NFc                 ó$  — t          j        d¬¦  «        5 } t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          |¦  «        ¦  «         t          |¦  «        dk    | d<   d S )NTr•   rF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )çš™™™™™¹?N©r$   r   ©r/   r»   s     r1   ro   zPtest_background_thread_parallelism.<locals>.background_thread.<locals>.<genexpr>  sC   è è € ð 6ð 6Ø'(�•�‘”˜rÑ"Ô"ð6ð 6ð 6ð 6ð 6ð 6r3   r˜   r   )r    r¡   r#   rr   Úprintr¢   )Úis_run_parallelr¤   s     r1   Úbackground_threadz=test_background_thread_parallelism.<locals>.background_thread  sÚ   € ÝÔ$¨DÐ1Ñ1Ô1ð 	6°XØ�H˜AÐÑÔð 6ð 6Ý,1°!©H¬Hð6ñ 6ô 6ñ 6ô 6ð 6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ 	�c�(‰mŒmÑÔÐÝ  ™]œ]¨aÒ/ˆ˜ÑÐÐs   –1AÁAÁA)r“   r«   r   )r5   ÚThreadÚstartÚjoin)r=   rÍ   rÎ   Úts       r1   Ú"test_background_thread_parallelismrÓ     sf   € ð �g€Oð0ð 0ð 0õ 	ÔÐ 1¸Ð8JÐKÑKÔK€AØ‡G‚G�I„I€IØ‡F‚F�H„H€HØ˜1ÔÐÐÐÐÐr3   c                 óh   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )ç{®Gáz„?Nrl   rË   s     r1   ro   znested_loop.<locals>.<genexpr>  sC   è è € ð (0ð (0Ø!"ˆ�•‰Œ˜ÑÔð(0ð (0ð (0ð (0ð (0ð (0r3   rq   r<   s    r1   Únested_loopr×     sO   € Ø'…H�A˜wÐ'Ñ'Ô'ð (0ð (0Ý&+¨A¡h¤hð(0ñ (0ô (0ñ 0ô 0ð 0ð 0ð 0r3   r¼   rÃ   c                 ón   ‡—  t          d| ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )NrF   ri   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r@   )r$   r×   rº   s     €r1   ro   z#test_nested_loop.<locals>.<genexpr>!  sG   øè è € ð /?ð /?Ø01Ð�•ÑÔ˜]Ñ+Ô+ð/?ð /?ð /?ð /?ð /?ð /?r3   rq   )rÃ   r¼   s    `r1   Útest_nested_looprÚ     s\   ø€ ð /…H�A˜~Ð.Ñ.Ô.ð /?ð /?ð /?ð /?Ý5:¸1±X´Xð/?ñ /?ô /?ñ ?ô ?ð ?ð ?ð ?r3   c                 ó   — t           ‚r@   )rY   r<   s    r1   Úraise_exceptionrÜ   %  s   € Ý
Ðr3   c            	      ó8  — t          t          ¦  «        5  t          dd¬¦  «        5 }  |  t          t          ¦  «        d¦  «         t          t
          ¦  «        d¦  «        g¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NrF   r4   ri   )r   rY   r#   r$   r×   rÜ   r   s    r1   Ú)test_nested_loop_with_exception_with_lokyrÞ   )  s  € å	•
Ñ	Ô	ð 9ð 9Ý˜Q¨Ð/Ñ/Ô/ð 	9°8ØˆHÐ*•g�kÑ*Ô*¨6Ñ2Ô2Ø.•g�oÑ.Ô.¨vÑ6Ô6ð8ñ 9ô 9ð 9ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s5   •B§AA7Á+BÁ7A;	Á;BÁ>A;	Á?BÂBÂBc                  óº   ‡ — t          d¬¦  «        Š  t          dd¬¦  «        ˆ fd„t          d¦  «        D ¦   «         ¦  «         ‰                      ¦   «         sJ ‚dS )z1Input is mutable when using the threading backendrŒ   )ÚmaxsizerF   r5   ri   c              3   óR   •K  — | ]!} t          ‰j        ¦  «        d ¦  «        V — Œ"dS ©r   N)r$   Úput)r/   r»   Úqs     €r1   ro   z1test_mutate_input_with_threads.<locals>.<genexpr>4  sF   øè è € ð ,-ð ,-Øˆ��”‰Œ�qÑÔð,-ð ,-ð ,-ð ,-ð ,-ð ,-r3   N)r   r#   rr   Úfull)rä   s   @r1   Útest_mutate_input_with_threadsræ   1  su   ø€ å�aÐÑÔ€AØ+…H�A˜{Ð+Ñ+Ô+ð ,-ð ,-ð ,-ð ,-Ý#(¨¡8¤8ð,-ñ ,-ô ,-ñ -ô -ð -à�6Š6‰8Œ8€O€O€O€O€Or3   )r   rF   rp   c                 óŠ   — t          d¦  «        }d„ |D ¦   «          t          | ¬¦  «        d„ |D ¦   «         ¦  «        k    sJ ‚dS )z.Check the keyword argument processing of pmap.é
   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS ©r   ©rB   ©rb   r‹   s     r1   r2   z(test_parallel_kwargs.<locals>.<listcomp>=  s"   € Ð$Ð$Ð$˜1�Qˆq�AˆY‰YŒYÐ$Ð$Ð$r3   r|   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS ©r   rë   N©r$   rb   r‹   s     r1   ro   z'test_parallel_kwargs.<locals>.<genexpr>>  s7   è è € Ð#DÐ#D¸1 J¥G­A¡J¤J¨q°AÐ$6Ñ$6Ô$6Ð#DÐ#DÐ#DÐ#DÐ#DÐ#Dr3   NrŽ   )rj   Úlsts     r1   Útest_parallel_kwargsrñ   9  sk   € õ �‰)Œ)€CØ$Ð$ Ð$Ñ$Ô$Ø#�H˜FÐ#Ñ#Ô#Ð#DÐ#DÀÐ#DÑ#DÔ#DÑDÔDòEð Eð Eð Eð Eð Er3   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     r1   r2   z4test_parallel_as_context_manager.<locals>.<listcomp>D  s"   € Ð'Ð'Ð'˜a•�!�q�	‘	”	Ð'Ð'Ð'r3   r˜   ri   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS rî   rï   r‹   s     r1   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>M  ó7   è è € Ð=Ð=°A˜Z�W¥Q™ZœZ¨¨QÐ/Ñ/Ô/Ð=Ð=Ð=Ð=Ð=Ð=r3   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS rî   rï   r‹   s     r1   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>N  rõ   r3   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS rî   rï   r‹   s     r1   ro   z3test_parallel_as_context_manager.<locals>.<genexpr>Z  s7   è è € Ð9Ð9°˜�¥™œ A¨Ð+Ñ+Ô+Ð9Ð9Ð9Ð9Ð9Ð9r3   )rr   r#   Ú_backendr   r>   )r=   rð   r²   ÚpÚmanaged_backends        r1   Ú test_parallel_as_context_managerrû   A  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 )ze Check that pmap captures the errors when it is passed an object
        that cannot be pickled.
    c                   ó   — e Zd Zd„ ZdS )ú1test_parallel_pickling.<locals>.UnpicklableObjectc                 ó    — t          d¦  «        ‚)NÚ123)ÚRuntimeError©rL   s    r1   Ú
__reduce__z<test_parallel_pickling.<locals>.UnpicklableObject.__reduce__e  s   € Ý˜uÑ%Ô%Ð%r3   N)rS   rT   rU   r  r.   r3   r1   ÚUnpicklableObjectrþ   d  s#   € € € € € ð	&ð 	&ð 	&ð 	&ð 	&r3   r  zthe task to send©ÚmatchrF   r4   ri   c              3   ób   •K  — | ])} t          t          ¦  «         ‰¦   «         ¦  «        V — Œ*d S r@   ©r$   Úid)r/   r»   r  s     €r1   ro   z)test_parallel_pickling.<locals>.<genexpr>i  sU   øè è € ð +5ð +5Ø%&ð ,7­7µ2©;¬;ØÐÑÔñ,!ô ,!ð +5ð +5ð +5ð +5ð +5ð +5r3   rè   N)Úobjectr   r   r#   rr   )r  s   @r1   Útest_parallel_picklingr  _  sô   ø€ ð
&ð &ð &ð &ð &�Fñ &ô &ð &õ 
•Ð%8Ð	9Ñ	9Ô	9ð 5ð 5Ø*�˜ 6Ð*Ñ*Ô*ð +5ð +5ð +5ð +5Ý*/°©)¬)ð+5ñ +5ô +5ñ 	5ô 	5ð 	5ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   «4A,Á,A0Á3A0Ú	byteorder)ú<ú>ú=c                 óŽ  ‡‡— 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 r@   )Údtyper  rG   s    r1   Úinspect_byteorderz=test_parallel_byteorder_corruption.<locals>.inspect_byteorderr  s   € Ø�!”'Ô#Ð#Ð#r3   é   )rF   rp   Úi4rF   r4   ri   c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r@   ©r$   )r/   r»   r  rA   s     €€r1   ro   z5test_parallel_byteorder_corruption.<locals>.<genexpr>y  sH   øè è € ð 0ð 0Ø*+Ð"�Ð!Ñ"Ô" 1Ñ%Ô%ð0ð 0ð 0ð 0ð 0ð 0r3   rp   )
r   ÚarangeÚreshapeÚviewr  r  r#   rr   ÚtestingÚassert_array_equal)r  Úinitial_np_byteorderÚresultÚ
x_returnedÚbyteorder_in_workerr  rA   s        @@r1   Ú"test_parallel_byteorder_corruptionr!  m  s  øø€ ð
$ð $ð $õ 	Œ	�!‰Œ×Ò˜VÑ$Ô$×)Ò)¨YÐ*:Ð*:Ð*:Ñ;Ô;€Aàœ7Ô,Ðà/�X˜Q¨Ð/Ñ/Ô/ð 0ð 0ð 0ð 0ð 0Ý/4°Q©x¬xð0ñ 0ô 0ñ ô €Fð ,2ð 5ð 5Ñ'ˆ
Ð'Ø"Ð&:Ò:Ð:Ð:Ð:Ø" jÔ&6Ô&@Ò@Ð@Ð@Ð@Ý
Œ
×%Ò% a¨Ñ4Ô4Ð4Ð4ð5ð 5r3   c                 ó�   — t           t          d| d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        ¦  «        dk    sJ ‚d S )NrF   é   ©rj   r=   Útimeoutc              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS )gü©ñÒMbP?NrÊ   r‹   s     r1   ro   z0test_parallel_timeout_success.<locals>.<genexpr>†  sC   è è € ð ?2ð ?2Ø"#ˆ�•‰Œ�uÑÔð?2ð ?2ð ?2ð ?2ð ?2ð ?2r3   rè   )r¢   r#   rr   r<   s    r1   Útest_parallel_timeout_successr'  ƒ  sr   € õ Ð>�x˜q¨'¸2Ð>Ñ>Ô>ð ?2ð ?2Ý',¨R¡y¤yð?2ñ ?2ô ?2ñ 2ô 2ñ 3ô 3Ø68ò9ð 9ð 9ð 9ð 9ð 9r3   c                 óÄ   — t          t          ¦  «        5   t          d| d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrF   rÖ   r$  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS ©rè   NrÊ   r‹   s     r1   ro   z-test_parallel_timeout_fail.<locals>.<genexpr>�  sC   è è € ð :3ð :3Ø#$ˆN�G•E‰NŒN˜2ÑÔð:3ð :3ð :3ð :3ð :3ð :3r3   rè   )r   r
   r#   rr   r<   s    r1   Útest_parallel_timeout_failr+  Š  s»   € õ 
•Ñ	Ô	ð 3ð 3Ø9�˜ 7°DÐ9Ñ9Ô9ð :3ð :3Ý(-¨b©	¬	ð:3ñ :3ô :3ñ 	3ô 	3ð 	3ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3ó   •3AÁAÁAc           	      ó˜  — t           ��·t          t          ¦  «        5   t          d| ¬¦  «        d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t
          ¦  «        5   t          d| ¬¦  «        d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          d| ¬¦  «        5 }t          |j        ¦  «        €J ‚t          |j        ¦  «        }t          t          ¦  «        5   |d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        €J ‚t          |j        ¦  «        |usJ ‚d„ t          d	¦  «        D ¦   «          |d
„ t          d	¦  «        D ¦   «         ¦  «        k    sJ ‚t          |j        ¦  «        }t          t
          ¦  «        5   |d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        €J ‚t          |j        ¦  «        |usJ ‚d„ t          d	¦  «        D ¦   «          |d„ t          d	¦  «        D ¦   «         ¦  «        k    s"J |j	        |j
        |j        |j        f¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        �J ‚nOt          t
          ¦  «        5   t          d¬¦  «        d„ dD ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5   t          d¬¦  «        d„ t	          dd¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5   t          dd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrF   ri   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r.   ©r$   rC   ©r/   rA   rB   s      r1   r2   z&test_error_capture.<locals>.<listcomp>›  s@   € ð 5ð 5ð 5Ù˜˜1ð #•�Ñ"Ô" 1 aÑ(Ô(ð 5ð 5ð 5r3   )r   r   )r   r   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r.   ©r$   r_   r‹   s     r1   r2   z&test_error_capture.<locals>.<listcomp>   ó,   € Ð>Ð>Ð>°!Ð*•Õ)Ñ*Ô*¨1Ñ-Ô-Ð>Ð>Ð>r3   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r.   r/  r0  s      r1   r2   z&test_error_capture.<locals>.<listcomp>¨  s@   € ð ;ð ;ð ;Ù"˜a ð ,�'¥(Ñ+Ô+¨A¨qÑ1Ô1ð ;ð ;ð ;r3   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS rê   rì   r‹   s     r1   r2   z&test_error_capture.<locals>.<listcomp>²  ó"   € Ð2Ð2Ð2 1•Q�q˜A�Y‘Y”YÐ2Ð2Ð2r3   rè   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS rî   rï   r‹   s     r1   ro   z%test_error_capture.<locals>.<genexpr>³  ó7   è è € ÐCÐC°A˜Z�W¥Q™ZœZ¨¨QÐ/Ñ/Ô/ÐCÐCÐCÐCÐCÐCr3   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r.   r2  r‹   s     r1   r2   z&test_error_capture.<locals>.<listcomp>·  s,   € ÐGÐGÐG¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐGÐGÐGr3   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS rê   rì   r‹   s     r1   r2   z&test_error_capture.<locals>.<listcomp>¿  r6  r3   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS rî   rï   r‹   s     r1   ro   z%test_error_capture.<locals>.<genexpr>À  r8  r3   r|   c                 óH   — g | ]} t          t          ¦  «        |¦  «        ‘Œ S r.   r2  r‹   s     r1   r2   z&test_error_capture.<locals>.<listcomp>Ë  r3  r3   c                 óP   — g | ]#\  }} t          t          ¦  «        ||¦  «        ‘Œ$S r.   r/  r0  s      r1   r2   z&test_error_capture.<locals>.<listcomp>Ñ  s1   € ÐEÐEÐE©¨¨AÐ�W•XÑÔ˜q !Ñ$Ô$ÐEÐEÐEr3   r   )rj   r…   c              3   óT   K  — | ]#} t          t          ¦  «        |d ¬¦  «        V — Œ$dS )T)rZ   N©r$   r[   rm   s     r1   ro   z%test_error_capture.<locals>.<genexpr>Õ  sN   è è € ð !ð !Øð '�WÕ%Ñ&Ô& q¸4Ð@Ñ@Ô@ð !ð !ð !ð !ð !ð !r3   r#  )r   r   ÚZeroDivisionErrorr#   Úzipr^   r>   rø   rr   Ú
_iteratingÚn_completed_tasksÚn_dispatched_tasksÚ	_abortingrJ   )r=   r   Úoriginal_workerss      r1   Útest_error_capturerG  “  s¥  € õ
 
�~ÝÕ%Ñ&Ô&ð 	6ð 	6Ø/�H˜A wÐ/Ñ/Ô/ð5ð 5Ý # F¨FÑ 3Ô 3ð5ñ 5ô 5ñ6ô 6ð 6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ
 Õ%Ñ&Ô&ð 	@ð 	@Ø/�H˜A wÐ/Ñ/Ô/Ø>Ð>°vÐ>Ñ>Ô>ñ@ô @ð @ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ
 ˜Q¨Ð0Ñ0Ô0ð  	°HÝ˜xÔ0Ñ1Ô1Ð=Ð=Ð=Ý*¨8Ô+<Ñ=Ô=ÐåÕ)Ñ*Ô*ð <ð <Ø�ð ;ð ;Ý&)¨&°&Ñ&9Ô&9ð;ñ ;ô ;ñ <ô <ð <ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ ˜xÔ0Ñ1Ô1Ð=Ð=Ð=õ ˜xÔ0Ñ1Ô1Ð9IÐIÐIÐIÐIà2Ð2­¨b©	¬	Ð2Ñ2Ô2Ø�HÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCòDð Dð Dð Dõ  +¨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à2Ð2­¨b©	¬	Ð2Ñ2Ô2Ø�HÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCòDð Dð DàÔ# XÔ%?ØÔ+¨XÔ-?ðGñDô Dð Dð Dð9 	ð  	ð  	ñ  	ô  	ð  	ð  	ð  	ð  	ð  	ð  	øøøð  	ð  	ð  	ð  	õH ˜8Ô,Ñ-Ô-Ð5Ð5Ð5Ð5åÕ%Ñ&Ô&ð 	@ð 	@Ø�H˜AÐÑÔØ>Ð>°vÐ>Ñ>Ô>ñ@ô @ð @ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ 
Õ!Ñ	"Ô	"ð Gð GØ�˜ÐÑÔØEÐEµ°V¸VÑ1DÔ1DÐEÑEÔEñ	Gô 	Gð 	GðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
Õ*Ñ	+Ô	+ð "ð "Ø%�˜ 1Ð%Ñ%Ô%ð!ð !Ý˜B‘i”ið!ñ !ô !ñ	"ô 	"ð 	"ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "sµ   �3AÁA Á#A Á;%B,Â,B0Â3B0Ã?JÄ$D7Ä+JÄ7D;	Ä;JÄ>D;	Ä?BJÇG9Ç-JÇ9G=	Ç=JÈ G=	ÈBJÊJ"Ê%J"Ë$LÌLÌLÌ#2M!Í!M%Í(M%Î 2N?Î?OÏOc                 ó0  — dd„}t          d| ¬¦  «        5 }t          t          d¬¦  «        5   |d„  |d¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |d	„  |d
¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |d„  |d¬¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr   c              3   ó`   K  — t          d¦  «        D ]}|| k    rt          d¦  «        ‚|V — Œd S )Né   úIterator Raising Error)rr   rY   )Úraise_atrn   s     r1   Úmy_generatorz1test_error_in_task_iterator.<locals>.my_generatorÝ  sH   è è € Ý�r‘”ð 	ð 	ˆAØ�HŠ}ˆ}Ý Ð!9Ñ:Ô:Ð:ØˆGˆGˆGˆGð	ð 	r3   rF   ri   rK  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z.test_error_in_task_iterator.<locals>.<genexpr>æ  ó2   è è € ÐCÐC Qˆo�g•f‰oŒo˜aÑ Ô ÐCÐCÐCÐCÐCÐCr3   )rL  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z.test_error_in_task_iterator.<locals>.<genexpr>ë  rO  r3   rŒ   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z.test_error_in_task_iterator.<locals>.<genexpr>ï  s2   è è € ÐDÐD Qˆo�g•f‰oŒo˜aÑ Ô ÐDÐDÐDÐDÐDÐDr3   é   ©r   )r#   r   rY   )r=   rM  rù   s      r1   Útest_error_in_task_iteratorrT  Ù  s•  € ðð ð ð õ 
˜ GÐ	,Ñ	,Ô	,ð E°å•JÐ&>Ð?Ñ?Ô?ð 	Dð 	DØˆAÐCÐC¨,¨,ÀÐ*BÑ*BÔ*BÐCÑCÔCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ
 •JÐ&>Ð?Ñ?Ô?ð 	Dð 	DØˆAÐCÐC¨,¨,ÀÐ*BÑ*BÔ*BÐCÑCÔCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ •JÐ&>Ð?Ñ?Ô?ð 	Eð 	EØˆAÐDÐD¨,¨,ÀÐ*CÑ*CÔ*CÐDÑDÔDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es|   –D­ AÁDÁA	ÁDÁ A	Á!DÁ: B&ÂDÂ&B*	Â*DÂ-B*	Â.DÃ C3Ã'DÃ3C7	Ã7DÃ:C7	Ã;DÄDÄDc                 ó6   — |                       d|z  ¦  «         d S )NzConsumed %s)Úappend)ÚqueueÚitems     r1   ÚconsumerrY  ò  s   € Ø	‡L‚L� Ñ%Ñ&Ô&Ð&Ð&Ð&r3   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_  ra  rb  rd  rc  re  c                 óÆ   ‡— t          ¦   «         Šˆfd„} t          d|| ¬¦  «        ˆfd„ |¦   «         D ¦   «         ¦  «         ‰|k    sJ ‚t          ‰¦  «        dk    sJ ‚dS )zC Test that with only one job, Parallel does act as a iterator.
    c               3   óh   •K  — t          d¦  «        D ]} ‰                     d| z  ¦  «         | V — Œd S ©Nr  zProduced %i©rr   rV  ©rn   rW  s    €r1   Úproducerz'test_dispatch_one_job.<locals>.producer  óH   øè è € Ý�q‘”ð 	ð 	ˆAØ�LŠL˜¨Ñ*Ñ+Ô+Ð+ØˆGˆGˆGˆGð	ð 	r3   r   ©rj   Ú
batch_sizer=   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰|¦  «        V — Œ#d S r@   ©r$   rY  )r/   rA   rW  s     €r1   ro   z(test_dispatch_one_job.<locals>.<genexpr>  sI   øè è € ð ?9ð ?9Ø()Ð�•ÑÔ˜% Ñ#Ô#ð?9ð ?9ð ?9ð ?9ð ?9ð ?9r3   é   N)Úlistr#   r¢   )r=   rn  Úexpected_queuerk  rW  s       @r1   Útest_dispatch_one_jobrt  ö  s¦   ø€ õ  ‰FŒF€Eðð ð ð ð ð
 ?…H�A *°gÐ>Ñ>Ô>ð ?9ð ?9ð ?9ð ?9Ø-5¨X©Z¬Zð?9ñ ?9ô ?9ñ 9ô 9ð 9à�NÒ"Ð"Ð"Ð"Ýˆu‰:Œ:˜ÒÐÐÐÐÐr3   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 )zW Check that using pre_dispatch Parallel does indeed dispatch items
        lazily.
    c               3   óh   •K  — t          d¦  «        D ]} ‰                     d| z  ¦  «         | V — Œd S rh  ri  rj  s    €r1   rk  z/test_dispatch_multiprocessing.<locals>.producer  rl  r3   rF   r   rp   )rj   rn  Úpre_dispatchr=   c              3   óT   •K  — | ]"} t          t          ¦  «        ‰d ¦  «        V — Œ#dS )rÀ   Nrp  )r/   r»   rW  s     €r1   ro   z0test_dispatch_multiprocessing.<locals>.<genexpr>!  sQ   øè è € ð F=ð F=Ø,-Ð�•ÑÔ˜% Ñ'Ô'ðF=ð F=ð F=ð F=ð F=ð F=r3   r   rZ  Nr˜   zConsumed anyr{   r`  rq  )r   ÚManagerrr  r#   Úindexr¢   )r=   Úmanagerrk  Úqueue_contentsÚfirst_consumption_indexÚproduced_3_indexrW  s         @r1   Ú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‰:Œ:˜ÒÐÐÐÐÐr3   c                  óà   — t          ddd¬¦  «        5 }  | d„ t          d¦  «        D ¦   «         ¦  «         | j                             ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   Úautor5   rm  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z/test_batching_auto_threading.<locals>.<genexpr>8  ó0   è è € Ð	.Ð	.˜Qˆ+�'•"‰+Œ+�a‰.Œ.Ð	.Ð	.Ð	.Ð	.Ð	.Ð	.r3   éˆ  r   ©r#   rr   rø   Úcompute_batch_size)rù   s    r1   Útest_batching_auto_threadingr‡  2  sÁ   € õ
 
˜ v°{Ð	CÑ	CÔ	Cð 4ÀqØ	ˆÐ	.Ð	.¥%¨¡+¤+Ð	.Ñ	.Ô	.Ñ.Ô.Ð.ØŒz×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4ó   “AA#Á#A'Á*A'c                 óà   — t          dd| ¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «         |j                             ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   r�  rm  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z2test_batching_auto_subprocesses.<locals>.<genexpr>@  rƒ  r3   r„  r   r…  )r=   rù   s     r1   Útest_batching_auto_subprocessesr‹  <  sÃ   € õ 
˜ v°wÐ	?Ñ	?Ô	?ð 3À1Ø	ˆÐ	.Ð	.¥%¨¡+¤+Ð	.Ñ	.Ô	.Ñ.Ô.Ð.ð
 Œz×,Ò,Ñ.Ô.°Ò2Ð2Ð2Ð2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3rˆ  c                  óÄ   — t          t          ¦  «        5   t          ddd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zCMake sure that exception raised during dispatch are indeed capturedrF   é   r   )rj   rw  r…   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r?  rm   s     r1   ro   z*test_exception_dispatch.<locals>.<genexpr>K  sG   è è € ð 7=ð 7=Ø-.Ð%�GÕ$Ñ%Ô% aÑ(Ô(ð7=ð 7=ð 7=ð 7=ð 7=ð 7=r3   r#  N)r   rY   r#   rr   r.   r3   r1   Útest_exception_dispatchr�  H  s¹   € å	•
Ñ	Ô	ð =ð =Ø6�˜¨°AÐ6Ñ6Ô6ð 7=ð 7=Ý27¸±)´)ð7=ñ 7=ô 7=ñ 	=ô 	=ð 	=ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =r,  c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r?  ©r/   Újs     r1   ro   z(nested_function_inner.<locals>.<genexpr>P  sG   è è € ð 9ð 9Ø)*Ð!�Õ Ñ!Ô! !Ñ$Ô$ð9ð 9ð 9ð 9ð 9ð 9r3   r#  rq   ©rn   s    r1   Únested_function_innerr•  O  sM   € Ø…H�AÐÑÔð 9ð 9Ý.3°B©i¬ið9ñ 9ô 9ñ 9ô 9ð 9ð 9ð 9r3   c                 óf   —  t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   )r$   r•  r’  s     r1   ro   z(nested_function_outer.<locals>.<genexpr>U  sG   è è € ð >ð >Ø./Ð&�Õ%Ñ&Ô& qÑ)Ô)ð>ð >ð >ð >ð >ð >r3   r#  rq   r”  s    r1   Únested_function_outerr˜  T  sM   € Ø…H�AÐÑÔð >ð >Ý38¸±9´9ð>ñ >ô >ñ >ô >ð >ð >ð >r3   z'https://github.com/joblib/loky/pull/255r¾   c                 óˆ  — t          t          ¦  «        5 } t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   t	          |j        |j        |j        ¦  «        }d                     |¦  «        }d|v sJ ‚d|v sJ ‚d	|v sJ ‚t          |j        ¦  «        t          u sJ ‚dS )
z¯Ensure errors for nested joblib cases gets propagated

    We rely on the Python 3 built-in __cause__ system that already
    report this kind of information to the user.
    rF   ri   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   )r$   r˜  rm   s     r1   ro   z1test_nested_exception_dispatch.<locals>.<genexpr>c  sO   è è € ð ,Bð ,BØ23Ð*�GÕ)Ñ*Ô*¨1Ñ-Ô-ð,Bð ,Bð ,Bð ,Bð ,Bð ,Br3   r#  NÚ r˜  r•  r[   )	r   rY   r#   rr   r   re   r”   ÚtbrÑ   )r=   ÚexcinfoÚreport_linesÚreports       r1   Útest_nested_exception_dispatchr   Y  s=  € õ 
•
Ñ	Ô	ð B˜wØ+�˜ 7Ð+Ñ+Ô+ð ,Bð ,BÝ7<¸R±y´yð,Bñ ,Bô ,Bñ 	Bô 	Bð 	BðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ $ 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 r@   )r(   rj   r   )rL   rj   r   Úbackend_argss       r1   Ú	configurezFakeParallelBackend.configuret  s#   € Ø×+Ò+¨FÑ3Ô3ˆŒØ ˆŒØˆr3   c                 ó`   — |dk     r't          t          j        ¦   «         dz   |z   d¦  «        }|S )Nr   r   )Úmaxr   r)   ©rL   rj   s     r1   r(   z$FakeParallelBackend.effective_n_jobsy  s/   € Ø�AŠ:ˆ:Ý�œ™œ¨!Ñ+¨fÑ4°aÑ8Ô8ˆFØˆr3   râ   )r   )rS   rT   rU   rV   r¥  r(   r.   r3   r1   r¢  r¢  q  sB   € € € € € ØBÐBðð ð ð ð
ð ð ð ð ð r3   r¢  c                  óà  — t          t          d¬¦  «        5  t          d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NzInvalid backend:r  zunit-testingr<   )r   rY   r#   r%   r.   r3   r1   Útest_invalid_backendrª    s3  € Ý	•
Ð"4Ð	5Ñ	5Ô	5ð )ð )Ý˜Ð(Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ 
•
Ð"4Ð	5Ñ	5Ô	5ð ð Ý ^Ð4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
•
Ð"4Ð	5Ñ	5Ô	5ð ð Ý ^Ð4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð sx   —4´8»8ÁBÁ&A4Á(BÁ4A8	Á8BÁ;A8	Á<BÂBÂBÂ,C#Â=CÂ?C#ÃC	ÃC#ÃC	ÃC#Ã#C'Ã*C'c                 ó>  — t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚t          t          ¦  «        5 }t          d| ¬¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dt	          |j        ¦  «        v sJ ‚d S )Nr   ri   z&n_jobs == 0 in Parallel has no meaningç      à?z2.3z$n_jobs could not be converted to intÚinvalid_str)r   rY   r#   Ú_initialize_backendrš   r”   )r=   r�  s     r1   Útest_invalid_njobsr¯  Œ  s°  € å	•
Ñ	Ô	ð B˜wÝ˜ 7Ð+Ñ+Ô+×?Ò?ÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bà3µs¸7¼=Ñ7IÔ7IÐIÐIÐIÐIå	•
Ñ	Ô	ð D˜wÝ˜ WÐ-Ñ-Ô-×AÒAÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dà3µs¸7¼=Ñ7IÔ7IÐIÐIÐIÐIå	•
Ñ	Ô	ð F˜wÝ˜ wÐ/Ñ/Ô/×CÒCÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fà1µS¸¼Ñ5GÔ5GÐGÐGÐGÐGå	•
Ñ	Ô	ð N˜wÝ˜¨wÐ7Ñ7Ô7×KÒKÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nà1µS¸¼Ñ5GÔ5GÐGÐGÐGÐGÐGÐGsG   •$AÁA	ÁA	Á<$B,Â,B0Â3B0Ã#$DÄDÄDÅ
$E:Å:E>ÆE>)Ú2gffffff@rF   c                 óð   — t          || ¬¦  «        }|                     ¦   «         dk    sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }t          d„ t	          |¦  «        D ¦   «         ¦  «        sJ ‚d S )Nri   rF   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z.test_njobs_converted_to_int.<locals>.<genexpr>¦  s2   è è € Ð2Ð2 1ˆO�G•F‰OŒO˜AÑÔÐ2Ð2Ð2Ð2Ð2Ð2r3   rè   c              3   óB   K  — | ]\  }}|t          |¦  «        k    V — Œd S r@   rŠ   )r/   rn   Úrs      r1   ro   z.test_njobs_converted_to_int.<locals>.<genexpr>§  s0   è è € Ð9Ð9¡$ ! Qˆq•F˜1‘I”IŠ~Ð9Ð9Ð9Ð9Ð9Ð9r3   )r#   Ú_effective_n_jobsrr   r¯   Ú	enumerate)r=   rj   rù   rÄ   s       r1   Ú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Ð9r3   c                  ó¤   — 	 t          dt          ¦  «         dt          v sJ ‚t          d         t          k    sJ ‚	 t          d= d S # t          d= w xY w)NÚtest_backend)r'   r¢  r*   r.   r3   r1   Útest_register_parallel_backendrº  ª  se   € ð%Ý! .Õ2EÑFÔFÐFØ¥Ð)Ð)Ð)Ð)Ý˜Ô'Õ+>Ò>Ð>Ð>Ð>Ð>å�^Ð$Ð$Ð$ø�H�^Ð$Ð$Ð$Ð$Ð$s   ‚8A Á
Ac                  ó*  — t          ¦   «         t          k    sJ ‚	 t          dt          d         d¬¦  «         t          ¦   «         t          k    sJ ‚	 t
          t          _        n# t
          t          _        w xY wt          ¦   «         t          k    sJ ‚d S )Nr5   T)Úmake_default)rg   ÚDefaultBackendr'   r*   r   r+   r   r.   r3   r1   Útest_overwrite_default_backendr¾  ³  sš   € ÝÑ!Ô!¥^Ò3Ð3Ð3Ð3ð3Ý! +­x¸Ô/DØ/3ð	5ñ 	5ô 	5ð 	5å#Ñ%Ô%Õ)9Ò9Ð9Ð9Ð9Ð9õ $3�Ô Ð ø¥?�Ô Ð2Ð2Ð2Ð2ÝÑ!Ô!¥^Ò3Ð3Ð3Ð3Ð3Ð3s   ›6A$ Á$A7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  r4   r<   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z2test_backend_no_multiprocessing.<locals>.<genexpr>Ã  s2   è è € Ð FÐ F¸ ¥­¡¤°Ñ!3Ô!3Ð FÐ FÐ FÐ FÐ FÐ Fr3   rp   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z2test_backend_no_multiprocessing.<locals>.<genexpr>Ç  s2   è è € Ð8Ð8¨!�?•7�6‘?”? 1Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8r3   )r   ÚUserWarningr#   rr   r%   r.   r3   r1   Útest_backend_no_multiprocessingrÃ  ¿  sU  € å	�{Ø@ð
Bñ 
Bô 
Bð Gð Gà �˜Ð Ñ Ô Ð FÐ F½UÀ1¹X¼XÐ FÑ FÔ FÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ
 
 Ð	(Ñ	(Ô	(ð 9ð 9Ø�‰
Œ
Ð8Ð8­u°Q©x¬xÐ8Ñ8Ô8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s#   —1AÁAÁAÁ//B+Â+B/Â2B/c                 óê  —  | |d¬¦  «        5  t          j        ¦   «         \  }}|dk    sJ ‚t          d¦  «        dk    sJ ‚t          ¦   «         }|j        dk    sJ ‚|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚nÂ|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚n†|dk    r6t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚nJ| 
                    d¦  «        r5t          |¦  «        t          u sJ ‚t          |j        ¦  «        t          u sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )Nrp   r|   r,   r4   r5   Útest_)r   rf   r(   r#   rj   re   r    rø   r"   r   Ú
startswithr¢  )rz   Úbackend_nameÚactive_backendÚactive_n_jobsrù   s        r1   Úcheck_backend_context_managerrÊ  Ê  sç  € Ø	ˆ� aÐ	(Ñ	(Ô	(ð ;ð ;Ý(0Ô(CÑ(EÔ(EÑ%ˆ˜Ø Ò!Ð!Ð!Ð!Ý Ñ"Ô" aÒ'Ð'Ð'Ð'Ý‰JŒJˆØŒx˜1Š}ˆ}ˆ}ˆ}ØÐ,Ò,Ð,Ý˜Ñ'Ô'Õ+AÐAÐAÐAÐAÝ˜œ
Ñ#Ô#Õ'=Ð=Ð=Ð=Ð=Ð=Ø˜VÒ#Ð#Ý˜Ñ'Ô'­;Ð6Ð6Ð6Ð6Ý˜œ
Ñ#Ô#¥{Ð2Ð2Ð2Ð2Ð2Ø˜[Ò(Ð(Ý˜Ñ'Ô'Õ+;Ð;Ð;Ð;Ð;Ý˜œ
Ñ#Ô#Õ'7Ð7Ð7Ð7Ð7Ð7Ø×$Ò$ WÑ-Ô-ð 	;Ý˜Ñ'Ô'Õ+>Ð>Ð>Ð>Ð>Ý˜œ
Ñ#Ô#Õ':Ð:Ð:Ð:Ð:ð#;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   ŽEE(Å(E,Å/E,c                 ó   — g | ]}d |z  ‘ŒS )ztest_backend_%dr.   rm   s     r1   r2   r2   á  s   € Ð-Ð-Ð-˜qÐ˜ÑÐ-Ð-Ð-r3   rp   c                 óh  ‡— |t           vr!|                      t           |t          ¦  «         t          ¦   «         t          k    sJ ‚t          ‰|¦  «         t          ¦   «         t          k    sJ ‚ t          dd¬¦  «        ˆfd„t          D ¦   «         ¦  «         t          ¦   «         t          k    sJ ‚d S )NrF   r5   ri   c              3   óX   •K  — | ]$}|° t          t          ¦  «        ‰|¦  «        V — Œ%d S r@   )r$   rÊ  )r/   rN   rz   s     €r1   ro   z/test_backend_context_manager.<locals>.<genexpr>ô  sQ   øè è € ð ,<ð ,<à¸ð,<Ø.�Õ-Ñ.Ô.¨w¸Ñ:Ô:ð,<ð ,<ð ,<ð ,<ð ,<ð ,<r3   )r*   Úsetitemr¢  rg   r½  rÊ  r#   Ú all_backends_for_context_manager)r£   r=   rz   s     `r1   Útest_backend_context_managerrÐ  å  sÑ   ø€ ð •hÐÐØ×Ò�H gÕ/BÑCÔCÐCåÑ!Ô!¥^Ò3Ð3Ð3Ð3å! '¨7Ñ3Ô3Ð3õ  Ñ!Ô!¥^Ò3Ð3Ð3Ð3ð ,…H�A˜{Ð+Ñ+Ô+ð ,<ð ,<ð ,<ð ,<å1ð,<ñ ,<ô ,<ñ <ô <ð <õ
  Ñ!Ô!¥^Ò3Ð3Ð3Ð3Ð3Ð3r3   c                   ó   — e Zd ZdZdd„ZdS )ÚParameterizedParallelBackendz9Pretends to run conncurrently while running sequentially.Nc                 ó6   — |€t          d¦  «        ‚|| _        d S )Nzparam should not be None)rY   Úparam)rL   rÔ  s     r1   rQ   z%ParameterizedParallelBackend.__init__ÿ  s!   € Øˆ=ÝÐ7Ñ8Ô8Ð8ØˆŒ
ˆ
ˆ
r3   r@   rR   r.   r3   r1   rÒ  rÒ  ü  s.   € € € € € ØCÐCðð ð ð ð ð r3   rÒ  c                 óL  — |                       t          dt          ¦  «         t          ¦   «         t          k    sJ ‚ |ddd¬¦  «        5  t          j        ¦   «         \  }}t          |¦  «        t          u sJ ‚|j        dk    sJ ‚|dk    sJ ‚t          ¦   «         }|j
        dk    sJ ‚|j        |u sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |d„ t          d¦  «        D ¦   «         k    sJ ‚t          ¦   «         t          k    sJ ‚d S )NÚparam_backendé*   rp   )rÔ  rj   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   ©r$   r   rm   s     r1   ro   z=test_parameterized_backend_context_manager.<locals>.<genexpr>  ó2   è è € Ð7Ð7¨�M•G�D‘M”M !Ñ$Ô$Ð7Ð7Ð7Ð7Ð7Ð7r3   rŒ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   r   rm   s     r1   r2   z>test_parameterized_backend_context_manager.<locals>.<listcomp>  ó   € Ð1Ð1Ð1 1•t˜A‘w”wÐ1Ð1Ð1r3   )rÎ  r*   rÒ  rg   r½  r   rf   re   rÔ  r#   rj   rø   rr   )r£   rz   rÈ  rÉ  rù   r¥   s         r1   Ú*test_parameterized_backend_context_managerrÝ    sŒ  € à×Ò� /Ý4ñ6ô 6ð 6åÑ!Ô!¥^Ò3Ð3Ð3Ð3à	ˆ�¨°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õ  Ñ!Ô!¥^Ò3Ð3Ð3Ð3Ð3Ð3s   Á	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 r@   rÙ  rm   s     r1   ro   zFtest_directly_parameterized_backend_context_manager.<locals>.<genexpr>(  rÚ  r3   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   r   rm   s     r1   r2   zGtest_directly_parameterized_backend_context_manager.<locals>.<listcomp>)  rÜ  r3   )rg   r½  rÒ  r   rf   re   rÔ  r#   rj   rø   rr   )rz   rÈ  rÉ  rù   r¥   s        r1   Ú3test_directly_parameterized_backend_context_managerrâ    sy  € åÑ!Ô!¥^Ò3Ð3Ð3Ð3ð 
ˆÕ-°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õ  Ñ!Ô!¥^Ò3Ð3Ð3Ð3Ð3Ð3s   µBCÃCÃCc                  óF   — t          d¦  «         t          j        ¦   «         S )NrÉ   )r   ÚosÚgetpidr.   r3   r1   Úsleep_and_return_pidræ  /  s   € Ý	ˆ"�I„I€IÝŒ9‰;Œ;Ðr3   c                  óà   — t          ¦   «         t          k    sJ ‚t          ¦   «                              ¦   «         dk    sJ ‚ t          d¬¦  «        d„ t	          d¦  «        D ¦   «         ¦  «        S )Nr   rF   r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   )r$   ræ  rË   s     r1   ro   z"get_nested_pids.<locals>.<genexpr>;  sG   è è € ð 1ð 1Ø"#ð <�gÕ&:Ñ;Ô;Ñ=Ô=ð 1ð 1ð 1ð 1ð 1ð 1r3   )rg   r   r#   rµ  rr   r.   r3   r1   Úget_nested_pidsré  4  s€   € ÝÑ!Ô!Õ%5Ò5Ð5Ð5Ð5õ ‰:Œ:×'Ò'Ñ)Ô)¨QÒ.Ð.Ð.Ð.ð �8˜1ÐÑÔð 1ð 1Ý',¨Q¡x¤xð1ñ 1ô 1ñ 1ô 1ð 1r3   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú	MyBackendz:Backend to test backward compatibility with older backendsc                 ó^   •— t          t          | ¦  «                             ¦   «         d         S rd   )Úsuperrë  Úget_nested_backend)rL   Ú	__class__s    €r1   rî  zMyBackend.get_nested_backendA  s$   ø€ å•Y Ñ%Ô%×8Ò8Ñ:Ô:¸1Ô=Ð=r3   )rS   rT   rU   rV   rî  Ú__classcell__)rï  s   @r1   rë  rë  ?  s>   ø€ € € € € ØDÐDð>ð >ð >ð >ð >ð >ð >ð >ð >r3   rë  Úback_compat_backend)r5   r4   r,   rñ  c                 óþ   —  | |¦  «        5   t          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }|D ]$}t          t          |¦  «        ¦  «        dk    sJ ‚Œ%	 d d d ¦  «         d S # 1 swxY w Y   d S )NrF   r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   )r$   ré  rË   s     r1   ro   z6test_nested_backend_context_manager.<locals>.<genexpr>R  sF   è è € ð (
ð (
àð %�G•OÑ$Ô$Ñ&Ô&ð(
ð (
ð (
ð (
ð (
ð (
r3   rè   r   )r#   rr   r¢   Úset)rz   r=   Ú
pid_groupsÚ	pid_groups       r1   Ú#test_nested_backend_context_managerr÷  I  sî   € ð 
ˆ�Ñ	Ô	ð ,ð ,Ø'•X QÐ'Ñ'Ô'ð (
ð (
å˜2‘Y”Yð(
ñ (
ô (
ñ 
ô 
ˆ
ð $ð 	,ð 	,ˆIÝ•s˜9‘~”~Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ð+ð	,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   ŒAA2Á2A6Á9A6)rF   r{   Nc                 ó*  ‡ ‡‡— d„ Š t          d¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «          |‰ ‰¬¦  «        5   t          d¬¦  «        ˆ ˆˆfd„t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó®   — t          ¦   «         t          |          k    sJ ‚t          |¦  «        }t          ¦   «                              ¦   «         |k    sJ ‚d S r@   )rg   r*   r(   r#   rµ  )Úexpected_backend_typeÚexpected_n_jobs     r1   Úcheck_nested_backendz?test_nested_backend_in_sequential.<locals>.check_nested_backendb  sW   € õ $Ñ%Ô%­Ð2GÔ)HÒHÐHÐHÐHõ *¨.Ñ9Ô9ˆÝ‰zŒz×+Ò+Ñ-Ô-°Ò?Ð?Ð?Ð?Ð?Ð?r3   r   r|   c              3   óT   •K  — | ]"} t          ‰¦  «        t          d ¦  «        V — Œ#dS râ   )r$   r+   )r/   r»   rü  s     €r1   ro   z4test_nested_backend_in_sequential.<locals>.<genexpr>l  sL   øè è € ð ð àð 	&�Ð$Ñ%Ô%¥o°qÑ9Ô9ðð ð ð ð ð r3   rè   c              3   óJ   •K  — | ]} t          ‰¦  «        ‰‰¦  «        V — Œd S r@   r  )r/   r»   r=   rü  rj   s     €€€r1   ro   z4test_nested_backend_in_sequential.<locals>.<genexpr>r  sL   øè è € ð 
ð 
àð *�GÐ(Ñ)Ô)¨'°6Ñ:Ô:ð
ð 
ð 
ð 
ð 
ð 
r3   rq   )r=   rj   rz   rü  s   `` @r1   Ú!test_nested_backend_in_sequentialrÿ  Z  s4  øøø€ ð@ð @ð @ð …H�AÐÑÔð ð ð ð å�r‘”ðñ ô ñ ô ð ð
 
ˆ� Ð	(Ñ	(Ô	(ð 
ð 
Ø�˜ÐÑÔð 
ð 
ð 
ð 
ð 
ð 
å˜2‘Y”Yð
ñ 
ô 
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Á5BÂBÂBc                 ó®   —  | |¦  «        5 }| t           u r|d         }| t          u r|d         }|j        |k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr=   r   )r%   r&   Únesting_level)rz   Úinner_backendÚexpected_levelÚctxr=   s        r1   Úcheck_nesting_levelr  x  s³   € Ø	ˆ�Ñ	Ô	ð 7 3Ø•oÐ%Ð%Ø˜)”nˆGØÕ&Ð&Ð&Ø˜!”fˆGØÔ$¨Ò6Ð6Ð6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   Œ0A
Á
AÁAÚouter_backendr  c                 óB  ‡ ‡— t          ‰ |d¦  «          t          d|¬¦  «        ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «          ‰ ‰d¬¦  «        5   t          ¦   «         ˆ ˆfd„t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rF   ri   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS râ   ©r$   r  ©r/   r»   rz   r  s     €€r1   ro   z-test_backend_nesting_level.<locals>.<genexpr>‰  sN   øè è € ð .ð .àð 	%�Õ#Ñ$Ô$ W¨m¸QÑ?Ô?ð.ð .ð .ð .ð .ð .r3   rè   r|   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰‰d ¦  «        V — Œ$dS râ   r	  r
  s     €€r1   ro   z-test_backend_nesting_level.<locals>.<genexpr>�  sN   øè è € ð 'ð 'Øð 0•7Õ.Ñ/Ô/°¸ÈÑJÔJð 'ð 'ð 'ð 'ð 'ð 'r3   )r  r#   rr   )rz   r  r  s   ` `r1   Útest_backend_nesting_levelr  �  s.  øø€ õ ˜ °Ñ2Ô2Ð2à-…H�A˜}Ð-Ñ-Ô-ð .ð .ð .ð .ð .å�r‘”ð.ñ .ô .ñ ô ð ð
 
ˆ� qÐ	)Ñ	)Ô	)ð 'ð 'Ø�‰
Œ
ð 'ð 'ð 'ð 'ð 'Ý! "™IœIð'ñ 'ô 'ñ 	'ô 	'ð 	'ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð '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    r1   Úretrieval_contextz;test_retrieval_context.<locals>.MyBackend.retrieval_context�  s"   è è € àˆFŒF�a‰KˆFŒFØˆEˆEˆEˆEˆEr3   N)rS   rT   rU   rn   Úsupports_retrieve_callbackÚcontextmanagerr  )Ú
contextlibr  s   €€r1   rë  r  ™  s=   ø€ € € € € ØˆØ%;Ð"à	Ô	"ð	ð 	ñ 
#Ô	"ð	ð 	ð 	r3   rë  Ú	retrievalc                 ób   —  t          d¬¦  «        d„ t          | ¦  «        D ¦   «         ¦  «        S )NrF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z>test_retrieval_context.<locals>.nested_call.<locals>.<genexpr>¥  s0   è è € Ð!CÐ!C°Q +¥'­"¡+¤+¨a¡.¤.Ð!CÐ!CÐ!CÐ!CÐ!CÐ!Cr3   rq   )Úns    r1   Únested_callz+test_retrieval_context.<locals>.nested_call¤  s2   € Ø!�x˜qÐ!Ñ!Ô!Ð!CÐ!C½%À¹(¼(Ð!CÑ!CÔ!CÑCÔCÐCr3   rF   r|   c              3   óH   •K  — | ]} t          ‰¦  «        |¦  «        V — Œd S r@   r  )r/   rn   r  s     €r1   ro   z)test_retrieval_context.<locals>.<genexpr>¨  sI   øè è € ð 
ð 
àð !�G�KÑ Ô  Ñ#Ô#ð
ð 
ð 
ð 
ð 
ð 
r3   rŒ   r=   r   )r  r   r'   r#   rr   r%   rn   r&   )rz   r  rë  r  r  r  s    `  @@r1   Útest_retrieval_contextr  “  ss  øøø€ ð ÐÐÐðð ð ð ð ð ð ð Õ$ñ ô ð õ ˜k¨9Ñ5Ô5Ð5ðDð Dð Dð 
ˆ�Ñ	Ô	ð ! Ø�˜ÐÑÔð 
ð 
ð 
ð 
å˜1‘X”Xð
ñ 
ô 
ñ 	
ô 	
ð 	
ð •oÐ%Ð%Ø�y”>Ô# qÒ(Ð(Ð(Ð(ØÕ&Ð&Ð&Ø�q”6”8˜q’=�=�=�=ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ¼A+B4Â4B8Â;B8rn  )r   r{   g¸…ëQ¸ö?c                 ó€   — t          t          ¦  «        5  t          | ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©rn  )r   rY   r#   r  s    r1   Útest_invalid_batch_sizer  µ  s…   € å	•
Ñ	Ô	ð (ð (Ý˜JÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   •3³7º7z)n_tasks, n_jobs, pre_dispatch, batch_size))rF   rF   r¯   r�  )rF   rF   rj   r�  ©rè   rF   rj   r�  )i  rF   rj   r�  r   )rè   r˜   rj   r�  )éÈ   rq  rj   r�  )é   rq  ú
2 * n_jobsr   )éú   rq  r¯   r   )r$  rq  r#  rX   )r!  rq  r#  r�  c                 ó¬   — |||dœ}d„ t          | ¦  «        D ¦   «         } t          di |¤Žd„ t          | ¦  «        D ¦   «         ¦  «        }||k    sJ ‚d S )N)rj   rw  rn  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   rŠ   rm   s     r1   r2   z0test_dispatch_race_condition.<locals>.<listcomp>Í  s   € Ð2Ð2Ð2˜a•�q‘	”	Ð2Ð2Ð2r3   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   z/test_dispatch_race_condition.<locals>.<genexpr>Î  s2   è è € Ð LÐ L¸ ¥­¡¤°Ñ!3Ô!3Ð LÐ LÐ LÐ LÐ LÐ Lr3   r.   rŽ   )Ún_tasksrj   rw  rn  Úparamsr²   r¥   s          r1   Útest_dispatch_race_conditionr*  »  sz   € ð  °Ø&ð(ð (€Fà2Ð2¥5¨¡>¤>Ð2Ñ2Ô2€HØ �hÐ Ð ˜Ð Ð Ð LÐ L½UÀ7¹^¼^Ð LÑ LÔ LÑLÔL€GØ�hÒÐÐÐÐÐr3   c                  óº   — t          j        ¦   «         } t          dd¬¦  «        }|j                             d¦  «        }|                     ¦   «         }|| k    sJ ‚d S )NrF   r,   ri   rz   )r   Úget_start_methodr#   Ú_backend_argsÚget)Úmp_start_methodrù   rz   Ústart_methods       r1   Útest_default_mp_contextr1  Ò  s`   € åÔ)Ñ+Ô+€OÝ˜Ð#4Ð5Ñ5Ô5€AØŒo×!Ò! )Ñ,Ô,€GØ×+Ò+Ñ-Ô-€LØ˜?Ò*Ð*Ð*Ð*Ð*Ð*r3   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,   r7   r×  iè  rF   ri   c              3   óh   •K  — | ],} t          t          j        ¦  «        ‰‰j        ¦  «        V — Œ-d S r@   )r$   r   ÚdotÚT)r/   rn   rM   s     €r1   ro   zAtest_no_blas_crash_or_freeze_with_subprocesses.<locals>.<genexpr>ñ  sJ   øè è € ð (3ð (3Ø$%ˆ�•”‰Œ˜˜1œ3ÑÔð(3ð (3ð (3ð (3ð (3ð (3r3   )
r   r6   r   ÚrandomÚRandomStateÚrandnr4  r5  r#   rr   )r=   ÚrngrM   s     @r1   Ú.test_no_blas_crash_or_freeze_with_subprocessesr:  Û  s¸   ø€ ð Ð#Ò#Ð#õ ”. Ñ)Ô)ˆõ Œ)×
Ò
 Ñ
#Ô
#€Cð 	�	Š	�$˜ÑÔ€AÝ„Fˆ1ˆaŒc�N„N€Nð (…H�A˜wÐ'Ñ'Ô'ð (3ð (3ð (3ð (3Ý).¨q©¬ð(3ñ (3ô (3ñ 3ô 3ð 3ð 3ð 3r3   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   r,  rÁ   ÚskipÚ,UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_NO_MAINÚformatr   r°   Ú
executable)r=   Úcodes     r1   Ú2test_parallel_with_interactively_defined_functionsrE    s�   € ð
 Ð#Ò#Ð#­Ô(;Ñ(=Ô(=ÀÒ(GÐ(GÝŒð 6ñ 	7ô 	7ð 	7å7×>Ò>¸wÑGÔG€DÝÝ	Œ˜˜tÐ$¨bØ*ð,ñ ,ô ,ð ,ð ,ð ,r3   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,   r7   Úwin32zNot picklable with pickle)rF  r=   rG  Újoblib_root_folderzunpicklable_func_script.pyrè   r=  r>  )ÚSQUARE_MAINr°   ÚplatformrÁ   r@  Ú)UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_MAINrB  rä  ÚpathÚdirnameÚjoblibÚ__file__rÑ   Úwriter   rC  Ústrpath)r=   rF  rG  ÚtmpdirrD  Ú	code_files         r1   Ú0test_parallel_with_unpicklable_functions_in_argsrW  C  sÖ   € ð Ð.Ð.Ð.Ø�;Ò&Ð&­#¬,¸'Ò*AÐ*AÝŒÐ/Ñ0Ô0Ð0Ý4×;Ò;Ø¨Ø+Ýœ7Ÿ?š?­2¬7¯?ª?½6¼?Ñ+KÔ+KÑLÔLð <ñ Nô N€Dð —’Ð8Ñ9Ô9€IØ‡O‚O�DÑÔÐÝÝ	Œ˜Ô*Ð+°RØ*ð,ñ ,ô ,ð ,ð ,ð ,r3   aý  import sys
import faulthandler
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed
from functools import partial

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


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


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

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

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

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

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

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

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

l = MyList()

print(Parallel(backend="loky", n_jobs=2)(
    delayed(l.append)(i) for i in range(3)
))
c                 ó¬   — |                       d¦  «        }|                     t          ¦  «         t          t          j        |j        gddd¬¦  «         d S )Nz)joblib_interactive_bound_method_script.pyz\[None, None, None\]ÚLokyProcessé   )r?  Ústderr_regexr%  )rÑ   rS  Ú9INTERACTIVELY_DEFINED_SUBCLASS_WITH_METHOD_SCRIPT_CONTENTr   r°   rC  rT  rZ  s     r1   Ú:test_parallel_with_interactively_defined_bound_method_lokyrb  «  s\   € à�[Š[ÐDÑEÔE€FØ
‡L‚LÕJÑKÔKÐKÝ�3œ>¨6¬>Ð:Ø'>Ø'5Ø"$ð&ñ &ô &ð &ð &ð &r3   c                  ób   — t          g ¦  «        }  t          d¬¦  «        | ¦  «        g k    sJ ‚d S )NrF   r|   )Úiterr#   )Úexhausted_iterators    r1   Ú%test_parallel_with_exhausted_iteratorrf  µ  s;   € Ý˜b™œÐØ�8˜1ÐÑÔÐ0Ñ1Ô1°RÒ7Ð7Ð7Ð7Ð7Ð7r3   c                  óJ   — t          ¦   «          t          j        d¦  «         dS )z+Helper function to force gc in each worker.rÉ   N)r   r]   r   r.   r3   r1   Ú_cleanup_workerrh  º  s   € å�O„O€OÝ„Jˆr�N„N€N€N€Nr3   c                 ó˜   — t          | t          j        ¦  «        st          dt	          | ¦  «        ¦  «        ‚|                      ¦   «         S )Nz#Expected np.memmap instance, got %r)Ú
isinstancer   ÚmemmapÚ	TypeErrorre   Úcopy)rM   s    r1   Úcheck_memmaprn  À  sA   € Ý�a�œÑ#Ô#ð !ÝÐ=Ý˜Q™œñ!ô !ð 	!à�6Š6‰8Œ8€Or3   c                 óô  — d„ } t          dd| ¬¦  «        d„  |d¦  «        D ¦   «         ¦  «        }t          | |t          |¦  «        ¦  «        ¦  «        D ]%\  }}t          j                             ||¦  «         Œ& t          dd| ¬¦  «        d„  |d¦  «        D ¦   «         ¦  «        }t          | |t          |¦  «        ¦  «        ¦  «        D ]%\  }}t          j                             ||¦  «         Œ&d S )	Nc              3   óx   K  — t          | ¦  «        D ]'}t          j        dt          j        ¬¦  «        |z  V — Œ(d S )Nrè   ©r  )rr   r   ÚonesÚfloat32)r  rn   s     r1   Úgenerate_arrayszBtest_auto_memmap_on_arrays_from_generator.<locals>.generate_arraysÏ  sJ   è è € Ý�q‘”ð 	4ð 	4ˆAÝ”'˜"¥B¤JÐ/Ñ/Ô/°!Ñ3Ð3Ð3Ð3Ð3ð	4ð 	4r3   rF   r   ©rj   Ú
max_nbytesr=   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   ©r$   rn  ©r/   rM   s     r1   ro   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>Ô  óV   è è € ð @@ð @@Ø%&Ð�•ÑÔ˜aÑ Ô ð@@ð @@ð @@ð @@ð @@ð @@r3   r‡   r˜   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rx  ry  s     r1   ro   z<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>Ü  rz  r3   )r#   rA  r¢   r   r  r  )r=   rt  r¥   r  r²   s        r1   Ú)test_auto_memmap_on_arrays_from_generatorr|  Ç  sW  € ð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ð 8r3   c                 ó   — | S r@   r.   )Úargs    r1   Úidentityr  â  s   € Ø€Jr3   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Úuint8rq  r´  )Ú	mmap_moderF   r|   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r@   )r$   r  )r/   r»   rk  s     €r1   ro   z.test_memmap_with_big_offset.<locals>.<genexpr>î  s6   øè è € Ð HÐ H¸qÐ!2¥­Ñ!2Ô!2°6Ñ!:Ô!:Ð HÐ HÐ HÐ HÐ HÐ Hr3   rS  r   )rÑ   rT  ÚmmapÚALLOCATIONGRANULARITYr   Úzerosrr  r   r   r#   rj  rk  Úoffsetr  r  )rU  ÚfnameÚsizeÚobjr  rk  s        @r1   Útest_memmap_with_big_offsetr‹  æ  sî   ø€ ð �KŠK˜Ñ$Ô$Ô,€EÝÔ%€DÝŒ8�D Ð(Ñ(Ô(­"¬'°$¸gÐ*FÑ*FÔ*FÐ
G€CÝˆˆeÑÔÐÝ�% 3Ð'Ñ'Ô'€FØ �h˜aÐ Ñ Ô Ð HÐ HÐ HÐ HÀCÐ HÑ HÔ HÑHÔH�G€FÝ�f˜Q”i¥¤Ñ+Ô+Ð+Ð+Ð+Ø�!Œ9Ô˜dÒ"Ð"Ð"Ð"Ý„J×!Ò! # vÑ.Ô.Ð.Ð.Ð.r3   c                  óh  — t          j        d¬¦  «        5 }  t          dd¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          | ¦  «        dk    sJ ‚| d         }t          |j        t          ¦  «        sJ ‚t          |j        ¦  «        dk    sJ ‚d S )	NTr•   r   )rj   r%  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rl   rm   s     r1   ro   zFtest_warning_about_timeout_not_supported_by_backend.<locals>.<genexpr>ö  s2   è è € Ð%LÐ%L¸Q o¥g­f¡o¤o°aÑ&8Ô&8Ð%LÐ%LÐ%LÐ%LÐ%LÐ%Lr3   é2   r   z’The backend class 'SequentialBackend' does not support timeout. You have set 'timeout=1' in Parallel but the 'timeout' parameter will not be used.)	r    r¡   r#   rr   r¢   rj  r›   rÂ  rš   )r¤   r�   s     r1   Ú3test_warning_about_timeout_not_supported_by_backendr�  ô  s  € Ý	Ô	 ¨Ð	-Ñ	-Ô	-ð M°Ø%�˜ 1Ð%Ñ%Ô%Ð%LÐ%LÅ%ÈÁ)Ä)Ð%LÑ%LÔ%LÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Måˆx‰=Œ=˜AÒÐÐÐØ�Œ€AÝ�a”i¥Ñ-Ô-Ð-Ð-Ð-ÝˆqŒy‰>Œ>ð	òð ð ð ð ð s   –2AÁAÁAc                 ó   — || |<   |S r@   r.   )Ú
input_listrz  r”   s      r1   Úset_list_valuer’     s   € Ø€JˆuÑØ€Lr3   )r   rF   r˜   c                 óì   ‡— dgdz  Š t          | dd¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «        }t          |¦  «        }t          d„ t	          ‰|¦  «        D ¦   «         ¦  «        sJ ‚d S )Nr   rŒ   Ú	generatorr5   ©rj   Ú	return_asr=   c              3   óV   •K  — | ]#} t          t          ¦  «        ‰||¦  «        V — Œ$d S r@   )r$   r’  )r/   rn   r‘  s     €r1   ro   zPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>  sS   øè è € ð +Eð +EØ67Ð�•ÑÔ 
¨A¨qÑ1Ô1ð+Eð +Eð +Eð +Eð +Eð +Er3   c              3   ó(   K  — | ]\  }}||k    V — Œd S r@   r.   ©r/   Úvr´  s      r1   ro   zPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>  s*   è è € Ð:Ð:™$˜!˜Qˆq�AŠvÐ:Ð:Ð:Ð:Ð:Ð:r3   )r#   rr   rr  r¯   rA  )rj   r  r‘  s     @r1   Ú=test_parallel_return_order_with_return_as_generator_parameterr›    s®   ø€ ð
 ��q‘€Jð+�X˜V¨{Ø)ð+ñ +ô +ð+Eð +Eð +Eð +EÝ;@À¹8¼8ð+Eñ +Eô +EñEô E€Fõ
 �&‰\Œ\€FåÐ:Ð:¥# j°&Ñ"9Ô"9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:r3   c                 óB   — |rt          d¦  «         t          | ¦  «        S )Nr#  )r   r   )ÚeÚdelays     r1   Ú_sqrt_with_delayrŸ    s    € Øð Ýˆb‰	Œ	ˆ	Ý�‰7Œ7€Nr3   c                 ón  ‡—  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 ‚‹t          ¦   «          d S )
NÚgenerator_unorderedr•  c              3   ó`   K  — | ])} t          t          ¦  «        |d z  |dk    ¦  «        V — Œ*dS )rF   r   N)r$   rŸ  rm   s     r1   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>   sY   è è € ð 'Fð 'FØ67Ð!�Õ Ñ!Ô! ! Q¡$¨¨aªÑ1Ô1ð'Fð 'Fð 'Fð 'Fð 'Fð 'Fr3   rè   c              3   ó6   •K  — | ]}t          ‰¦  «        V — Œd S r@   )Únext)r/   r»   r  s     €r1   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>#  s)   øè è € Ð=Ð=¨q�d 6™lœlÐ=Ð=Ð=Ð=Ð=Ð=r3   é	   r   rF   c              3   ó(   K  — | ]\  }}||k    V — Œd S r@   r.   r™  s      r1   ro   zK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>'  s;   è è € ð ð Ù�1�aˆˆQŠðð ð ð ð ð r3   )r#   rr   Úsortedrr  r¯   rA  r   )r=   rj   Úquickly_returnedÚexpected_quickly_returnedr  s       @r1   Ú8_test_parallel_unordered_generator_returns_fastest_firstrª    sô   ø€ ð'�X˜VÐ/DØ%ð'ñ 'ô 'ð'Fð 'FÝ;@À¹9¼9ð'Fñ 'Fô 'FñFô F€Fõ Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ=Ô=Ðà!" ¥d­5°°B©<¬<Ñ&8Ô&8Ñ 8Ðåð ð ÝÐ8Ð:JÑKÔKðñ ô ñ ô ð ð ð ð 	Ý�O„O€O€O€Or3   rF   Ú
sequentialc                 ó&   — t          | |¦  «         d S r@   )rª  ©r=   rj   s     r1   Ú7test_parallel_unordered_generator_returns_fastest_firstr®  /  s   € õ =¸WÀfÑMÔMÐMÐMÐMr3   zThis test requires daskc                 óÊ   — t          j        dd¬¦  «        5   |d¦  «        5  t          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 ©NrF   ©Ú	n_workersÚthreads_per_workerÚdask)ÚdistributedÚClientrª  )rj   rz   s     r1   ÚAtest_parallel_unordered_generator_returns_fastest_first_with_daskr·  9  s   € õ 
Ô	Ø¨Að
ñ 
ô 
ð Oð Oà€wˆv�„ðOð Oõ 	AÀÀvÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os3   —A£A ´AÁ A	ÁAÁA	ÁAÁAÁA)r   rF   r„   r{   c                 ó  — dgdgdz  z   }t          t          ¦  «        5  t          j        ¦   «         } t          | |¬¦  «        d„ |D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         |z
  }|dk     sJ ‚d S )NrM   rè   r‡   ri   c              3   óZ   K  — | ]&} t          t          j        ¦  «        |¦  «        V — Œ'd S r@   ©r$   r]   r   rm   s     r1   ro   z%test_abort_backend.<locals>.<genexpr>K  sH   è è € ð 14ð 14Ø'(Ð�G•D”JÑÔ Ñ"Ô"ð14ð 14ð 14ð 14ð 14ð 14r3   rJ  )r   rl  r]   r#   )rj   r=   ÚdelaysÚt_startÚdts        r1   Útest_abort_backendr¾  E  sä   € ð ˆU�b�T˜C‘ZÑ€FÝ	•	Ñ	Ô	ð 4ð 4Ý”)‘+”+ˆØ0�˜¨Ð0Ñ0Ô0ð 14ð 14Ø,2ð14ñ 14ô 14ñ 	4ô 	4ð 	4ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ 
Œ‰Œ�wÑ	€BØ�Š7ˆ7ˆ7ˆ7ˆ7ˆ7s   Ÿ8A#Á#A'Á*A'c                 ó`   — t          j        t          d¦  «        t          ¬¦  «        }d|d<   |S )Ng    €„Arq  Fr   )r   rr  ÚintÚbool)r~  r  s     r1   Úget_large_objectrÂ  Q  s*   € ÝŒW•S˜‘\”\­Ð.Ñ.Ô.€FØ€Fˆ1�IØ€Mr3   c                 óú   — t          || |¬¦  «        5 } |d„ t          d¦  «        D ¦   «         ¦  «        }t          |¦  «         t          |¦  «         ~t          ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )N)rj   r=   r–  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   )r$   rÂ  rm   s     r1   ro   z0_test_deadlock_with_generator.<locals>.<genexpr>\  s6   è è € ÐJÐJ¸1Ð3�'Õ"2Ñ3Ô3°AÑ6Ô6ÐJÐJÐJÐJÐJÐJr3   rè   )r#   rr   r¤  r   )r=   r–  rj   r   r  s        r1   Ú_test_deadlock_with_generatorrÅ  W  sÊ   € õ 
˜¨Ø%ð
'ñ 
'ô 
'ð Ø*2Ø�ÐJÐJÅÀbÁ	Ä	ÐJÑJÔJÑJÔJˆÝˆV‰ŒˆÝˆV‰ŒˆØõ 	‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   “AA0Á0A4Á7A4r–  r”  r¡  c                 ó(   — t          | ||¦  «         d S r@   )rÅ  )r=   r–  rj   s      r1   Útest_deadlock_with_generatorrÇ  e  s   € õ
 " '¨9°fÑ=Ô=Ð=Ð=Ð=r3   c                 óÌ   — t          j        dd¬¦  «        5   | d¦  «        5  t          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 r°  )rµ  r¶  rÅ  )rz   r–  rj   s      r1   Ú%test_deadlock_with_generator_and_daskrÉ  m  sü   € õ 
Ô	Ø¨Að
ñ 
ô 
ð ?ð ?à€wˆv�„ð?ð ?õ 	& d¨I°vÑ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s3   —A£AµAÁA	ÁAÁA	Á	AÁAÁ A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	¦   «         ‚~t          ¦   «          d S )
Nú)This Parallel instance is already runningr  ©r=   r–  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS râ   rÊ   rË   s     r1   ro   z/test_multiple_generator_call.<locals>.<genexpr>ƒ  s2   è è € Ð:Ð:¨1�^•W�U‘^”^ AÑ&Ô&Ð:Ð:Ð:Ð:Ð:Ð:r3   rè   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z/test_multiple_generator_call.<locals>.<genexpr>…  s0   è è € Ð;Ð;¨1˜�¥™œ A™œÐ;Ð;Ð;Ð;Ð;Ð;r3   r‡   rF   úZThe error should be raised immediatly when submitting a new task but it took more than 2s.)r   r  r#   rr   r]   r   )r=   r–  rj   r   Úgr¼  Úgen2s          r1   Útest_multiple_generator_callrÒ  y  s  € õ 
•ØAð
Cñ 
Cô 
Cð <ð <å˜F¨G¸yÐIÑIÔIˆØˆHÐ:Ð:µ°b±	´	Ð:Ñ:Ô:Ñ:Ô:ˆÝ”)‘+”+ˆØˆxÐ;Ð;µ°c±
´
Ð;Ñ;Ô;Ñ;Ô;ˆð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$ð	$ñ %Ô$Ð$ð
 	
õ �O„O€O€O€Os   —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   ~t          ¦   «          d S )
NrÌ  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS r*  rÊ   rË   s     r1   ro   z7test_multiple_generator_call_managed.<locals>.<genexpr>œ  s2   è è € Ð;Ð;¨A�^•W�U‘^”^ BÑ'Ô'Ð;Ð;Ð;Ð;Ð;Ð;r3   rè   rË  r  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z7test_multiple_generator_call_managed.<locals>.<genexpr>   s0   è è € Ð=Ð=¨Q˜+�'¥"™+œ+ a™.œ.Ð=Ð=Ð=Ð=Ð=Ð=r3   r‡   rF   rÏ  )r#   rr   r]   r   r  r   )r=   r–  rj   r   rÐ  r¼  Úg2s          r1   Ú$test_multiple_generator_call_managedr×  “  sx  € õ 
�& 'Ø%ð
'ñ 
'ô 
'ð 
Ø*2ØˆHÐ;Ð;µ°r±´Ð;Ñ;Ô;Ñ;Ô;ˆÝ”)‘+”+ˆÝ•LØEðGñ Gô Gð 	>ð 	>à�Ð=Ð=µ%¸±*´*Ð=Ñ=Ô=Ñ=Ô=ˆBð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>õ
 Œy‰{Œ{˜WÑ$ qÒ(Ð(Ð(ð(ñ )Ô(Ð(Ð(ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð  	
Ý�O„O€O€O€Os6   “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 )	NrÌ  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS ©rF   NrÙ  rm   s     r1   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>¶  sO   è è € ð Að AØ"#ˆ�•‰Œ�a˜1‘fÑÔðAð Að Að Að Að Ar3   rè   c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS rÜ  rÙ  rm   s     r1   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>¹  sO   è è € ð Bð BØ"#ˆ�•‰Œ�a˜1‘fÑÔðBð Bð Bð Bð Bð Br3   rJ  r¡  c              3   ó(   K  — | ]\  }}||k    V — Œd S r@   r.   ©r/   rÄ   rn   s      r1   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>Ã  s*   è è € Ð8Ð8™F˜C ˆs�aŠxÐ8Ð8Ð8Ð8Ð8Ð8r3   c              3   ó(   K  — | ]\  }}||k    V — Œd S r@   r.   rß  s      r1   ro   z9test_multiple_generator_call_separated.<locals>.<genexpr>Ä  s*   è è € Ð=Ð=™F˜C ˆs�aŠxÐ=Ð=Ð=Ð=Ð=Ð=r3   )r#   rr   r§  r¯   rA  )r=   rØ  rÙ  rj   rÐ  rÖ  s         r1   Ú&test_multiple_generator_call_separatedrá  ®  s6  € ð 	A�� °KÐ@Ñ@Ô@ð Að AÝ',¨R¡y¤yðAñ Aô Añ 	ô 	€Að 
B��& '°[Ð	AÑ	AÔ	Að Bð BÝ',¨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Ñ&<Ô&<Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=r3   zbackend, error))r4   T)r5   F)r«  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 ¦   «         ¦  «        }t          ¦   «          |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 )Nr4   zRequires multiprocessingrF   rÌ  c              3   óP   K  — | ]!} t          t          ¦  «        d ¦  «        V — Œ"dS r*  rÊ   rm   s     r1   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>Ø  s2   è è € Ð7Ð7¨�•�‘” Ñ#Ô#Ð7Ð7Ð7Ð7Ð7Ð7r3   rè   c                  ó    — t          d¦  «        S )NzGenerator collected)rÌ   r.   r3   r1   ú<lambda>z;test_multiple_generator_call_separated_gc.<locals>.<lambda>Ù  s   € ¥uÐ-BÑ'CÔ'C€ r3   z The executor underlying Parallelr  c              3   óV   K  — | ]$} t          t          ¦  «        |d z  ¦  «        V — Œ%dS rÜ  rÙ  rm   s     r1   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>ä  sO   è è € ð @
ð @
Ø&'ˆM�G•D‰MŒM˜!˜q™&Ñ!Ô!ð@
ð @
ð @
ð @
ð @
ð @
r3   rJ  r¡  c              3   ó(   K  — | ]\  }}||k    V — Œd S r@   r.   rß  s      r1   ro   z<test_multiple_generator_call_separated_gc.<locals>.<genexpr>ï  s*   è è € Ð@Ð@¡  Q�3˜!’8Ð@Ð@Ð@Ð@Ð@Ð@r3   rŒ   r   rp   r   r¬  )r   rÁ   r@  r#   rr   ÚweakrefÚfinalizer   r  r   r]   r   r§  r¯   rA  Úaliver   rµ  rE  )
r=   rØ  rÙ  Úerrorr   rÐ  Úg_wrr  r¼  Úretrys
             r1   Ú)test_multiple_generator_call_separated_gcrî  Ç  sq  € ð 	�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Ý!‘m”mð ð 
ð Að Aõ
 ”)‘+”+ˆØ?�H�Q °;Ð?Ñ?Ô?ð @
ð @
Ý+0°°R©=¬=ð@
ñ @
ô @
ñ 
ô 
ˆõ 	‰ŒˆàÐ/Ò/Ð/Ý�q‘	”	ˆAåÐ@Ð@­#¨aµ°r¸2±´Ñ*?Ô*?Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@ð#Að Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aõ& Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$Ð$ð €EØ
Œ*ð ˜ š˜Ø�‰
ˆÝŒ
�2‰Œˆð Œ*ð ˜ š˜õ Œ9‰;Œ;˜Ñ  1Ò$Ð$Ð$Ð$à!€xÔ!Ñ#Ô# qÒ(Ð(ð Ô!Ð!Ð!Ð!ð )Ð(ð 	"Ð!s   ÂB!EÅEÅ	Ec                 óR  — |j         }t          dd| |¬¦  «        5 } |d„ t          j                             d¦  «        gdz  D ¦   «         ¦  «         t	          t          j        |¦  «        ¦  «        dk    sJ ‚ |d„ t          d¦  «        D ¦   «         ¦  «         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 ¦   «         ¦  «          |d„ t          d¦  «        D ¦   «         ¦  «         t          d¦  «        D ](}t          j        |¦  «        s d S t          d	¦  «         Œ)t          d
¦  «        ‚)NrF   r   )rj   rv  r=   Útemp_folderc              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rx  ry  s     r1   ro   z(test_memmapping_leaks.<locals>.<genexpr>  s5   è è € Ð	GÐ	G qÐ
�'•,Ñ
Ô
 Ñ
"Ô
"Ð	GÐ	GÐ	GÐ	GÐ	GÐ	Gr3   rè   r   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   ©r$   rh  rË   s     r1   ro   z(test_memmapping_leaks.<locals>.<genexpr>  s3   è è € Ð	7Ð	7¨Ð
"�'•/Ñ
"Ô
"Ñ
$Ô
$Ð	7Ð	7Ð	7Ð	7Ð	7Ð	7r3   r‡   rÉ   z/temporary directory of Parallel was not removedru  c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   rx  ry  s     r1   ro   z(test_memmapping_leaks.<locals>.<genexpr>#  s5   è è € ÐCÐC 1Ð…g�lÑÔ˜AÑÔÐCÐCÐCÐCÐCÐCr3   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   ró  rË   s     r1   ro   z(test_memmapping_leaks.<locals>.<genexpr>$  s3   è è € Ð3Ð3 QÐ…g�oÑÔÑ Ô Ð3Ð3Ð3Ð3Ð3Ð3r3   )
rT  r#   r   r6  r¢   rä  Úlistdirrr   r   ÚAssertionError)r=   rU  rù   r»   s       r1   Útest_memmapping_leaksrø     s  € ð Œ^€Fõ 
˜ q°'Ø$ð
&ñ 
&ô 
&ð 8Ø)*Ø	ˆÐ	GÐ	G­R¬Y×-=Ò-=¸bÑ-AÔ-AÐ,BÀQÑ,FÐ	GÑ	GÔ	GÑGÔGÐGõ •2”:˜fÑ%Ô%Ñ&Ô&¨Ò*Ð*Ð*Ð*ð 	
ˆÐ	7Ð	7­e°A©h¬hÐ	7Ñ	7Ô	7Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ  �3‰ZŒZð Pð PˆÝŒz˜&Ñ!Ô!ð 	ØˆEÝˆb‰	Œ	ˆ	ˆ	åÐNÑOÔOÐOõ 	˜ a°Ð9Ñ9Ô9€AØ€AÐCÐC­¬×)9Ò)9¸"Ñ)=Ô)=Ð(>ÀÑ(BÐCÑCÔCÑCÔCÐCØ€AÐ3Ð3­%°©(¬(Ð3Ñ3Ô3Ñ3Ô3Ð3å�3‰ZŒZð Pð PˆÝŒz˜&Ñ!Ô!ð 	ØˆEˆEÝˆb‰	Œ	ˆ	ˆ	åÐNÑOÔOÐOs   ›B B'Â'B+Â.B+)Nr4   r5   c                 ó¦   —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }|d„ t          d¦  «        D ¦   «         k    sJ ‚d S )NrF   ri   c              3   óH   K  — | ]} t          d „ ¦  «        |¦  «        V — ŒdS )c                 ó   — | dz  S rE   r.   rG   s    r1   rå  z2test_lambda_expression.<locals>.<genexpr>.<lambda>5  s
   € ˜!˜q™&€ r3   Nr  rm   s     r1   ro   z)test_lambda_expression.<locals>.<genexpr>4  sJ   è è € ð 29ð 29Ø)*Ð!�Ð Ð Ñ!Ô! !Ñ$Ô$ð29ð 29ð 29ð 29ð 29ð 29r3   rè   c                 ó   — g | ]}|d z  ‘ŒS )rF   r.   rm   s     r1   r2   z*test_lambda_expression.<locals>.<listcomp>6  s   € Ð1Ð1Ð1 !�q˜A‘vÐ1Ð1Ð1r3   rq   )r=   r¥   s     r1   Útest_lambda_expressionrý  .  sp   € ð 2�h˜a¨Ð1Ñ1Ô1ð 29ð 29Ý.3°B©i¬ið29ñ 29ô 29ñ 9ô 9€GàÐ1Ð1¥u¨R¡y¤yÐ1Ñ1Ô1Ò1Ð1Ð1Ð1Ð1Ð1r3   c                 ó®  ‡— d}d}d|z  Št          d|| ¬¦  «        } |ˆfd„t          |¦  «        D ¦   «         ¦  «         |j        j        |j        j        k    sJ ‚|j        j        |j        j        k    sJ ‚ |ˆfd„t          |¦  «        D ¦   «         ¦  «         |j        j        |j        j        k    sJ ‚|j        j        |j        j        k    sJ ‚dS )	zCTest that a parallel backend correctly resets its batch statistics.rF   iô  g       @rè   )r…   rj   r=   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r@   rº  ©r/   rn   Ú	task_times     €r1   ro   z6test_backend_batch_statistics_reset.<locals>.<genexpr>B  ó8   øè è € Ð>Ð>¨Ð…g�dŒjÑÔ˜)Ñ$Ô$Ð>Ð>Ð>Ð>Ð>Ð>r3   c              3   ó\   •K  — | ]&} t          t          j        ¦  «        ‰¦  «        V — Œ'd S r@   rº  r   s     €r1   ro   z6test_backend_batch_statistics_reset.<locals>.<genexpr>H  r  r3   N)r#   rr   rø   Ú_effective_batch_sizeÚ_DEFAULT_EFFECTIVE_BATCH_SIZEÚ_smoothed_batch_durationÚ _DEFAULT_SMOOTHED_BATCH_DURATION)r=   rj   Ún_inputsrù   r  s       @r1   Ú#test_backend_batch_statistics_resetr	  9  s  ø€ ð €FØ€HØ�X‘€Iå˜ F°GÐ<Ñ<Ô<€AØ€AÐ>Ð>Ð>Ð>­e°H©o¬oÐ>Ñ>Ô>Ñ>Ô>Ð>ØŒJÔ,ØŒJÔ4ò5ð 5ð 5ð 5àŒJÔ/ØŒJÔ7ò8ð 8ð 8ð 8ð €AÐ>Ð>Ð>Ð>­e°H©o¬oÐ>Ñ>Ô>Ñ>Ô>Ð>ØŒJÔ,ØŒJÔ4ò5ð 5ð 5ð 5àŒJÔ/ØŒJÔ7ò8ð 8ð 8ð 8ð 8ð 8r3   c                 óâ  — dD ]¹}t          t          |¬¦  «        j        ¦  «        t          k    sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t          u sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t          u sJ ‚t          |d¬¦  «        }t          |j        ¦  «        t          u sJ ‚Œºt          dd	d¬
¦  «        }t          |j        ¦  «        t
          u sJ ‚ | d	d¬¦  «        5  t          d¬¦  «        }t          |j        ¦  «        t
          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        t
          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          d¬¦  «        }t          |j        ¦  «        t          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y    | d	d¬¦  «        5  t          dd¬¦  «        }t          |j        ¦  «        t          u sJ ‚|j        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )N)r   rF   r{   r|   Úthreads©rj   ÚpreferÚ	processesÚ	sharedmem©rj   ÚrequirerF   r4   )rj   r=   r  ©r  rp   ©r  r   )re   r#   rø   r½  r   r"   rj   )rz   rj   rù   s      r1   Ú$test_backend_hinting_and_constraintsr  O  s®  € ð ð 
4ð 
4ˆÝ•H FÐ+Ñ+Ô+Ô4Ñ5Ô5½ÒGÐGÐGÐGå˜F¨9Ð5Ñ5Ô5ˆÝ�A”JÑÔÕ#3Ð3Ð3Ð3Ð3å˜F¨;Ð7Ñ7Ô7ˆÝ�A”JÑÔ¥>Ð1Ð1Ð1Ð1å˜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   Ã9;EÅEÅEÅ<F"Æ"F&Æ)F&Æ:;HÈHÈ	HÈ<I$É$I(É+I(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 r@   r.   r  s    r1   Úapply_asynczgtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.apply_async‰  ó   € ØˆDr3   c                 ó   — |S r@   r.   r¨  s     r1   r(   zltest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.effective_n_jobsŒ  ó   € ØˆMr3   N©rS   rT   rU   Úsupports_sharedmemÚuse_threadsr  r(   r.   r3   r1   ÚMyCustomThreadingBackendr  …  s=   € € € € € Ø!ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r3   r   rF   r  r  r  r  c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ú\test_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackendFc                 ó   — d S r@   r.   r  s    r1   r  zhtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.apply_asyncš  r  r3   c                 ó   — |S r@   r.   r¨  s     r1   r(   zmtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.effective_n_jobs�  r  r3   Nr  r.   r3   r1   ÚMyCustomProcessingBackendr"  –  s=   € € € € € Ø"ÐØˆð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r3   r%  r›  rè   )rj   r  r…   z…Using ThreadingBackend as joblib backend instead of MyCustomProcessingBackend as the latter does not provide shared memory semantics.©r=   r  )	r!   r#   re   rø   Ú
readouterrr   Ústripr   rY   )Úcapsysrz   r   rù   r%  ÚoutÚerrr²   s           r1   Ú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ð@ˆð �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  r4   r&  r,   )r   rY   r#   r   r.   r3   r1   Ú,test_invalid_backend_hinting_and_constraintsr/  ¶  s†  € Ý	•
Ñ	Ô	ð #ð #Ý˜	Ð"Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ 
•
Ñ	Ô	ð $ð $Ý˜Ð#Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $õ 
•
Ñ	Ô	ð :ð :õ 	˜¨[Ð9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :õ
 
€~õ •JÑÔð 	:ð 	:Ý˜V¨[Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:å•JÑÔð 	Eð 	EÝÐ.¸ÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð €~sT   •2²6¹6ÁA.Á.A2Á5A2ÂB+Â+B/Â2B/ÃC/Ã/C3Ã6C3ÄD-Ä-D1Ä4D1c                 ó.  ‡ ‡— t          d¬¦  «        5 }t          |j        ¦  «        j        |j        j        fg}‰ dk    r|cddd¦  «         S  |ˆˆ fd„t          d¦  «        D ¦   «         ¦  «        }||d         z   cddd¦  «         S # 1 swxY w Y   dS )zCPerform nested parallel calls and introspect the backend on the wayrF   r|   r   Nc              3   óV   •K  — | ]#} t          t          ¦  «        dd ‰dz
  i‰¤ŽV — Œ$dS )Úlimitr   Nr.   )r$   Ú_recursive_backend_info)r/   rn   rH  r2  s     €€r1   ro   z*_recursive_backend_info.<locals>.<genexpr>Ò  sY   øè è € ð 'ð 'Øð 5•GÕ3Ñ4Ô4ÐOÐO¸5À1¹9ÐOÈÐOÐOð 'ð 'ð 'ð 'ð 'ð 'r3   r   )r#   re   rø   rS   r  rr   )r2  rH  rù   Ú
this_levelr¥   s   ``   r1   r3  r3  Ë  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   t          ¦   «         dk    rd}d}nd}d}|                     ¦   «         dz   }|df|dfd|fd|fg}||k    sJ ‚d S )NrF   r|   r   r   r   ÚBackendr   )r3  r)   Útitle)rz   r=   Úbackend_types_and_levelsÚsecond_level_backend_typeÚ	max_levelÚtop_level_backend_typeÚexpected_types_and_levelss          r1   Útest_nested_parallelism_limitr=  ×  sø   € ð 
ˆ� Ð	#Ñ	#Ô	#ð =ð =Ý#:Ñ#<Ô#<Ð ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ �{„{�aÒÐØ$7Ð!Øˆ	ˆ	à$6Ð!Øˆ	à$Ÿ]š]™_œ_¨yÑ8Ðà	 Ð#Ø	" AÐ&Ø	˜iÐ(Ø	˜iÐ(ð	!Ðð $Ð'@Ò@Ð@Ð@Ð@Ð@Ð@s   Ž)©-°-c                 ól  — t          j        dd¬¦  «        5  t          j        t	          d¦  «        t          j        ¬¦  «        }t          d¦  «        D ]e} | d¦  «        5  t          |¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚t          d„ |D ¦   «         ¦  «        sJ ‚Œf | d¦  «        5  t          ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚t          d	„ |D ¦   «         ¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )
NrF   r±  g    ÐcArq  r´  )Údatar˜   c              3   ó(   K  — | ]\  }}|d k    V — ŒdS ©ÚDaskDistributedBackendNr.   ©r/   r‘   r»   s      r1   ro   z4test_nested_parallelism_with_dask.<locals>.<genexpr>ú  sH   è è € ð @ð @Ù"˜4 ð Ð7Ò7ð @ð @ð @ð @ð @ð @r3   c              3   ó(   K  — | ]\  }}|d k    V — ŒdS rA  r.   rC  s      r1   ro   z4test_nested_parallelism_with_dask.<locals>.<genexpr>  s@   è è € ð <ð <Ù�t˜Qð Ð3Ò3ð <ð <ð <ð <ð <ð <r3   )
rµ  r¶  r   rr  rÀ  r�  rr   r3  r¢   r¯   )rz   r?  rn   r8  s       r1   Ú!test_nested_parallelism_with_daskrE  ï  sq  € õ 
Ô	 a¸AÐ	>Ñ	>Ô	>ð <ð <åŒw•s˜3‘x”x¥r¤xÐ0Ñ0Ô0ˆÝ�q‘”ð 	@ð 	@ˆAØ�˜‘”ð Nð NÝ+BÈÐ+MÑ+MÔ+MÐ(ðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð NåÐ/Ñ0Ô0°AÒ5Ð5Ð5Ð5Ýð @ð @Ø&>ð@ñ @ô @ñ @ô @ð @ð @ð @ð @ð ˆW�V‰_Œ_ð 	Að 	AÝ'>Ñ'@Ô'@Ð$ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	AåÐ+Ñ,Ô,°Ò1Ð1Ð1Ð1Ýð <ð <Ø":ð<ñ <ô <ñ <ô <ð 	<ð 	<ð 	<ð 	<ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <sZ   —A
D)Á!A>Á2D)Á>BÂD)ÂBÂ?D)ÃC ÃD)Ã C$	Ã$D)Ã'C$	Ã(3D)Ä)D-Ä0D-c                 ó^   —  t          ¦   «         d„ t          d¦  «        D ¦   «         ¦  «        S )z6A horrible function that does recursive parallel callsc              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   )r$   Ú_recursive_parallelrm   s     r1   ro   z&_recursive_parallel.<locals>.<genexpr>  s4   è è € ÐGÐG¸Ð2•gÕ1Ñ2Ô2Ñ4Ô4ÐGÐGÐGÐGÐGÐGr3   rF   rq   )Únesting_limits    r1   rH  rH    s+   € à�8‰:Œ:ÐGÐG½eÀA¹h¼hÐGÑGÔGÑGÔGÐGr3   c                 ón  —  | |d¬¦  «        5  t          t          ¦  «        5 }t          ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |j        }|dk    r1ddlm} t          ||t          f¦  «        rt          j	        d¦  «         t          |t          ¦  «        sJ ‚d S )NrF   r|   r4   r   )ÚTerminatedWorkerErrorz1Loky worker crash when serializing RecursionError)r   ÚBaseExceptionrH  r”   Ú&joblib.externals.loky.process_executorrK  rj  r   rÁ   rÂ   ÚRecursionError)rz   r=   r�  ÚexcrK  s        r1   Útest_thread_bomb_mitigationrP  
  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ä  Úenvironr.  r   )Úenv_varsÚvars     r1   Ú_run_parallel_sumr\  '  sF   € Ø€Hð3ð ,ð ,ˆõ œ
Ÿš sÑ+Ô+ˆ�‰ˆØ•\ #Ñ&Ô&Ð&Ð&r3   zNeed OpenMP helper compiledc                 óp  —  t          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }t          t          ¦   «         dz  d¦  «        }|D ]b\  }}||k    sJ ‚|                     ¦   «         D ]@\  }}|                     d¦  «        r|t          |¦  «        k    sJ ‚Œ0|dk    sJ ‚|dk    sJ ‚ŒAŒcd S )NrF   ri   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   )r$   r\  rË   s     r1   ro   z-test_parallel_thread_limit.<locals>.<genexpr>3  sE   è è € ð 2ð 2Ø)*Ð"�Õ!Ñ"Ô"Ñ$Ô$ð2ð 2ð 2ð 2ð 2ð 2r3   r   Ú_THREADSrX  Ú1)r#   rr   r§  r)   ÚitemsÚendswithrš   )r=   r¥   Úexpected_num_threadsÚworker_env_varsÚomp_num_threadsr‘   r”   s          r1   Útest_parallel_thread_limitrf  0  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à˜|Ò+Ð+Ð+Ð+Ø ’|�|�|�|�|ð	$ð$ð $r3   c                 óz   — t          t          d¬¦  «        5   | d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzPlease install daskr  r´  )r   rY   )rz   s    r1   Ú)test_dask_backend_when_dask_not_installedrh  A  s‰   € õ 
•
Ð"7Ð	8Ñ	8Ô	8ð ð Øˆ�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   —0°4·4c                 óN  —  G d„ dt           ¦  «        }d} |  |¦   «         ¦  «        5  t          j        t          |¬¦  «        5   t	          d¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó"   — e Zd Zd„ Zdd„Zd„ ZdS )ú3test_zero_worker_backend.<locals>.ZeroWorkerBackendc                 ó   — dS rd   r.   )rL   r«   rH  s      r1   r¥  z=test_zero_worker_backend.<locals>.ZeroWorkerBackend.configureM  ó   € Ø�1r3   Nc                 ó    — t          d¦  «        ‚)NzNo worker availabler	   )rL   ÚfuncÚcallbacks      r1   r  z?test_zero_worker_backend.<locals>.ZeroWorkerBackend.apply_asyncP  s   € ÝÐ4Ñ5Ô5Ð5r3   c                 ó   — dS rd   r.   r¨  s     r1   r(   zDtest_zero_worker_backend.<locals>.ZeroWorkerBackend.effective_n_jobsS  rm  r3   r@   )rS   rT   rU   r¥  r  r(   r.   r3   r1   ÚZeroWorkerBackendrk  L  sF   € € € € € ð	ð 	ð 	ð	6ð 	6ð 	6ð 	6ð	ð 	ð 	ð 	ð 	r3   rr  z&ZeroWorkerBackend has no active workerr  rF   r|   c              3   óP   K  — | ]!} t          t          ¦  «        |¦  «        V — Œ"d S r@   r  rm   s     r1   ro   z+test_zero_worker_backend.<locals>.<genexpr>Y  s0   è è € Ð@Ð@°!˜{�w¥r™{œ{¨1™~œ~Ð@Ð@Ð@Ð@Ð@Ð@r3   )r   rÁ   r   r  r#   rr   )rz   rr  Úexpected_msgs      r1   Útest_zero_worker_backendru  H  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 r@   )ÚMY_GLOBAL_VARIABLEr.   r3   r1   Úcheck_globalsz@test_globals_update_at_each_parallel_call.<locals>.check_globalsd  s   € å!Ð!r3   rF   r|   c              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r@   r  ©r/   rn   ry  s     €r1   ro   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>j  óE   øè è € ð 14ð 14Ø%&Ð��ÑÔÑ Ô ð14ð 14ð 14ð 14ð 14ð 14r3   zchanged valuec              3   óF   •K  — | ]} t          ‰¦  «        ¦   «         V — Œd S r@   r  r{  s     €r1   ro   z<test_globals_update_at_each_parallel_call.<locals>.<genexpr>s  r|  r3   )rx  r#   rr   rô  )Úworkers_global_variablery  s    @r1   Ú)test_globals_update_at_each_parallel_callr  \  s&  ø€ ð *Ðð"ð "ð "ð ˆ=‰?Œ?Ð.Ò.Ð.Ð.Ð.à0�h¨aÐ0Ñ0Ô0ð 14ð 14ð 14ð 14Ý*/°©(¬(ð14ñ 14ô 14ñ 4ô 4ÐåÐ&Ñ'Ô'Ð,<Ð+=Ò=Ð=Ð=Ð=ð )ÐØˆ=‰?Œ?˜oÒ-Ð-Ð-Ð-à0�h¨aÐ0Ñ0Ô0ð 14ð 14ð 14ð 14Ý*/°©(¬(ð14ñ 14ô 14ñ 4ô 4ÐåÐ&Ñ'Ô'¨OÐ+<Ò<Ð<Ð<Ð<Ð<Ð<r3   c                  ó‚   — dd l } | j                             dd¦  «        } | j        ||¦  «         ddlm}  |¦   «         S )Nr   r‡   )Úthreadpool_info)Únumpyr6  r8  r4  Úthreadpoolctlr�  )r   rM   r�  s      r1   Ú_check_numpy_threadpool_limitsr„  }  sV   € ØÐÐÐð 	Œ	�Š˜˜SÑ!Ô!€AØ
€B„Fˆ1ˆa�L„L€LØ-Ð-Ð-Ð-Ð-Ð-Øˆ?ÑÔÐr3   c                 óˆ   — |D ]}|d         | d         k    r
|d         c S Œt          d                     | ¦  «        ¦  «        ‚)NÚfilepathÚnum_threadsz,An unexpected module was loaded in child:
{})rY   rB  )Úchild_moduleÚparent_infoÚparent_modules      r1   Ú_parent_max_num_threads_forr‹  ˆ  s_   € Ø$ð 0ð 0ˆØ˜Ô$¨°ZÔ(@Ò@Ð@Ø  Ô/Ð/Ð/Ð/ð Aå
ÐDß’f˜\Ñ*Ô*ñ,ô ,ð ,r3   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          r1   Úcheck_child_num_threadsr‘  �  su   € ð ".ð ;ð ;ÐØ1ð 	;ð 	;ˆLÝ%@Ø˜kñ&+ô &+Ð"å˜KÐ)?Ñ@Ô@À+ÐNˆHØ Ô.°(Ð:Ð:Ð:Ð:Ð:ð		;ð;ð ;r3   )rF   r˜   r„   r{   c                 óR  — t          ¦   «         }t          |¦  «        dk    rt          j        d¬¦  «          t	          d| ¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }t          | ¦  «        } t          t          ¦   «         | z  d¦  «        }t          |||¦  «         d S )	Nr   ú&Need a version of numpy linked to BLASr¾   r4   r­  c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   ©r$   r„  rm   s     r1   ro   z;test_threadpool_limitation_in_child_loky.<locals>.<genexpr>¨  sU   è è € ð GEð GEØ67Ð/�Õ.Ñ/Ô/Ñ1Ô1ðGEð GEð GEð GEð GEð GEr3   rF   r   ©
r„  r¢   rÁ   r@  r#   rr   r(   r§  r)   r‘  )rj   r‰  Úworkers_threadpool_infosÚexpected_child_num_threadss       r1   Ú(test_threadpool_limitation_in_child_lokyr™  œ  sÏ   € õ 1Ñ2Ô2€KÝ
ˆ;ÑÔ˜1ÒÐÝŒÐCÐDÑDÔDÐDàF�x°¸vÐFÑFÔFð GEð GEÝ;@À¹8¼8ðGEñ GEô GEñ  Eô  EÐõ ˜fÑ%Ô%€FÝ!$¥Y¡[¤[°FÑ%:¸AÑ!>Ô!>ÐåÐ4°kØ6ñ8ô 8ð 8ð 8ð 8r3   Úinner_max_num_threads)r   rF   r˜   Nc                 ó¤  — t          ¦   «         }t          |¦  «        dk    rt          j        d¬¦  «          | d|¬¦  «        5   t	          |¬¦  «        d„ t          d¦  «        D ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }|€ t          t          ¦   «         |z  d	¦  «        }n|}t          |||¦  «         d S )
Nr   r“  r¾   r4   ©rš  r|   c              3   óN   K  — | ] } t          t          ¦  «        ¦   «         V — Œ!d S r@   r•  rm   s     r1   ro   z>test_threadpool_limitation_in_child_context.<locals>.<genexpr>Ã  sM   è è € ð ;Ið ;IØ:;Ð3�GÕ2Ñ3Ô3Ñ5Ô5ð;Ið ;Ið ;Ið ;Ið ;Ið ;Ir3   rF   r   r–  )rz   rj   rš  r‰  r—  r˜  s         r1   Ú+test_threadpool_limitation_in_child_contextrž  ²  sS  € õ 1Ñ2Ô2€KÝ
ˆ;ÑÔ˜1ÒÐÝŒÐCÐDÑDÔDÐDà	ˆ�Ð/DÐ	EÑ	EÔ	Eð Ið IØ#:¥8°6Ð#:Ñ#:Ô#:ð ;Ið ;IÝ?DÀQ¹x¼xð;Iñ ;Iô ;Iñ $Iô $IÐ ðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ ˜fÑ%Ô%€FØÐ$Ý%(­©¬¸Ñ)>ÀÑ%BÔ%BÐ"Ð"à%:Ð"åÐ4°kØ6ñ8ô 8ð 8ð 8ð 8s   Á1BÂBÂBÚvar_name)rS  rT  rR  c                 óz  ‡‡— 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)NT©Úreusec                 ó@   — t           j                             | ¦  «        S r@   )rä  rY  r.  )rŸ  s    r1   Ú_get_envz>test_threadpool_limitation_in_child_override.<locals>._get_envÞ  s   € ÝŒz�~Š~˜hÑ'Ô'Ð'r3   Ú4r|   c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r@   r  ©r/   rn   r¤  rŸ  s     €€r1   ro   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>å  sG   øè è € ð *;ð *;Ø,-Ð�G�HÑÔ˜hÑ'Ô'ð*;ð *;ð *;ð *;ð *;ð *;r3   rF   r4   r   rœ  c              3   óH   •K  — | ]} t          ‰¦  «        ‰¦  «        V — Œd S r@   r  r§  s     €€r1   ro   z?test_threadpool_limitation_in_child_override.<locals>.<genexpr>ê  sG   øè è € ð .?ð .?Ø01Ð!•˜Ñ!Ô! (Ñ+Ô+ð.?ð .?ð .?ð .?ð .?ð .?r3   r`  )r   Úshutdownrä  rY  r.  r#   rr   )rz   rj   rŸ  Úoriginal_var_valuer¥   r¤  s     `  @r1   Ú,test_threadpool_limitation_in_child_overrider«  Ð  sä  øø€ õ  Ð%Ñ%Ô%×.Ò.Ñ0Ô0Ð0ð(ð (ð (õ œŸš¨Ñ1Ô1Ðð6Ø"�Œ
�8Ñà)•( &Ð)Ñ)Ô)ð *;ð *;ð *;ð *;ð *;Ý16°q±´ð*;ñ *;ô *;ñ ;ô ;ˆà˜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D Â!4C!ÃD Ã!C%Ã%D Ã(C%Ã)D Ä!D:)rF   r˜   r{   c                 ó¬   — d„ } || ¦  «         t          d¬¦  «        }t          d¦  «        D ]%} || ¦  «         t          d¬¦  «        }||k    sJ ‚Œ&d S )Nc                 óŠ   ‡— t          d¦  «        Š t          | ¬¦  «        ˆfd„t          d¦  «        D ¦   «         ¦  «         d S )Nrè   r|   c              3   óR   •K  — | ]!} t          t          ¦  «        ‰¦  «        V — Œ"d S r@   )r$   Úsum)r/   rn   rA   s     €r1   ro   zAtest_loky_reuse_workers.<locals>.parallel_call.<locals>.<genexpr>ý  s1   øè è € ÐCÐC°A ¥­¡¤¨Q¡¤ÐCÐCÐCÐCÐCÐCr3   rŽ   )rj   rA   s    @r1   Úparallel_callz.test_loky_reuse_workers.<locals>.parallel_callû  sJ   ø€ Ý�"‰IŒIˆØ�˜ÐÑÔÐCÐCÐCÐC½¸r¹¼ÐCÑCÔCÑCÔCÐCÐCÐCr3   Tr¡  rè   )r   rr   )rj   r°  Úfirst_executorr»   Úexecutors        r1   Útest_loky_reuse_workersr³  õ  s‹   € ðDð Dð Dð
 €M�&ÑÔÐÝ*°Ð6Ñ6Ô6€Nõ �2‰YŒYð *ð *ˆØˆ�fÑÔÐÝ(¨tÐ4Ñ4Ô4ˆØ˜>Ò)Ð)Ð)Ð)Ð)ð*ð *r3   )F)r   r   )rp   r@   )ÏrV   rä  r°   r]   r„  rè  r    r5   Ú	tracebackr   Úmathr   r   Úpickler   r  r   r,   r
   rÁ   rQ  r   r   r   Újoblib._multiprocessing_helpersr   Újoblib.test.commonr   r   r   r   r   Újoblib.testingr   r   r   r   r   Újoblib.externals.lokyr   rW  r   ÚposixÚImportErrorÚ _openmp_test_helper.parallel_sumr   rµ  Újoblib._parallel_backendsr   r   r    r!   r"   Újoblib.parallelr#   r$   r%   r&   r'   r(   r)   r*   r+   rm  ÚRETURN_GENERATOR_BACKENDSÚpopr§  ÚkeysÚALL_VALID_BACKENDSÚPROCESS_BACKENDSÚPARALLEL_BACKENDSÚhasattrrV  r6   r½  r>   rC   rH   Ú	ExceptionrJ   r[   r_   rb   rg   rt   rv   ry   Úmarkrƒ   r�   r¦   rµ   rÅ   rÓ   r×   rÚ   rÜ   rÞ   ræ   rñ   rû   r  r!  r'  r+  rG  rT  rY  rt  r  r‡  r‹  r�  r•  r˜  rÂ   r   r¢  rª  r¯  r·  rº  r¾  rÃ  rÊ  rÏ  Úextendrr   rÐ  rÒ  rÝ  râ  ræ  ré  Ú_parallel_backendsrë  r÷  rÿ  r  r  r  r  r*  r1  r:  rA  rE  rN  rL  ÚSQUARE_LOCALÚSQUARE_LAMBDArW  rB  rO  rP  rR  rY  r\  ra  rb  rf  rh  rn  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/  r3  r=  rE  rH  Úno_coverrP  r\  rf  rh  ru  r  r„  r‹  r‘  r™  rž  r«  r³  r.   r3   r1   ú<module>rÎ     sÈ  ððð ð 
€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø (Ð (Ð (Ð (Ð (Ð (Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð+ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð €>à;Ð;Ð;Ð;Ð;Ð;à Ð Ð Ð Ð Ð ðØ€L€L€L€LøØð ð ð Ø€E€E€EðøøøðØ>Ð>Ð>Ð>Ð>Ð>Ð>øØð ð ð Ø€L€L€LðøøøðØÐÐÐÐøØð ð ð Ø€K€K€Kðøøøð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø <Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø +Ð +Ð +Ð +Ð +Ð +Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð *˜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˜˜˜Ñ%Ô%ð7ð 7ñ &Ô%ñ 'Ô&ñ ,Ô+ð7ð €ˆYÐ*Ñ+Ô+ðð ñ ,Ô+ðð.ð ð ð2 Ø€Ð4ð 7ð 7ð 7ñ ô ðð ñô ñ Ôðð6 Ø€ˆYÐ@Ð@Ð@ÑAÔAðð ñ BÔAñ Ôðð 0ð 0ð 0ð
 €ˆ_˜hÑ'Ô'Ø€Ð˜xÑ(Ô(ð?ð ?ñ )Ô(ñ (Ô'ð?ð
ð ð ð ð9ð 9ñ Ôð9ðð ð ð €ˆX�y�y�yÑ!Ô!ðFð Fñ "Ô!ðFð €ˆYÐ)Ñ*Ô*ð/ð /ñ +Ô*ð/ð: ð
5ð 
5ñ Ôð
5ð ØØ€ˆ[˜/˜/˜/Ñ*Ô*ð5ð 5ñ +Ô*ñ Ôñ „ð5ð& €ˆYÐ)Ñ*Ô*ð9ð 9ñ +Ô*ð9ð Ø€ˆYÐ)Ñ*Ô*ð3ð 3ñ +Ô*ñ Ôð3ð Ø€ˆYÐ(Ñ)Ô)ðA"ð A"ñ *Ô)ñ ÔðA"ðH Ø€ˆY˜Ñ!Ô!ðEð Eñ "Ô!ñ ÔðEð.'ð 'ð 'ð €ˆY˜Ñ!Ô!Ø€Ð)Øð /ð /ð /ð 0ð ð Jð Jð Jð Kð
LñMô Mðð ñMô Mñ "Ô!ðð  Ø€ˆYÐ)Ñ*Ô*ðð ñ +Ô*ñ Ôðð:4ð 4ð 4ð Ø€ˆYÐ(Ñ)Ô)ð3ð 3ñ *Ô)ñ Ôð3ð=ð =ð =ð9ð 9ð 9ð
>ð >ð >ð
 Ø€ˆYÐ)Ñ*Ô*Ø„×ÒÐCÐÑDÔDð-ð -ñ EÔDñ +Ô*ñ Ôð-ð*ð ð ð ð Ð+ñ ô ð ð
ð 
ð 
ð €ˆYÐ*Ñ+Ô+ðHð Hñ ,Ô+ðHð$ Ø€ˆYÐ)Ñ*Ô*Ø€ˆX�}�}�}Ñ%Ô%ð:ð :ñ &Ô%ñ +Ô*ñ Ôð:ð%ð %ð %ð	4ð 	4ð 	4ð €ˆ�$ˆÐ=Ð>Ñ>Ô>ð9ð 9ñ ?Ô>ð9ð;ð ;ð ;ð* $5°Q°Q°QÔ#7Ð  Ø  × 'Ò 'Ø-Ð- E E¨!¡H¤HÐ-Ñ-Ô-ñô ð ð
 Ø€ˆYÐ8Ñ9Ô9Ø€ˆYÐ)¨?Ð;Ñ<Ô<ð4ð 4ñ =Ô<ñ :Ô9ñ Ôð4ð(ð ð ð ð Ð#4ñ ô ð ð €ˆY˜Ð*:Ð;Ñ<Ô<ð4ð 4ñ =Ô<ð4ð( €ˆY˜Ð*:Ð;Ñ<Ô<ð4ð 4ñ =Ô<ð4ð(ð ð ð
1ð 1ð 1ð>ð >ð >ð >ð >�Ô)Ô5ñ >ô >ð >ð Ð Ð/°Ñ ;Ô ;Ð ;ð Ø€ˆYð 0ð 0ð 0ñ 1ô 1à€ˆY˜Ð*:Ð;Ñ<Ô<ð
,ð 
,ñ =Ô<ñ1ô 1ñ Ôð
,ð Ø€ˆX�}�}�}Ñ%Ô%Ø€ˆYÐ)Ñ*Ô*Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð
ð 
ñ =Ô<ñ +Ô*ñ &Ô%ñ Ôð
ð47ð 7ð 7ð Ø€ˆ_Ð/Ñ0Ô0Ø€ˆ_Ð/Ñ0Ô0Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð'ð 'ñ =Ô<ñ 1Ô0ñ 1Ô0ñ Ôð'ð Ø€ˆY˜Ð*:Ð;Ñ<Ô<Ø€Ð%¨¨e }Ñ5Ô5ð!ð !ñ 6Ô5ñ =Ô<ñ Ôð!ð> €ˆ\˜=˜=˜=Ñ)Ô)ð(ð (ñ *Ô)ð(ð
 €Ð8ð
/ð 
/ð 
/ñ0ô 0ðð ñ0ô 0ðð ð+ð +ñ Ôð+ð ØØ€ˆYÐ(Ñ)Ô)ð3ð 3ñ *Ô)ñ Ôñ „ð3ð.0Ð ,ð  Ø€ˆYÐ(Ñ)Ô)ð	,ð 	,ñ *Ô)ñ Ôð	,ð-Ð )ð@€ð€ð€ð
 Ø€ˆYÐ(°"°*¨B¨BÀ7À)ÑLÑMÔMØ€ˆ]˜[¨,¸ÐFÑGÔGØ€Ð Ð"?Ð"?Ð"?Ñ@Ô@ð,ð ,ñ AÔ@ñ HÔGñ NÔMñ Ôð,ð (9÷P ‚F˜bœgŸošoØ„G‡O‚O�F”OÑ$Ô$ñ&ô &€Fñ 'ô 'ðQ 6ðX ð
ð 
ñ Ôð
ð=÷, ‚F˜bœgŸošoØ„G‡O‚O�F”OÑ$Ô$ñ&ô &€Fñ 'ô 'ð- :ð4 ð&ð &ñ Ôð&ð8ð 8ð 8ð
ð ð ðð ð ð ØØ€ˆYÐ(Ñ)Ô)ð8ð 8ñ *Ô)ñ Ôñ „ð8ð0ð ð ð Øð	/ð 	/ñ Ôñ „ð	/ð	ð 	ð 	ðð ð ð
 „×Ò˜ 9 9 9Ñ-Ô-ð;ð ;ñ .Ô-ð;ðð ð ðð ð ð( „×Ò˜ A q 6Ñ*Ô*ð Ø€ˆY˜˜Ð5Ñ6Ô6¸,¸ÑGÑHÔHðNð Nñ IÔHñ Ôñ	 +Ô*ðNð „×Ò˜ A r 7Ñ+Ô+Ø€ˆY˜Ð*:Ð;Ñ<Ô<Ø€ˆ�tÐÐ$=Ð>Ñ>Ô>ðOð Oñ ?Ô>ñ =Ô<ñ ,Ô+ðOð €ˆYÐ*Ñ+Ô+Ø€ˆX�~�~�~Ñ&Ô&ðð ñ 'Ô&ñ ,Ô+ððð ð ðð ð ð Ø€ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ð>ð >ñ 'Ô&ñ @Ô?ñ 3Ô2ñ „ð>ð Ø„×Ò˜ A r 7Ñ+Ô+Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆY˜Ð*:Ð;Ñ<Ô<Ø€ˆ�tÐÐ$=Ð>Ñ>Ô>ð?ð ?ñ ?Ô>ñ =Ô<ñ @Ô?ñ ,Ô+ñ „ð
?ð €ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ðð ñ 'Ô&ñ @Ô?ñ 3Ô2ðð. €ˆYÐ1Ñ2Ô2Ø€ˆ[˜;Ð(=Ð>Ñ?Ô?Ø€ˆX�~�~�~Ñ&Ô&ðð ñ 'Ô&ñ @Ô?ñ 3Ô2ðð0 €ˆYÐ1Ñ2Ô2Ø€ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆX�~�~�~Ñ&Ô&ð>ð >ñ 'Ô&ñ BÔAñ BÔAñ 3Ô2ð>ð* €Ðð  ð  ð  ñ ô ð
 €ˆ]˜[Ð*?Ð@ÑAÔAØ€ˆ]˜[Ð*?Ð@ÑAÔAð/"ð /"ñ BÔAñ BÔAñô ð/"ðd ØØ€ˆYÐ(Ñ)Ô)ð(Pð (Pñ *Ô)ñ Ôñ „ð(PðV €ˆYØ%' Zˆt�[Ð!Ð!Ø.Ð.Ð.ñô ð2ð 2ñ	ô ð2ð Ø€ˆYÐ(Ñ)Ô)ð9ð 9ñ *Ô)ñ Ôð9ð( Ø€ˆY˜Ð*:Ð;Ñ<Ô<ð+ð +ñ =Ô<ñ Ôð+ð\ €ˆY˜Ð*:Ð;Ñ<Ô<ð3Kð 3Kñ =Ô<ð3KðlEð Eð Eð*	'ð 	'ð 	'ð 	'ð Ø€ˆY˜ Ð-Ñ.Ô.Ø€ˆY˜Ð*:Ð;Ñ<Ô<ðAð Añ =Ô<ñ /Ô.ñ ÔðAð* Ø€ˆY˜Ð*:Ð;Ñ<Ô<Ø€ˆ�tÐÐ$=Ð>Ñ>Ô>ð<ð <ñ ?Ô>ñ =Ô<ñ „ð<ð&Hð Hð Hð Hð
 „ÔØ€ˆY˜Ð*:Ð;Ñ<Ô<Ø€Ø  ���°&¸+Ð1Fñô ð+ð +ñô ñ =Ô<ñ Ôð
+ð0'ð 'ð 'ð €ˆ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ð&=ð =ð =ðBð ð ð,ð ,ð ,ð	;ð 	;ð 	;ð ØØ€ˆX�~�~�~Ñ&Ô&ð8ð 8ñ 'Ô&ñ Ôñ „ð8ð& ØØ€Ð$ o o oÑ6Ô6Ø€ˆX˜˜2�wÑÔØ€ˆY˜Ð*:Ð;Ñ<Ô<ð8ð 8ñ =Ô<ñ  Ôñ 7Ô6ñ Ôñ „ð
8ð2 Ø€ˆX˜˜2�wÑÔØ€ˆZð -ð -ð -ñ .ô .ð €ˆY˜Ð*:Ð;Ñ<Ô<ð6ð 6ñ =Ô<ñ.ô .ñ  Ôñ Ôð6ð> Ø€ˆX�z�z�zÑ"Ô"ð*ð *ñ #Ô"ñ Ôð*ð *ð *s6   ÂB ÂB!Â B!Â%B, Â,B6Â5B6Â:B? Â?C	ÃC	