ó
    oñ:i1 ã            
       óž  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSS	KJrJrJr  SS
KJr  SSKJrJrJrJr  SSK J!r!J"r"J#r#J$r$J%r%  \b  SSK&J'r'  SSK(J)r)   SSK*r* SSK,J-r-   SSK.r.SSK/J0r0J1r1J2r2J3r3J4r4  SSK5J6r6J7r7J8r8J9r9J:r:JrJ;r;J<r<J=r=  \6R|                  " 5       r?\?R�                  SS5        S/\A" \6R„                  " 5       5      -   rC\C\6 V s/ s H  n \6U    " 5       PM     sn -  rC\c  / rDOSS/rD\DS/-   rE\F" \S5      (       a!  \CR�                  \R�                  " S5      5        S rIS rJS rKS rL " S S\M5      rNSàS jrOS  rPSáS! jrQS" rRS# rSS$ rTS% rU\"" S&\<\;/5      \R¬                  RE                  S'S(S)\:" S)S*94S+// S,QS-9\S. 5       5       5       rW\"" S/\C5      \"" S0/ S1Q5      \"" S2/ S3Q5      S4 5       5       5       rX\"" S/\C5      \"" S0SS5/5      S6 5       5       rY\"" S/\C5      S7 5       rZS8 r[\\"" S9/ S:Q5      S; 5       5       r\\\"" S// S<Q5      S= 5       5       r]S> r^\"" S?\65      \"" S@\65      SA 5       5       r_SB r`\SC 5       raSD rb\"" S0/ SEQ5      SF 5       rc\"" S/\E5      SG 5       rd\SH 5       re\\\"" SI/ SJQ5      \"" SKSSL/5      SM 5       5       5       5       rf\"" S/\E5      SN 5       rg\\"" S/\E5      SO 5       5       rh\\"" S/\i" \?5      SP1-
  5      \"" SQSRSS/5      ST 5       5       5       rj\\"" S/\D5      SU 5       5       rk\\"" S/\65      SV 5       5       rlSW rm\"" S/\65      \"" SXS/ SYQ4SZ/ S[Q4/5      S\ 5       5       rn\\"" S/\E5      S] 5       5       roS^ rp\\"" S/\D5      S_ 5       5       rqS` rrSa rsSb rt\\"" S/\E5      \R¬                  Rë                  ScSd9Se 5       5       5       rv " Sf Sg\35      rwSh rx\"" S/\C5      Si 5       ry\\"" S/\E5      \"" S0/ SjQ5      Sk 5       5       5       rzSl r{Sm r|\$" \SLSnSd9So 5       r}Sp r~\ESS r\GR                  \�" Sq5       Vs/ s H  nSrU-  PM
     sn5        \\"" S/\5      \"" S&\;\</5      Ss 5       5       5       r‚ " St Su\35      rƒ\"" S&\<\;/5      Sv 5       r„\"" S&\<\;/5      Sw 5       r…Sx r†Sy r‡ " Sz S{\GR                  R`                  5      r‰\=" S|\‰5        \\"" S// S}Q5      \"" S&\<\;/5      S~ 5       5       5       rŠ\\"" S0/ SQ5      \"" S/\E5      \"" S&\<\;/5      S€ 5       5       5       5       r‹S� rŒ\\"" S‚\E5      \"" Sƒ\E5      \"" S&\<\;/5      S„ 5       5       5       5       r�\\"" S&\<\;/5      \"" S…S†S/5      S‡ 5       5       5       rŽ\"" Sˆ/ S‰Q5      SŠ 5       r�\"" S‹/ SŒQ5      S� 5       r�\SŽ 5       r‘\\\"" S/\D5      S� 5       5       5       r’S�r“\\"" S/\D5      S‘ 5       5       r”S’r•S“r–S”r—S•r˜\\"" S/\D\c  / OS/-   5      \"" S–\–\—\˜/5      \"" S—/ S˜Q5      S™ 5       5       5       5       r™SšGR5                  \GR6                  GR9                  \GR6                  GR9                  \GR:                  5      5      S›9rž\Sœ 5       rŸS�GR5                  \GR6                  GR9                  \GR6                  GR9                  \GR:                  5      5      S›9r \Sž 5       r¡SŸ r¢S  r£\\\"" S/\D5      S¡ 5       5       5       r¤S¢ r¥\\S£ 5       5       r¦S¤ r§S¥ r¨\R¬                  RE                  S0/ S¦Q5      S§ 5       r©S¨ rªS© r«\R¬                  RE                  S0S5SZ/5      \\"" S/\i" \?5      SP1-
  5      Sª 5       5       5       r¬\"" S/\C5      \"" S0/ S«Q5      S¬ 5       5       r­S­ r®S® r¯\\"" S/\?5      \"" SQSRSS/5      \"" S0/ S«Q5      S¯ 5       5       5       5       r°\"" S/\?5      \"" SQSRSS/5      \"" S0/ S«Q5      S° 5       5       5       r±\"" S/\?5      \"" SQSRSS/5      \"" S0/ S«Q5      S± 5       5       5       r²\"" S/\?5      \"" S²SRSS/5      \"" S³SRSS/5      \"" S0/ S«Q5      S´ 5       5       5       5       r³\"" Sµ/ S¶Q5      \"" S²SRSS/5      \"" S³SRSS/5      S· 5       5       5       r´\\\"" S/\D5      S¸ 5       5       5       rµ\"" S/\c  SS/O/ S¹Q5      Sº 5       r¶\\"" S/\D5      S» 5       5       r·\\"" S&\<\;/5      S¼ 5       5       r¸\"" S0SS5/5      \"" S½/ S¾Q5      S¿ 5       5       r¹\"" S&\<\;/5      SÀ 5       rºSÁ r»SâSÂ jr¼\\"" S/SS/5      \"" S&\<\;/5      SÃ 5       5       5       r½SãSÄ jr¾\R¬                  GR~                  \"" S&\<\;/5      \"" S/\c  S/OSS/5      SÅ 5       5       5       rÀSÆ rÁ\"" S/\b  SS/OS/5      \$" \-SL SÇSd9SÈ 5       5       rÂ\"" S&\<\;/5      \$" \.SLSÉSd9SÊ 5       5       rÃ\"" S&\<\;/5      SË 5       rÄSÌ rÅSÍ rÆSÎ rÇSÏ rÈ\\\"" S0/ SÐQ5      SÑ 5       5       5       rÉ\\\"" SÒ/ SÓQ5      \"" S0S5S)/5      \"" S&\<\;/5      SÔ 5       5       5       5       5       rÊ\\"" S0S5S)/5      \"" SÕ/ SÖQ5      \"" S&\<\;/5      S× 5       5       5       5       rË\\"" S0/ SØQ5      SÙ 5       5       rÌSÚ rÍSàSÛ jrÎ\\"" S0S5SZ/5      \"" S/\D5      \"" S&\<\;/5      SÜ 5       5       5       5       rÏ\\"" S0S5SZ/5      \"" S/\D5      SÝ 5       5       5       rÐ\\R¬                  RE                  S0S5SZ/5      SÞ 5       5       rÑ\\R¬                  RE                  S0S5SZ/5      Sß 5       5       rÒg! \+ a    Sr* G
