



"""simple docstring"""
import unittest

from transformers import SPIECE_UNDERLINE, XLNetTokenizer, XLNetTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


_lowerCAmelCase    :Tuple     =					get_tests_dir('fixtures/test_sentencepiece.model')
@require_sentencepiece
@require_tokenizers
class 							_UpperCAmelCase							( a		,unittest.TestCase      ):





     '''simple docstring'''



     a__									=XLNetTokenizer
     a__									=XLNetTokenizerFast
     a__									=True
     a__									=True





     def  __lowerCAmelCase	(					self		)							->					int:
         super().setUp()

         # We have a SentencePiece fixture for testing
         _UpperCAmelCase							:  List[Any]											=    XLNetTokenizer(A       ,	keep_accents=A		)
         tokenizer.sanitize_special_tokens()
         tokenizer.save_pretrained(self.tmpdirname		)





     def  __lowerCAmelCase	(					self		)							->					Dict:
         _UpperCAmelCase							:  List[str]											=    '''<s>'''
         _UpperCAmelCase							:  Union[str, Any]											=    1

         self.assertEqual(self.get_tokenizer()._convert_token_to_id(A		)       ,	A		)
         self.assertEqual(self.get_tokenizer()._convert_id_to_token(A		)       ,	A		)





     def  __lowerCAmelCase	(					self		)							->					Optional[int]:
         _UpperCAmelCase							:  Dict											=    list(self.get_tokenizer().get_vocab().keys()		)

         self.assertEqual(vocab_keys[0]       ,	'''<unk>'''		)
         self.assertEqual(vocab_keys[1]       ,	'''<s>'''		)
         self.assertEqual(vocab_keys[-1]       ,	'''<eod>'''		)
         self.assertEqual(len(A		)       ,	1_0_0_6		)





     def  __lowerCAmelCase	(					self		)							->					Tuple:
         self.assertEqual(self.get_tokenizer().vocab_size       ,	1_0_0_0		)





     def  __lowerCAmelCase	(					self		)							->					List[str]:
         _UpperCAmelCase							:  str											=    XLNetTokenizer(A       ,	keep_accents=A		)

         _UpperCAmelCase							:  Tuple											=    tokenizer.tokenize('''This is a test'''		)
         self.assertListEqual(A       ,	['''▁This''', '''▁is''', '''▁a''', '''▁t''', '''est''']		)

         self.assertListEqual(tokenizer.convert_tokens_to_ids(A		)       ,	[2_8_5, 4_6, 1_0, 1_7_0, 3_8_2]		)

         _UpperCAmelCase							:  Optional[Any]											=    tokenizer.tokenize('''I was born in 92000, and this is falsé.'''		)
         self.assertListEqual(
             A       ,	[
                 SPIECE_UNDERLINE + '''I''',
                 SPIECE_UNDERLINE + '''was''',
                 SPIECE_UNDERLINE + '''b''',
                 '''or''',
                 '''n''',
                 SPIECE_UNDERLINE + '''in''',
                 SPIECE_UNDERLINE + '''''',
                 '''9''',
                 '''2''',
                 '''0''',
                 '''0''',
                 '''0''',
                 ''',''',
                 SPIECE_UNDERLINE + '''and''',
                 SPIECE_UNDERLINE + '''this''',
                 SPIECE_UNDERLINE + '''is''',
                 SPIECE_UNDERLINE + '''f''',
                 '''al''',
                 '''s''',
                 '''é''',
                 '''.''',
             ]       ,	)
         _UpperCAmelCase							:  int											=    tokenizer.convert_tokens_to_ids(A		)
         self.assertListEqual(A       ,	[8, 2_1, 8_4, 5_5, 2_4, 1_9, 7, 0, 6_0_2, 3_4_7, 3_4_7, 3_4_7, 3, 1_2, 6_6, 4_6, 7_2, 8_0, 6, 0, 4]		)

         _UpperCAmelCase							:  List[str]											=    tokenizer.convert_ids_to_tokens(A		)
         self.assertListEqual(
             A       ,	[
                 SPIECE_UNDERLINE + '''I''',
                 SPIECE_UNDERLINE + '''was''',
                 SPIECE_UNDERLINE + '''b''',
                 '''or''',
                 '''n''',
                 SPIECE_UNDERLINE + '''in''',
                 SPIECE_UNDERLINE + '''''',
                 '''<unk>''',
                 '''2''',
                 '''0''',
                 '''0''',
                 '''0''',
                 ''',''',
                 SPIECE_UNDERLINE + '''and''',
                 SPIECE_UNDERLINE + '''this''',
                 SPIECE_UNDERLINE + '''is''',
                 SPIECE_UNDERLINE + '''f''',
                 '''al''',
                 '''s''',
                 '''<unk>''',
                 '''.''',
             ]       ,	)





     def  __lowerCAmelCase	(					self		)							->					List[Any]:
         _UpperCAmelCase							:  Any											=    XLNetTokenizer(A       ,	do_lower_case=A		)
         _UpperCAmelCase							:  Dict											=    tokenizer.tokenize('''I was born in 92000, and this is falsé.'''		)
         self.assertListEqual(
             A       ,	[
                 SPIECE_UNDERLINE + '''''',
                 '''i''',
                 SPIECE_UNDERLINE + '''was''',
                 SPIECE_UNDERLINE + '''b''',
                 '''or''',
                 '''n''',
                 SPIECE_UNDERLINE + '''in''',
                 SPIECE_UNDERLINE + '''''',
                 '''9''',
                 '''2''',
                 '''0''',
                 '''0''',
                 '''0''',
                 ''',''',
                 SPIECE_UNDERLINE + '''and''',
                 SPIECE_UNDERLINE + '''this''',
                 SPIECE_UNDERLINE + '''is''',
                 SPIECE_UNDERLINE + '''f''',
                 '''al''',
                 '''se''',
                 '''.''',
             ]       ,	)
         self.assertListEqual(tokenizer.tokenize('''H\u00E9llo'''		)       ,	['''▁he''', '''ll''', '''o''']		)





     def  __lowerCAmelCase	(					self		)							->					Optional[Any]:
         _UpperCAmelCase							:  int											=    XLNetTokenizer(A       ,	do_lower_case=A		)
         _UpperCAmelCase							:  Union[str, Any]											=    tokenizer.tokenize('''I was born in 92000, and this is falsé.'''		)
         self.assertListEqual(
             A       ,	[
                 SPIECE_UNDERLINE + '''I''',
                 SPIECE_UNDERLINE + '''was''',
                 SPIECE_UNDERLINE + '''b''',
                 '''or''',
                 '''n''',
                 SPIECE_UNDERLINE + '''in''',
                 SPIECE_UNDERLINE + '''''',
                 '''9''',
                 '''2''',
                 '''0''',
                 '''0''',
                 '''0''',
                 ''',''',
                 SPIECE_UNDERLINE + '''and''',
                 SPIECE_UNDERLINE + '''this''',
                 SPIECE_UNDERLINE + '''is''',
                 SPIECE_UNDERLINE + '''f''',
                 '''al''',
                 '''se''',
                 '''.''',
             ]       ,	)





     @slow
     def  __lowerCAmelCase	(					self		)							->					List[str]:
         _UpperCAmelCase							:  List[Any]											=    XLNetTokenizer.from_pretrained('''xlnet-base-cased'''		)

         _UpperCAmelCase							:  Any											=    tokenizer.encode('''sequence builders'''       ,	add_special_tokens=A		)
         _UpperCAmelCase							:  List[Any]											=    tokenizer.encode('''multi-sequence build'''       ,	add_special_tokens=A		)

         _UpperCAmelCase							:  List[str]											=    tokenizer.build_inputs_with_special_tokens(A		)
         _UpperCAmelCase							:  Optional[Any]											=    tokenizer.build_inputs_with_special_tokens(A       ,	A		)

         assert encoded_sentence == text + [4, 3]
         assert encoded_pair == text + [4] + text_a + [4, 3]





     @slow
     def  __lowerCAmelCase	(					self		)							->					str:
         # fmt: off
         _UpperCAmelCase							:  Union[str, Any]											=    {'''input_ids''': [[1_7, 2_1_4_4_2, 2_7_0, 1_7, 1_0, 1_4_6_4_5, 3_1_8, 3_4, 1_7, 4_5_4_6, 3_1_4_5, 7_8_7, 1_3, 7_7_5_2, 2_2_0_1_8, 2_3, 2_1, 1_7, 4_5_4_6, 3_1_4_5, 7_8_7, 1_3, 3_3_5_2, 1_4_4_3_1, 1_3, 5_5_0_0, 1_1, 1_1_7_6, 5_8_0, 1_3, 1_6_8_1_9, 4_7_9_7, 2_3, 1_7, 1_0, 1_7_1_3_5, 6_5_8, 1_9, 4_5_7, 7_9_3_2, 1_3, 1_8_4, 1_9, 3_1_5_4, 1_7_1_3_5, 6_4_6_8, 1_9, 1_4_0_4, 1_2_2_6_9, 1_9, 4_2_2_9, 5_3_5_6, 1_6_2_6_4, 4_6, 1_9, 1_7, 2_0_5_4_5, 1_0_3_9_5, 9, 9, 9, 1_1, 2_8, 6_4_2_1, 9_5_3_1, 2_0_7_2_9, 1_7, 1_0, 3_5_3, 1_7_0_2_2, 1_1, 2_1, 6_4_2_1, 9_5_3_1, 1_6_9_4_9, 1_7, 1_0, 1_1_5_0_9, 7_5_3, 1_1, 3_3, 9_5, 2_4_2_1, 7_3_8_5, 9_5_6, 1_4_4_3_1, 2_6_2_6, 2_5, 8_4_2, 7_3_8_5, 4_8_3_6, 2_1, 1_4_2_9, 2_2_7_2, 9_8_5_5, 3_1_2_0, 1_6_1, 2_4_7_3_8, 1_9, 1_3_2_0_3, 6_5_8, 2_1_8, 7_8_7, 2_1, 4_3_0, 1_8_4_8_2, 8_4_7, 2_6_3_7, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3_2_2, 2_2_1_7_8, 2_7, 1_0_6_4, 2_2, 9_5_6, 1_3, 1_1_1_0_1, 1_4_2_9, 5_8_5_4, 2_4_3_1_3, 1_8_9_5_3, 4_0, 4_2_2, 2_4_3_6_6, 6_8, 1_7_5_8, 3_7, 1_0_4_8_3, 1_4_2_5_7, 3_1, 2_0_7, 2_6_3, 2_1, 2_0_3, 3_7_7_3, 2_5, 7_1, 9_7_3_5, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3_2, 2_0_4_9, 3_4_4_2, 1_7, 1_3_8_9_4, 3_3_8_0, 2_3, 9_5, 1_8, 1_7_6_3_4, 2_2_8_8, 9, 4, 3]], '''token_type_ids''': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]], '''attention_mask''': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}  # noqa: E501
         # fmt: on

         self.tokenizer_integration_test_util(
             expected_encoding=A       ,	model_name='''xlnet-base-cased'''       ,	revision='''c841166438c31ec7ca9a106dee7bb312b73ae511'''       ,	)







