Ë
    8Ò^j¼  ã                   ó*  — d dl Z d dlmZ d dlmZmZmZmZmZ d dl	m
Z
mZ e j                  j                  d e«       g e«        e«       gg«      d„ «       Ze j                  j                  dd e«       eg«      d„ «       Ze j                  j                  d	g d
¢«      d„ «       Zd„ Zd„ Ze j                  j                  dddg«      e j                  j                  dddg«      e j                  j                  deeg«      d„ «       «       «       Zd„ Zy)é    N)Úclone)ÚFailingCallbackÚMaxIterEstimatorÚNotValidCallbackÚRecordingAutoPropagatedCallbackÚRecordingCallback)ÚParallelÚdelayedÚ	callbacksc                 ó€   — t        «       } |j                  | Ž }t        |d«      sJ ‚|j                  | k(  sJ ‚||u sJ ‚y)z,Sanity check for the `set_callbacks` method.Ú_skl_callbacksN)r   Úset_callbacksÚhasattrr   )r   Ú	estimatorÚset_callbacks_returns      úw/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/callback/tests/test_callback_support.pyÚtest_set_callbacksr      sR   € ô !Ó"€Ià2˜9×2Ñ2°IÐ>ÐÜ�9Ð.Ô/Ð/Ð/à×#Ñ# yÒ0Ð0Ð0à 9Ñ,Ð,Ñ,ó    Úcallbackc                 óš   — t        «       }t        j                  t        d¬«      5  |j	                  | «       ddd«       y# 1 sw Y   yxY w)zMCheck the error message when not passing a valid callback to `set_callbacks`.z?callbacks must be instances following the FitCallback protocol.©ÚmatchN)r   ÚpytestÚraisesÚ	TypeErrorr   )r   r   s     r   Útest_set_callbacks_errorr   $   sC   € ô !Ó"€Iä	�‰ÜØOô
ñ *ð 	×Ñ Ô)÷	*÷ *ñ *ús   ¦AÁA
Úfail_at)ÚsetupÚon_fit_task_beginÚon_fit_task_endÚteardownc                 ó,  — t        | ¬«      }t        «       j                  |«      }t        j                  t
        d| › �¬«      5  |j                  «        ddd«       |j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚y# 1 sw Y   Œ6xY w)z6Check that a failing callback is properly teared down.©r   zFailing callback failed at r   Nr   é   r!   )r   r   r   r   r   Ú
ValueErrorÚfitÚcount_hooks)r   r   r   s      r   Útest_callback_errorr(   0   s‰   € ô
  wÔ/€HÜ Ó"×0Ñ0°Ó:€IÜ	�‰”zÐ+FÀwÀiÐ)PÔ	Qñ Ø�‰Œ÷ð ×Ñ Ó(¨AÒ-Ð-Ð-Ø×Ñ 
Ó+¨qÒ0Ð0Ñ0÷	ð ús   ÁB
Â
Bc                  ó”  — t        d¬«      } t        «       }t        «       j                  | |«      }t	        j
                  t        d¬«      5  |j                  «        ddd«       | j                  d«      dk(  sJ ‚| j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚y# 1 sw Y   ŒbxY w)	z?Check that teardown only runs for callbacks that entered setup.r   r#   z Failing callback failed at setupr   Nr$   r!   r   )	r   r   r   r   r   r   r%   r&   r'   )Ú
callback_1Ú
callback_2r   s      r   Ú:test_teardown_matches_setup_calls_on_partial_setup_failurer,   >   s¾   € ä ¨Ô1€JÜ"Ó$€Jä Ó"×0Ñ0°¸ZÓH€IÜ	�‰”zÐ)KÔ	Lñ Ø�‰Œ÷ð ×!Ñ! 'Ó*¨aÒ/Ð/Ð/Ø×!Ñ! *Ó-°Ò2Ð2Ð2ð ×!Ñ! 'Ó*¨aÒ/Ð/Ð/Ø×!Ñ! *Ó-°Ò2Ð2Ñ2÷ð ús   ÁB>Â>Cc                  óˆ  — t        d¬«      } t        d¬«      }t        «       j                  | |«      }t        j                  t
        d¬«      5 }|j                  «        ddd«       t        j                  j                  «      dk(  sJ ‚| j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚y# 1 sw Y   ŒZxY w)zuCheck that all teardown are called even if some fail.

    All errors are raised together in one ExceptionGroup.
    r!   r#   z/The following callback teardown errors occurredr   Né   r$   )r   r   r   r   r   ÚExceptionGroupr&   ÚlenÚvalueÚ
exceptionsr'   )r*   r+   r   Úexc_infos       r   Ú)test_multiple_teardown_errors_are_groupedr4   O   s±   € ô
 !¨Ô4€JÜ ¨Ô4€JÜ Ó"×0Ñ0°¸ZÓH€Iä	�‰ÜÐOô
ð à	Ø�‰Œ÷ô
 ˆx�~‰~×(Ñ(Ó)¨QÒ.Ð.Ð.Ø×!Ñ! *Ó-°Ò2Ð2Ð2Ø×!Ñ! *Ó-°Ò2Ð2Ñ2÷ð ús   ÁB8Â8CÚn_jobsr$   r.   ÚpreferÚthreadsÚ	processesÚCallbackc                 óB  ‡— d„ Šˆfd„}d\  }} |«       }t        |¬«      j                  |«      } |||| |«       |j                  d«      |k(  sJ ‚|j                  d«      |d|z   z  k(  sJ ‚|j                  d«      |d|z   z  k(  sJ ‚|j                  d	«      |k(  sJ ‚y
)aà  Check callbacks on estimators within function not supporting callbacks.

    Since the outer function does not support callbacks, there's no shared root context
    and the context trees of each sub-estimator are independent. As a result, the
    callback acts as a regular non-propagated callback: its on_fit_begin and on_fit_end
    are called once for each fit of the sub-estimator and the number of tasks is the sum
    of the number of tasks from all the sub-estimators.
    c                 ó6   — t        | «      j                  «        y ©N)r   r&   ©r   s    r   Úclone_and_fitz8test_function_no_callback_support.<locals>.clone_and_fitq   s   € ÜˆiÓ×ÑÕr   c                 óT   •‡ —  t        ||¬«      ˆˆ fd„t        |«      D «       «       y )N)r5   r6   c              3   ó@   •K  — | ]  } t        ‰«      ‰«      –— Œ y ­wr<   )r
   )Ú.0Ú_r>   r   s     €€r   ú	<genexpr>zBtest_function_no_callback_support.<locals>.func.<locals>.<genexpr>u   s#   øè ø€ ò /
