






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_keras_nlp_available,
    is_tensorflow_text_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


_a				     =  {
    '''configuration_gpt2''': ['''GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''GPT2Config''', '''GPT2OnnxConfig'''],
    '''tokenization_gpt2''': ['''GPT2Tokenizer'''],
}

try:
		if not is_tokenizers_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_a				     =  ['''GPT2TokenizerFast''']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_a				     =  [
		    '''GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''GPT2DoubleHeadsModel''',
		    '''GPT2ForQuestionAnswering''',
		    '''GPT2ForSequenceClassification''',
		    '''GPT2ForTokenClassification''',
		    '''GPT2LMHeadModel''',
		    '''GPT2Model''',
		    '''GPT2PreTrainedModel''',
		    '''load_tf_weights_in_gpt2''',
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_a				     =  [
		    '''TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''TFGPT2DoubleHeadsModel''',
		    '''TFGPT2ForSequenceClassification''',
		    '''TFGPT2LMHeadModel''',
		    '''TFGPT2MainLayer''',
		    '''TFGPT2Model''',
		    '''TFGPT2PreTrainedModel''',
		]

try:
		if not is_keras_nlp_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_a				     =  ['''TFGPT2Tokenizer''']

try:
		if not is_flax_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_a				     =  ['''FlaxGPT2LMHeadModel''', '''FlaxGPT2Model''', '''FlaxGPT2PreTrainedModel''']

if TYPE_CHECKING:
		from .configuration_gpta import GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTaConfig, GPTaOnnxConfig
		from .tokenization_gpta import GPTaTokenizer

		try:
				if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_gpta_fast import GPTaTokenizerFast

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_gpta import (
				    GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
				    GPTaDoubleHeadsModel,
				    GPTaForQuestionAnswering,
				    GPTaForSequenceClassification,
				    GPTaForTokenClassification,
				    GPTaLMHeadModel,
				    GPTaModel,
				    GPTaPreTrainedModel,
				    load_tf_weights_in_gpta,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_gpta import (
				    TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFGPTaDoubleHeadsModel,
				    TFGPTaForSequenceClassification,
				    TFGPTaLMHeadModel,
				    TFGPTaMainLayer,
				    TFGPTaModel,
				    TFGPTaPreTrainedModel,
				)

		try:
				if not is_keras_nlp_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_gpta_tf import TFGPTaTokenizer

		try:
				if not is_flax_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_flax_gpta import FlaxGPTaLMHeadModel, FlaxGPTaModel, FlaxGPTaPreTrainedModel

else:
		import sys

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








import unittest
import warnings
from dataclasses import dataclass

from transformers.convert_slow_tokenizer import SpmConverter
from transformers.testing_utils import get_tests_dir





@dataclass
class __lowerCamelCase			:





	"""simple docstring"""






	UpperCamelCase__								=				42





class __lowerCamelCase			(				unittest.TestCase):





	"""simple docstring"""






	def 	UpperCamelCase   (							self   ):
							"""simple docstring"""







							_UpperCAmelCase     =      get_tests_dir('fixtures/test_sentencepiece.model'   )
							_UpperCAmelCase     =      get_tests_dir('fixtures/test_sentencepiece_with_bytefallback.model'   )

							_UpperCAmelCase     =      FakeOriginalTokenizer(vocab_file=UpperCAmelCase   )

							with warnings.catch_warnings(record=UpperCAmelCase   ) as w:
													_UpperCAmelCase     =      SpmConverter(UpperCAmelCase   )
							self.assertEqual(len(UpperCAmelCase   )	,   0   )

							_UpperCAmelCase     =      FakeOriginalTokenizer(vocab_file=UpperCAmelCase   )

							with warnings.catch_warnings(record=UpperCAmelCase   ) as w:
													_UpperCAmelCase     =      SpmConverter(UpperCAmelCase   )
							self.assertEqual(len(UpperCAmelCase   )	,   1   )

							self.assertIn(
							    'The sentencepiece tokenizer that you are converting to a fast tokenizer uses the byte fallback option'
							    ' which is not implemented in the fast tokenizers.'	,   str(w[0].message   )	,   )
