


import os
import unittest

from transformers import BertTokenizerFast
from transformers.models.bert.tokenization_bert import (
    VOCAB_FILES_NAMES,
    BasicTokenizer,
    BertTokenizer,
    WordpieceTokenizer,
    _is_control,
    _is_punctuation,
    _is_whitespace,
)
from transformers.testing_utils import require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin, filter_non_english







@require_tokenizers
class 	__lowercase    (__SCREAMING_SNAKE_CASE	,       unittest.TestCase  ):





							"""simple docstring"""







							_UpperCAmelCase      =						BertTokenizer
							_UpperCAmelCase      =						BertTokenizerFast
							_UpperCAmelCase      =						True
							_UpperCAmelCase      =						True
							_UpperCAmelCase      =						filter_non_english






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										super().setUp()

										SCREAMING_SNAKE_CASE_		:     int					=					[
										    '[UNK]',
										    '[CLS]',
										    '[SEP]',
										    '[PAD]',
										    '[MASK]',
										    'want',
										    '##want',
										    '##ed',
										    'wa',
										    'un',
										    'runn',
										    '##ing',
										    ',',
										    'low',
										    'lowest',
										]
										SCREAMING_SNAKE_CASE_		:     int					=					os.path.join(self.tmpdirname			,						VOCAB_FILES_NAMES['vocab_file']       )
										with open(self.vocab_file			,						'w'			,						encoding='utf-8'       ) as vocab_writer:
													vocab_writer.write(''.join([x + '\n' for x in vocab_tokens]       )       )






							def 					UpperCamelCase__     (      self			,						lowerCAmelCase__       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Any					=					'UNwant\u00E9d,running'
										SCREAMING_SNAKE_CASE_		:     Tuple					=					'unwanted, running'
										return input_text, output_text






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     List[Any]					=					self.tokenizer_class(self.vocab_file       )

										SCREAMING_SNAKE_CASE_		:     Dict					=					tokenizer.tokenize('UNwant\u00E9d,running'       )
										self.assertListEqual(lowerCAmelCase__			,						['un', '##want', '##ed', ',', 'runn', '##ing']       )
										self.assertListEqual(tokenizer.convert_tokens_to_ids(lowerCAmelCase__       )			,						[9, 6, 7, 1_2, 1_0, 1_1]       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										if not self.test_rust_tokenizer:
													return

										SCREAMING_SNAKE_CASE_		:     Optional[int]					=					self.get_tokenizer()
										SCREAMING_SNAKE_CASE_		:     List[Any]					=					self.get_rust_tokenizer()

										SCREAMING_SNAKE_CASE_		:     Any					=					'UNwant\u00E9d,running'

										SCREAMING_SNAKE_CASE_		:     int					=					tokenizer.tokenize(lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     Dict					=					rust_tokenizer.tokenize(lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					tokenizer.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     Optional[int]					=					rust_tokenizer.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     Tuple					=					self.get_rust_tokenizer()
										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					tokenizer.encode(lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     str					=					rust_tokenizer.encode(lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

										# With lower casing
										SCREAMING_SNAKE_CASE_		:     Dict					=					self.get_tokenizer(do_lower_case=lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     Dict					=					self.get_rust_tokenizer(do_lower_case=lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     Any					=					'UNwant\u00E9d,running'

										SCREAMING_SNAKE_CASE_		:     Tuple					=					tokenizer.tokenize(lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     List[str]					=					rust_tokenizer.tokenize(lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     List[str]					=					tokenizer.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     List[Any]					=					rust_tokenizer.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     Tuple					=					self.get_rust_tokenizer()
										SCREAMING_SNAKE_CASE_		:     Any					=					tokenizer.encode(lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     List[Any]					=					rust_tokenizer.encode(lowerCAmelCase__       )
										self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     List[Any]					=					BasicTokenizer()

										self.assertListEqual(tokenizer.tokenize('ah\u535A\u63A8zz'       )			,						['ah', '\u535A', '\u63A8', 'zz']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					BasicTokenizer(do_lower_case=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHeLLo!how  \n Are yoU?  '       )			,						['hello', '!', 'how', 'are', 'you', '?']       )
										self.assertListEqual(tokenizer.tokenize('H\u00E9llo'       )			,						['hello']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     List[Any]					=					BasicTokenizer(do_lower_case=lowerCAmelCase__			,						strip_accents=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHäLLo!how  \n Are yoU?  '       )			,						['hällo', '!', 'how', 'are', 'you', '?']       )
										self.assertListEqual(tokenizer.tokenize('H\u00E9llo'       )			,						['h\u00E9llo']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Optional[int]					=					BasicTokenizer(do_lower_case=lowerCAmelCase__			,						strip_accents=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHäLLo!how  \n Are yoU?  '       )			,						['hallo', '!', 'how', 'are', 'you', '?']       )
										self.assertListEqual(tokenizer.tokenize('H\u00E9llo'       )			,						['hello']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					BasicTokenizer(do_lower_case=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHäLLo!how  \n Are yoU?  '       )			,						['hallo', '!', 'how', 'are', 'you', '?']       )
										self.assertListEqual(tokenizer.tokenize('H\u00E9llo'       )			,						['hello']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					BasicTokenizer(do_lower_case=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHeLLo!how  \n Are yoU?  '       )			,						['HeLLo', '!', 'how', 'Are', 'yoU', '?']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     str					=					BasicTokenizer(do_lower_case=lowerCAmelCase__			,						strip_accents=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHäLLo!how  \n Are yoU?  '       )			,						['HäLLo', '!', 'how', 'Are', 'yoU', '?']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Tuple					=					BasicTokenizer(do_lower_case=lowerCAmelCase__			,						strip_accents=lowerCAmelCase__       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHäLLo!how  \n Are yoU?  '       )			,						['HaLLo', '!', 'how', 'Are', 'yoU', '?']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Any					=					BasicTokenizer(do_lower_case=lowerCAmelCase__			,						never_split=['[UNK]']       )

										self.assertListEqual(
										    tokenizer.tokenize(' \tHeLLo!how  \n Are yoU? [UNK]'       )			,						['HeLLo', '!', 'how', 'Are', 'yoU', '?', '[UNK]']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Tuple					=					BasicTokenizer()
										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					'a\n\'ll !!to?\'d of, can\'t.'
										SCREAMING_SNAKE_CASE_		:     Tuple					=					['a', '\'', 'll', '!', '!', 'to', '?', '\'', 'd', 'of', ',', 'can', '\'', 't', '.']
										self.assertListEqual(tokenizer.tokenize(lowerCAmelCase__       )			,						lowerCAmelCase__       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     List[str]					=					['[UNK]', '[CLS]', '[SEP]', 'want', '##want', '##ed', 'wa', 'un', 'runn', '##ing']

										SCREAMING_SNAKE_CASE_		:     List[str]					=					{}
										for i, token in enumerate(lowerCAmelCase__       ):
													SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					i
										SCREAMING_SNAKE_CASE_		:     List[str]					=					WordpieceTokenizer(vocab=lowerCAmelCase__			,						unk_token='[UNK]'       )

										self.assertListEqual(tokenizer.tokenize(''       )			,						[]       )

										self.assertListEqual(tokenizer.tokenize('unwanted running'       )			,						['un', '##want', '##ed', 'runn', '##ing']       )

										self.assertListEqual(tokenizer.tokenize('unwantedX running'       )			,						['[UNK]', 'runn', '##ing']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										self.assertTrue(_is_whitespace(' '       )       )
										self.assertTrue(_is_whitespace('\t'       )       )
										self.assertTrue(_is_whitespace('\r'       )       )
										self.assertTrue(_is_whitespace('\n'       )       )
										self.assertTrue(_is_whitespace('\u00A0'       )       )

										self.assertFalse(_is_whitespace('A'       )       )
										self.assertFalse(_is_whitespace('-'       )       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										self.assertTrue(_is_control('\u0005'       )       )

										self.assertFalse(_is_control('A'       )       )
										self.assertFalse(_is_control(' '       )       )
										self.assertFalse(_is_control('\t'       )       )
										self.assertFalse(_is_control('\r'       )       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										self.assertTrue(_is_punctuation('-'       )       )
										self.assertTrue(_is_punctuation('$'       )       )
										self.assertTrue(_is_punctuation('`'       )       )
										self.assertTrue(_is_punctuation('.'       )       )

										self.assertFalse(_is_punctuation('A'       )       )
										self.assertFalse(_is_punctuation(' '       )       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					self.get_tokenizer()
										SCREAMING_SNAKE_CASE_		:     List[Any]					=					self.get_rust_tokenizer()

										# Example taken from the issue https://github.com/huggingface/tokenizers/issues/340
										self.assertListEqual([tokenizer.tokenize(lowerCAmelCase__       ) for t in ['Test', '\xad', 'test']]			,						[['[UNK]'], [], ['[UNK]']]       )

										self.assertListEqual(
										    [rust_tokenizer.tokenize(lowerCAmelCase__       ) for t in ['Test', '\xad', 'test']]			,						[['[UNK]'], [], ['[UNK]']]       )






							@slow
							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     str					=					self.tokenizer_class.from_pretrained('bert-base-uncased'       )

										SCREAMING_SNAKE_CASE_		:     str					=					tokenizer.encode('sequence builders'			,						add_special_tokens=lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     Dict					=					tokenizer.encode('multi-sequence build'			,						add_special_tokens=lowerCAmelCase__       )

										SCREAMING_SNAKE_CASE_		:     int					=					tokenizer.build_inputs_with_special_tokens(lowerCAmelCase__       )
										SCREAMING_SNAKE_CASE_		:     int					=					tokenizer.build_inputs_with_special_tokens(lowerCAmelCase__			,						lowerCAmelCase__       )

										assert encoded_sentence == [1_0_1] + text + [1_0_2]
										assert encoded_pair == [1_0_1] + text + [1_0_2] + text_a + [1_0_2]






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
													with self.subTest(F'''{tokenizer.__class__.__name__} ({pretrained_name})'''       ):
																SCREAMING_SNAKE_CASE_		:     List[str]					=					self.rust_tokenizer_class.from_pretrained(lowerCAmelCase__			,						**lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     int					=					F'''A, naïve {tokenizer_r.mask_token} AllenNLP sentence.'''
																SCREAMING_SNAKE_CASE_		:     Optional[Any]					=					tokenizer_r.encode_plus(
																    lowerCAmelCase__			,						return_attention_mask=lowerCAmelCase__			,						return_token_type_ids=lowerCAmelCase__			,						return_offsets_mapping=lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__			,						)

																SCREAMING_SNAKE_CASE_		:     List[str]					=					tokenizer_r.do_lower_case if hasattr(lowerCAmelCase__			,						'do_lower_case'       ) else False
																SCREAMING_SNAKE_CASE_		:     int					=					(
																    [
																        ((0, 0), tokenizer_r.cls_token),
																        ((0, 1), 'A'),
																        ((1, 2), ','),
																        ((3, 5), 'na'),
																        ((5, 6), '##ï'),
																        ((6, 8), '##ve'),
																        ((9, 1_5), tokenizer_r.mask_token),
																        ((1_6, 2_1), 'Allen'),
																        ((2_1, 2_3), '##NL'),
																        ((2_3, 2_4), '##P'),
																        ((2_5, 3_3), 'sentence'),
																        ((3_3, 3_4), '.'),
																        ((0, 0), tokenizer_r.sep_token),
																    ]
																    if not do_lower_case
																    else [
																        ((0, 0), tokenizer_r.cls_token),
																        ((0, 1), 'a'),
																        ((1, 2), ','),
																        ((3, 8), 'naive'),
																        ((9, 1_5), tokenizer_r.mask_token),
																        ((1_6, 2_1), 'allen'),
																        ((2_1, 2_3), '##nl'),
																        ((2_3, 2_4), '##p'),
																        ((2_5, 3_3), 'sentence'),
																        ((3_3, 3_4), '.'),
																        ((0, 0), tokenizer_r.sep_token),
																    ]
																)

																self.assertEqual(
																    [e[1] for e in expected_results]			,						tokenizer_r.convert_ids_to_tokens(tokens['input_ids']       )       )
																self.assertEqual([e[0] for e in expected_results]			,						tokens['offset_mapping']       )






							def 					UpperCamelCase__     (      self       ):





										"""simple docstring"""




										SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					['的', '人', '有']
										SCREAMING_SNAKE_CASE_		:     Union[str, Any]					=					''.join(lowerCAmelCase__       )
										for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
													with self.subTest(F'''{tokenizer.__class__.__name__} ({pretrained_name})'''       ):
																SCREAMING_SNAKE_CASE_		:     str					=					True
																SCREAMING_SNAKE_CASE_		:     List[Any]					=					self.tokenizer_class.from_pretrained(lowerCAmelCase__			,						**lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     Optional[int]					=					self.rust_tokenizer_class.from_pretrained(lowerCAmelCase__			,						**lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     Any					=					tokenizer_p.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     int					=					tokenizer_r.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     Optional[int]					=					tokenizer_r.convert_ids_to_tokens(lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     List[Any]					=					tokenizer_p.convert_ids_to_tokens(lowerCAmelCase__       )

																# it is expected that each Chinese character is not preceded by "##"
																self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )
																self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     Any					=					False
																SCREAMING_SNAKE_CASE_		:     Dict					=					self.rust_tokenizer_class.from_pretrained(lowerCAmelCase__			,						**lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     Any					=					self.tokenizer_class.from_pretrained(lowerCAmelCase__			,						**lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     List[Any]					=					tokenizer_r.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     int					=					tokenizer_p.encode(lowerCAmelCase__			,						add_special_tokens=lowerCAmelCase__       )

																SCREAMING_SNAKE_CASE_		:     Any					=					tokenizer_r.convert_ids_to_tokens(lowerCAmelCase__       )
																SCREAMING_SNAKE_CASE_		:     Any					=					tokenizer_p.convert_ids_to_tokens(lowerCAmelCase__       )

																# it is expected that only the first Chinese character is not preceded by "##".
																SCREAMING_SNAKE_CASE_		:     Optional[int]					=					[
																    F'''##{token}''' if idx != 0 else token for idx, token in enumerate(lowerCAmelCase__       )
																]
																self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )
																self.assertListEqual(lowerCAmelCase__			,						lowerCAmelCase__       )













"""simple docstring"""
import shutil
import tempfile
import unittest
from unittest.mock import patch

from transformers import (
    DefaultFlowCallback,
    IntervalStrategy,
    PrinterCallback,
    ProgressCallback,
    Trainer,
    TrainerCallback,
    TrainingArguments,
    is_torch_available,
)
from transformers.testing_utils import require_torch


if is_torch_available():
 from transformers.trainer import DEFAULT_CALLBACKS

 from .test_trainer import RegressionDataset, RegressionModelConfig, RegressionPreTrainedModel



class        UpperCamelCase__ (				a_):







    """simple docstring"""







    def __init__(		self :	Union[str, Any] ):





           '''simple docstring'''

           __magic_name__      				=    []







    def 				a__			(		self :	Tuple				,    UpperCamelCase_ :	Dict				,    UpperCamelCase_ :	Union[str, Any]				,    UpperCamelCase_ :	int				,    **UpperCamelCase_ :	int ):





           '''simple docstring'''

           self.events.append('on_init_end' )







    def 				a__			(		self :	Any				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	str				,    UpperCamelCase_ :	List[str]				,    **UpperCamelCase_ :	str ):





           '''simple docstring'''

           self.events.append('on_train_begin' )







    def 				a__			(		self :	str				,    UpperCamelCase_ :	Tuple				,    UpperCamelCase_ :	List[str]				,    UpperCamelCase_ :	Optional[int]				,    **UpperCamelCase_ :	Dict ):





           '''simple docstring'''

           self.events.append('on_train_end' )







    def 				a__			(		self :	List[str]				,    UpperCamelCase_ :	Tuple				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	Tuple				,    **UpperCamelCase_ :	Optional[Any] ):





           '''simple docstring'''

           self.events.append('on_epoch_begin' )







    def 				a__			(		self :	Optional[int]				,    UpperCamelCase_ :	List[Any]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	Tuple				,    **UpperCamelCase_ :	List[Any] ):





           '''simple docstring'''

           self.events.append('on_epoch_end' )







    def 				a__			(		self :	Union[str, Any]				,    UpperCamelCase_ :	Union[str, Any]				,    UpperCamelCase_ :	Any				,    UpperCamelCase_ :	Union[str, Any]				,    **UpperCamelCase_ :	Optional[Any] ):





           '''simple docstring'''

           self.events.append('on_step_begin' )







    def 				a__			(		self :	List[str]				,    UpperCamelCase_ :	Optional[Any]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	Any				,    **UpperCamelCase_ :	List[Any] ):





           '''simple docstring'''

           self.events.append('on_step_end' )







    def 				a__			(		self :	List[Any]				,    UpperCamelCase_ :	List[str]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	Tuple				,    **UpperCamelCase_ :	Dict ):





           '''simple docstring'''

           self.events.append('on_evaluate' )







    def 				a__			(		self :	str				,    UpperCamelCase_ :	Any				,    UpperCamelCase_ :	Optional[int]				,    UpperCamelCase_ :	Dict				,    **UpperCamelCase_ :	Any ):





           '''simple docstring'''

           self.events.append('on_predict' )







    def 				a__			(		self :	Any				,    UpperCamelCase_ :	Optional[int]				,    UpperCamelCase_ :	Union[str, Any]				,    UpperCamelCase_ :	str				,    **UpperCamelCase_ :	Optional[int] ):





           '''simple docstring'''

           self.events.append('on_save' )







    def 				a__			(		self :	Optional[Any]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	str				,    UpperCamelCase_ :	Union[str, Any]				,    **UpperCamelCase_ :	Optional[int] ):





           '''simple docstring'''

           self.events.append('on_log' )







    def 				a__			(		self :	List[Any]				,    UpperCamelCase_ :	Optional[int]				,    UpperCamelCase_ :	List[Any]				,    UpperCamelCase_ :	str				,    **UpperCamelCase_ :	List[Any] ):





           '''simple docstring'''

           self.events.append('on_prediction_step' )



@require_torch
class        UpperCamelCase__ (				unittest.TestCase):







    """simple docstring"""







    def 				a__			(		self :	Optional[Any] ):





           '''simple docstring'''

           __magic_name__      				=    tempfile.mkdtemp()







    def 				a__			(		self :	List[Any] ):





           '''simple docstring'''

           shutil.rmtree(self.output_dir )







    def 				a__			(		self :	List[str]				,    UpperCamelCase_ :	Optional[int]=0				,    UpperCamelCase_ :	List[Any]=0				,    UpperCamelCase_ :	Optional[int]=6_4				,    UpperCamelCase_ :	Optional[int]=6_4				,    UpperCamelCase_ :	List[Any]=None				,    UpperCamelCase_ :	Optional[Any]=False				,    **UpperCamelCase_ :	str ):





           '''simple docstring'''

           __magic_name__      				=    RegressionDataset(length=UpperCamelCase_ )
           __magic_name__      				=    RegressionDataset(length=UpperCamelCase_ )
           __magic_name__      				=    RegressionModelConfig(a=UpperCamelCase_				,    b=UpperCamelCase_ )
           __magic_name__      				=    RegressionPreTrainedModel(UpperCamelCase_ )

           __magic_name__      				=    TrainingArguments(self.output_dir				,    disable_tqdm=UpperCamelCase_				,    report_to=[]				,    **UpperCamelCase_ )
           return Trainer(
               UpperCamelCase_				,    UpperCamelCase_				,    train_dataset=UpperCamelCase_				,    eval_dataset=UpperCamelCase_				,    callbacks=UpperCamelCase_				,    )







    def 				a__			(		self :	Optional[int]				,    UpperCamelCase_ :	str				,    UpperCamelCase_ :	Dict ):





           '''simple docstring'''

           self.assertEqual(len(UpperCamelCase_ )				,    len(UpperCamelCase_ ) )

           # Order doesn't matter
           __magic_name__      				=    sorted(UpperCamelCase_				,    key=lambda UpperCamelCase_ : cb.__name__ if isinstance(UpperCamelCase_				,    UpperCamelCase_ ) else cb.__class__.__name__ )
           __magic_name__      				=    sorted(UpperCamelCase_				,    key=lambda UpperCamelCase_ : cb.__name__ if isinstance(UpperCamelCase_				,    UpperCamelCase_ ) else cb.__class__.__name__ )

           for cba, cba in zip(UpperCamelCase_				,    UpperCamelCase_ ):
                  if isinstance(UpperCamelCase_				,    UpperCamelCase_ ) and isinstance(UpperCamelCase_				,    UpperCamelCase_ ):
                         self.assertEqual(UpperCamelCase_				,    UpperCamelCase_ )
                  elif isinstance(UpperCamelCase_				,    UpperCamelCase_ ) and not isinstance(UpperCamelCase_				,    UpperCamelCase_ ):
                         self.assertEqual(UpperCamelCase_				,    cba.__class__ )
                  elif not isinstance(UpperCamelCase_				,    UpperCamelCase_ ) and isinstance(UpperCamelCase_				,    UpperCamelCase_ ):
                         self.assertEqual(cba.__class__				,    UpperCamelCase_ )
                  else:
                         self.assertEqual(UpperCamelCase_				,    UpperCamelCase_ )







    def 				a__			(		self :	Union[str, Any]				,    UpperCamelCase_ :	Any ):





           '''simple docstring'''

           __magic_name__      				=    ['on_init_end', 'on_train_begin']
           __magic_name__      				=    0
           __magic_name__      				=    len(trainer.get_eval_dataloader() )
           __magic_name__      				=    ['on_prediction_step'] * len(trainer.get_eval_dataloader() ) + ['on_log', 'on_evaluate']
           for _ in range(trainer.state.num_train_epochs ):
                  expected_events.append('on_epoch_begin' )
                  for _ in range(UpperCamelCase_ ):
                         step += 1
                         expected_events += ["on_step_begin", "on_step_end"]
                         if step % trainer.args.logging_steps == 0:
                                expected_events.append('on_log' )
                         if trainer.args.evaluation_strategy == IntervalStrategy.STEPS and step % trainer.args.eval_steps == 0:
                                expected_events += evaluation_events.copy()
                         if step % trainer.args.save_steps == 0:
                                expected_events.append('on_save' )
                  expected_events.append('on_epoch_end' )
                  if trainer.args.evaluation_strategy == IntervalStrategy.EPOCH:
                         expected_events += evaluation_events.copy()
           expected_events += ["on_log", "on_train_end"]
           return expected_events







    def 				a__			(		self :	List[Any] ):





           '''simple docstring'''

           __magic_name__      				=    self.get_trainer()
           __magic_name__      				=    DEFAULT_CALLBACKS.copy() + [ProgressCallback]
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           # Callbacks passed at init are added to the default callbacks
           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback] )
           expected_callbacks.append(UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           # TrainingArguments.disable_tqdm controls if use ProgressCallback or PrinterCallback
           __magic_name__      				=    self.get_trainer(disable_tqdm=UpperCamelCase_ )
           __magic_name__      				=    DEFAULT_CALLBACKS.copy() + [PrinterCallback]
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )







    def 				a__			(		self :	List[str] ):





           '''simple docstring'''

           __magic_name__      				=    DEFAULT_CALLBACKS.copy() + [ProgressCallback]
           __magic_name__      				=    self.get_trainer()

           # We can add, pop, or remove by class name
           trainer.remove_callback(UpperCamelCase_ )
           expected_callbacks.remove(UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           __magic_name__      				=    self.get_trainer()
           __magic_name__      				=    trainer.pop_callback(UpperCamelCase_ )
           self.assertEqual(cb.__class__				,    UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           trainer.add_callback(UpperCamelCase_ )
           expected_callbacks.insert(0				,    UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           # We can also add, pop, or remove by instance
           __magic_name__      				=    self.get_trainer()
           __magic_name__      				=    trainer.callback_handler.callbacks[0]
           trainer.remove_callback(UpperCamelCase_ )
           expected_callbacks.remove(UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           __magic_name__      				=    self.get_trainer()
           __magic_name__      				=    trainer.callback_handler.callbacks[0]
           __magic_name__      				=    trainer.pop_callback(UpperCamelCase_ )
           self.assertEqual(UpperCamelCase_				,    UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )

           trainer.add_callback(UpperCamelCase_ )
           expected_callbacks.insert(0				,    UpperCamelCase_ )
           self.check_callbacks_equality(trainer.callback_handler.callbacks				,    UpperCamelCase_ )







    def 				a__			(		self :	Any ):





           '''simple docstring'''

           import warnings

           # XXX: for now ignore scatter_gather warnings in this test since it's not relevant to what's being tested
           warnings.simplefilter(action='ignore'				,    category=UpperCamelCase_ )

           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback] )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           # Independent log/save/eval
           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback]				,    logging_steps=5 )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback]				,    save_steps=5 )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback]				,    eval_steps=5				,    evaluation_strategy='steps' )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           __magic_name__      				=    self.get_trainer(callbacks=[MyTestTrainerCallback]				,    evaluation_strategy='epoch' )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           # A bit of everything
           __magic_name__      				=    self.get_trainer(
               callbacks=[MyTestTrainerCallback]				,    logging_steps=3				,    save_steps=1_0				,    eval_steps=5				,    evaluation_strategy='steps'				,    )
           trainer.train()
           __magic_name__      				=    trainer.callback_handler.callbacks[-2].events
           self.assertEqual(UpperCamelCase_				,    self.get_expected_events(UpperCamelCase_ ) )

           # warning should be emitted for duplicated callbacks
           with patch('transformers.trainer_callback.logger.warning' ) as warn_mock:
                  __magic_name__      				=    self.get_trainer(
                      callbacks=[MyTestTrainerCallback, MyTestTrainerCallback]				,    )
                  assert str(UpperCamelCase_ ) in warn_mock.call_args[0][0]