Ø23Ð"ŒG�MÓ" 9×-ñ/
ùs   ƒ)r	   Úrange)r   Ún_fitsr5   r6   r>   s   `   €r   Úfuncz/test_function_no_callback_support.<locals>.funct   s%   ù€ Ø.Œ˜ vÔ.ô /
Ü7<¸V³}ô/
õ 	
r   )é   é   )Úmax_iterr   r   r$   r    r!   N)r   r   r'   )	r5   r6   r9   rF   rE   rI   r   r   r>   s	           @r   Ú!test_function_no_callback_supportrJ   b   s»   ø€ òô
ð
 Ñ€FˆHÙ‹z€HÜ ¨(Ô3×AÑAÀ(ÓK€Iáˆ�F˜F FÔ+à×Ñ Ó(¨FÒ2Ð2Ð2à×ÑÐ 3Ó4¸À!ÀhÁ,Ñ8OÒOÐOÐOØ×ÑÐ 1Ó2°fÀÀHÁÑ6MÒMÐMÐMØ×Ñ 
Ó+¨vÒ5Ð5Ñ5r   c                  óÞ   — t        «       } | j                  t        «       «       t        | d«      sJ ‚| j                  «        t        | d«      rJ ‚| j                  «        t        | d«      rJ ‚y)zGCheck that setting no callbacks removes the `_skl_callbacks` attribute.r   N)r   r   r   r   r=   s    r   Útest_set_callback_emptyrL   †   sl   € ä Ó"€Ià×ÑÔ-Ó/Ô0Ü�9Ð.Ô/Ð/Ð/à×ÑÔÜ�yÐ"2Ô3Ð3Ð3ð ×ÑÔÜ�yÐ"2Ô3Ð3Ð3Ð3r   )r   Úsklearn.baser   Úsklearn.callback.tests._utilsr   r   r   r   r   Úsklearn.utils.parallelr	   r
   ÚmarkÚparametrizer   r   r(   r,   r4   rJ   rL   © r   r   ú<module>rS      s3  ðó å ÷õ ÷ 5ð ‡�×ÑØá	Ó	ÐÙ	Ó	Ñ=Ó?Ð@ðóñ	-óð	-ð ‡�×Ñ˜ dÑ,<Ó,>Ð@QÐ%RÓSñ*ó Tð*ð ‡�×ÑØÒLóñ1óð1ò3ò"3ð& ‡�×Ñ˜ A q 6Ó*Ø‡�×Ñ˜ I¨{Ð#;Ó<Ø‡�×ÑØÐ"Ð$CÐDóñ6óó =ó +ð
6ó>4r   