N–f = f! \+ a    Sr- G
Nžf = f! \+ a    Sr. G
N¨f = fs  sn f s  snf )äz
Test the parallel module.
é    N)Únullcontext)Úsqrt©ÚTimeoutError)ÚPicklingError)Úsleep)Úformat_exception)ÚdumpÚloadÚparallel)Úmp)ÚIS_GIL_DISABLEDÚnpÚwith_multiprocessingÚ
with_numpy)Úcheck_subprocess_callÚparametrizeÚraisesÚskipifÚwarns)Úget_reusable_executor)ÚQueueé   )Úparallel_sum)ÚLokyBackendÚMultiprocessingBackendÚParallelBackendBaseÚSequentialBackendÚThreadingBackend)	ÚBACKENDSÚParallelÚ	cpu_countÚdelayedÚeffective_n_jobsr   Úparallel_backendÚparallel_configÚregister_parallel_backendÚmultiprocessingÚlokyÚ	threadingÚget_contextÚspawnc                  ó0   • [         [        R                     $ ©N)r    r   ÚDEFAULT_BACKEND© ó    Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/joblib/test/test_parallel.pyÚget_default_backend_instancer3   ^   s   € ô
 ”H×,Ñ,Ñ-Ð-r1   c           	      ó2   • [        U S[        U SS 5      5      $ )NÚ_poolÚ_workers)Úgetattr©Úbackends    r2   Úget_workersr:   f   s   € Ü�7˜G¤W¨W°jÀ$Ó%GÓHÐHr1   c                 ó
   • X-  $ r.   r0   )ÚxÚys     r2   Údivisionr>   j   s	   € Ø‰5€Lr1   c                 ó   • U S-  $ ©Né   r0   ©r<   s    r2   ÚsquarerC   n   s   € Øˆa‰4€Kr1   c                   ó   • \ rS rSrSrS rSrg)ÚMyExceptionWithFinickyInitér   z,An exception class with non trivial __init__c                 ó   • g r.   r0   )ÚselfÚaÚbÚcÚds        r2   Ú__init__Ú#MyExceptionWithFinickyInit.__init__u   s   € Ør1   r0   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rM   Ú__static_attributes__r0   r1   r2   rE   rE   r   s
   † Ù6õr1   rE   Fc                 óH   • U S:X  a  U(       a  [        SSSS5      e[        eU $ )Né   rI   rJ   rK   rL   )rE   Ú
ValueError)r<   Úcustom_exceptions     r2   Úexception_raiserrZ   y   s4   € ØˆAƒvö  ô ' s¨C°°cÓ:ð	
ô ð	
ð
 €Hr1   c                 ó:   • [         R                  " S5        [        e)Ngš™™™™™©?)Útimer   ÚKeyboardInterruptrB   s    r2   Úinterrupt_raiserr^   ƒ   s   € Ü‡J‚JˆtÔÜ
Ðr1   c                 ó   • U S-  U-   U-   $ )zFA module-level function so that it can be spawn with
multiprocessing.
rA   r0   )r<   r=   Úzs      r2   Úfra   ˆ   s   € ð ˆa‰4�!‰8�a‰<Ðr1   c                  óD   • [        [        R                  " 5       S   5      $ ©Nr   )Útyper   Úget_active_backendr0   r1   r2   Ú_active_backend_typerf   �   s   € Ü”×+Ò+Ó-¨aÑ0Ó1Ð1r1   c                 ó@   • [        XS9" S [        S5       5       5      $ )N©Ún_jobsr9   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   ©r#   rC   ©Ú.0Úis     r2   Ú	<genexpr>Ú parallel_func.<locals>.<genexpr>”   s   é € ð :Ú$,˜qŒ”Œ˜×Ð¢Hùó   ‚"$é   ©r!   Úrange)Úinner_n_jobsr9   s     r2   Úparallel_funcrv   “   s%   € Ü˜<Ò9ñ :Ü$)¨!¤Hó:ó ð r1   c                  ó$   • [        5       S:”  d   eg rc   )r"   r0   r1   r2   Útest_cpu_countrx   š   s   € Ü‹;˜‹?Ð‰?r1   c                  ó$   • [        5       S:”  d   eg rc   ©r$   r0   r1   r2   Útest_effective_n_jobsr{   ž   s   € ÜÓ Ó!Ð!Ñ!r1   Úcontextzbackend_n_jobs, expected_n_jobs)rr   rr   éÿÿÿÿ©ri   ©Nr   )zpositive-intznegative-intÚNone)Úidsc                 ó„   • U " SUS9   [        S S9U:X  d   e S S S 5        [        S S9S:X  d   eg ! , (       d  f       N= f)Nr*   r~   r   rz   )r|   Úbackend_n_jobsÚexpected_n_jobss      r2   Útest_effective_n_jobs_Noner…   ¢   sF   € ñ 
� ^Ó	4ô   tÑ,°Ó?Ð?Ñ?÷ 
5ô
  4Ñ(¨AÓ-Ð-Ñ-÷ 
5Õ	4ús   ˆ1±
?r9   ri   )r   rA   r}   éþÿÿÿÚverbose)rA   é   éd   c                 ó    • [        S5       Vs/ s H  n[        U5      PM     sn[        XUS9" S [        S5       5       5      :X  d   eg s  snf )Né   ©ri   r9   r‡   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   ©rm   r<   s     r2   ro   Ú'test_simple_parallel.<locals>.<genexpr>¾   s   é € Ð+¢(˜Q„gŒf„o�a×Ð¢(ùrq   ©rt   rC   r!   )r9   ri   r‡   r<   s       r2   Útest_simple_parallelr‘   ¸   sM   € ô  % QœxÓ(šx˜!ŒF�1ŽI™xÑ(¬HØ°ò-á+¤%¨¤(Ó+ó-,ó ,ð ,ñ ,ùÒ(s   ŽArA   c                 ó®  • Sn[         R                  " S5      n " S S[        5      nU" XSS9nU" [        U5       Vs/ s H  n[	        [
        5      " U5      PM     sn5        [        5       nUR                   HB  nUR                  U5      =n	(       d  M  U	R                  5       u  p«UR                  Xº-
  5        MD     [        U5      S:X  d   eg s  snf )Nr‰   z(Done\s+\d+ out of \d+ \|)c                   ó   • \ rS rSr/ rS rSrg)Ú/test_parallel_pretty_print.<locals>.ParallelLogéÇ   c                 ó:   • U R                   R                  U5        g r.   )ÚmessagesÚappend)rH   Úmsgs     r2   Ú_printÚ6test_parallel_pretty_print.<locals>.ParallelLog._printÊ   s   € Ø�M‰M× Ñ  Õ%r1   r0   N)rP   rQ   rR   rS   r—   rš   rU   r0   r1   r2   ÚParallelLogr”   Ç   s   † Øˆõ	&r1   rœ   i'  rŒ   r   )ÚreÚcompiler!   rt   r#   ra   Úsetr—   ÚsearchÚspanÚaddÚlen)r9   ri   Ún_tasksÚpatternrœ   Úexecutorrn   ÚlensÚmessageÚsrI   rJ   s               r2   Útest_parallel_pretty_printrª   Á   s±   € ð €GÜ�jŠjÐ6Ó7€Gô&”hô &ñ  &À5ÑI€HÙ¤U¨7¤^Ó4¢^ Œg”aŒj˜Žm¡^Ñ4Ô5Ü‹5€DØ×$Ô$ˆØ—‘˜wÓ'Ð'ˆ1×'Ø—6‘6“8‰DˆAØ�H‰H�Q‘UŽOñ %ô ˆt‹9˜‹>Ð‰>ùò 5s   ¾Cc                 ób  • UR                  [        R                  " 5       SSS9  [        R                  " SS9 n[        SU S9" S [        S	5       5       5      nU/ S
Q:X  d   e S S S 5        W Vs/ s HA  nS[        UR                  5      ;  d  M  [        UR                  [        5      (       a  M?  UPMC     nnU S;   d  [        U [        5      (       a.  SnU Vs/ s H  oE[        UR                  5      ;  d  M  UPM!     nn[        U5      S:X  d   eg ! , (       d  f       N·= fs  snf s  snf )NÚnameÚ!some_new_name_for_the_main_thread)Útargetr¬   ÚvalueT©ÚrecordrA   rh   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rŽ   s     r2   ro   Ú6test_main_thread_renamed_no_warning.<locals>.<genexpr>ä   s   é € ð 6
Ú(0 1ŒG”FŒO˜A×Ðªùrq   rr   )r   r   é   zworker timeout)Nr(   z3multi-threaded, use of fork() may lead to deadlocksr   )Úsetattrr*   Úcurrent_threadÚwarningsÚcatch_warningsr!   rt   Ústrr¨   Ú
isinstanceÚDeprecationWarningr   r£   )r9   ÚmonkeypatchÚwarninfoÚresultsÚwÚmessage_parts         r2   Ú#test_main_thread_renamed_no_warningrÁ   ×   s'  € ð ×ÑÜ×'Ò'Ó)ØØ1ð ñ ô 
×	 Ò	 ¨Ò	-°Ü !¨WÒ5ñ 6
Ü(-¨a¬ó6
ó 
ˆð š)Ó#Ð#Ñ#÷	 
.ñ óâˆAØ¤3 q§y¡y£>Ñ1ó 	
ô ˜1Ÿ9™9Ô&8×9÷ 	
Ùð ð ð Ð+Ó+¬zØÔ'÷0ñ 0ð MˆÙ'ÓNšx˜!¼sÀ1Ç9Á9»~Ñ+M—A™xˆÐNô
 ˆx‹=˜AÓÐÑ÷9 
.Õ	-üòùò Os)   ¹+DÁ1D'ÂD'Â3D'ÃD,Ã<D,Ä
D$c                 ó–  • [         R                  " SS9 n[         R                  " S5        [        XS9  S S S 5        W Vs/ s H  oDR                  PM     nnU(       aL  U(       aD  [        S U 5       5      n[        (       a  [        U5      S:¬  O[        U5      S:H  nU=(       a    U$ gU(       a   eg! , (       d  f       N†= fs  snf )NTr°   Úalways)r9   ru   c              3   óF   #   • U  H  nS UR                   S   ;   v •  M     g7f)zbacked parallel loops cannotr   N)Úargs)rm   Úeachs     r2   ro   Ú)_assert_warning_nested.<locals>.<genexpr>
  s!   é € ð 'ÚKSÀ4Ð.°$·)±)¸A±,Ö>Ê8ùó   ‚!r   F)r·   r¸   Úsimplefilterrv   r¨   Úallr   r£   )r9   ru   Úexpectedr½   r¿   Úwarnings_are_correctÚwarnings_have_the_right_lengths          r2   Ú_assert_warning_nestedrÎ     s®   € Ü	×	 Ò	 ¨Ò	-°Ü×Ò˜hÔ'Ü˜gÒA÷ 
.ñ $,Ó,¢8˜a—	”	¡8€HÐ,ÞÞÜ#&ñ 'ÙKSó'ó $Ð ÷ '6¢o”�H“ Ò"¼3¸x»=ÈAÑ;Mð +ð (×JÐ,JÐJàæÐˆ|Ø÷) 
.Õ	-üò -s   • B5ÁCÂ5
Cz%parent_backend,child_backend,expected))r)   r(   T)r)   r)   F)r(   r(   T)r(   r)   T)r*   r(   T)r*   r)   Tc                 óì   ^^• [        SU S9" U4S j[        S5       5       5        [        SU S9" UU4S j[        S5       5       5      nU S:X  a  [        U5      (       d   eg [        U5      (       d   eg )NrA   rh   c              3   óN   >#   • U  H  n[        [        5      " TS SS9v •  M     g7f)r   F©r9   ru   rË   N©r#   rÎ   ©rm   Ú_Úchild_backends     €r2   ro   Ú0test_nested_parallel_warnings.<locals>.<genexpr>(  s.   øé € ð /ò ˆAô 	Ô&Ô'Ø!°¸Eö	
ò ùó   ƒ"%r‹   c              3   óN   >#   • U  H  n[        [        5      " TS TS9v •  M     g7f)rA   rÑ   NrÒ   )rm   rÔ   rÕ   rË   s     €€r2   ro   rÖ   0  s.   øé € ð 5ò ˆAô 	Ô&Ô'Ø!°¸Hö	
ò ùr×   r*   )r!   rt   ÚanyrÊ   )Úparent_backendrÕ   rË   Úress    `` r2   Útest_nested_parallel_warningsrÜ     sq   ù€ ô �A˜~Ò.ô /ô �q”ó	/ô ô ˜! ^Ò
4õ 5ô �q”ó	5ó €Cð ˜Ó$Ü�3�x‰xˆ‰xä�3�x‰xˆ‰xr1   )r)   r(   r*   c                 ó’   • S/nS n[         R                  " X!4S9nUR                  5         UR                  5         US   (       d   eg )NFc                 óè   • [         R                  " SS9 n[        SS9" S [        S5       5       5        S S S 5        [	        [        W5      5        [        U5      S:H  U S'   g ! , (       d  f       N4= f)NTr°   rA   r~   c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7f)çš™™™™™¹?N©r#   r   ©rm   rÔ   s     r2   ro   ÚPtest_background_thread_parallelism.<locals>.background_thread.<locals>.<genexpr>F  s   é € ÐEºH°qœw¤uœ~¨c×2Ð2ºHùrq   r´   r   )r·   r¸   r!   rt   Úprintr£   )Úis_run_parallelr½   s     r2   Úbackground_threadÚ=test_background_thread_parallelism.<locals>.background_threadD  sV   € Ü×$Ò$¨DÒ1°XÜ˜AÒÑE¼EÀ!¼HÓEÔE÷ 2äŒc�(‹mÔÜ  ›]¨aÑ/ˆ˜Ò÷ 2Õ1ús   • A#Á#
A1)r®   rÅ   r   )r*   ÚThreadÚstartÚjoin)r9   rå   ræ   Úts       r2   Ú"test_background_thread_parallelismrì   ?  sF   € ð �g€Oò0ô 	×ÒÐ 1Ð8JÑK€AØ‡G�G„IØ‡F�F„HØ˜1×ÐÑr1   c                 óD   • [        SU S9" S [        S5       5       5        g )NrA   rh   c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7f©ç{®Gáz„?Nrk   râ   s     r2   ro   Únested_loop.<locals>.<genexpr>Q  s   é € Ð'PÂxÀ!¬´¬¸×(=Ð(=Âxùrq   rs   r8   s    r2   Únested_looprò   P  s   € Ü�A˜wÒ'Ñ'PÄuÈQÄxÓ'PÕPr1   rÕ   rÚ   c                 óL   ^• [        SU S9" U4S j[        S5       5       5        g )NrA   rh   c              3   óN   >#   • U  H  n[        [        5      " T5      v •  M     g 7fr.   )r#   rò   rÓ   s     €r2   ro   Ú#test_nested_loop.<locals>.<genexpr>W  s!   øé € ð /Ú5=°Œ”Ô˜]×+Ð+²Xùr×   rs   )rÚ   rÕ   s    `r2   Útest_nested_looprö   T  s%   ø€ ô �A˜~Ò.ô /Ü5:¸1´Xó/õ r1   c                 ó   • [         er.   )rX   r8   s    r2   Úraise_exceptionrø   \  s   € Ü
Ðr1   c                  óþ   • [        [        5         [        SSS9 n U " [        [        5      " S5      [        [
        5      " S5      /5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrA   r)   rh   )r   rX   r!   r#   rò   rø   )r   s    r2   Ú)test_nested_loop_with_exception_with_lokyrú   `  sT   € ä	”
Õ	Ü˜Q¨Ò/°8Ù”gœkÔ*¨6Ó2´G¼OÔ4LÈVÓ4TÐUÔV÷ 0÷ 
Ð	ß/Õ/ú÷ 
Õ	ús"   �A.›1AÁA.Á
A+	Á'A.Á.
A<c                  óŒ   ^ • [        SS9m [        SSS9" U 4S j[        S5       5       5        T R                  5       (       d   eg)z1Input is mutable when using the threading backendr‹   )ÚmaxsizerA   r*   rh   c              3   óZ   >#   • U  H   n[        TR                  5      " S 5      v •  M"     g7f©r   N)r#   Úput)rm   rÔ   Úqs     €r2   ro   Ú1test_mutate_input_with_threads.<locals>.<genexpr>j  s!   øé € Ð+PÂxÀ!¬G°A·E±E¬N¸1×,=Ð,=Âxùs   ƒ(+N)r   r!   rt   Úfull)r   s   @r2   Útest_mutate_input_with_threadsr  g  s5   ø€ ä�aÑ€AÜ�A˜{Ò+Ô+PÄuÈQÄxÓ+PÔPØ�6‰6�8‰8€O‰8r1   )r   rA   rr   c                 óŽ   • [        S5      nU Vs/ s H  n[        USS9PM     sn[        U S9" S U 5       5      :X  d   egs  snf )z.Check the keyword argument processing of pmap.é
   r   ©r=   r~   c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7f©r   r  N©r#   ra   rŽ   s     r2   ro   Ú'test_parallel_kwargs.<locals>.<genexpr>r  s   é € ð ?Ú$'˜qŒ”Œ
�1˜Ö¢Cùó   ‚!#N)rt   ra   r!   )ri   Úlstr<   s      r2   Útest_parallel_kwargsr  n  sP   € ô �‹)€CÙ"Ó#šs˜!ŒAˆa�1ŒI™sÑ#¤x°vÒ'>ñ ?Ù$'ó?ó (ó ð ñ ùÒ#s   �Ac                 ó  • [        S5      nU Vs/ s H  n[        USS9PM     nn[        SU S9 nUR                  nX4" S U 5       5      :X  d   eX4" S U 5       5      :X  d   e[        b#  [        U5      [        UR                  5      L d   eS S S 5        [        b  [        WR                  5      b   eUW" S U 5       5      :X  d   e[        b  [        UR                  5      b   eg g s  snf ! , (       d  f       Nh= f)	Nr  r   r  r´   rh   c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7fr  r	  rŽ   s     r2   ro   Ú3test_parallel_as_context_manager.<locals>.<genexpr>ƒ  ó   é € Ð=º°AœW¤QœZ¨¨QÖ/ºùr  c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7fr  r	  rŽ   s     r2   ro   r  „  r  r  c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7fr  r	  rŽ   s     r2   ro   r  �  s   é € Ð9²S°œ¤œ A¨Ö+²Sùr  )rt   ra   r!   Ú_backendr   r:   )r9   r  r<   rË   ÚpÚmanaged_backends         r2   Ú test_parallel_as_context_managerr  w  sú   € ä
�‹)€CÙ#&Ó'¢3˜a”�!�q”	¡3€HÐ'ä	˜ GÒ	,°ð Ÿ*™*ˆð ˜1Ñ=¹Ó=Ó=Ó=Ð=Ð=Ø˜1Ñ=¹Ó=Ó=Ó=Ð=Ð=ô ‰>Ü˜Ó/´;¸q¿z¹zÓ3JÒJÐJÐJ÷ 
-ô  
�~Ü˜1Ÿ:™:Ó&Ñ.Ð.Ð.ð ‘qÑ9±SÓ9Ó9Ó9Ð9Ð9Ü	�~Ü˜1Ÿ:™:Ó&Ñ.Ð.Ñ.ð ùò/ (ç	,Õ	,ús   �C,°AC1Ã1
C?c                  óº   ^ •  " S S[         5      m [        [        SS9   [        SSS9" U 4S j[	        S	5       5       5        S
S
S
5        g
! , (       d  f       g
= f)zXCheck that pmap captures the errors when it is passed an object
that cannot be pickled.
c                   ó   • \ rS rSrS rSrg)Ú1test_parallel_pickling.<locals>.UnpicklableObjecti›  c                 ó   • [        S5      e)NÚ123)ÚRuntimeError©rH   s    r2   Ú
__reduce__Ú<test_parallel_pickling.<locals>.UnpicklableObject.__reduce__œ  s   € Ü˜uÓ%Ð%r1   r0   N)rP   rQ   rR   rS   r  rU   r0   r1   r2   ÚUnpicklableObjectr  ›  s   † õ	&r1   r!  zthe task to send©ÚmatchrA   r)   rh   c              3   óX   >#   • U  H  n[        [        5      " T" 5       5      v •  M!     g 7fr.   ©r#   Úid)rm   rÔ   r!  s     €r2   ro   Ú)test_parallel_pickling.<locals>.<genexpr>   s$   øé € ð +
Ú6?°ŒG”BŒKÑ)Ó+×,Ð,²iùó   ƒ'*r  N)Úobjectr   r   r!   rt   )r!  s   @r2   Útest_parallel_picklingr*  •  sH   ø€ ô&œFô &ô 
”Ð%8Ó	9Ü˜ 6Ò*ô +
Ü6;¸B´ió+
ô 	
÷ 
:×	9Ö	9ús   Ÿ$AÁ
AÚ	byteorder)Ú<Ú>Ú=Ú
max_nbytesÚ1Mc                 óŒ  ^^• S m[         R                  " S5      R                  S5      R                  U  S35      mTR                  R
                  n[        SSUS9" UU4S j[        S	5       5       5      nU HG  u  pEXR:X  d   eXTR                  R
                  :X  d   e[         R                  R                  TU5        MI     g )
Nc                 ó0   • X R                   R                  4$ r.   )Údtyper+  rB   s    r2   Úinspect_byteorderÚ=test_parallel_byteorder_corruption.<locals>.inspect_byteorderª  s   € Ø—'‘'×#Ñ#Ð#Ð#r1   é   )rA   rr   Úi4rA   r)   )ri   r9   r/  c              3   óF   >#   • U  H  n[        T5      " T5      v •  M     g 7fr.   ©r#   )rm   rÔ   r4  r<   s     €€r2   ro   Ú5test_parallel_byteorder_corruption.<locals>.<genexpr>±  s#   øé € ð GÚ/7¨!ŒÐ!Ô" 1×%Ð%ªxùó   ƒ!rr   )
r   ÚarangeÚreshapeÚviewr3  r+  r!   rt   ÚtestingÚassert_array_equal)r+  r/  Úinitial_np_byteorderÚresultÚ
x_returnedÚbyteorder_in_workerr4  r<   s         @@r2   Ú"test_parallel_byteorder_corruptionrE  ¥  s±   ù€ ò
$ô 	�	Š	�!‹×Ñ˜VÓ$×)Ñ)¨Y¨K°rÐ*:Ó;€AàŸ7™7×,Ñ,Ðä˜Q¨¸:ÒFõ GÜ/4°Q¬xóGó €Fó ,2Ñ'ˆ
Ø"Ó:Ð:Ð:Ø"×&6Ñ&6×&@Ñ&@Ó@Ð@Ð@Ü
�
‰
×%Ñ% a¨Ö4ò ,2r1   c                 ód   • [        [        SU SS9" S [        S5       5       5      5      S:X  d   eg )NrA   é   ©ri   r9   Útimeoutc              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7f)gü©ñÒMbP?Nrá   rŽ   s     r2   ro   Ú0test_parallel_timeout_success.<locals>.<genexpr>À  s   é € ð <Ú/8¨!”œ”˜u×%Ð%ªyùrq   r  )r£   r!   rt   r8   s    r2   Útest_parallel_timeout_successrL  »  sB   € ô 	Ü˜A w¸Ò;ñ <Ü/4°R¬yó<ó ó	
ð
 ó	ðñ	r1   c                 ó˜   • [        [        5         [        SU SS9" S [        S5       5       5        S S S 5        g ! , (       d  f       g = f)NrA   rð   rH  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7f©r  Nrá   rŽ   s     r2   ro   Ú-test_parallel_timeout_fail.<locals>.<genexpr>Í  s   é € ð :
Ú(1 1ŒG”EŒN˜2×Ðª	ùrq   r  )r   r   r!   rt   r8   s    r2   Útest_parallel_timeout_failrQ  È  s:   € ô 
”Õ	Ü˜ 7°DÒ9ñ :
Ü(-¨b¬	ó:
ô 	
÷ 
×	Ö	úó	   �";»
A	Ú
sequentialÚ	return_asÚ	generatorÚgenerator_unorderedc           
      óþ   • [        [        5         [        [        SXSS9" S [	        S5       5       5      5        S S S 5        [        [        SXSS9" S [	        S5       5       5      5        g ! , (       d  f       N9= f)NrA   rà   )ri   r9   rT  rI  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7frO  rá   rŽ   s     r2   ro   Ú<test_parallel_timeout_fail_with_generator.<locals>.<genexpr>Ú  s    é € ð RÚ,5 q”œ”˜r×"Ð"ªIùrq   r  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7frï   rá   rŽ   s     r2   ro   rY  á  s    é € ð M
Ú*3 QŒG”EŒN˜4× Ð ª)ùrq   )r   r   Úlistr!   rt   ©r9   rT  s     r2   Ú)test_parallel_timeout_fail_with_generatorr]  Ò  st   € ô 
”Õ	ÜÜ˜A wÈSÒQñ RÜ,1°"¬IóRó ô	
÷ 
ô 	Ü˜ 7ÈÒLñ M
Ü*/°¬)óM
ó 	
õ÷ 
Õ	ús   �+A.Á.
A<c                 ó¾  • [         GbÀ  [        [        5         [        SU S9" [	        SS5       VVs/ s H  u  p[        [        5      " X5      PM     snn5        S S S 5        [        [        5         [        SU S9" S Vs/ s H  n[        [        5      " U5      PM     sn5        S S S 5        [        SU S9 n[        UR                  5      c   e[        UR                  5      n[        [        5         U" [	        SS5       VVs/ s H  u  p[        [        5      " X5      PM     snn5        S S S 5        [        UR                  5      c   e[        UR                  5      ULd   e[        S5       Vs/ s H  n[        USS9PM     snU" S [        S5       5       5      :X  d   e[        UR                  5      n[        [        5         U" S Vs/ s H  n[        [        5      " U5      PM     sn5        S S S 5        [        UR                  5      c   e[        UR                  5      ULd   e[        S5       Vs/ s H  n[        USS9PM     snU" S	 [        S5       5       5      :X  d3   UR                  UR                  UR                  UR                   45       e S S S 5        [        WR                  5      b   eOK[        [        5         [        SS
9" S Vs/ s H  n[        [        5      " U5      PM     sn5        S S S 5        [        [        5         [        SS
9" [	        SS5       VVs/ s H  u  p[        [        5      " X5      PM     snn5        S S S 5        [        ["        5         [        SSS9" S [        S5       5       5        S S S 5        g s  snnf ! , (       d  f       GNX= fs  snf ! , (       d  f       GN#= fs  snnf ! , (       d  f       GN±= fs  snf s  snf ! , (       d  f       GN= fs  snf ! , (       d  f       GNm= fs  snf ! , (       d  f       GN = fs  snnf ! , (       d  f       NÞ= f! , (       d  f       g = f)NrA   rh   )r   r   )r   r   r  r   r  c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7fr  r	  rŽ   s     r2   ro   Ú%test_error_capture.<locals>.<genexpr>  ó   é € ð >Ú,5 q”œ”
˜1 Ö"ªIùr  c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7fr  r	  rŽ   s     r2   ro   r`    ra  r  r~   r   )ri   r‡   c              3   óJ   #   • U  H  n[        [        5      " US S9v •  M     g7f)T)rY   N©r#   rZ   rl   s     r2   ro   r`  +  s   é € ÐTÊ)ÀQŒWÔ%Ô& q¸4Ö@Ê)ùr  rG  )r   r   ÚZeroDivisionErrorr!   Úzipr#   r>   r]   r^   r:   r  rt   ra   Ú
_iteratingÚn_completed_tasksÚn_dispatched_tasksÚ	_abortingrE   )r9   r<   r=   r   Úoriginal_workerss        r2   Útest_error_capturerl  ç  s‘  € ô
 
‚~ÜÔ%Õ&Ü˜A wÒ/Ü58¸ÀÔ5HÔIÒ5H©T¨Q”œÔ" 1Ö(Ñ5HÒIô÷ 'ô
 Ô%Õ&Ü˜A wÒ/Ù7=Ó>²v°!”Ô)Ô*¨1Ö-±vÑ>ô÷ 'ô ˜Q¨Ò0°HÜ˜x×0Ñ0Ó1Ñ=Ð=Ð=Ü*¨8×+<Ñ+<Ó=ÐäÔ)Õ*Ù¼cÀ&È&Ô>QÔRÒ>Q±d°aœ'¤(Ô+¨AÖ1Ñ>QÒRÔS÷ +ô
 ˜x×0Ñ0Ó1Ñ=Ð=Ð=ô ˜x×0Ñ0Ó1Ð9IÒIÐIÐIä',¨R¤yÓ1¢y !”A�a˜1”I¡yÑ1±Xñ >Ü,1°"¬Ió>ó 6ó ð ð ô  +¨8×+<Ñ+<Ó=ÐÜÔ)Õ*ÙÁÓGÂ¸1œ'Ô"2Ô3°AÖ6ÁÑGÔH÷ +ô ˜x×0Ñ0Ó1Ñ=Ð=Ð=ô ˜x×0Ñ0Ó1Ð9IÒIÐIÐIä',¨R¤yÓ1¢y !”A�a˜1”I¡yÑ1±Xñ >Ü,1°"¬Ió>ó 6ó ð ð ×#Ñ#Ø×*Ñ*Ø×+Ñ+Ø×"Ñ"ð	óñ ÷9 1ôN ˜8×,Ñ,Ó-Ñ5Ð5Ñ5äÔ%Õ&Ü˜AÒÁfÓMÂfÀ¤Ô(8Ô 9¸!Ö <ÁfÑMÔN÷ 'ô
 
Ô!Õ	"Ü˜ÒÄÀFÈFÔ@SÔTÒ@S¹¸œG¤HÔ-¨aÖ3Ñ@SÒTÔU÷ 
#ô 
Ô*Õ	+Ü˜ 1Ò%ÙTÌ%ÐPRÌ)ÓTô	
÷ 
,Ð	+ùóu J÷ 'Ö&üò ?÷ 'Ö&üó S÷ +Ö*üò 2ùò H÷ +Ö*üò 2÷9 1Ö0üòT  N÷ 'Ö&üó U÷ 
#Õ	"ú÷ 
,Õ	+úsþ   ˜N,²!N&ÁN,Á2OÂN>
Â OÂ9=PÃ6OÄ!OÄ)OÄ1APÅ8O-ÆAPÇO7ÇO2Ç5O7Ç<APÉP	ÉAPËP%Ë&P 
ÌP%Ì#P=Ì<!P7ÍP=Í<!QÎ&N,Î,
N;Î>OÏ
OÏOÏ
O*	Ï%PÏ2O7Ï7
P	ÐPÐ
PÐ P%Ð%
P4Ð7P=Ð=
QÑ
Qc           	      ó¸  • SS jn[        SU S9 n[        [        SS9   U" S U" SS9 5       5        S S S 5        [        [        SS9   U" S	 U" S
S9 5       5        S S S 5        [        [        SS9   U" S U" SS9 5       5        S S S 5        S S S 5        g ! , (       d  f       Nk= f! , (       d  f       NR= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   c              3   óX   #   • [        S5       H  nX:X  a  [        S5      eUv •  M     g 7f)Né   úIterator Raising Error)rt   rX   )Úraise_atrn   s     r2   Úmy_generatorÚ1test_error_in_task_iterator.<locals>.my_generator2  s)   é € Ü�r–ˆAØ‹}Ü Ð!9Ó:Ð:ØŒGò ùs   ‚(*rA   rh   rp  r"  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   Ú.test_error_in_task_iterator.<locals>.<genexpr>;  ó   é € ÐCÒ*B QŒg”fŒo˜a× Ð Ò*Bùrq   )rq  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   ru  @  rv  rq   r‹   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   ru  D  s   é € ÐDÒ*C QŒg”fŒo˜a× Ð Ò*Cùrq   é   ©r   )r!   r   rX   )r9   rr  r  s      r2   Útest_error_in_task_iteratorr{  /  s±   € ôô 
˜ GÒ	,°ä”JÐ&>Ó?ÙÑC©,ÀÒ*BÓCÔC÷ @ô
 ”JÐ&>Ó?ÙÑC©,ÀÒ*BÓCÔC÷ @ô ”JÐ&>Ó?ÙÑD©,ÀÒ*CÓDÔD÷ @÷ 
-Ð	,ç?Õ?ú÷
 @Õ?ú÷ @Õ?ú÷ 
-Õ	,úsQ   �CŸB³CÁ	B)ÁCÁ3B:ÂCÂ
B&	Â"CÂ)
B7	Â3CÂ:
C	ÃCÃ
Cc                 ó,   • U R                  SU-  5        g )NzConsumed %s)r˜   )ÚqueueÚitems     r2   Úconsumerr  G  s   € Ø	‡L�L� Ñ%Õ&r1   zbatch_size, expected_queue)ú
Produced 0ú
Consumed 0ú
Produced 1ú
Consumed 1ú
Produced 2ú
Consumed 2ú
Produced 3ú
Consumed 3ú
Produced 4ú
Consumed 4ú
Produced 5ú
Consumed 5r´   )r€  r‚  r„  r†  r�  rƒ  r…  r‡  rˆ  rŠ  r‰  r‹  c                 ó–   ^• [        5       mU4S jn[        SXS9" U4S jU" 5        5       5        TU:X  d   e[        T5      S:X  d   eg)z=Test that with only one job, Parallel does act as a iterator.c               3   ób   >#   • [        S5       H  n TR                  SU -  5        U v •  M     g 7f©Nr6  zProduced %i©rt   r˜   ©rn   r}  s    €r2   ÚproducerÚ'test_dispatch_one_job.<locals>.producerx  ó*   øé € Ü�q–ˆAØ�L‰L˜¨Ñ*Ô+ØŒGò ùó   ƒ,/r   ©ri   Ú
batch_sizer9   c              3   óP   >#   • U  H  n[        [        5      " TU5      v •  M     g 7fr.   ©r#   r  )rm   r<   r}  s     €r2   ro   Ú(test_dispatch_one_job.<locals>.<genexpr>}  s#   øé € ð ?Ú-7¨Œ”Ô˜% ×#Ð#ªZùó   ƒ#&é   N)r[  r!   r£   )r9   r–  Úexpected_queuer‘  r}  s       @r2   Útest_dispatch_one_jobr�  K  sT   ø€ ôV ‹F€Eõô
 �A *Ò>ô ?Ù-5¬Zó?ô ð �NÓ"Ð"Ð"Üˆu‹:˜ÓÐÑr1   c                 óT  ^• [         R                  " 5       nUR                  5       mU4S jn[        SSSU S9" U4S jU" 5        5       5        [        T5      nUS   S:X  d   eUS	S
 R	                  S5      nUS:”  d   eUR	                  S5      nXT:”  d   e[        T5      S:X  d   eg	)zJCheck that using pre_dispatch Parallel does indeed dispatch items
lazily.
c               3   ób   >#   • [        S5       H  n TR                  SU -  5        U v •  M     g 7frŽ  r�  r�  s    €r2   r‘  Ú/test_dispatch_multiprocessing.<locals>.producer�  r“  r”  rA   r   rr   )ri   r–  Úpre_dispatchr9   c              3   óP   >#   • U  H  n[        [        5      " TS 5      v •  M     g7f)rÙ   Nr˜  )rm   rÔ   r}  s     €r2   ro   Ú0test_dispatch_multiprocessing.<locals>.<genexpr>’  s$   øé € ð FÚ1;¨AŒ”Ô˜% ×'Ð'²ùrš  r   r€  Nr´   zConsumed anyr}   r†  r›  )r   ÚManagerr[  r!   Úindexr£   )r9   Úmanagerr‘  Úqueue_contentsÚfirst_consumption_indexÚproduced_3_indexr}  s         @r2   Útest_dispatch_multiprocessingrª  „  s»   ø€ ô �jŠj‹l€GØ�L‰L‹N€Eõô
 �A !°!¸WÒEô FÙ19´óFô ô ˜%“[€NØ˜!Ñ Ó,Ð,Ð,ð -¨R¨aÐ0×6Ñ6°~ÓFÐØ" RÓ'Ð'Ð'à%×+Ñ+¨LÓ9ÐØÓ5Ð5Ð5äˆu‹:˜ÓÐÑr1   c                  óÀ   • [        SSSS9 n U " S [        S5       5       5        U R                  R                  5       S:X  d   e S S S 5        g ! , (       d  f       g = f)NrA   Úautor*   r•  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   Ú/test_batching_auto_threading.<locals>.<genexpr>ª  ó   é € Ð	.¢+˜QŒ'”"Œ+�a�.ˆ.¢+ùrq   éˆ  r   ©r!   rt   r  Úcompute_batch_size)r  s    r2   Útest_batching_auto_threadingr³  ¤  sL   € ô
 
˜ v°{Ò	CÀqÙ	Ñ	.¤%¨¤+Ó	.Ô.Ø�z‰z×,Ñ,Ó.°!Ó3Ð3Ñ3÷ 
D×	CÖ	Cúó   Œ9AÁ
Ac                 óÀ   • [        SSU S9 nU" S [        S5       5       5        UR                  R                  5       S:”  d   e S S S 5        g ! , (       d  f       g = f)NrA   r¬  r•  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   Ú2test_batching_auto_subprocesses.<locals>.<genexpr>²  r¯  rq   r°  r   r±  )r9   r  s     r2   Útest_batching_auto_subprocessesr¸  ®  sN   € ô 
˜ v°wÒ	?À1Ù	Ñ	.¤%¨¤+Ó	.Ô.ð
 �z‰z×,Ñ,Ó.°Ó2Ð2Ñ2÷ 
@×	?Ö	?úr´  c                  ó˜   • [        [        5         [        SSSS9" S [        S5       5       5        SSS5        g! , (       d  f       g= f)zCMake sure that exception raised during dispatch are indeed capturedrA   é   r   )ri   r¡  r‡   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rd  rl   s     r2   ro   Ú*test_exception_dispatch.<locals>.<genexpr>½  s!   é € ð 7
Ú2;¨QŒGÔ$Ô% a×(Ð(²)ùrq   rG  N)r   rX   r!   rt   r0   r1   r2   Útest_exception_dispatchr½  º  s8   € ä	”
Õ	Ü˜¨°AÒ6ñ 7
Ü27¸´)ó7
ô 	
÷ 
×	Ö	úrR  c                 óB   • [        SS9" S [        S5       5       5        g )NrA   r~   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rd  ©rm   Újs     r2   ro   Ú(nested_function_inner.<locals>.<genexpr>Ã  s   é € ÐGºY¸”wÔ/Ô0°×3Ð3ºYùrq   rG  rs   ©rn   s    r2   Únested_function_innerrÄ  Â  s   € Ü�AÒÑG¼UÀ2¼YÓGÕGr1   c                 óB   • [        SS9" S [        S5       5       5        g )NrA   r~   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   )r#   rÄ  rÀ  s     r2   ro   Ú(nested_function_outer.<locals>.<genexpr>Ç  s   é € ÐLÂ)¸Q”wÔ4Ô5°a×8Ð8Â)ùrq   rG  rs   rÃ  s    r2   Únested_function_outerrÈ  Æ  s   € Ü�AÒÑLÄ%ÈÄ)ÓLÕLr1   z'https://github.com/joblib/loky/pull/255©Úreasonc                 óz  • [        [        5       n[        SU S9" S [        S5       5       5        SSS5        [	        WR
                  UR                  UR                  5      nSR                  U5      nSU;   d   eSU;   d   eS	U;   d   e[        UR                  5      [        L d   eg! , (       d  f       N�= f)
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.
rA   rh   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   )r#   rÈ  rl   s     r2   ro   Ú1test_nested_exception_dispatch.<locals>.<genexpr>Ô  s!   é € ð ,
Ú7@°!ŒGÔ)Ô*¨1×-Ð-²yùrq   rG  NÚ rÈ  rÄ  rZ   )	r   rX   r!   rt   r	   rd   r¯   Útbrê   )r9   ÚexcinfoÚreport_linesÚreports       r2   Útest_nested_exception_dispatchrÓ  Ê  s§   € ô 
”
Ô	˜wÜ˜ 7Ò+ñ ,
Ü7<¸R´yó,
ô 	
÷ 
ô $ G§L¡L°'·-±-ÀÇÁÓL€LØ�W‰W�\Ó"€FØ" fÓ,Ð,Ð,Ø" fÓ,Ð,Ð,Ø Ó'Ð'Ð'ä�—‘Ó¤*Ò,Ð,Ñ,÷ 
Õ	ús   �!B,Â,
B:c                   ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚFakeParallelBackendiã  z8Pretends to run concurrently while running sequentially.Nc                 ó>   • U R                  U5      U l        X l        U$ r.   )r$   ri   r   )rH   ri   r   Úbackend_argss       r2   Ú	configureÚFakeParallelBackend.configureæ  s   € Ø×+Ñ+¨FÓ3ˆŒØ ŒØˆr1   c                 ó\   • US:  a%  [        [        R                  " 5       S-   U-   S5      nU$ )Nr   r   )Úmaxr   r"   ©rH   ri   s     r2   r$   Ú$FakeParallelBackend.effective_n_jobsë  s*   € Ø�A‹:ÜœŸš›¨!Ñ+¨fÑ4°aÓ8ˆFØˆr1   )ri   r   rþ   )r   )rP   rQ   rR   rS   rT   rØ  r$   rU   r0   r1   r2   rÕ  rÕ  ã  s   † ÙBô÷
r1   rÕ  c                  ó–  • [        [        SS9   [        SS9  S S S 5        [        [        SS9   [        SS9    S S S 5        S S S 5        [        [        SS9   [        SS9    S S S 5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       NR= f! , (       d  f       N[= f! , (       d  f       NJ= f! , (       d  f       g = f)NzInvalid backend:r"  zunit-testingr8   )r   rX   r!   r&   r0   r1   r2   Útest_invalid_backendrß  ñ  sŽ   € Ü	”
Ð"4Ó	5Ü˜Ò(÷ 
6ô 
”
Ð"4Ó	5Ü ^Ó4Ø÷ 5÷ 
6ô 
”
Ð"4Ó	5Ü ^Ó4Ø÷ 5÷ 
6Ð	5÷ 
6Õ	5ú÷ 5Õ4ú÷ 
6Õ	5ú÷
 5Õ4ú÷ 
6Õ	5úsP   �
A6¯
B¹B»BÁ
B:Á#B)Á%B:Á6
BÂ
B	ÂBÂ
B&Â)
B7	Â3B:Â:
Cc                 óæ  • [        [        5       n[        SU S9R                  5         S S S 5        S[	        WR
                  5      ;   d   e[        [        5       n[        SU S9R                  5         S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        SU S9R                  5         S S S 5        S[	        UR
                  5      ;   d   e[        [        5       n[        SU S9R                  5         S S S 5        S[	        UR
                  5      ;   d   eg ! , (       d  f       GN= f! , (       d  f       NÒ= f! , (       d  f       N˜= f! , (       d  f       N^= f)Nr   rh   z&n_jobs == 0 in Parallel has no meaningç      à?z2.3z$n_jobs could not be converted to intÚinvalid_str)r   rX   r!   Ú_initialize_backendr¹   r¯   )r9   rÐ  s     r2   Útest_invalid_njobsrä  þ  s
  € ä	”
Ô	˜wÜ˜ 7Ñ+×?Ñ?ÔA÷ 
à3´s¸7¿=¹=Ó7IÓIÐIÐIä	”
Ô	˜wÜ˜ WÑ-×AÑAÔC÷ 
à3´s¸7¿=¹=Ó7IÓIÐIÐIä	”
Ô	˜wÜ˜ wÑ/×CÑCÔE÷ 
à1´S¸¿¹Ó5GÓGÐGÐGä	”
Ô	˜wÜ˜¨wÑ7×KÑKÔM÷ 
à1´S¸¿¹Ó5GÓGÐGÑG÷ 
Ö	ú÷ 
Õ	ú÷ 
Õ	ú÷ 
Õ	ús/   �D.ÁE Â&EÃ1E"Ä.
D=Å 
EÅ
EÅ"
E0)Ú2gffffff@rA   c                 ó¶   • [        XS9nUR                  5       S:X  d   eU" S [        S5       5       5      n[        S [	        U5       5       5      (       d   eg )Nrh   rA   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   Ú.test_njobs_converted_to_int.<locals>.<genexpr>  s   é € Ð2ª	 1ŒG”FŒO˜A×Ðª	ùrq   r  c              3   óB   #   • U  H  u  pU[        U5      :H  v •  M     g 7fr.   )rC   )rm   rn   Úrs      r2   ro   rè    s   é € Ð9ª.¡$ !ˆq”F˜1“IŽ~ª.ùs   ‚)r!   Ú_effective_n_jobsrt   rÊ   Ú	enumerate)r9   ri   r  rÛ   s       r2   Útest_njobs_converted_to_intrí    sT   € ô 	˜Ñ0€AØ×ÑÓ  AÓ%Ð%Ð%á
Ñ2¬¨b¬	Ó2Ó
2€CÜÑ9¬)°C¬.Ó9×9Ñ9Ð9Ñ9r1   c                  óŒ   •  [        S[        5        S[        ;   d   e[        S   [        :X  d   e [        S	 g ! [        S	 f = f)NÚtest_backend)r'   rÕ  r    r0   r1   r2   Útest_register_parallel_backendrð    sE   € ð%Ü! .Ô2EÔFØ¤Ó)Ð)Ð)Ü˜Ñ'Ô+>Ó>Ð>Ñ>ä�^Ñ$øŒH�^Ñ$ús	   ‚/: º	Ac                  ó
  • [         R                  n [        5       [        5       :X  d   e [	        S[
        S   SS9  [        5       [        :X  d   e U [         l        [        5       [        5       :X  d   eg ! U [         l        f = f)Nr*   T)Úmake_default)r   r/   rf   r3   r'   r    r   )Údefault_backend_origs    r2   Útest_overwrite_default_backendrô  %  sw   € Ü#×3Ñ3ÐÜÓ!Ô%AÓ%CÓCÐCÐCð8Ü! +¬x¸Ñ/DÐSWÒXÜ#Ó%Ô)9Ó9Ð9Ñ9ð $8ŒÔ ÜÓ!Ô%AÓ%CÓCÐCÑCøð $8ŒÕ ús   ª&A5 Á5BzOnly without multiprocessingc                  ó  • [        [        SS9   [        SS9" S [        S5       5       5        S S S 5        [	        SS9   [        5       " S [        S5       5       5        S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nz)joblib backend '.*' is not available on.*r"  r)   r8   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   Ú2test_backend_no_multiprocessing.<locals>.<genexpr>4  s   é € Ð FºX¸¤¬¤°×!3Ð!3ºXùrq   rr   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   r÷  8  s   é € Ð8ªx¨!”7œ6”? 1×%Ð%ªxùrq   )r   ÚUserWarningr!   rt   r&   r0   r1   r2   Útest_backend_no_multiprocessingrú  1  sc   € ä	Œ{Ð"MÓ	NÜ˜Ò Ñ F¼UÀ1¼XÓ FÔF÷ 
Oô 
 Ó	(ÜŒ
Ñ8¬u°Q¬xÓ8Ô8÷ 
)Ð	(÷	 
OÕ	Nú÷ 
)Õ	(ús   � A*Á !A;Á*
A8Á;
B	c                 óÄ  • U " USS9   [         R                  " 5       u  p#US:X  d   e[        S5      S:X  d   e[        5       nUR                  S:X  d   eUS:X  a3  [        U5      [        L d   e[        UR                  5      [        L d   eOºUS:X  a3  [        U5      [        L d   e[        UR                  5      [        L d   eO�US:X  a3  [        U5      [        L d   e[        UR                  5      [        L d   eOHUR                  S5      (       a2  [        U5      [        L d   e[        UR                  5      [        L d   eS S S 5        g ! , (       d  f       g = f)Nrr   r~   r(   r)   r*   Útest_)r   re   r$   r!   ri   rd   r   r  r   r   Ú
startswithrÕ  )r|   Úbackend_nameÚactive_backendÚactive_n_jobsr  s        r2   Úcheck_backend_context_managerr  ;  s9  € Ù	� aÓ	(Ü(0×(CÒ(CÓ(EÑ%ˆØ Ó!Ð!Ð!Ü Ó" aÓ'Ð'Ð'Ü‹JˆØ�x‰x˜1‹}Ðˆ}ØÐ,Ó,Ü˜Ó'Ô+AÒAÐAÐAÜ˜Ÿ
™
Ó#Ô'=Ò=Ð=Ñ=Ø˜VÓ#Ü˜Ó'¬;Ò6Ð6Ð6Ü˜Ÿ
™
Ó#¤{Ò2Ð2Ñ2Ø˜[Ó(Ü˜Ó'Ô+;Ò;Ð;Ð;Ü˜Ÿ
™
Ó#Ô'7Ò7Ð7Ñ7Ø×$Ñ$ W×-Ñ-Ü˜Ó'Ô+>Ò>Ð>Ð>Ü˜Ÿ
™
Ó#Ô':Ò:Ð:Ð:÷# 
)×	(Ö	(ús   ˆE EÅ
Err   ztest_backend_%dc                 ó4  ^• U[         ;  a  U R                  [         U[        5        [        5       [	        5       :X  d   e[        TU5        [        5       [	        5       :X  d   e[        SSS9" U4S j[         5       5        [        5       [	        5       :X  d   eg )NrA   r*   rh   c              3   ób   >#   • U  H$  nU(       a  M  [        [        5      " TU5      v •  M&     g 7fr.   )r#   r  )rm   rJ   r|   s     €r2   ro   Ú/test_backend_context_manager.<locals>.<genexpr>c  s-   øé € ð ,â1ˆAÜó 	;ŒÔ-Ô.¨w¸×:Ð:Ú1ùs   ƒ/’/)r    ÚsetitemrÕ  rf   r3   r  r!   Ú all_backends_for_context_manager)r¼   r9   r|   s     `r2   Útest_backend_context_managerr  T  s‹   ø€ ð ”hÓØ×ÑœH gÔ/BÔCäÓ!Ô%AÓ%CÓCÐCÐCä! '¨7Ô3ô  Ó!Ô%AÓ%CÓCÐCÐCô �A˜{Ò+ô ,å1ó,ô ô  Ó!Ô%AÓ%CÓCÐCÑCr1   c                   ó"   • \ rS rSrSrSS jrSrg)ÚParameterizedParallelBackendim  z9Pretends to run conncurrently while running sequentially.Nc                 ó,   • Uc  [        S5      eXl        g )Nzparam should not be None)rX   Úparam)rH   r  s     r2   rM   Ú%ParameterizedParallelBackend.__init__p  s   € Ø‰=ÜÐ7Ó8Ð8Ø�
r1   ©r  r.   rO   r0   r1   r2   r	  r	  m  s
   † ÙC÷r1   r	  c                 óR  • U R                  [        S[        5        [        5       [	        5       :X  d   eU" SSSS9   [
        R                  " 5       u  p#[        U5      [        L d   eUR                  S:X  d   eUS:X  d   e[        5       nUR                  S:X  d   eUR                  UL d   eU" S [        S5       5       5      nS S S 5        W[        S5       Vs/ s H  n[        U5      PM     sn:X  d   e[        5       [	        5       :X  d   eg ! , (       d  f       NR= fs  snf )NÚparam_backendé*   rr   )r  ri   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   ©r#   r   rl   s     r2   ro   Ú=test_parameterized_backend_context_manager.<locals>.<genexpr>ƒ  ó   é € Ð7ªh¨”GœD”M !×$Ð$ªhùrq   r‹   )r  r    r	  rf   r3   r   re   rd   r  r!   ri   r  rt   r   )r¼   r|   rÿ  r   r  r¾   rn   s          r2   Ú*test_parameterized_backend_context_managerr  v  s
  € à×Ñœ /Ô3OÔPÜÓ!Ô%AÓ%CÓCÐCÐCá	�¨°1Ó	5Ü(0×(CÒ(CÓ(EÑ%ˆÜ�NÓ#Ô'CÒCÐCÐCØ×#Ñ# rÓ)Ð)Ð)Ø Ó!Ð!Ð!Ü‹JˆØ�x‰x˜1‹}Ðˆ}Ø�z‰z˜^Ò+Ð+Ð+ÙÑ7¬e°A¬hÓ7Ó7ˆ÷ 
6ð ¬¨a¬Ó1ª 1”t˜A–w©Ñ1Ó1Ð1Ð1ô  Ó!Ô%AÓ%CÓCÐCÑC÷ 
6Õ	5üò 2s   ¼BDÃD$Ä
D!c                 ó(  • [        5       [        5       :X  d   eU " [        SS9SS9   [        R                  " 5       u  p[        U5      [        L d   eUR                  S:X  d   eUS:X  d   e[        5       nUR                  S:X  d   eUR                  UL d   eU" S [        S5       5       5      nS S S 5        W[        S5       Vs/ s H  n[        U5      PM     sn:X  d   e[        5       [        5       :X  d   eg ! , (       d  f       NR= fs  snf )Né+   r  r‹   r~   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r  rl   s     r2   ro   ÚFtest_directly_parameterized_backend_context_manager.<locals>.<genexpr>˜  r  rq   )rf   r3   r	  r   re   rd   r  r!   ri   r  rt   r   )r|   rÿ  r   r  r¾   rn   s         r2   Ú3test_directly_parameterized_backend_context_managerr  Š  sÿ   € äÓ!Ô%AÓ%CÓCÐCÐCñ 
Ô-°BÑ7ÀÓ	BÜ(0×(CÒ(CÓ(EÑ%ˆÜ�NÓ#Ô'CÒCÐCÐCØ×#Ñ# rÓ)Ð)Ð)Ø Ó!Ð!Ð!Ü‹JˆØ�x‰x˜1‹}Ðˆ}Ø�z‰z˜^Ò+Ð+Ð+ÙÑ7¬e°A¬hÓ7Ó7ˆ÷ 
Cð ¬¨a¬Ó1ª 1”t˜A–w©Ñ1Ó1Ð1Ð1ô  Ó!Ô%AÓ%CÓCÐCÑC÷ 
CÕ	Büò 2s   §BC>ÃDÃ>
Dc                  óB   • [        S5        [        R                  " 5       $ )Nrà   )r   ÚosÚgetpidr0   r1   r2   Úsleep_and_return_pidr  Ÿ  s   € Ü	ˆ#„JÜ�9Š9‹;Ðr1   c                  ó¤   • [        5       [        :X  d   e[        5       R                  5       S:X  d   e[        SS9" S [	        S5       5       5      $ )Nr   rA   r~   c              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   )r#   r  râ   s     r2   ro   Ú"get_nested_pids.<locals>.<genexpr>«  s   é € ÐPÂxÀ!œgÔ&:Ô;×=Ð=Âxùr  )rf   r   r!   rë  rt   r0   r1   r2   Úget_nested_pidsr"  ¤  sK   € ÜÓ!Ô%5Ó5Ð5Ð5ô ‹:×'Ñ'Ó)¨QÓ.Ð.Ð.ô ˜1ÒÑPÄuÈQÄxÓPÓPÐPr1   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )Ú	MyBackendi®  z:Backend to test backward compatibility with older backendsc                 ó.   >• [         [        U ]  5       S   $ rc   )Úsuperr$  Úget_nested_backend)rH   Ú	__class__s    €r2   r'  ÚMyBackend.get_nested_backend±  s   ø€ ô ”Y Ñ8Ó:¸1Ñ=Ð=r1   r0   )rP   rQ   rR   rS   rT   r'  rU   Ú__classcell__)r(  s   @r2   r$  r$  ®  s   ø† ÙD÷>ó >r1   r$  Úback_compat_backend)r*   r)   r(   r+  c                 óÌ   • U " U5         [        SS9" S [        S5       5       5      nU H  n[        [        U5      5      S:X  a  M   e   S S S 5        g ! , (       d  f       g = f)NrA   r~   c              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   )r#   r"  râ   s     r2   ro   Ú6test_nested_backend_context_manager.<locals>.<genexpr>Ã  s   é € Ð'VÊIÀq¬´Ô(@×(BÐ(BÊIùr  r  r   )r!   rt   r£   rŸ   )r|   r9   Ú
pid_groupsÚ	pid_groups       r2   Ú#test_nested_backend_context_managerr1  »  sS   € ñ 
�Õ	Ü QÒ'Ñ'VÌEÐRTÌIÓ'VÓVˆ
Û#ˆIÜ”s˜9“~Ó&¨!Õ+Ð+Ð+ñ $÷ 
×	Ö	ús   ‰;AÁAÁ
A#)rA   r}   Nc                 óÞ   ^ ^^• S m[        SS9" U4S j[        S5       5       5        U" T TS9   [        SS9" U UU4S j[        S5       5       5        S S S 5        g ! , (       d  f       g = f)Nc                 ó„   • [        5       [        U    :X  d   e[        U5      n[        5       R	                  5       U:X  d   eg r.   )rf   r    r$   r!   rë  )Úexpected_backend_typeÚexpected_n_jobs     r2   Úcheck_nested_backendÚ?test_nested_backend_in_sequential.<locals>.check_nested_backendÐ  s@   € ô $Ó%¬Ð2GÑ)HÓHÐHÐHô *¨.Ó9ˆÜ‹z×+Ñ+Ó-°Ó?Ð?Ñ?r1   r   r~   c              3   ód   >#   • U  H%  n[        T5      " [        R                  S 5      v •  M'     g7frþ   )r#   r   r/   )rm   rÔ   r6  s     €r2   ro   Ú4test_nested_backend_in_sequential.<locals>.<genexpr>Ú  s*   øé € ð ÚLUÀqŒÐ$Ô%¤h×&>Ñ&>À×BÐBÊIùs   ƒ-0r  c              3   óH   >#   • U  H  n[        T5      " TT5      v •  M     g 7fr.   r9  )rm   rÔ   r9   r6  ri   s     €€€r2   ro   r9  ß  s$   øé € ð 
ÚDM¸qŒGÐ(Ô)¨'°6×:Ð:ÂIùs   ƒ"rs   )r9   ri   r|   r6  s   `` @r2   Ú!test_nested_backend_in_sequentialr;  È  s`   ú€ ò@ô �AÒô ÜLQÐRTÌIóô ñ 
� Ó	(Ü˜Òö 
ÜDIÈ"ÄIó
ô 	
÷ 
)×	(Ö	(ús   °%AÁ
A,c                 ó¦   • U " U5       nU [         L a  US   nU [        L a  US   nWR                  U:X  d   e S S S 5        g ! , (       d  f       g = f)Nr9   r   )r&   r%   Únesting_level)r|   Úinner_backendÚexpected_levelÚctxr9   s        r2   Úcheck_nesting_levelrA  ä  sO   € Ù	�Ô	 3Ø”oÒ%Ø˜)‘nˆGØÔ&Ò&Ø˜!‘fˆGØ×$Ñ$¨Ó6Ð6Ñ6÷ 
 ×	Ö	ús   ‰/AÁ
AÚouter_backendr>  c                 óô   ^ ^• [        T US5        [        SUS9" U U4S j[        S5       5       5        T " TSS9   [        5       " U U4S j[        S5       5       5        S S S 5        g ! , (       d  f       g = f)Nr   rA   rh   c              3   óR   >#   • U  H  n[        [        5      " TTS 5      v •  M     g7frþ   ©r#   rA  ©rm   rÔ   r|   r>  s     €€r2   ro   Ú-test_backend_nesting_level.<locals>.<genexpr>õ  s&   øé € ð .ÚIRÀAŒÔ#Ô$ W¨m¸Q×?Ð?Êùó   ƒ$'r  r~   c              3   óR   >#   • U  H  n[        [        5      " TTS 5      v •  M     g7frþ   rE  rF  s     €€r2   ro   rG  ú  s&   øé € ð 
ÚMVÈŒGÔ'Ô(¨°-À×CÐCÊYùrH  )rA  r!   rt   )r|   rB  r>  s   ` `r2   Útest_backend_nesting_levelrJ  í  se   ù€ ô ˜ °Ô2ä�A˜}Ò-õ .ÜINÈrÌó.ô ñ 
� qÓ	)ÜŒ
õ 
ÜMRÐSUÌYó
ô 	
÷ 
*×	)Ö	)ús   »%A)Á)
A7Úwith_retrieve_callbackTc                 óV  ^^^• SS K m " UU4S jS[        5      n[        SU5        S mU " S5       n[        SS9" U4S j[	        S	5       5       5        U [
        L a  US
   R                  S:X  d   eU [        L a  US   R                  S:X  d   eS S S 5        g ! , (       d  f       g = f)Nr   c                   óF   >• \ rS rSrSr Yr Y R                  S 5       rSrg)Ú)test_retrieval_context.<locals>.MyBackendi  r   c              3   ó>   #   • U =R                   S-  sl         S v •  g 7fr   rÃ  r  s    r2   Úretrieval_contextÚ;test_retrieval_context.<locals>.MyBackend.retrieval_context	  s   é € à�FŠF�a‰K�FÜùs   ‚r0   N)	rP   rQ   rR   rS   rn   Úsupports_retrieve_callbackÚcontextmanagerrP  rU   )Ú
contextlibrK  s   €€r2   r$  rN    s&   ø† ØˆÙ%;Ð"á	×	"Ñ	"ñ	ó 
#ó	r1   r$  Ú	retrievalc                 ó@   • [        SS9" S [        U 5       5       5      $ )NrA   r~   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   Ú>test_retrieval_context.<locals>.nested_call.<locals>.<genexpr>  s   é € Ð!Cº(°Q¤'¬"¤+¨a§. .º(ùrq   rs   )Úns    r2   Únested_callÚ+test_retrieval_context.<locals>.nested_call  s   € Ü˜qÒ!Ñ!C¼%À¼(Ó!CÓCÐCr1   rA   r~   c              3   óF   >#   • U  H  n[        T5      " U5      v •  M     g 7fr.   r9  )rm   rn   rZ  s     €r2   ro   Ú)test_retrieval_context.<locals>.<genexpr>  s   øé € ÐEºH°qœ7 ;Ô/°×2Ð2ºHùr;  r‹   r9   r   )rT  r   r'   r!   rt   r&   rn   r%   )r|   rK  r$  r@  rT  rZ  s    `  @@r2   Útest_retrieval_contextr^  ÿ  s˜   ú€ ó ÷ð Ô$ô ô ˜k¨9Ô5òDñ 
�Ô	 Ü˜ÒÔE¼EÀ!¼HÓEÔEØ”oÒ%Ø�y‘>×#Ñ# qÓ(Ð(Ð(ØÔ&Ò&Ø�q‘6—8‘8˜q“=Ð �=÷ 
×	Ö	ús   ²ABÂ
B(r–  )r   r}   g¸…ëQ¸ö?c                 óh   • [        [        5         [        U S9  S S S 5        g ! , (       d  f       g = f)N©r–  )r   rX   r!   r`  s    r2   Útest_invalid_batch_sizera    s   € ä	”
Õ	Ü˜JÒ'÷ 
×	Ö	ús   �
#£
1z)n_tasks, n_jobs, pre_dispatch, batch_size))rA   rA   rÊ   r¬  )rA   rA   ri   r¬  ©r  rA   ri   r¬  )i  rA   ri   r¬  rb  )r  r´   ri   r¬  )éÈ   r›  ri   r¬  )é   r›  ú
2 * n_jobsr   )éú   r›  rÊ   r   )rf  r›  re  rW   )rc  r›  re  r¬  c                 ó°   • XUS.n[        U 5       Vs/ s H  n[        U5      PM     nn[        S0 UD6" S [        U 5       5       5      nXv:X  d   eg s  snf )N)ri   r¡  r–  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   Ú/test_dispatch_race_condition.<locals>.<genexpr>;  s   é € Ð Lº^¸¤¬¤°×!3Ð!3º^ùrq   r0   r�   )r¤   ri   r¡  r–  Úparamsrn   rË   r¾   s           r2   Útest_dispatch_race_conditionrk  %  sW   € ð( ÈJÑW€FÜ#(¨¤>Ó2¢>˜a”�q–	¡>€HÐ2ÜÑ ˜Ò Ñ L¼UÀ7¼^Ó LÓL€GØÓÐÑùò 3s   “Ac                  ó¦   • [         R                  " 5       n [        SSS9nUR                  R	                  S5      nUR                  5       nX0:X  d   eg )NrA   r(   rh   r|   )r   Úget_start_methodr!   Ú_backend_kwargsÚget)Úmp_start_methodr  r|   Ústart_methods       r2   Útest_default_mp_contextrr  ?  sM   € ä×)Ò)Ó+€OÜ˜Ð#4Ñ5€AØ×Ñ×#Ñ# IÓ.€GØ×+Ñ+Ó-€LØÓ*Ð*Ñ*r1   c                 ó(  ^• U S:X  a  [         R                  " S5      n [        R                  R	                  S5      nUR                  SS5      m[        R                  " TTR                  5        [        SU S9" U4S j[        S5       5       5        g )Nr(   r,   r  iè  rA   rh   c              3   óx   >#   • U  H/  n[        [        R                  5      " TTR                  5      v •  M1     g 7fr.   )r#   r   ÚdotÚT)rm   rn   rI   s     €r2   ro   ÚAtest_no_blas_crash_or_freeze_with_subprocesses.<locals>.<genexpr>^  s'   øé € Ð'RÊÀA¬´·±¬¸¸1¿3¹3×(?Ð(?Êùs   ƒ7:)
r   r+   r   ÚrandomÚRandomStateÚrandnru  rv  r!   rt   )r9   ÚrngrI   s     @r2   Ú.test_no_blas_crash_or_freeze_with_subprocessesr|  H  sr   ø€ ð Ð#Ó#ô —.’. Ó)ˆô �)‰)×
Ñ
 Ó
#€Cð 	�	‰	�$˜Ó€AÜ‡F‚Fˆ1ˆa�c‰c„Nô �A˜wÒ'Ô'RÌÈqÌÓ'RÕRr1   a  from joblib import Parallel, delayed

def square(x):
    return x ** 2

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

print(Parallel(n_jobs=2, backend=backend)(
      delayed(square)(i) for i in range(5)))
c                 óÐ   • U S:X  a/  [         R                  " 5       S:w  a  [        R                  " S5        [        R                  U 5      n[        [        R                  SU/SSS9  g )Nr(   ÚforkzVRequire fork start method to use interactively defined functions with multiprocessing.z-cr  ú\[0, 1, 4, 9, 16\]©rI  Ústdout_regex)	r   rm  ÚpytestÚskipÚ,UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_NO_MAINÚformatr   ÚsysÚ
executable)r9   Úcodes     r2   Ú2test_parallel_with_interactively_defined_functionsr‰  q  s[   € ð
 Ð#Ó#¬×(;Ò(;Ó(=ÀÓ(GÜ�Šð.ô	
ô 8×>Ñ>¸wÓG€DÜÜ	�‰˜˜tÐ$¨bÐ?Tór1   a¼  import sys
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed

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

{define_func}

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

    callable_position = "{callable_position}"
    if callable_position == "delayed":
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(square)(i) for i in range(5)))
    elif callable_position == "args":
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(run)(square, i) for i in range(5)))
    else:
        print(Parallel(n_jobs=2, backend=backend)(
                delayed(run)(f=square, x=i) for i in range(5)))
z!def square(x):
    return x ** 2
zcdef gen_square():
    def square(x):
        return x ** 2
    return square
square = gen_square()
zsquare = lambda x: x ** 2
Údefine_funcÚcallable_position)r#   rÅ   Úkwargsc           
      óÂ  • U S;   a4  U[         :w  d  [        R                  S:X  a  [        R                  " S5        [
        R                  UU U[        R                  R                  [        R                  R                  [        R                  5      5      S9nUR                  S5      nUR                  U5        [        [        R                  UR                   /SSS9  g )	N)r(   r,   Úwin32zNot picklable with pickle)rŠ  r9   r‹  Újoblib_root_folderzunpicklable_func_script.pyr  r  r€  )ÚSQUARE_MAINr†  Úplatformr‚  rƒ  Ú)UNPICKLABLE_CALLABLE_SCRIPT_TEMPLATE_MAINr…  r  ÚpathÚdirnameÚjoblibÚ__file__rê   Úwriter   r‡  Ústrpath)r9   rŠ  r‹  Útmpdirrˆ  Ú	code_files         r2   Ú0test_parallel_with_unpicklable_functions_in_argsr›  ±  s©   € ð Ð.Ó.Ø”{Ó"¤c§l¡l°gÓ&=ä�ŠÐ/Ô0Ü4×;Ñ;ØØØ+ÜŸ7™7Ÿ?™?¬2¯7©7¯?©?¼6¿?¹?Ó+KÓLð	 <ð €Dð —‘Ð8Ó9€IØ‡O�O�DÔÜÜ	�‰˜×*Ñ*Ð+ØØ*ór1   aý  import sys
import faulthandler
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

from joblib import Parallel, delayed
from functools import partial

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


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


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

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

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

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

print(Parallel(backend="loky", n_jobs=2)(
    delayed(square2)(MyClass(i), ignored=[dict(a=MyClass(1))])
    for i in range(5)
))
)r�  c                 óš   • U R                  S5      nUR                  [        5        [        [        R
                  UR                  /SS S9  g )Nz(joblib_interactively_defined_function.pyr  )r�  rI  )rê   r—  Ú5INTERACTIVE_DEFINED_FUNCTION_AND_CLASS_SCRIPT_CONTENTr   r†  r‡  r˜  ©r™  Úscripts     r2   Ú7test_parallel_with_interactively_defined_functions_lokyr   ö  s>   € ð
 �[‰[ÐCÓD€FØ
‡L�LÔFÔGÜÜ	�‰˜Ÿ™Ð(Ø*Øór1   a…  import sys
# Make sure that joblib is importable in the subprocess launching this
# script. This is needed in case we run the tests from the joblib root
# folder without having installed joblib
sys.path.insert(0, {joblib_root_folder!r})

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

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

l = MyList()

print(Parallel(backend="loky", n_jobs=2)(
    delayed(l.append)(i) for i in range(3)
))
c                 óœ   • U R                  S5      nUR                  [        5        [        [        R
                  UR                  /SSSS9  g )Nz)joblib_interactive_bound_method_script.pyz\[None, None, None\]ÚLokyProcessé   )r�  Ústderr_regexrI  )rê   r—  Ú9INTERACTIVELY_DEFINED_SUBCLASS_WITH_METHOD_SCRIPT_CONTENTr   r†  r‡  r˜  rž  s     r2   Ú:test_parallel_with_interactively_defined_bound_method_lokyr¦    s?   € à�[‰[ÐDÓE€FØ
‡L�LÔJÔKÜÜ	�‰˜Ÿ™Ð(Ø,Ø#Øó	r1   c                  óD   • [        / 5      n [        SS9" U 5      / :X  d   eg )NrA   r~   )Úiterr!   )Úexhausted_iterators    r2   Ú%test_parallel_with_exhausted_iteratorrª  )  s%   € Ü˜b›ÐÜ˜1ÒÐ0Ó1°RÓ7Ð7Ñ7r1   c                 óŠ   • [        U [        R                  5      (       d  [        S[	        U 5      5      eU R                  5       $ )Nz#Expected np.memmap instance, got %r)rº   r   ÚmemmapÚ	TypeErrorrd   Úcopy)rI   s    r2   Úcheck_memmapr¯  .  s0   € Ü�aœŸ™×#Ñ#ÜÐ=¼tÀA»wÓGÐGØ�6‰6‹8€Or1   c                 óŠ  • S n[        SSU S9" S U" S5       5       5      n[        X!" [        U5      5      5       H$  u  p4[        R                  R                  XC5        M&     [        SSU S9" S U" S5       5       5      n[        X!" [        U5      5      5       H$  u  p4[        R                  R                  XC5        M&     g )	Nc              3   ó€   #   • [        U 5       H+  n[        R                  " S[        R                  S9U-  v •  M-     g 7f)Nr  ©r3  )rt   r   ÚonesÚfloat32)rY  rn   s     r2   Úgenerate_arraysÚBtest_auto_memmap_on_arrays_from_generator.<locals>.generate_arrays<  s-   é € Ü�q–ˆAÜ—'’'˜"¤B§J¡JÑ/°!Ñ3Ô3ò ùs   ‚<>rA   r   ©ri   r/  r9   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   ©r#   r¯  ©rm   rI   s     r2   ro   Ú<test_auto_memmap_on_arrays_from_generator.<locals>.<genexpr>B  ó"   é € ð @Ú*> QŒ”Ô˜a× Ð Ò*>ùrq   r‰   r´   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r¹  rº  s     r2   ro   r»  K  r¼  rq   )r!   rf  r£   r   r?  r@  )r9   rµ  r¾   rB  rË   s        r2   Ú)test_auto_memmap_on_arrays_from_generatorr¾  4  s½   € ò4ô ˜a¨A°wÒ?ñ @Ù*9¸#Ô*>ó@ó €Gô   ¨¼¸W»Ó)FÖGÑˆÜ
�
‰
×%Ñ% hÖ7ñ Hô ˜a¨A°wÒ?ñ @Ù*9¸#Ô*>ó@ó €Gô   ¨¼¸W»Ó)FÖGÑˆÜ
�
‰
×%Ñ% hÖ7ò Hr1   c                 ó   • U $ r.   r0   )Úargs    r2   ÚidentityrÁ  R  s   € Ø€Jr1   c                 óÀ  ^• U R                  S5      R                  n[        R                  n[        R
                  " USS9[        R                  " USS9/n[        X15        [        USS9m[        SS9" U4S jS	 5       5      u  n[        TS
   [        R                  5      (       d   eTS
   R                  U:”  d   e[        R                  R                  X45        g )Nz	test.mmapÚuint8r²  rê  )Ú	mmap_moderA   r~   c              3   óN   >#   • U  H  n[        [        5      " T5      v •  M     g 7fr.   )r#   rÁ  )rm   rÔ   r¬  s     €r2   ro   Ú.test_memmap_with_big_offset.<locals>.<genexpr>^  s   øé € Ð"JÂcÀ¤7¬8Ô#4°V×#<Ð#<Âcùr×   rz  r   )rê   r˜  ÚmmapÚALLOCATIONGRANULARITYr   Úzerosr³  r
   r   r!   rº   r¬  Úoffsetr?  r@  )r™  ÚfnameÚsizeÚobjrB  r¬  s        @r2   Útest_memmap_with_big_offsetrÎ  V  s´   ø€ ð �K‰K˜Ó$×,Ñ,€EÜ×%Ñ%€DÜ�8Š8�D Ñ(¬"¯'ª'°$¸gÑ*FÐ
G€CÜˆÔÜ�% 3Ñ'€FÜ Ò"Ô"JÁcÓ"JÓJ�I€VÜ�f˜Q‘i¤§¡×+Ñ+Ð+Ð+Ø�!‰9×Ñ˜dÓ"Ð"Ð"Ü‡J�J×!Ñ! #Õ.r1   c                  óD  • [         R                  " SS9 n [        SSS9" S [        S5       5       5        S S S 5        [	        W 5      S:X  d   eU S   n[        UR                  [        5      (       d   e[        UR                  5      S:X  d   eg ! , (       d  f       Na= f)	NTr°   r   )ri   rI  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   ÚFtest_warning_about_timeout_not_supported_by_backend.<locals>.<genexpr>f  s   é € Ð%LÂ)¸Q¤g¬f¤o°a×&8Ð&8Â)ùrq   é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!   rt   r£   rº   r¨   rù  r¹   )r½   r¿   s     r2   Ú3test_warning_about_timeout_not_supported_by_backendrÓ  d  sŠ   € Ü	×	 Ò	 ¨Ò	-°Ü˜ 1Ò%Ñ%LÄ%ÈÄ)Ó%LÔL÷ 
.äˆx‹=˜AÓÐÐØ�‰€AÜ�a—i‘i¤×-Ñ-Ð-Ð-Üˆq�y‰y‹>ð	óð ñ ÷ 
.Õ	-ús   •!BÂ
Bc                 ó   • X U'   U$ r.   r0   )Ú
input_listr¥  r¯   s      r2   Úset_list_valuerÖ  q  s   € ØˆuÑØ€Lr1   )r   rA   r´   c                 ó¶   ^• S/S-  m[        U SSS9" U4S j[        S5       5       5      n[        U5      n[        S [	        TU5       5       5      (       d   eg )Nr   r‹   rU  r*   ©ri   rT  r9   c              3   óP   >#   • U  H  n[        [        5      " TX5      v •  M     g 7fr.   )r#   rÖ  )rm   rn   rÕ  s     €r2   ro   ÚPtest_parallel_return_order_with_return_as_generator_parameter.<locals>.<genexpr>|  s$   øé € ð QÚ;C°aŒ”Ô 
¨A×1Ð1º8ùrš  c              3   ó.   #   • U  H  u  pX:H  v •  M     g 7fr.   r0   ©rm   Úvrê  s      r2   ro   rÚ  ƒ  s   é € Ð:Ò"9™$˜!ˆqŽvÒ"9ùó   ‚)r!   rt   r[  rÊ   rf  )ri   rB  rÕ  s     @r2   Ú=test_parallel_return_order_with_return_as_generator_parameterrß  v  s_   ø€ ð
 ��q‘€JÜ˜V¨{ÀKÒPô QÜ;@À¼8óQó €Fô
 �&‹\€FäÑ:¤# j°&Ô"9Ó:×:Ñ:Ð:Ñ:r1   c                 ó<   • U(       a  [        S5        [        U 5      $ )NrG  )r   r   )ÚeÚdelays     r2   Ú_sqrt_with_delayrã  †  s   € ÞÜˆbŒ	Ü�‹7€Nr1   c                 óü   ^• [        USU S9" S [        S5       5       5      m[        U4S j[        S5       5       5      nS/[        [        SS5      5      -   n[	        S	 [        X25       5       5      (       d   e@g )
NrV  rØ  c              3   óZ   #   • U  H!  n[        [        5      " US -  US:H  5      v •  M#     g7f)rA   r   N)r#   rã  rl   s     r2   ro   ÚK_test_parallel_unordered_generator_returns_fastest_first.<locals>.<genexpr>”  s,   é € ð WÚ;D°aŒÔ Ô! ! Q¡$¨¨a©×1Ð1º9ùs   ‚)+r  c              3   ó:   >#   • U  H  n[        T5      v •  M     g 7fr.   )Únext)rm   rÔ   rB  s     €r2   ro   ræ  ˜  s   øé € Ð=²H¨qœd 6Ÿl˜l²Hùs   ƒé	   r   rA   c              3   ó.   #   • U  H  u  pX:H  v •  M     g 7fr.   r0   rÜ  s      r2   ro   ræ  œ  s   é € ÐSÒ"R™$˜!ˆqŽvÒ"RùrÞ  )r!   rt   Úsortedr[  rÊ   rf  )r9   ri   Úquickly_returnedÚexpected_quickly_returnedrB  s       @r2   Ú8_test_parallel_unordered_generator_returns_fastest_firstrî  �  s{   ø€ ô ˜VÐ/DÈgÒVñ WÜ;@À¼9óWó €Fô Ô=´E¸!´HÓ=Ó=Ðà!" ¤d¬5°°B«<Ó&8Ñ 8ÐäÑS¤#Ð&?Ô"RÓS×SÑSÐSÐSár1   c                 ó   • [        X5        g r.   )rî  ©r9   ri   s     r2   Ú7test_parallel_unordered_generator_returns_fastest_firstrñ  ¡  s   € ô =¸WÕMr1   )r   rA   r†   r}   c                 ó   • S/S/S-  -   n[        [        5         [        R                  " 5       n[        XS9" S U 5       5        S S S 5        [        R                  " 5       W-
  nUS:  d   eg ! , (       d  f       N/= f)NrI   r  r‰   rh   c              3   ó`   #   • U  H$  n[        [        R                  5      " U5      v •  M&     g 7fr.   ©r#   r\   r   rl   s     r2   ro   Ú%test_abort_backend.<locals>.<genexpr>±  s#   é € Ð0XÒQWÈA´¼¿¹Ô1DÀQ×1GÐ1GÒQWùs   ‚,.ro  )r   r­  r\   r!   )ri   r9   ÚdelaysÚt_startÚdts        r2   Útest_abort_backendrù  «  sh   € ð ˆU�b�T˜C‘ZÑ€FÜ	”	Õ	Ü—)’)“+ˆÜ˜Ò0Ñ0XÑQWÓ0XÔX÷ 
ô 
�Š‹�wÑ	€BØ�‹7€N‰7÷	 
Õ	ús   š,A/Á/
A=c                 óT   • [         R                  " [        S5      [        S9nSUS'   U$ )Ng    €„Ar²  Fr   )r   r³  ÚintÚbool)rÀ  rB  s     r2   Úget_large_objectrý  ¶  s$   € Ü�WŠW”S˜“\¬Ñ.€FØ€Fˆ1�IØ€Mr1   c                 óª   • [        X US9 nU" S [        S5       5       5      n[        U5        [        U5        AS S S 5        g ! , (       d  f       g = f)N)ri   r9   rT  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   )r#   rý  rl   s     r2   ro   Ú0_test_deadlock_with_generator.<locals>.<genexpr>Ä  s   é € ÐJÂ	¸1œ'Ô"2Ô3°A×6Ð6Â	ùrq   r  )r!   rt   rè  )r9   rT  ri   r   rB  s        r2   Ú_test_deadlock_with_generatorr  À  sB   € ô 
˜¸IÒ	FÈ(ÙÑJÄÀbÄ	ÓJÓJˆÜˆVŒÜˆVŒØ÷	 
G×	FÖ	Fús   ‹0AÁ
Ac                 ó   • [        XU5        g r.   )r  )r9   rT  ri   s      r2   Útest_deadlock_with_generatorr  Ê  s   € ô
 " '°fÕ=r1   c                 ó:  • [        [        SS9   [        X US9nU" S [        S5       5       5      n[        R                  " 5       nU" S [        S5       5       5      nS S S 5        [        R                  " 5       W-
  S:  d   S	5       eAg ! , (       d  f       N3= f)
Nú)This Parallel instance is already runningr"  r\  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7frþ   rá   râ   s     r2   ro   Ú/test_multiple_generator_call.<locals>.<genexpr>Û  s   é € Ð:²	¨1”WœU”^ A×&Ð&²	ùrq   r  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   r  Ý  s   é € Ð;²
¨1œ¤œ AŸ˜²
ùrq   r‰   rA   ú[The error should be raised immediately when submitting a new task but it took more than 2s.)r   r  r!   rt   r\   )r9   rT  ri   r   Úgr÷  Úgen2s          r2   Útest_multiple_generator_callr  Ò  sŠ   € ô 
”Ð$OÓ	PÜ˜F¸yÑIˆÙÑ:´°b´	Ó:Ó:ˆÜ—)’)“+ˆÙÑ;´°c´
Ó;Ó;ˆ÷	 
Qô �9Š9‹;˜Ñ  1Ó$ð ð	$óÐ$ñ
 	
÷ 
QÕ	Pús   �ABÂ
Bc                 ór  • [        X US9 nU" S [        S5       5       5      n[        R                  " 5       n[        [        SS9   U" S [        S5       5       5      nS S S 5        [        R                  " 5       U-
  S:  d   S	5       e S S S 5        Ag ! , (       d  f       N<= f! , (       d  f       Ag = f)
Nr\  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7frO  rá   râ   s     r2   ro   Ú7test_multiple_generator_call_managed.<locals>.<genexpr>ð  s   é € Ð;²¨A”WœU”^ B×'Ð'²ùrq   r  r  r"  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   r  ó  s   é € Ð=²*¨Qœ'¤"œ+ aŸ.˜.²*ùrq   r‰   rA   r	  )r!   rt   r\   r   r  )r9   rT  ri   r   r
  r÷  Úg2s          r2   Ú$test_multiple_generator_call_managedr  è  sŸ   € ô 
�&°YÒ	?À8ÙÑ;´°r´Ó;Ó;ˆÜ—)’)“+ˆÜ”LÐ(SÓTÙÑ=´%¸´*Ó=Ó=ˆB÷ Uô �yŠy‹{˜WÑ$ qÓ(ð 	
ð(ó	
Ñ(÷ 
@ñ 	
÷ UÕTú÷ 
@Ô	?ñ 	
ús#   ‹<B'ÁBÁ +B'Â
B$	Â B'Â'
B6Úreturn_as_1Úreturn_as_2c           
      ó|  • [        X0US9" S [        S5       5       5      n[        X0US9" S [        SS5       5       5      nUS:X  a  [        U5      nUS:X  a  [        U5      n[        S [	        U[        S5      5       5       5      (       d   e[        S [	        U[        SS5      5       5       5      (       d   eg )	Nr\  c              3   óR   #   • U  H  n[        [        5      " US -  5      v •  M     g7f©rA   Nr  rl   s     r2   ro   Ú9test_multiple_generator_call_separated.<locals>.<genexpr>  s$   é € ð AÚ%. Œ”Œ�a˜‘d×Ð¢Yùó   ‚%'r  c              3   óR   #   • U  H  n[        [        5      " US -  5      v •  M     g7fr  r  rl   s     r2   ro   r    s$   é € ð BÚ%2 Œ”Œ�a˜‘d×Ð¢]ùr  ro  rV  c              3   ó.   #   • U  H  u  pX:H  v •  M     g 7fr.   r0   ©rm   rÛ   rn   s      r2   ro   r    s   é € Ð8Ò&7™F˜CˆsŽxÒ&7ùrÞ  c              3   ó.   #   • U  H  u  pX:H  v •  M     g 7fr.   r0   r  s      r2   ro   r    s   é € Ð=Ò&<™F˜CˆsŽxÒ&<ùrÞ  )r!   rt   rë  rÊ   rf  )r9   r  r  ri   r
  r  s         r2   Ú&test_multiple_generator_call_separatedr  þ  s¼   € ô 	�°KÒ@ñ AÜ%*¨2¤YóAó 	€Aô 
�&°[Ò	Añ BÜ%*¨2¨r¤]óBó 
€Bð Ð+Ó+Ü�1‹IˆàÐ+Ó+Ü�B‹ZˆäÑ8¤c¨!¬U°2«YÔ&7Ó8×8Ñ8Ð8Ð8ÜÑ=¤c¨"¬e°B¸«mÔ&<Ó=×=Ñ=Ð=Ñ=r1   zbackend, error))r)   T)r*   F)rS  Fc                 ó‚  • U S:X  a  [         c  [        R                  " S5        [        SXS9nU" S [	        S5       5       5      n[
        R                  " US 5      nU(       a  [        [        SS	9O	[        5       nU   [        R                  " 5       n[        SXS9" S
 [	        SS5       5       5      nUS:X  a  [        U5      n[        S [        U[	        SS5      5       5       5      (       d   e S S S 5        [        R                  " 5       W-
  S:  d   eSn	UR                  (       a:  U	S:  a4  U	S-  n	[        R                  " S5        UR                  (       a  U	S:  a  M4  [        R                  " 5       U-
  S:  d   eUR                   " 5       S:w  a  UR"                  (       d   eg g ! , (       d  f       NÁ= f)Nr)   zRequires multiprocessingrA   r\  c              3   óL   #   • U  H  n[        [        5      " S 5      v •  M     g7frO  rá   rl   s     r2   ro   Ú<test_multiple_generator_call_separated_gc.<locals>.<genexpr>&  s   é € Ð7ªY¨”œ” ×#Ð#ªYùrq   r  c                  ó   • [        S5      $ )NzGenerator collected)rä   r0   r1   r2   Ú<lambda>Ú;test_multiple_generator_call_separated_gc.<locals>.<lambda>'  s
   € ¤uÐ-BÔ'Cr1   z The executor underlying Parallelr"  c              3   óR   #   • U  H  n[        [        5      " US -  5      v •  M     g7fr  r  rl   s     r2   ro   r!  3  s$   é € ð @
Ú)6 AŒG”DŒM˜!˜Q™$×Ðªùr  ro  rV  c              3   ó.   #   • U  H  u  pX:H  v •  M     g 7fr.   r0   r  s      r2   ro   r!  :  s   é € Ð@Ò*?¡ �3–8Ò*?ùrÞ  r‹   r   rr   r   rá  )r   r‚  rƒ  r!   rt   ÚweakrefÚfinalizer   r  r   r\   rë  rÊ   rf  Úaliver   rë  rj  )
r9   r  r  Úerrorr   r
  Úg_wrr@  r÷  Úretrys
             r2   Ú)test_multiple_generator_call_separated_gcr-    s  € ð 	�6Ó¤¡
Ü�ŠÐ.Ô/ô ˜ 7ÑB€HÙÑ7¬U°2¬YÓ7Ó7€AÜ×Ò˜AÑCÓD€Dö ô 	Œ|Ð#EÒFä‹]ð ò
 
ô
 —)’)“+ˆÜ�Q Ò?ñ @
Ü).¨r°2¬ó@
ó 
ˆð Ð/Ó/Ü�q“	ˆAäÑ@¬#¨a´°r¸2³Ô*?Ó@×@Ñ@Ð@Ñ@÷ 
ô �9Š9‹;˜Ñ  1Ó$Ð$Ð$ð €EØ
�*�*˜ ›Ø�‰
ˆÜ�
Š
�3Œð �*�*˜ �ô �9Š9‹;˜Ñ  1Ó$Ð$Ð$à×!Ò!Ó# qÓ(ð ×!×!Ð!Ñ!ð )÷1 
�ús   Á?A5F0Æ0
F>c                 óš  • UR                   n[        SSXS9 nU" S [        R                  R                  S5      /S-   5       5        [	        [
        R                  " U5      5      S:”  d   e S S S 5        [        S5       H+  n[
        R                  " U5      (       d    O[        S5        M-     [        S	5      e[        SSU S
9nU" S [        R                  R                  S5      /S-   5       5        [        S5       H+  n[
        R                  " U5      (       d    g [        S5        M-     [        S	5      e! , (       d  f       NÓ= f)NrA   r   )ri   r/  r9   Útemp_folderc              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r¹  rº  s     r2   ro   Ú(test_memmapping_leaks.<locals>.<genexpr>V  s   é € Ð	GÒ,F qŒ'”,Ô
 ×
"Ð
"Ò,Fùrq   r  r   r‰   rà   z/temporary directory of Parallel was not removedr·  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r¹  rº  s     r2   ro   r1  f  s   é € ÐCÒ(B 1„gŒlÔ˜A×ÐÒ(Bùrq   )
r˜  r!   r   rx  r£   r  Úlistdirrt   r   ÚAssertionError)r9   r™  r  rÔ   s       r2   Útest_memmapping_leaksr5  K  s  € ð �^‰^€Fô 
˜ q°'Ò	NÐRSÙ	Ñ	G¬R¯Y©Y×-=Ñ-=¸bÓ-AÐ,BÀQÒ,FÓ	GÔGô ”2—:’:˜fÓ%Ó&¨Ó*Ð*Ñ*÷	 
Oô �3ŽZˆÜ�zŠz˜&×!Ñ!ÙÜˆcŽ
ñ ô
 ÐNÓOÐOô 	˜ a°Ñ9€AÙÑC¬¯©×)9Ñ)9¸"Ó)=Ð(>ÀÒ(BÓCÔCä�3ŽZˆÜ�zŠz˜&×!Ñ!ÙÜˆcŽ
ñ ô
 ÐNÓOÐO÷1 
OÕ	Nús   ˜AD<Ä<
E
)Nr)   r*   c                 ó–   • [        SU S9" S [        S5       5       5      nU[        S5       Vs/ s H  o"S-  PM	     sn:X  d   eg s  snf )NrA   rh   c              3   óF   #   • U  H  n[        S  5      " U5      v •  M     g7f)c                 ó   • U S-  $ r@   r0   rB   s    r2   r#  Ú2test_lambda_expression.<locals>.<genexpr>.<lambda>v  s   € ˜!˜Qš$r1   Nr9  rl   s     r2   ro   Ú)test_lambda_expression.<locals>.<genexpr>u  s    é € ð 2Ú,5 qŒ‘Ô ×"Ð"ªIùrÈ   r  rs   )r9   r¾   rn   s      r2   Útest_lambda_expressionr;  p  sN   € ô
 ˜a¨Ò1ñ 2Ü,1°"¬Ió2ó €Gð ¤U¨2¤YÓ/¢Y ˜!”t¡YÑ/Ó/Ð/Ñ/ùÒ/s   ¯Ac                 ó  ^• SnSnSU-  m[        SXS9nU" U4S j[        U5       5       5        UR                  R                  UR                  R                  :X  d   eUR                  R
                  UR                  R                  :X  d   eU" U4S j[        U5       5       5        UR                  R                  UR                  R                  :X  d   eUR                  R
                  UR                  R                  :X  d   eg)	zCTest that a parallel backend correctly resets its batch statistics.rA   iô  g       @r  )r‡   ri   r9   c              3   ób   >#   • U  H$  n[        [        R                  5      " T5      v •  M&     g 7fr.   rô  ©rm   rn   Ú	task_times     €r2   ro   Ú6test_backend_batch_statistics_reset.<locals>.<genexpr>„  ó"   øé € Ð>ªo¨„gŒd�j‰jÔ˜)×$Ð$ªoùr”  c              3   ób   >#   • U  H$  n[        [        R                  5      " T5      v •  M&     g 7fr.   rô  r>  s     €r2   ro   r@  ‹  rA  r”  N)r!   rt   r  Ú_effective_batch_sizeÚ_DEFAULT_EFFECTIVE_BATCH_SIZEÚ_smoothed_batch_durationÚ _DEFAULT_SMOOTHED_BATCH_DURATION)r9   ri   Ún_inputsr  r?  s       @r2   Ú#test_backend_batch_statistics_resetrH  {  sà   ø€ ð €FØ€HØ�h‘€Iä˜ FÑ<€AÙÔ>¬e°H¬oÓ>Ô>Ø�:‰:×+Ñ+¨q¯z©z×/WÑ/WÓWÐWÐWà	�
‰
×+Ñ+Ø�:‰:×6Ñ6ó	7ðð	7ñ Ô>¬e°H¬oÓ>Ô>Ø�:‰:×+Ñ+¨q¯z©z×/WÑ/WÓWÐWÐWà	�
‰
×+Ñ+Ø�:‰:×6Ñ6ó	7ðñ	7r1   c                 ó†  • S H¤  n[        [        US9R                  5      [        5       L d   e[        USS9n[        UR                  5      [        L d   e[        USS9n[        UR                  5      [
        L d   e[        USS9n[        UR                  5      [        L a  M¤   e   [        SS	SS
9n[        UR                  5      [
        L d   eU " S	SS9   [        SS9n[        UR                  5      [
        L d   eUR                  S:X  d   e S S S 5        U " S	SS9   [        SSS9n[        UR                  5      [
        L d   eUR                  S:X  d   e S S S 5        U " S	SS9   [        SS9n[        UR                  5      [        L d   eUR                  S:X  d   e S S S 5        U " S	SS9   [        SSS9n[        UR                  5      [        L d   eUR                  S:X  d   e S S S 5        g ! , (       d  f       Nï= f! , (       d  f       Nµ= f! , (       d  f       N|= f! , (       d  f       g = f)N)r   rA   r}   r~   Úthreads©ri   ÚpreferÚ	processesÚ	sharedmem©ri   ÚrequirerA   r)   )ri   r9   rL  ©rL  rr   ©rP  r   )rd   r!   r  r3   r   r   ri   )r|   ri   r  s      r2   Ú$test_backend_hinting_and_constraintsrS  “  sù  € ó ˆÜ”H FÑ+×4Ñ4Ó5Ô9UÓ9WÒWÐWÐWä˜F¨9Ñ5ˆÜ�A—J‘JÓÔ#3Ò3Ð3Ð3ä˜F¨;Ñ7ˆÜ�A—J‘JÓ¤;Ò.Ð.Ð.ä˜F¨KÑ8ˆÜ�A—J‘JÓÔ#3Ô3Ð3Ð3ñ ô 	˜ 6°)Ñ<€AÜ�—
‘
Óœ{Ò*Ð*Ð*á	� Ó	"ô ˜IÑ&ˆÜ�A—J‘JÓ¤;Ò.Ð.Ð.Ø�x‰x˜1‹}Ð‰}÷ 
#ñ 
� Ó	"ä˜A iÑ0ˆÜ�A—J‘JÓ¤;Ò.Ð.Ð.Ø�x‰x˜1‹}Ð‰}÷	 
#ñ 
� Ó	"ô
 ˜[Ñ)ˆÜ�A—J‘JÓÔ#3Ò3Ð3Ð3Ø�x‰x˜1‹}Ð‰}÷ 
#ñ 
� Ó	"Ü˜A {Ñ3ˆÜ�A—J‘JÓÔ#3Ò3Ð3Ð3Ø�x‰x˜1‹}Ð‰}÷ 
#Ð	"÷- 
#Õ	"ú÷ 
#Õ	"ú÷ 
#Õ	"ú÷ 
#Õ	"ús0   Ã:G?Ä%;HÅ0:H!Æ:;H2Ç?
HÈ
HÈ!
H/È2
I rL  )NrM  rJ  c                 ó(  • [        S5       Vs/ s H  o"S-  PM	     nn[        XS9" S [        S5       5       5      nXC:X  d   e[        XS9   [        5       " S [        S5       5       5      nS S S 5        XC:X  d   eg s  snf ! , (       d  f       N= f)Nr  rA   rK  c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   Ú6test_backend_hinting_always_running.<locals>.<genexpr>Ê  s   é € ð 5Ú$-˜qŒ”Œ˜×Ð¢Iùrq   )rL  ri   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   rk   rl   s     r2   ro   rV  Ð  s   é € ÐCº°AœW¤Vœ_¨Q×/Ð/ºùrq   )rt   r!   r&   )ri   rL  rn   Úexpected_resultsr¾   s        r2   Ú#test_backend_hinting_always_runningrY  Ã  sŠ   € ô
 ',¨B¤iÓ0¢i ˜1œ¡iÐÐ0ä˜fÒ4ñ 5Ü$)¨"¤Ió5ó €Gð Ó&Ð&Ð&ä	 Ó	6Ü”*ÑC¼¸r¼ÓCÓCˆ÷ 
7àÓ&Ð&Ñ&ùò 1÷ 
7Õ	6ús   ŽA>Á!BÂ
Bc                 ó"  •  " S S[         5      nU" U" 5       5         [        SSS9n[        UR                  5      UL d   e[        SSS9n[        UR                  5      UL d   e S S S 5         " S S	[         5      nU" U" 5       5         [        SSS9n[        UR                  5      UL d   eU R	                  5       u  pVUS
:X  d   eUS
:X  d   e[        SSSS9n[        UR                  5      [
        L d   eU R	                  5       u  pVSnUR                  5       U:X  d   eUS
:X  d   e S S S 5        [        [        5         [        U" 5       SS9  S S S 5        g ! , (       d  f       Ný= f! , (       d  f       NG= f! , (       d  f       g = f)Nc                   ó(   • \ rS rSrSrSrS rS rSrg)Ú[test_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackendiØ  Tc                 ó   • g r.   r0   r  s    r2   Úapply_asyncÚgtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.apply_asyncÜ  ó   € Ør1   c                 ó   • U$ r.   r0   rÜ  s     r2   r$   Últest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomThreadingBackend.effective_n_jobsß  ó   € ØˆMr1   r0   N©	rP   rQ   rR   rS   Úsupports_sharedmemÚuse_threadsr^  r$   rU   r0   r1   r2   ÚMyCustomThreadingBackendr\  Ø  s   † Ø!ÐØˆò	õ	r1   rg  rA   rM  rK  rN  rO  c                   ó(   • \ rS rSrSrSrS rS rSrg)Ú\test_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackendié  Fc                 ó   • g r.   r0   r  s    r2   r^  Úhtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.apply_asyncí  r`  r1   c                 ó   • U$ r.   r0   rÜ  s     r2   r$   Úmtest_backend_hinting_and_constraints_with_custom_backends.<locals>.MyCustomProcessingBackend.effective_n_jobsð  rc  r1   r0   Nrd  r0   r1   r2   ÚMyCustomProcessingBackendri  é  s   † Ø"ÐØˆò	õ	r1   rn  rÎ  r  )ri   rP  r‡   z…Using ThreadingBackend as joblib backend instead of MyCustomProcessingBackend as the latter does not provide shared memory semantics.©r9   rP  )	r   r!   rd   r  Ú
readouterrr   Ústripr   rX   )Úcapsysr|   rg  r  rn  ÚoutÚerrrË   s           r2   Ú9test_backend_hinting_and_constraints_with_custom_backendsru  Ô  st  € ôÔ#6ô ñ 
Ñ)Ó+Õ	,Ü˜A kÑ2ˆÜ�A—J‘JÓÐ#;Ò;Ð;Ð;ä˜A {Ñ3ˆÜ�A—J‘JÓÐ#;Ò;Ð;Ñ;÷ 
-ôÔ$7ô ñ 
Ñ*Ó,Õ	-Ü˜A kÑ2ˆÜ�A—J‘JÓÐ#<Ò<Ð<Ð<à×$Ñ$Ó&‰ˆØ�b‹yÐˆyØ�b‹yÐˆyä˜A {¸BÑ?ˆÜ�A—J‘JÓÔ#3Ò3Ð3Ð3à×$Ñ$Ó&‰ˆð8ð 	ð
 �y‰y‹{˜hÓ&Ð&Ð&Ø�b‹yÐ‰y÷% 
.ô( 
”
Õ	ÜÑ2Ó4¸kÒJ÷ 
Ð	÷K 
-Õ	,ú÷" 
.Õ	-ú÷( 
Õ	ús%   �A	EÂB"E/ÅF Å
E,Å/
E=Æ 
Fc                  ó  • [        [        5         [        SS9  S S S 5        [        [        5         [        SS9  S S S 5        [        [        5         [        SSS9  S S S 5        [        bE  [        [        5         [        SSS9  S S S 5        [        [        5         [        S	SS9  S S S 5        g g ! , (       d  f       Nž= f! , (       d  f       NŽ= f! , (       d  f       N}= f! , (       d  f       Ne= f! , (       d  f       g = f)
NÚinvalidrQ  rR  rM  rN  )rL  rP  r)   ro  r(   )r   rX   r!   r   r0   r1   r2   Ú,test_invalid_backend_hinting_and_constraintsrx    s´   € Ü	”
Õ	Ü˜	Ò"÷ 
ô 
”
Õ	Ü˜Ò#÷ 
ô 
”
Õ	ô 	˜¨[Ò9÷ 
ô
 
�~ô ”JÕÜ˜V¨[Ò9÷  ä”JÕÜÐ.¸ÒD÷  Ðð ÷ 
Õ	ú÷ 
Õ	ú÷ 
Õ	ú÷  ÕúçÕús:   �
B2±
CÁCÁ;C%ÂC6Â2
C Ã
CÃ
C"Ã%
C3Ã6
Dc                 ó"  ^ ^• [        SS9 n[        UR                  5      R                  UR                  R                  4/nT S:X  a  UsSSS5        $ U" UU 4S j[        S5       5       5      nX4S   -   sSSS5        $ ! , (       d  f       g= f)zCPerform nested parallel calls and introspect the backend on the wayrA   r~   r   Nc              3   óX   >#   • U  H  n[        [        5      " SS TS-
  0TD6v •  M!     g7f)Úlimitr   Nr0   )r#   Ú_recursive_backend_info)rm   rn   rŒ  r{  s     €€r2   ro   Ú*_recursive_backend_info.<locals>.<genexpr>'  s/   øé € ð 
â�ô Ô+Ô,ÑG°5¸1±9ÐGÀÖGÚùr(  r   )r!   rd   r  rP   r=  rt   )r{  rŒ  r  Ú
this_levelr¾   s   ``   r2   r|  r|     s|   ù€ ô 
˜Ò	˜qÜ˜AŸJ™JÓ'×0Ñ0°!·*±*×2JÑ2JÐKÐLˆ
Ø�A‹:Ø÷ 
Ñ	ñ õ 
ä˜1”Xó
ó 
ˆð  A™JÑ&÷ 
×	×	ús   Œ>B Á"B Â 
Bc                 ó    • U " USS9   [        5       nS S S 5        UR                  5       S-   nUS4SSS/nWU:X  d   eg ! , (       d  f       N2= f)NrA   r~   ÚBackendr   )r   r   )r   rA   )r|  Útitle)r|   r9   Úbackend_types_and_levelsÚtop_level_backend_typeÚexpected_types_and_levelss        r2   Útest_nested_parallelism_limitr…  .  sb   € ñ 
� Ó	#Ü#:Ó#<Ð ÷ 
$ð %Ÿ]™]›_¨yÑ8Ðà	 Ð#ØØ Ø ð	!Ðð $Ð'@Ó@Ð@Ñ@÷ 
$Õ	#ús	   ˆ?¿
Ac                 óB   • [        5       " S [        S5       5       5      $ )z6A horrible function that does recursive parallel callsc              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   )r#   Ú_recursive_parallelrl   s     r2   ro   Ú&_recursive_parallel.<locals>.<genexpr>A  s   é € ÐGºh¸”gÔ1Ô2×4Ð4ºhùr  rA   rs   )Únesting_limits    r2   rˆ  rˆ  ?  s   € äŒ:ÑG¼eÀA¼hÓGÓGÐGr1   c                 ób  • U " USS9   [        [        5       n[        5         S S S 5        S S S 5        WR                  nUS:X  a2  SSKJn  [        X4[        45      (       a  [        R                  " S5        [        U[        5      (       d   eg ! , (       d  f       Nr= f! , (       d  f       N{= f)NrA   r~   r)   r   )ÚTerminatedWorkerErrorz1Loky worker crash when serializing RecursionError)r   ÚBaseExceptionrˆ  r¯   Ú&joblib.externals.loky.process_executorrŒ  rº   r   r‚  ÚxfailÚRecursionError)r|   r9   rÐ  ÚexcrŒ  s        r2   Útest_thread_bomb_mitigationr’  D  s…   € ñ 
� Ó	#Ü”MÔ" gÜÔ!÷ #÷ 
$ð �-‰-€CØ�&Óõ 	Qä�c´=ÐA×BÑBô �LŠLÐLÔMä�cœ>×*Ñ*Ð*Ñ*÷# #Õ"ú÷ 
$Õ	#ús!   ˆB ˜B£B Â
B	ÂB Â 
B.c                  ót   • 0 n S H$  n[         R                  R                  U5      X'   M&     U [        S5      4$ )N)ÚOMP_NUM_THREADSÚOPENBLAS_NUM_THREADSÚMKL_NUM_THREADSÚVECLIB_MAXIMUM_THREADSÚNUMEXPR_NUM_THREADSÚNUMBA_NUM_THREADSÚ
ENABLE_IPCr‰   )r  Úenvironro  r   )Úenv_varsÚvars     r2   Ú_run_parallel_sumrž  `  s;   € Ø€Hóˆô Ÿ
™
Ÿ™ sÓ+ˆ‹ñð ”\ #Ó&Ð&Ð&r1   zNeed OpenMP helper compiledc                 ó:  • [        SU S9" S [        S5       5       5      n[        [        5       S-  S5      nU H^  u  p4XB:X  d   eUR	                  5        H>  u  pVUR                  S5      (       a  U[        U5      :X  d   eM.  US:X  d   eUS:X  a  M>   e   M`     g )NrA   rh   c              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   )r#   rž  râ   s     r2   ro   Ú-test_parallel_thread_limit.<locals>.<genexpr>r  s   é € ð 2Ú.6¨ŒÔ!Ô"×$Ð$ªhùr  r   Ú_THREADSrš  Ú1)r!   rt   rÛ  r"   ÚitemsÚendswithr¹   )r9   r¾   Úexpected_num_threadsÚworker_env_varsÚomp_num_threadsr¬   r¯   s          r2   Útest_parallel_thread_limitr©  o  s§   € ô ˜a¨Ò1ñ 2Ü.3°A¬hó2ó €Gô œy›{¨aÑ/°Ó3ÐÛ,3Ñ(ˆØÓ6Ð6Ð6Ø*×0Ñ0Ö2‰KˆDØ�}‰}˜Z×(Ñ(Ø¤Ð$8Ó 9Ó9Ð9Ò9à˜|Ó+Ð+Ð+Ø •|Ð#�|ó 3ò -4r1   zThis test requires daskc                 ód   • [        [        SS9   U " S5        S S S 5        g ! , (       d  f       g = f)NzPlease install daskr"  Údask)r   rX   )r|   s    r2   Ú)test_dask_backend_when_dask_not_installedr¬  €  s"   € ô 
”
Ð"7Ó	8Ù�Œ÷ 
9×	8Ö	8ús   �	!¡
/c                 ó  •  " S S[         5      nSnU " U" 5       5         [        R                  " [        US9   [	        SS9" S [        S5       5       5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                   ó*   • \ rS rSrS rSS jrS rSrg)Ú3test_zero_worker_backend.<locals>.ZeroWorkerBackendi‹  c                 ó   • grc   r0   )rH   rÅ   rŒ  s      r2   rØ  Ú=test_zero_worker_backend.<locals>.ZeroWorkerBackend.configureŒ  ó   € Ør1   Nc                 ó   • [        S5      e)NzNo worker availabler   )rH   ÚfuncÚcallbacks      r2   r^  Ú?test_zero_worker_backend.<locals>.ZeroWorkerBackend.apply_async�  s   € ÜÐ4Ó5Ð5r1   c                 ó   • grc   r0   rÜ  s     r2   r$   ÚDtest_zero_worker_backend.<locals>.ZeroWorkerBackend.effective_n_jobs’  r²  r1   r0   r.   )rP   rQ   rR   rS   rØ  r^  r$   rU   r0   r1   r2   ÚZeroWorkerBackendr¯  ‹  s   † ò	ô	6õ	r1   r¹  z&ZeroWorkerBackend has no active workerr"  rA   r~   c              3   óL   #   • U  H  n[        [        5      " U5      v •  M     g 7fr.   r%  rl   s     r2   ro   Ú+test_zero_worker_backend.<locals>.<genexpr>˜  s   é € Ð@²x°!œw¤rœ{¨1Ÿ~˜~²xùrq   )r   r‚  r   r  r!   rt   )r|   r¹  Úexpected_msgs      r2   Útest_zero_worker_backendr½  ‡  sd   € ôÔ,ô ð <€LÙ	Ñ"Ó$Õ	%Ü�]Š]œ<¨|Ó<Ü˜AÒÑ@´u¸Q´xÓ@Ô@÷ =÷ 
&Ð	%ß<Õ<ú÷ 
&Õ	%ús"   ŸA;¹ A*ÁA;Á*
A8	Á4A;Á;
B	c                  ó  ^• Sq S mT" 5       S:X  d   e[        SS9" U4S j[        S5       5       5      n [        U 5      S1:X  d   eSq T" 5       S:X  d   e[        SS9" U4S j[        S5       5       5      n [        U 5      S1:X  d   eg )Nzoriginal valuec                  ó   • [         $ r.   )ÚMY_GLOBAL_VARIABLEr0   r1   r2   Úcheck_globalsÚ@test_globals_update_at_each_parallel_call.<locals>.check_globals£  s   € ä!Ð!r1   rA   r~   c              3   óD   >#   • U  H  n[        T5      " 5       v •  M     g 7fr.   r9  ©rm   rn   rÁ  s     €r2   ro   Ú<test_globals_update_at_each_parallel_call.<locals>.<genexpr>©  ó   øé € ð 1Ú*2 QŒ�Ô× Ð ª(ùó   ƒ zchanged valuec              3   óD   >#   • U  H  n[        T5      " 5       v •  M     g 7fr.   r9  rÄ  s     €r2   ro   rÅ  ³  rÆ  rÇ  )rÀ  r!   rt   rŸ   )Úworkers_global_variablerÁ  s    @r2   Ú)test_globals_update_at_each_parallel_callrÊ  ›  s°   ø€ ð *Ðò"ñ ‹?Ð.Ó.Ð.Ð.ä&¨aÒ0ô 1Ü*/°¬(ó1ó Ðô Ð&Ó'Ð,<Ð+=Ó=Ð=Ð=ð )ÐÙ‹?˜oÓ-Ð-Ð-ä&¨aÒ0ô 1Ü*/°¬(ó1ó Ðô Ð&Ó'¨OÐ+<Ó<Ð<Ñ<r1   c                  ó²   • SS K n U R                  R                  SS5      nU R                  " X5        [        R
                  " S5      nUR                  5       $ )Nr   r‰   Úthreadpoolctl)Únumpyrx  rz  ru  r‚  ÚimportorskipÚthreadpool_info)r   rI   rÌ  s      r2   Ú_check_numpy_threadpool_limitsrÐ  ¿  sE   € Ûð
 	�	‰	�‰˜˜SÓ!€AØ‡F‚Fˆ1„LÜ×'Ò'¨Ó8€MØ×(Ñ(Ó*Ð*r1   c                 ón   • U H  nUS   U S   :X  d  M  US   s  $    [        SR                  U 5      5      e)NÚfilepathÚnum_threadsz,An unexpected module was loaded in child:
{})rX   r…  )Úchild_moduleÚparent_infoÚparent_modules      r2   Ú_parent_max_num_threads_forr×  Ë  sF   € Û$ˆØ˜Ñ$¨°ZÑ(@Õ@Ø  Ñ/Ò/ñ %ô Ø7×>Ñ>¸|ÓLóð r1   c                 ón   • U  H/  nU H&  n[        XA5      n[        X%5      U1nUS   U;   a  M&   e   M1     g )NrÓ  )r×  Úmin)Úworkers_inforÕ  rÓ  Úchild_threadpool_inforÔ  Úparent_max_num_threadsrË   s          r2   Úcheck_child_num_threadsrÝ  Ô  sK   € ó ".ÐÛ1ˆLÜ%@Øó&Ð"ô ˜KÓ@À+ÐNˆHØ Ñ.°(Õ:Ð:Ð:ó 2ò ".r1   )rA   r´   r†   r}   c                 ó  • [        5       n[        U5      S:X  a  [        R                  " SS9  [	        SU S9" S [        S5       5       5      n[        U 5      n U S:X  a	  US   S	   nO[        [        5       U -  S5      n[        X!U5        g )
Nr   ú&Need a version of numpy linked to BLASrÉ  r)   rð  c              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   ©r#   rÐ  rl   s     r2   ro   Ú;test_threadpool_limitation_in_child_loky.<locals>.<genexpr>í  s    é € ð GÚ;C°aŒÔ.Ô/×1Ð1º8ùr  rA   r   rÓ  ©
rÐ  r£   r‚  rƒ  r!   rt   r$   rÛ  r"   rÝ  )ri   rÕ  Úworkers_threadpool_infosÚexpected_child_num_threadss       r2   Ú(test_threadpool_limitation_in_child_lokyræ  á  s�   € ô 1Ó2€KÜ
ˆ;Ó˜1ÓÜ�ŠÐCÒDä'°¸vÒFñ GÜ;@À¼8óGó  Ðô ˜fÓ%€FØ�ƒ{Ø%0°¡^°MÑ%BÑ"ä%(¬«¸Ñ)>ÀÓ%BÐ"äØ Ð/Iõr1   Úinner_max_num_threads)r   rA   r´   Nc                 ód  • [        5       n[        U5      S:X  a  [        R                  " SS9  U " SUS9   [	        US9" S [        S5       5       5      nS S S 5        [        U5      nUS	:X  a	  US   S
   nOUc  [        [        5       U-  S	5      nOUn[        WX55        g ! , (       d  f       NR= f)Nr   rß  rÉ  r)   ©rç  r~   c              3   óJ   #   • U  H  n[        [        5      " 5       v •  M     g 7fr.   rá  rl   s     r2   ro   Ú>test_threadpool_limitation_in_child_context.<locals>.<genexpr>  s   é € ð ;
Ú?G¸!ŒGÔ2Ô3×5Ð5ºxùr  rA   r   rÓ  rã  )r|   ri   rç  rÕ  rä  rå  s         r2   Ú+test_threadpool_limitation_in_child_contextrì  ü  s±   € ô 1Ó2€KÜ
ˆ;Ó˜1ÓÜ�ŠÐCÒDá	�Ð/DÓ	EÜ#+°6Ò#:ñ ;
Ü?DÀQ¼xó;
ó $
Ð ÷ 
Fô
 ˜fÓ%€FØ�ƒ{Ø%0°¡^°MÑ%BÑ"Ø	Ñ	&Ü%(¬«¸Ñ)>ÀÓ%BÑ"à%:Ð"äØ  +õ÷ 
FÕ	Eús   µ B!Â!
B/Úvar_name)r•  r–  r”  c                 óŽ  ^^• [        U5      S:X  a  [        R                  " S5        [        SS9R	                  5         S m[
        R                  R                  T5      n S[
        R                  T'   [        US9" UU4S j[        S	5       5       5      nUSS/:X  d   eU " S
SS9   [        US9" UU4S j[        S	5       5       5      nS S S 5        USS/:X  d   e Uc  [
        R                  T	 g U[
        R                  T'   g ! , (       d  f       NB= f! Uc  [
        R                  T	 f U[
        R                  T'   f = f)Nr   zSkip test when n_jobs == 1T©Úreusec                 ó@   • [         R                  R                  U 5      $ r.   )r  r›  ro  )rí  s    r2   Ú_get_envÚ>test_threadpool_limitation_in_child_override.<locals>._get_env,  s   € Ü�z‰z�~‰~˜hÓ'Ð'r1   Ú4r~   c              3   óF   >#   • U  H  n[        T5      " T5      v •  M     g 7fr.   r9  ©rm   rn   rò  rí  s     €€r2   ro   Ú?test_threadpool_limitation_in_child_override.<locals>.<genexpr>3  s   øé € Ð)XÊxÈ!¬'°(Ô*;¸H×*EÐ*EÊxùr;  rA   r)   ré  c              3   óF   >#   • U  H  n[        T5      " T5      v •  M     g 7fr.   r9  rö  s     €€r2   ro   r÷  7  s!   øé € ð .Ú5=°”˜Ô! (×+Ð+²Xùr;  r£  )
r$   r‚  rƒ  r   Úshutdownr  r›  ro  r!   rt   )r|   ri   rí  Úoriginal_var_valuer¾   rò  s     `  @r2   Ú,test_threadpool_limitation_in_child_overriderû    s  ù€ ô ˜Ó 1Ó$Ü�ŠÐ0Ô1ô  Ñ%×.Ñ.Ô0ò(ô Ÿ™Ÿ™¨Ó1Ðð6Ø"Œ�
‰
�8Ñä &Ò)Õ)XÌuÐUVÌxÓ)XÓXˆØ˜3 ˜*Ó$Ð$Ð$á�V°1Ó5Ü fÒ-õ .Ü5:¸1´Xó.ó ˆG÷ 6ð ˜3 ˜*Ó$Ð$Ñ$ð Ñ%Ü—
‘
˜8Ñ$à#5ŒB�J‰J�xÒ ÷ 6Õ5ûð Ñ%Ü—
‘
˜8Ñ$à#5ŒB�J‰J�xÒ ús%   Á"AD Â)$D	ÃD Ä	
DÄD Ä*E)rA   r´   r}   c                 ó€   • S nU" U 5        [        SS9n[        S5       H  nU" U 5        [        SS9nXB:X  a  M   e   g )Nc                 ó`   ^• [        S5      m[        U S9" U4S j[        S5       5       5        g )Nr  r~   c              3   óN   >#   • U  H  n[        [        5      " T5      v •  M     g 7fr.   )r#   Úsum)rm   rn   r<   s     €r2   ro   ÚAtest_loky_reuse_workers.<locals>.parallel_call.<locals>.<genexpr>K  s   øé € ÐCº°A¤¬¤¨Q§ ºùr×   )rt   r!   )ri   r<   s    @r2   Úparallel_callÚ.test_loky_reuse_workers.<locals>.parallel_callI  s#   ø€ Ü�"‹IˆÜ˜ÒÔC¼¸r¼ÓCÕCr1   Trï  r  )r   rt   )ri   r  Úfirst_executorrÔ   r¦   s        r2   Útest_loky_reuse_workersr  C  sJ   € òDñ
 �&ÔÜ*°Ñ6€Nô �2ŽYˆÙ�fÔÜ(¨tÑ4ˆØÕ)Ð)Ð)ò r1   c                 ó4   • SU [         R                  " 5       '   g )NÚinitialized)r  r  )Ústatuss    r2   Ú_set_initializedr  Y  s   € Ø'€FŒ2�9Š9‹;Òr1   c                 óœ  • [         R                  " 5       nU R                  US 5      nUS;   d
   SU 35       eU(       d  g SX'   [        R                  " 5       S-   n[	        U R                  5        VVs/ s H  u  p6US:X  d  M  UPM     snn5      n[        R                  " 5       U:  aq  Xq:  al  [        R                  " S5        [	        U R                  5        VVs/ s H  u  p6US:X  d  M  UPM     snn5      n[        R                  " 5       U:  a  Xq:  a  Ml  [        R                  " 5       U:¼  a  [        S5      eW$ s  snnf s  snnf )N)r  Ústartedz2worker should have been in initialized state, got r
  rG  rà   z-Waited more than 30s to start all the workers)r  r  ro  r\   r£   r¤  r   r   )r  ri   Úwait_workersÚpidÚstateÚdeadlinerÝ  Ú	n_starteds           r2   Ú_check_statusr  ]  s
  € Ü
�)Š)‹+€CØ�J‰J�s˜DÓ!€EØÐ.Ó.ð Ø
<¸U¸GÐDóÐ.ö Øà€F�Kä�yŠy‹{˜RÑ€HÜ v§|¡|¤~ÔH¢~™V˜S¸¸i¹—S¡~ÒHÓI€IÜ
�)Š)‹+˜Ó
  YÓ%7Ü�
Š
�3ŒÜ¨6¯<©<¬>ÔLª>¡ ¸QÀ)¹^Ÿ©>ÒLÓMˆ	ô �)Š)‹+˜Ó
  YÕ%7ô ‡y‚yƒ{�hÓÜÐJÓKÐKà€Jùó Iùó Ms   Á4E
ÂE
ÃE
Ã.E
c                 óê   ^ ^• [         R                  " 5       nUR                  5       mU" UT [        T4S9   [	        5       " U U4S j[        S5       5       5        S S S 5        g ! , (       d  f       g = f)N©r9   ri   ÚinitializerÚinitargsc              3   óP   >#   • U  H  n[        [        5      " TT5      v •  M     g 7fr.   ©r#   r  ©rm   rn   ri   r  s     €€r2   ro   Ú+test_initializer_context.<locals>.<genexpr>„  s    øé € ÐNÂ:¸a”7œ=Ô)¨&°&×9Ð9Â:ùrš  r‰   )r   r¤  Údictr  r!   rt   )ri   r9   r|   r¦  r  s   `   @r2   Útest_initializer_contextr  t  sY   ù€ ô
 �jŠj‹l€GØ�\‰\‹^€Fñ 
ØØÜ$Ø�ó	
ô 	Œ
ÕNÄ5ÈÄ:ÓNÔN÷
÷ 
ö 
ús   ¶%A$Á$
A2c                 ó¨   ^ ^• [         R                  " 5       nUR                  5       m[        UT [        T4S9" U U4S j[        S5       5       5        g )Nr  c              3   óP   >#   • U  H  n[        [        5      " TT5      v •  M     g 7fr.   r  r  s     €€r2   ro   Ú,test_initializer_parallel.<locals>.<genexpr>•  s    øé € ÐA²j°„gŒmÔ˜V V×,Ð,²jùrš  r‰   )r   r¤  r  r!   r  rt   )ri   r9   r¦  r  s   `  @r2   Útest_initializer_parallelr  ‡  sH   ù€ ô �jŠj‹l€GØ�\‰\‹^€Fô ØØÜ$Ø�ò	õ
 B´e¸C´jÓAõBr1   c                 óD  ^ ^• Sn[         R                  " 5       nUR                  5       m[        5       n[	        U5       HH  n[        ST [        T4S9" U U4S j[	        T 5       5       5      nUR                  [        U5      5      nMJ     [        U5      T :X  d   S5       eg )Nrr   r)   r  c              3   óN   >#   • U  H  n[        [        5      " TTS S9v •  M     g7f©T)r  Nr  r  s     €€r2   ro   Ú*test_initializer_reused.<locals>.<genexpr>¨  ó&   øé € ð 

â"�ô ”MÔ" 6¨6ÀÖEÚ"ùr×   z=The workers should be reused when the initializer is the same)	r   r¤  r  rŸ   rt   r!   r  Úunionr£   ©ri   Ún_repetitionsr¦  Úpidsrn   r¾   r  s   `     @r2   Útest_initializer_reusedr(  ˜  s–   ù€ ð
 €MÜ�jŠj‹l€GØ�\‰\‹^€Fä‹5€DÜ�=Ö!ˆÜØØÜ(Ø�Yò	
õ


ä˜6”]ó

ó
ˆð �z‰zœ#˜g›,Ó'Šñ "ô ˆt‹9˜Óð ØGóÑr1   c                 óJ  ^ ^• Sn[         R                  " 5       n[        5       n[        U5       HX  nUR	                  5       m[        ST [        T4S9" U U4S j[        T 5       5       5      nUR                  [        U5      5      nMZ     [        U5      UT -  :X  d   S5       eg )Nrr   r)   r  c              3   óN   >#   • U  H  n[        [        5      " TTS S9v •  M     g7fr!  r  r  s     €€r2   ro   Ú.test_initializer_not_reused.<locals>.<genexpr>Ã  r#  r×   zFThe workers should not be reused when the initializer arguments change)	r   r¤  rŸ   rt   r  r!   r  r$  r£   r%  s   `     @r2   Útest_initializer_not_reusedr,  ²  s›   ù€ ð €MÜ�jŠj‹l€Gä‹5€DÜ�=Ö!ˆØ—‘“ˆÜØØÜ(Ø�Yò	
õ


ä˜6”]ó

ó
ˆð �z‰zœ#˜g›,Ó'Šñ "ô ˆt‹9˜¨Ñ.Ó.ð ØPóÑ.r1   )F)r   r   )rr   r.   )ÓrT   rÇ  r  r�   r†  r*   r\   r·   r'  rT  r   Úmathr   r(   r   Úpickler   r   Ú	tracebackr	   r‚  r•  r
   r   r   Újoblib._multiprocessing_helpersr   Újoblib.test.commonr   r   r   r   Újoblib.testingr   r   r   r   r   Újoblib.externals.lokyr   r}  r   ÚposixÚImportErrorÚ _openmp_test_helper.parallel_sumr   ÚdistributedÚjoblib._parallel_backendsr   r   r   r   r   Újoblib.parallelr    r!   r"   r#   r$   r%   r&   r'   r®  ÚRETURN_GENERATOR_BACKENDSÚpoprë  ÚkeysÚALL_VALID_BACKENDSÚPROCESS_BACKENDSÚPARALLEL_BACKENDSÚhasattrr˜   r+   r3   r:   r>   rC   Ú	ExceptionrE   rZ   r^   ra   rf   rv   rx   r{   Úmarkr…   r‘   rª   rÁ   rÎ   rÜ   rì   rò   rö   rø   rú   r  r  r  r*  rE  rL  rQ  rŸ   r]  rl  r{  r  r�  rª  r³  r¸  r½  rÄ  rÈ  r�  rÓ  rÕ  rß  rä  rí  rð  rô  rú  r  r  Úextendrt   r  r	  r  r  r  r"  Ú_parallel_backendsr$  r1  r;  rA  rJ  r^  ra  rk  rr  r|  r„  r‰  r’  r�  ÚSQUARE_LOCALÚSQUARE_LAMBDAr›  r…  r“  r”  r–  r�  r   r¥  r¦  rª  r¯  r¾  rÁ  rÎ  rÓ  rÖ  rß  rã  rî  rñ  rù  rý  r  r  r  r  r  r-  r5  r;  rH  rS  rY  ru  rx  r|  r…  rˆ  Úno_coverr’  rž  r©  r¬  r½  rÊ  rÐ  r×  rÝ  ræ  rì  rû  r  r  r  r  r  r(  r,  )Úbackend_strrn   s   00r2   Ú<module>rI     s¦  ðñó Û 	Û 	Û 
Û Û Û Û Ý "Ý Ý (Ý  Ý Ý &ã ã ß 'Ñ 'Ý .÷ó ÷ UÕ Tà�>å;å ðÛðÝ>ðÛ÷õ ÷
÷ 
õ 
ð %ŸMšM›OÐ Ø × Ñ Ð/°Ô 6à�V™f X§]¢]£_Ó5Ñ5Ð à Á(ÓKÂ(°;�x Ò,Ö.Á(ÑKÑ KÐ Ø�:ØÑà)¨6Ð2ÐØ$¨ }Ñ4Ð á
ˆ2ˆ}×Ñà×Ñ˜bŸnšn¨WÓ5Ô6ò.òIòòô ô ôòô
ò2òòò"ñ ˆY˜Ð*:Ð;Ó<Ø‡�×ÑØ%ØˆbÑ"¨"Ñ-Ð.°	Ð:Ú0ð ð ð
 ñ.ó óó =ð.ñ ˆYÐ*Ó+ÙˆX’~Ó&ÙˆYšÓ%ñ,ó &ó 'ó ,ð,ñ ˆYÐ*Ó+ÙˆX˜˜1�vÓñó ó ,ðñ( ˆYÐ*Ó+ñ'ó ,ð'òTð0 ÙØ+òó
ñó
ó ðð2 ÙˆYÒ@ÓAñó Bó ðòQñ ˆ_˜hÓ'ÙÐ˜xÓ(ñó )ó (ðòð ñWó ðWòñ ˆX’yÓ!ñó "ðñ ˆYÐ)Ó*ñ/ó +ð/ð: ñ
ó ð
ð ØÙˆ[š/Ó*Ùˆ\˜A˜t˜9Ó%ñ5ó &ó +ó ó ð5ñ$ ˆYÐ)Ó*ñ	ó +ð	ð ÙˆYÐ)Ó*ñ
ó +ó ð
ð ÙˆY™Ð5Ó6¸,¸ÑGÓHÙˆ[˜;Ð(=Ð>Ó?ñó @ó Ió ðð$ ÙˆYÐ(Ó)ñC
ó *ó ðC
ðL ÙˆY˜Ó!ñEó "ó ðEò,'ñ ˆY˜Ó!ÙØ ð òð	
ð$ òð	
ð%$ó'ñPóQ'ó "ðRð  ÙˆYÐ)Ó*ñó +ó ðò<4ð ÙˆYÐ(Ó)ñ3ó *ó ð3ò
òHòMð ÙˆYÐ)Ó*Ø‡�×ÑÐCÐÐDñ-ó Eó +ó ð-ô,Ð+ô ò
ñ ˆYÐ*Ó+ñHó ,ðHð$ ÙˆYÐ)Ó*ÙˆX’}Ó%ñ:ó &ó +ó ð:ò%ò	Dñ ˆ�$ˆÐ=Ñ>ñ9ó ?ð9ò;ð* $5±QÐ#7Ð  Ø  × 'Ò 'ÉÈaÌÓ(QÊÀ1Ð):¸QÔ)>ÉÑ(QÔ Rð ÙˆYÐ8Ó9ÙˆYÐ)¨?Ð;Ó<ñDó =ó :ó ðDô,Ð#4ô ñ ˆY˜Ð*:Ð;Ó<ñDó =ðDñ& ˆY˜Ð*:Ð;Ó<ñDó =ðDò(ò
Qô>�×)Ò)×5Ñ5ô >ñ Ð/°Ô ;ð ÙˆYÒWÓXÙˆY˜Ð*:Ð;Ó<ñ,ó =ó Yó ð,ð ÙˆX’}Ó%ÙˆYÐ)Ó*ÙˆY˜Ð*:Ð;Ó<ñ
ó =ó +ó &ó ð
ò07ð Ùˆ_Ð/Ó0Ùˆ_Ð/Ó0ÙˆY˜Ð*:Ð;Ó<ñ
ó =ó 1ó 1ó ð
ð ÙˆY˜Ð*:Ð;Ó<ÙÐ%¨¨e }Ó5ñ!ó 6ó =ó ð!ñ: ˆ\š=Ó)ñ(ó *ð(ñ
 Ø/òóñ ó!ð ð ñ+ó ð+ð ØÙˆYÐ(Ó)ñSó *ó ó ðSð,0Ð ,ð  ÙˆYÐ(Ó)ñó *ó ðð-Ð )ð@€ð€ð€ð
 ÙˆYÐ(°"±*©BÀ7À)ÑLÓMÙˆ]˜[¨,¸ÐFÓGÙÐ Ò"?Ó@ñó Aó Hó Nó ðð,(9÷P ‚F˜bŸgšgŸošo¨b¯gªg¯oªo¸f¿oºoÓ.NÓO€FÐPðQ 6ðV ñ
ó ð
ð=÷, ‚F˜bŸgšgŸošo¨b¯gªg¯oªo¸f¿oºoÓ.NÓO€FÐPð- :ð2 ñó ðò8ò
ð ØÙˆYÐ(Ó)ñ8ó *ó ó ð8ò6ð Øñ	/ó ó ð	/ò
òð
 ‡�×Ñ˜¢9Ó-ñ;ó .ð;òòð" ‡�×Ñ˜ A q 6Ó*ð ÙˆY™Ð5Ó6¸,¸ÑGÓHñNó Ió ó	 +ðNñ ˆYÐ*Ó+ÙˆX’~Ó&ñó 'ó ,ðòòð ÙˆYÐ1Ó2Ùˆ[˜;Ð(=Ð>Ó?ÙˆX’~Ó&ñ>ó 'ó @ó 3ó ð>ñ ˆYÐ1Ó2Ùˆ[˜;Ð(=Ð>Ó?ÙˆX’~Ó&ñ
ó 'ó @ó 3ð
ñ& ˆYÐ1Ó2Ùˆ[˜;Ð(=Ð>Ó?ÙˆX’~Ó&ñ
ó 'ó @ó 3ð
ñ& ˆYÐ1Ó2Ùˆ]˜[Ð*?Ð@ÓAÙˆ]˜[Ð*?Ð@ÓAÙˆX’~Ó&ñ>ó 'ó Bó Bó 3ð>ñ& Øòóñ ˆ]˜[Ð*?Ð@ÓAÙˆ]˜[Ð*?Ð@ÓAñ)"ó Bó Bóð)"ðX ØÙˆYÐ(Ó)ñPó *ó ó ðPñD Ø r¡z��{Ñ#Ò7Róñ0óð0ð ÙˆYÐ(Ó)ñó *ó ðð, ÙˆY˜Ð*:Ð;Ó<ñ+ó =ó ð+ñ\ ˆX˜˜1�vÓÙˆXÒ5Ó6ñ'ó 7ó ð'ñ ˆY˜Ð*:Ð;Ó<ñ3Kó =ð3KòlEô*'ð ÙˆY˜ Ð-Ó.ÙˆY˜Ð*:Ð;Ó<ñAó =ó /ó ðAôHð
 ‡�×ÒÙˆY˜Ð*:Ð;Ó<ÙˆY¨"©*˜+™¸6À;Ð:OÓQñ+ó Ró =ó ð+ò2'ñ ˆY¨2©>˜$ ™À¸vÓGÙˆ˜ÐÐ%BÑCñ$ó Dó Hð$ñ ˆY˜Ð*:Ð;Ó<Ùˆ˜4ÐÐ(AÑBñó Có =ðñ
 ˆY˜Ð*:Ð;Ó<ñAó =ðAò&=òH	+òò
;ð ØÙˆX’~Ó&ñó 'ó ó ðð0 ØÙÐ$¢oÓ6ÙˆX˜˜2�wÓÙˆY˜Ð*:Ð;Ó<ñó =ó  ó 7ó ó ð
ð6 ÙˆX˜˜2�wÓÙˆZÒWÓXÙˆY˜Ð*:Ð;Ó<ñ 6ó =ó Yó  ó ð 6ðF ÙˆX’zÓ"ñ*ó #ó ð*ò((ôð. ÙˆX˜˜1�vÓÙˆYÐ(Ó)ÙˆY˜Ð*:Ð;Ó<ñOó =ó *ó ó ðOð ÙˆX˜˜1�vÓÙˆYÐ(Ó)ñBó *ó ó ðBð Ø‡�×Ñ˜ A q 6Ó*ñó +ó ðð0 Ø‡�×Ñ˜ A q 6Ó*ñó +ó ñøðOD ó ØƒEðûð
 ó ØƒLðûð
 ó ØƒKðüò6 Lùò~ )RsB   Â	l Âl' Âl6 Ä mÐ?m
ìl$ì#l$ì'l3ì2l3ì6mím