§
    ìóÉjn'  ã                  ó&  — 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dS )*é    )ÚannotationsN)ÚCRITICAL)ÚDEBUG)ÚERROR)ÚFATAL)ÚINFO)ÚWARN)ÚWARNING)r   r   r   r   r   r	   r
   zthreading.LockÚ_lockzlogging.Handler | NoneÚ_default_handlerÚreturnúlogging.Formatterc                 óV   — 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     úq/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/optuna/logging.pyÚcreate_default_formatterr      s@   € ð
 .€FØ€GÝÔ'Ø3˜Ð3Ð3¨'Ð3Ð3ÝŒzðñ ô ð ó    Ústrc                 óB   — t                                d¦  «        d         S )Nú.r   )Ú__name__Úsplit© r   r   Ú_get_library_namer    ,   s   € Ý�>Š>˜#ÑÔ˜qÔ!Ð!r   úlogging.Loggerc                 óB   — t          j        t          ¦   «         ¦  «        S ©N)ÚloggingÚ	getLoggerr    r   r   r   Ú_get_library_root_loggerr&   0   s   € ÝÔÕ.Ñ0Ô0Ñ1Ô1Ð1r   ÚNonec                 ó~  — t           5  t          r	 d d d ¦  «         d S t          j        ¦   «         at                               t          ¦   «         ¦  «         t          ¦   «         } |                      t          ¦  «         |                      t          j	        ¦  «         d| _
        d d d ¦  «         d S # 1 swxY w Y   d S )NF)r   r   r$   ÚStreamHandlerÚsetFormatterr   r&   Ú
addHandlerÚsetLevelr   Ú	propagate©Úlibrary_root_loggers    r   Ú_configure_library_root_loggerr0   4   s  € õ 
ð .ð .Ýð 	àð.ð .ð .ñ .ô .ð .ð .ð .õ #Ô0Ñ2Ô2ÐÝ×%Ò%Õ&>Ñ&@Ô&@ÑAÔAÐAõ /GÑ.HÔ.HÐØ×&Ò&Õ'7Ñ8Ô8Ð8Ø×$Ò$¥W¤\Ñ2Ô2Ð2Ø(-ÐÔ%ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ˆ	B2žBB2Â2B6Â9B6c                 ó  — t           5  t          s	 d d d ¦  «         d S t          ¦   «         } |                      t          ¦  «         |                      t
          j        ¦  «         d ad d d ¦  «         d S # 1 swxY w Y   d S r#   )r   r   r&   ÚremoveHandlerr,   r$   ÚNOTSETr.   s    r   Ú_reset_library_root_loggerr4   E   sá   € õ 
ð  ð  Ýð 	Øð ð  ð  ñ  ô  ð  ð  ð  õ /GÑ.HÔ.HÐØ×)Ò)Õ*:Ñ;Ô;Ð;Ø×$Ò$¥W¤^Ñ4Ô4Ð4ØÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s   ˆ	A4žA	A4Á4A8Á;A8Únamec                óF   — t          ¦   «          t          j        | ¦  «        S )zzReturn a logger with the specified name.

    This function is not supposed to be directly accessed by library users.
    )r0   r$   r%   )r5   s    r   Ú
get_loggerr7   R   s!   € õ #Ñ$Ô$Ð$ÝÔ˜TÑ"Ô"Ð"r   Úintc                 ó^   — t          ¦   «          t          ¦   «                              ¦   «         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``
    )r0   r&   ÚgetEffectiveLevelr   r   r   Úget_verbosityr;   \   s)   € õd #Ñ$Ô$Ð$Ý#Ñ%Ô%×7Ò7Ñ9Ô9Ð9r   Ú	verbosityc                ód   — t          ¦   «          t          ¦   «                              | ¦  «         dS )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)r0   r&   r,   )r<   s    r   Úset_verbosityr>   ’   s1   € õ^ #Ñ$Ô$Ð$ÝÑÔ×'Ò'¨	Ñ2Ô2Ð2Ð2Ð2r   c                 ó€   — t          ¦   «          t          €J ‚t          ¦   «                              t          ¦  «         dS )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)r0   r   r&   r2   r   r   r   Údisable_default_handlerr@   Å   s>   € õB #Ñ$Ô$Ð$åÐ'Ð'Ð'ÝÑÔ×,Ò,Õ-=Ñ>Ô>Ð>Ð>Ð>r   c                 ó€   — t          ¦   «          t          €J ‚t          ¦   «                              t          ¦  «         dS )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)r0   r   r&   r+   r   r   r   Úenable_default_handlerrB   ì   s=   € õ #Ñ$Ô$Ð$åÐ'Ð'Ð'ÝÑÔ×)Ò)Õ*:Ñ;Ô;Ð;Ð;Ð;r   c                 óH   — t          ¦   «          dt          ¦   «         _        dS )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 propagating 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©r0   r&   r-   r   r   r   Údisable_propagationrE   ø   s&   € õb #Ñ$Ô$Ð$Ø+0ÕÑÔÔ(Ð(Ð(r   c                 óH   — t          ¦   «          dt          ¦   «         _        dS )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"

    TNrD   r   r   r   Úenable_propagationrG   -  s&   € õR #Ñ$Ô$Ð$Ø+/ÕÑÔÔ(Ð(Ð(r   )r   r   )r   r   )r   r!   )r   r'   )r5   r   r   r!   )r   r8   )r<   r8   r   r'   )Ú
__future__r   r$   r   r   r   r   r   r	   r
   r   Ú	threadingr   Ú__all__ÚLockr   Ú__annotations__r   r   r    r&   r0   r4   r7   r;   r>   r@   rB   rE   rG   r   r   r   ú<module>rM      sý  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð à €€€ðð ð €ð '˜	œÑ(Ô(€Ð (Ð (Ð (Ñ (Ø+/Ð Ð /Ð /Ð /Ñ /ð
ð 
ð 
ð 
ð"ð "ð "ð "ð2ð 2ð 2ð 2ð.ð .ð .ð .ð"
 ð 
 ð 
 ð 
 ð#ð #ð #ð #ð3:ð 3:ð 3:ð 3:ðl03ð 03ð 03ð 03ðf$?ð $?ð $?ð $?ðN	<ð 	<ð 	<ð 	<ð21ð 21ð 21ð 21ðj*0ð *0ð *0ð *0ð *0ð *0r   