Ë
    ÿÿæiç  ã                  ód   — d dl mZ d dlmZ d dlmZ erd dlmZ d dlm	Z	 d dlm
Z
  G d„ d«      Zy	)
é    )Úannotations)ÚTYPE_CHECKING)Ú
TrialState)Ú	Container)ÚStudy)ÚFrozenTrialc                  óD   — e Zd ZdZej
                  ff	 	 	 	 	 dd„Zdd„Zy)ÚMaxTrialsCallbacka"  Set a maximum number of trials before ending the study.

    While the ``n_trials`` argument of :meth:`optuna.study.Study.optimize` sets the number of
    trials that will be run, you may want to continue running until you have a certain number of
    successfully completed trials or stop the study when you have a certain number of trials that
    fail. This ``MaxTrialsCallback`` class allows you to set a maximum number of trials for a
    particular :class:`~optuna.trial.TrialState` before stopping the study.

    Example:

        .. testcode::

            import optuna
            from optuna.study import MaxTrialsCallback
            from optuna.trial import TrialState


            def objective(trial):
                x = trial.suggest_float("x", -1, 1)
                return x**2


            study = optuna.create_study()
            study.optimize(
                objective,
                callbacks=[MaxTrialsCallback(10, states=(TrialState.COMPLETE,))],
            )

    Args:
        n_trials:
            The max number of trials. Must be set to an integer.
        states:
            Tuple of the :class:`~optuna.trial.TrialState` to be counted
            towards the max trials limit. Default value is ``(TrialState.COMPLETE,)``.
            If :obj:`None`, count all states.
    c                ó    — || _         || _        y )N)Ú	_n_trialsÚ_states)ÚselfÚn_trialsÚstatess      úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/optuna/_callbacks.pyÚ__init__zMaxTrialsCallback.__init__5   s   € ð "ˆŒØˆ�ó    c                ó”   — |j                  d| j                  ¬«      }t        |«      }|| j                  k\  r|j	                  «        y y )NF)Údeepcopyr   )Ú
get_trialsr   Úlenr   Ústop)r   ÚstudyÚtrialÚtrialsÚ
n_completes        r   Ú__call__zMaxTrialsCallback.__call__;   s>   € Ø×!Ñ!¨5¸¿¹Ð!ÓFˆÜ˜“[ˆ
Ø˜Ÿ™Ò'Ø�J‰J�Lð (r   N)r   Úintr   zContainer[TrialState] | NoneÚreturnÚNone)r   r   r   r   r   r    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚCOMPLETEr   r   © r   r   r
   r
      s:   „ ñ#ðL FP×EXÑEXÐDZðØðØ%Aðà	óôr   r
   N)Ú
__future__r   Útypingr   Úoptuna.trialr   Úcollections.abcr   Úoptuna.studyr   r   r
   r&   r   r   Ú<module>r,      s&   ðÝ "å  å #ñ Ý)å"Ý(÷0ò 0r   