


import os
import tempfile
import unittest
from typing import List

from transformers.models.esm.tokenization_esm import VOCAB_FILES_NAMES, EsmTokenizer
from transformers.testing_utils import require_tokenizers
from transformers.tokenization_utils import PreTrainedTokenizer
from transformers.tokenization_utils_base import PreTrainedTokenizerBase







@require_tokenizers
class 				lowerCamelCase__       (	unittest.TestCase):
     SCREAMING_SNAKE_CASE__				      =      EsmTokenizer





     def 					__A (self	)					->       Optional[Any]:
      super().setUp()
      _lowercase											=tempfile.mkdtemp()
      # fmt: off
      _lowercase											=["<cls>", "<pad>", "<eos>", "<unk>", "L", "A", "G", "V", "S", "E", "R", "T", "I", "D", "P", "K", "Q", "N", "F", "Y", "M", "H", "W", "C", "X", "B", "U", "Z", "O", ".", "-", "<null_1>", "<mask>"]  # noqa: E501
      # fmt: on
      _lowercase											=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 					__A (self		,					**UpperCAmelCase	)					->       List[PreTrainedTokenizerBase]:
      return [self.get_tokenizer(**UpperCAmelCase	)]





     def 					__A (self		,					**UpperCAmelCase	)					->       PreTrainedTokenizer:
      return self.tokenizer_class.from_pretrained(self.tmpdirname		,					**UpperCAmelCase	)





     def 					__A (self	)					->       Optional[int]:
      _lowercase											=self.tokenizer_class(self.vocab_file	)

      _lowercase											=tokenizer.tokenize('''LAGVS'''	)
      self.assertListEqual(UpperCAmelCase		,					['''L''', '''A''', '''G''', '''V''', '''S''']	)
      self.assertListEqual(tokenizer.convert_tokens_to_ids(UpperCAmelCase	)		,					[4, 5, 6, 7, 8]	)





     def 					__A (self	)					->       Any:
      _lowercase											=self.tokenizer_class(self.vocab_file	)

      _lowercase											='''LAGVS'''
      self.assertListEqual(tokenizer.encode(UpperCAmelCase	)		,					[0, 4, 5, 6, 7, 8, 2]	)





     def 					__A (self	)					->       List[Any]:
      _lowercase											=self.tokenizer_class(self.vocab_file	)

      _lowercase											=['''LAGVS''', '''WCB''']
      _lowercase											=tokenizer(UpperCAmelCase		,					padding=UpperCAmelCase	)['''input_ids''']

      self.assertListEqual(UpperCAmelCase		,					[[0, 4, 5, 6, 7, 8, 2], [0, 2_2, 2_3, 2_5, 2]]	)





     def 					__A (self	)					->       List[Any]:
      _lowercase											=self.tokenizer_class(self.vocab_file	)

      _lowercase											=['''LAGVS''', '''WCB''']
      _lowercase											=tokenizer(UpperCAmelCase		,					padding=UpperCAmelCase	)['''input_ids''']

      self.assertListEqual(UpperCAmelCase		,					[[0, 4, 5, 6, 7, 8, 2], [0, 2_2, 2_3, 2_5, 2, 1, 1]]	)





     def 					__A (self	)					->       Tuple:
      _lowercase											=self.get_tokenizers(fast=UpperCAmelCase	)
      for tokenizer in tokenizers:
       with self.subTest(f"{tokenizer.__class__.__name__}"	):
        _lowercase											='''<unk>'''
        _lowercase											='''<mask>'''

        _lowercase											=tokenizer.tokenize(UpperCAmelCase	)
        _lowercase											=tokenizer.tokenize(UpperCAmelCase	)

        self.assertEqual(len(UpperCAmelCase	)		,					1	)
        self.assertEqual(len(UpperCAmelCase	)		,					1	)
        self.assertEqual(token_a[0]		,					UpperCAmelCase	)
        self.assertEqual(token_a[0]		,					UpperCAmelCase	)





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


UpperCAmelCase__            =							{'''configuration_visual_bert''': ['''VISUAL_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''VisualBertConfig''']}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__            =							[
      '''VISUAL_BERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''VisualBertForMultipleChoice''',
      '''VisualBertForPreTraining''',
      '''VisualBertForQuestionAnswering''',
      '''VisualBertForRegionToPhraseAlignment''',
      '''VisualBertForVisualReasoning''',
      '''VisualBertLayer''',
      '''VisualBertModel''',
      '''VisualBertPreTrainedModel''',
  ]


if TYPE_CHECKING:
  from .configuration_visual_bert import VISUAL_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, VisualBertConfig

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_visual_bert import (
        VISUAL_BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
        VisualBertForMultipleChoice,
        VisualBertForPreTraining,
        VisualBertForQuestionAnswering,
        VisualBertForRegionToPhraseAlignment,
        VisualBertForVisualReasoning,
        VisualBertLayer,
        VisualBertModel,
        VisualBertPreTrainedModel,
    )


else:
  import sys

  UpperCAmelCase__            =							_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)

