ó
    ,Êžjn'  ã                  ó@  • % S SK J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J	r	  S SK
r
S SKrS SKr/ S
Qr\R                  " 5       rS\S'   SqS\S'   SS jrSS jrSS jrSS jrSS jrSS jrS S jrS!S jrSS jrSS jrSS jrSS jrg)"é    )ÚannotationsN)ÚCRITICAL)ÚDEBUG)ÚERROR)ÚFATAL)ÚINFO)ÚWARN)ÚWARNING)r   r   r   r   r   r	   r
   zthreading.LockÚ_lockzlogging.Handler | NoneÚ_default_handlerc                 ó\   • Sn Sn[         R                  " SU  SU 3[        R                  S9$ )zuCreate 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:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\optuna/logging.pyÚcreate_default_formatterr      s8   € ð
 .€FØ€GÜ×'Ò'Ø
˜�x˜z¨'¨Ð3Ü�z‰zñð ó    c                 ó2   • [         R                  S5      S   $ )NÚ.r   )Ú__name__Úsplit© r   r   Ú_get_library_namer   ,   s   € Ü�>‰>˜#Ó˜qÑ!Ð!r   c                 ó>   • [         R                  " [        5       5      $ ©N)ÚloggingÚ	getLoggerr   r   r   r   Ú_get_library_root_loggerr"   0   s   € Ü×ÒÔ.Ó0Ó1Ð1r   c                 ó\  • [            [        (       a
   S S S 5        g [        R                  " 5       q[        R	                  [        5       5        [        5       n U R                  [        5        U R                  [        R                  5        SU l
        S S S 5        g ! , (       d  f       g = f)NF)r   r   r    ÚStreamHandlerÚsetFormatterr   r"   Ú
addHandlerÚsetLevelr   Ú	propagate©Úlibrary_root_loggers    r   Ú_configure_library_root_loggerr+   4   sz   € ö 
ßÒà÷ 
ˆô #×0Ò0Ó2ÐÜ×%Ñ%Ô&>Ó&@ÔAô /GÓ.HÐØ×&Ñ&Ô'7Ô8Ø×$Ñ$¤W§\¡\Ô2Ø(-ÐÔ%÷ 
�Žús   ‡B�A7BÂ
B+c                 óî   • [            [        (       d
   S S S 5        g [        5       n U R                  [        5        U R	                  [
        R                  5        S qS S S 5        g ! , (       d  f       g = fr   )r   r   r"   ÚremoveHandlerr'   r    ÚNOTSETr)   s    r   Ú_reset_library_root_loggerr/   E   sT   € ö 
ßÒØ÷ 
ˆô /GÓ.HÐØ×)Ñ)Ô*:Ô;Ø×$Ñ$¤W§^¡^Ô4ØÐ÷ 
�Žús   ‡A&�A A&Á&
A4c                óB   • [        5         [        R                  " U 5      $ )zrReturn 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   • [        5         [        5       R                  5       $ )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   • [        5         [        5       R                  U 5        g)aé  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                 ód   • [        5         [        c   e[        5       R                  [        5        g)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                 ód   • [        5         [        c   e[        5       R                  [        5        g)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   • [        5         S[        5       l        g)ae  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©r+   r"   r(   r   r   r   Údisable_propagationr?   ø   s   € ôb #Ô$Ø+0ÔÓÕ(r   c                 ó6   • [        5         S[        5       l        g)ar  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   