"""simple docstring"""
from __future__ import annotations

import math





def  lowerCamelCase_						(UpperCamelCase__		:		int     ,       UpperCamelCase__		:		int     ,       UpperCamelCase__		:		bool     ,       UpperCamelCase__		:		list[int]     ,       UpperCamelCase__		:		float							):

    if depth < 0:
        raise ValueError('''Depth cannot be less than 0'''							)

    if len(UpperCamelCase__							) == 0:
        raise ValueError('''Scores cannot be empty'''							)

    if depth == height:
        return scores[node_index]

    if is_max:
        return max(
            minimax(depth + 1     ,       node_index * 2     ,       UpperCamelCase__     ,       UpperCamelCase__     ,       UpperCamelCase__							)     ,       minimax(depth + 1     ,       node_index * 2 + 1     ,       UpperCamelCase__     ,       UpperCamelCase__     ,       UpperCamelCase__							)     ,       )

    return min(
        minimax(depth + 1     ,       node_index * 2     ,       UpperCamelCase__     ,       UpperCamelCase__     ,       UpperCamelCase__							)     ,       minimax(depth + 1     ,       node_index * 2 + 1     ,       UpperCamelCase__     ,       UpperCamelCase__     ,       UpperCamelCase__							)     ,       )





def  lowerCamelCase_						():
    _UpperCAmelCase							:  Any											=    [90, 23, 6, 33, 21, 65, 123, 3_4423]
    _UpperCAmelCase							:  Any											=    math.log(len(UpperCamelCase__							)     ,       2							)
    print('''Optimal value : '''     ,       end=''''''							)
    print(minimax(0     ,       0     ,       UpperCamelCase__     ,       UpperCamelCase__     ,       UpperCamelCase__							)							)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  main()


