2020 the huggingface team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache orglicenseslicense2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license the current default level is logging warning restore to the original level should be able to log warnings if default settings weren t overridden by pytest loglevelall this is setting the level for all of transformers loggers should not be able to log warnings should be able to log warnings again restore to the original level reset for the env var to take effect next time some logger call is made this action activates the env var restore to the original level reset for the env var to take effect next time some logger call is made this action activates the env var no need to restore as nothing was changed testing logger warningadvice nothing should be logged as env var disables this method should log normally as transformersnoadvisorywarnings is unset 2020 the huggingface team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache org licenses license 2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license the current default level is logging warning restore to the original level should be able to log warnings if default settings weren t overridden by pytest log level all this is setting the level for all of transformers loggers should not be able to log warnings should be able to log warnings again restore to the original level reset for the env var to take effect next time some logger call is made this action activates the env var restore to the original level reset for the env var to take effect next time some logger call is made this action activates the env var no need to restore as nothing was changed testing logger warning_advice nothing should be logged as env var disables this method should log normally as transformers_no_advisory_warnings is unset
import os
import unittest

from huggingface_hub.utils import are_progress_bars_disabled

import transformers.models.bart.tokenization_bart
from transformers import logging
from transformers.testing_utils import CaptureLogger, mockenv, mockenv_context
from transformers.utils.logging import disable_progress_bar, enable_progress_bar


class HfArgumentParserTest(unittest.TestCase):
    def test_set_level(self):
        logger = logging.get_logger()

        
        level_origin = logging.get_verbosity()

        logging.set_verbosity_error()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_warning()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_info()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        logging.set_verbosity_debug()
        self.assertEqual(logger.getEffectiveLevel(), logging.get_verbosity())

        
        logging.set_verbosity(level_origin)

    def test_integration(self):
        level_origin = logging.get_verbosity()

        logger = logging.get_logger("transformers.models.bart.tokenization_bart")
        msg = "Testing 1, 2, 3"

        
        if level_origin <= logging.WARNING:
            with CaptureLogger(logger) as cl:
                logger.warning(msg)
            self.assertEqual(cl.out, msg + "\n")

        
        logging.set_verbosity_error()

        
        with CaptureLogger(logger) as cl:
            logger.warning(msg)
        self.assertEqual(cl.out, "")

        
        logging.set_verbosity_warning()
        with CaptureLogger(logger) as cl:
            logger.warning(msg)
        self.assertEqual(cl.out, msg + "\n")

        
        logging.set_verbosity(level_origin)

    @mockenv(TRANSFORMERS_VERBOSITY="error")
    def test_env_override(self):
        
        transformers.utils.logging._reset_library_root_logger()
        
        _ = logging.get_logger("transformers.models.bart.tokenization_bart")

        env_level_str = os.getenv("TRANSFORMERS_VERBOSITY", None)
        env_level = logging.log_levels[env_level_str]

        current_level = logging.get_verbosity()
        self.assertEqual(
            env_level,
            current_level,
            f"TRANSFORMERS_VERBOSITY={env_level_str}/{env_level}, but internal verbosity is {current_level}",
        )

        
        os.environ["TRANSFORMERS_VERBOSITY"] = ""
        transformers.utils.logging._reset_library_root_logger()

    @mockenv(TRANSFORMERS_VERBOSITY="super-error")
    def test_env_invalid_override(self):
        
        transformers.utils.logging._reset_library_root_logger()
        logger = logging.logging.getLogger()
        with CaptureLogger(logger) as cl:
            
            logging.get_logger("transformers.models.bart.tokenization_bart")
        self.assertIn("Unknown option TRANSFORMERS_VERBOSITY=super-error", cl.out)

        

    def test_advisory_warnings(self):
        
        transformers.utils.logging._reset_library_root_logger()

        logger = logging.get_logger("transformers.models.bart.tokenization_bart")
        msg = "Testing 1, 2, 3"

        with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS="1"):
            
            with CaptureLogger(logger) as cl:
                logger.warning_advice(msg)
            self.assertEqual(cl.out, "")

        with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS=""):
            
            with CaptureLogger(logger) as cl:
                logger.warning_advice(msg)
            self.assertEqual(cl.out, msg + "\n")


def test_set_progress_bar_enabled():
    disable_progress_bar()
    assert are_progress_bars_disabled()

    enable_progress_bar()
    assert not are_progress_bars_disabled()