Ë
    ÿÿæin'  ã                  ó(  — U d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lm	Z	 d dl
Z
d dlZd dlZg d
¢Z ej                  «       Zded<   daded<   dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d„Zd!d„Zdd„Zdd„Zdd„Zdd„Zy)"é    )ÚannotationsN)ÚCRITICAL)ÚDEBUG)ÚERROR)ÚFATAL)ÚINFO)ÚWARN)ÚWARNING)r   r   r   r   r   r	   r
   zthreading.LockÚ_lockzlogging.Handler | NoneÚ_default_handlerc                 ó`   — d} d}t        j                  d| › d|› �t        j                  ¬«      S )z}Create a default formatter of log messages.

    This function is not supposed to be directly accessed by library users.
    z[%(levelname)1.1s %(asctime)s]z%(message)sz%(log_color)sz
%(reset)s )Ústream)ÚcolorlogÚTTYColoredFormatterÚsysÚstderr)ÚheaderÚmessages     úc/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/optuna/logging.pyÚcreate_default_formatterr      s8   € ð
 .€FØ€GÜ×'Ñ'Ø
˜�x˜z¨'¨Ð3Ü�z‰zôð ó    c                 ó2   — t         j                  d«      d   S )NÚ.r   )Ú__name__Úsplit© r   r   Ú_get_library_namer   ,   s   € Ü�>‰>˜#Ó˜qÑ!Ð!r   c                 ó<   — t        j                  t        «       «      S ©N)ÚloggingÚ	getLoggerr   r   r   r   Ú_get_library_root_loggerr"   0   s   € Ü×ÑÔ.Ó0Ó1Ð1r   c                 óF  — t         5  t        r
	 d d d «       y t        j                  «       at        j	                  t        «       «       t        «       } | j                  t        «       | j                  t        j                  «       d| _
        d d d «       y # 1 sw Y   y xY w)NF)r   r   r    ÚStreamHandlerÚsetFormatterr   r"   Ú
addHandlerÚsetLevelr   Ú	propagate©Úlibrary_root_loggers    r   Ú_configure_library_root_loggerr+   4   sw   € ö 
Ýà÷ 
ˆô #×0Ñ0Ó2ÐÜ×%Ñ%Ô&>Ó&@ÔAô /GÓ.HÐØ×&Ñ&Ô'7Ô8Ø×$Ñ$¤W§\¡\Ô2Ø(-ÐÔ%÷ 
�‰ús   ‡B˜A6BÂB c                 óÚ   — t         5  t        s
	 d d d «       y t        «       } | j                  t        «       | j	                  t
        j                  «       d ad d d «       y # 1 sw Y   y xY wr   )r   r   r"   ÚremoveHandlerr'   r    ÚNOTSETr)   s    r   Ú_reset_library_root_loggerr/   E   sQ   € ö 
ÝØ÷ 
ˆô /GÓ.HÐØ×)Ñ)Ô*:Ô;Ø×$Ñ$¤W§^¡^Ô4ØÐ÷ 
�‰ús   ‡A!˜A A!Á!A*c                ó@   — t        «        t        j                  | «      S )zzReturn a logger with the specified name.

    This function is not supposed to be directly accessed by library users.
    )r+   r    r!   )Únames    r   Ú
get_loggerr2   R   s   € ô #Ô$Ü×Ñ˜TÓ"Ð"r   c                 óF   — t        «        t        «       j                  «       S )aƒ  Return the current level for the Optuna's root logger.

    Example:

        Get the default verbosity level.

        .. testsetup::

            def objective(trial):
                x = trial.suggest_float("x", -100, 100)
                y = trial.suggest_categorical("y", [-1, 0, 1])
                return x**2 + y

        .. testcode::

            import optuna

            # The default verbosity level of Optuna is `optuna.logging.INFO`.
            print(optuna.logging.get_verbosity())
            # 20
            print(optuna.logging.INFO)
            # 20

            # There are logs of the INFO level.
            study = optuna.create_study()
            study.optimize(objective, n_trials=5)
            # [I 2021-10-31 05:35:17,232] A new study created ...
            # [I 2021-10-31 05:35:17,238] Trial 0 finished with value: ...
            # [I 2021-10-31 05:35:17,245] Trial 1 finished with value: ...
            # ...

        .. testoutput::
           :hide:

           20
           20
    Returns:
        Logging level, e.g., ``optuna.logging.DEBUG`` and ``optuna.logging.INFO``.

    .. note::
        Optuna has following logging levels:

        - ``optuna.logging.CRITICAL``, ``optuna.logging.FATAL``
        - ``optuna.logging.ERROR``
        - ``optuna.logging.WARNING``, ``optuna.logging.WARN``
        - ``optuna.logging.INFO``
        - ``optuna.logging.DEBUG``
    )r+   r"   ÚgetEffectiveLevelr   r   r   Úget_verbosityr5   \   s   € ôd #Ô$Ü#Ó%×7Ñ7Ó9Ð9r   c                óJ   — t        «        t        «       j                  | «       y)aa  Set the level for the Optuna's root logger.

    Example:

        Set the logging level ``optuna.logging.WARNING``.

        .. testsetup::

            def objective(trial):
                x = trial.suggest_int("x", -10, 10)
                return x**2

        .. testcode::

            import optuna

            # There are INFO level logs.
            study = optuna.create_study()
            study.optimize(objective, n_trials=10)
            # [I 2021-10-31 02:59:35,088] Trial 0 finished with value: 16.0 ...
            # [I 2021-10-31 02:59:35,091] Trial 1 finished with value: 1.0 ...
            # [I 2021-10-31 02:59:35,096] Trial 2 finished with value: 1.0 ...

            # Setting the logging level WARNING, the INFO logs are suppressed.
            optuna.logging.set_verbosity(optuna.logging.WARNING)
            study.optimize(objective, n_trials=10)

        .. testcleanup::

            optuna.logging.set_verbosity(optuna.logging.INFO)


    Args:
        verbosity:
            Logging level, e.g., ``optuna.logging.DEBUG`` and ``optuna.logging.INFO``.

    .. note::
        Optuna has following logging levels:

        - ``optuna.logging.CRITICAL``, ``optuna.logging.FATAL``
        - ``optuna.logging.ERROR``
        - ``optuna.logging.WARNING``, ``optuna.logging.WARN``
        - ``optuna.logging.INFO``
        - ``optuna.logging.DEBUG``
    N)r+   r"   r'   )Ú	verbositys    r   Úset_verbosityr8   ’   s   € ô^ #Ô$ÜÓ×'Ñ'¨	Õ2r   c                 ób   — t        «        t        €J ‚t        «       j                  t        «       y)a�  Disable the default handler of the Optuna's root logger.

    Example:

        Stop and then resume logging to :obj:`sys.stderr`.

        .. testsetup::

            def objective(trial):
                x = trial.suggest_float("x", -100, 100)
                y = trial.suggest_categorical("y", [-1, 0, 1])
                return x**2 + y

        .. testcode::

            import optuna

            study = optuna.create_study()

            # There are no logs in sys.stderr.
            optuna.logging.disable_default_handler()
            study.optimize(objective, n_trials=10)

            # There are logs in sys.stderr.
            optuna.logging.enable_default_handler()
            study.optimize(objective, n_trials=10)
            # [I 2020-02-23 17:00:54,314] Trial 10 finished with value: ...
            # [I 2020-02-23 17:00:54,356] Trial 11 finished with value: ...
            # ...

    N)r+   r   r"   r-   r   r   r   Údisable_default_handlerr:   Å   s)   € ôB #Ô$äÐ'Ð'Ð'ÜÓ×,Ñ,Ô-=Õ>r   c                 ób   — t        «        t        €J ‚t        «       j                  t        «       y)z™Enable the default handler of the Optuna's root logger.

    Please refer to the example shown in :func:`~optuna.logging.disable_default_handler()`.
    N)r+   r   r"   r&   r   r   r   Úenable_default_handlerr<   ì   s(   € ô #Ô$äÐ'Ð'Ð'ÜÓ×)Ñ)Ô*:Õ;r   c                 ó6   — t        «        dt        «       _        y)aÝ  Disable propagation of the library log outputs.

    Note that log propagation is disabled by default. You only need to use this function
    to stop log propagation when you use :func:`~optuna.logging.enable_propagation()`.

    Example:

        Stop propagating logs to the root logger on the second optimize call.

        .. testsetup::

            def objective(trial):
                x = trial.suggest_float("x", -100, 100)
                y = trial.suggest_categorical("y", [-1, 0, 1])
                return x**2 + y

        .. testcode::

            import optuna
            import logging

            optuna.logging.disable_default_handler()  # Disable the default handler.
            logger = logging.getLogger()

            logger.setLevel(logging.INFO)  # Setup the root logger.
            logger.addHandler(logging.FileHandler("foo.log", mode="w"))

            optuna.logging.enable_propagation()  # Propagate logs to the root logger.

            study = optuna.create_study()

            logger.info("Logs from first optimize call")  # The logs are saved in the logs file.
            study.optimize(objective, n_trials=10)

            optuna.logging.disable_propagation()  # Stop propogating logs to the root logger.

            logger.info("Logs from second optimize call")
            # The new logs for second optimize call are not saved.
            study.optimize(objective, n_trials=10)

            with open("foo.log") as f:
                assert f.readline().startswith("A new study created")
                assert f.readline() == "Logs from first optimize call\n"
                # Check for logs after second optimize call.
                assert f.read().split("Logs from second optimize call\n")[-1] == ""

    FN©r+   r"   r(   r   r   r   Údisable_propagationr?   ø   s   € ôb #Ô$Ø+0ÔÓÕ(r   c                 ó6   — t        «        dt        «       _        y)aÒ  Enable propagation of the library log outputs.

    Please disable the Optuna's default handler to prevent double logging if the root logger has
    been configured.

    Example:

        Propagate all log output to the root logger in order to save them to the file.

        .. testsetup::

            def objective(trial):
                x = trial.suggest_float("x", -100, 100)
                y = trial.suggest_categorical("y", [-1, 0, 1])
                return x**2 + y

        .. testcode::

            import optuna
            import logging

            logger = logging.getLogger()

            logger.setLevel(logging.INFO)  # Setup the root logger.
            logger.addHandler(logging.FileHandler("foo.log", mode="w"))

            optuna.logging.enable_propagation()  # Propagate logs to the root logger.
            optuna.logging.disable_default_handler()  # Stop showing logs in sys.stderr.

            study = optuna.create_study()

            logger.info("Start optimization.")
            study.optimize(objective, n_trials=10)

            with open("foo.log") as f:
                assert f.readline().startswith("A new study created")
                assert f.readline() == "Start optimization.\n"

    TNr>   r   r   r   Úenable_propagationrA   -  s   € ôR #Ô$Ø+/ÔÓÕ(r   )Úreturnzlogging.Formatter)rB   Ústr)rB   úlogging.Logger)rB   ÚNone)r1   rC   rB   rD   )rB   Úint)r7   rF   rB   rE   )Ú
__future__r   r    r   r   r   r   r   r	   r
   r   Ú	threadingr   Ú__all__ÚLockr   Ú__annotations__r   r   r   r"   r+   r/   r2   r5   r8   r:   r<   r?   rA   r   r   r   Ú<module>rL      s‘   ðÞ "ã Ý Ý Ý Ý Ý Ý Ý Û 
Û ã ò€ð '˜	Ÿ™Ó(€€~Ó (Ø+/Ð Ð(Ó /ó
ó"ó2ó.ó"
 ó#ó3:ól03óf$?óN	<ó21ôj*0r   