






"""simple docstring"""







from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


__a       :	Tuple             = {'configuration_vit': ['VIT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ViTConfig', 'ViTOnnxConfig']}

try:
	if not is_vision_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a       :	Union[str, Any]             = ['ViTFeatureExtractor']
	__a       :	Optional[int]             = ['ViTImageProcessor']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a       :	Union[str, Any]             = [
	    'VIT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'ViTForImageClassification',
	    'ViTForMaskedImageModeling',
	    'ViTModel',
	    'ViTPreTrainedModel',
	]

try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a       :	Dict             = [
	    'TFViTForImageClassification',
	    'TFViTModel',
	    'TFViTPreTrainedModel',
	]

try:
	if not is_flax_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__a       :	Optional[int]             = [
	    'FlaxViTForImageClassification',
	    'FlaxViTModel',
	    'FlaxViTPreTrainedModel',
	]

if TYPE_CHECKING:
	from .configuration_vit import VIT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTConfig, ViTOnnxConfig

	try:
		if not is_vision_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .feature_extraction_vit import ViTFeatureExtractor
		from .image_processing_vit import ViTImageProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_vit import (
		    VIT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    ViTForImageClassification,
		    ViTForMaskedImageModeling,
		    ViTModel,
		    ViTPreTrainedModel,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_vit import TFViTForImageClassification, TFViTModel, TFViTPreTrainedModel

	try:
		if not is_flax_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_flax_vit import FlaxViTForImageClassification, FlaxViTModel, FlaxViTPreTrainedModel


else:
	import sys

	__a       :	Any             = _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










"""simple docstring"""







import os
from shutil import copyfile
from typing import List, Optional, Tuple

from ...tokenization_utils import AddedToken
from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import is_sentencepiece_available, logging


if is_sentencepiece_available():
	from .tokenization_albert import AlbertTokenizer
else:
	__a       :	int             = None

__a       :	List[str]             = logging.get_logger(__name__)
__a       :	Union[str, Any]             = {'vocab_file': 'spiece.model', 'tokenizer_file': 'tokenizer.json'}

__a       :	str             = {
    'vocab_file': {
        'albert-base-v1': 'https://huggingface.co/albert-base-v1/resolve/main/spiece.model',
        'albert-large-v1': 'https://huggingface.co/albert-large-v1/resolve/main/spiece.model',
        'albert-xlarge-v1': 'https://huggingface.co/albert-xlarge-v1/resolve/main/spiece.model',
        'albert-xxlarge-v1': 'https://huggingface.co/albert-xxlarge-v1/resolve/main/spiece.model',
        'albert-base-v2': 'https://huggingface.co/albert-base-v2/resolve/main/spiece.model',
        'albert-large-v2': 'https://huggingface.co/albert-large-v2/resolve/main/spiece.model',
        'albert-xlarge-v2': 'https://huggingface.co/albert-xlarge-v2/resolve/main/spiece.model',
        'albert-xxlarge-v2': 'https://huggingface.co/albert-xxlarge-v2/resolve/main/spiece.model',
    },
    'tokenizer_file': {
        'albert-base-v1': 'https://huggingface.co/albert-base-v1/resolve/main/tokenizer.json',
        'albert-large-v1': 'https://huggingface.co/albert-large-v1/resolve/main/tokenizer.json',
        'albert-xlarge-v1': 'https://huggingface.co/albert-xlarge-v1/resolve/main/tokenizer.json',
        'albert-xxlarge-v1': 'https://huggingface.co/albert-xxlarge-v1/resolve/main/tokenizer.json',
        'albert-base-v2': 'https://huggingface.co/albert-base-v2/resolve/main/tokenizer.json',
        'albert-large-v2': 'https://huggingface.co/albert-large-v2/resolve/main/tokenizer.json',
        'albert-xlarge-v2': 'https://huggingface.co/albert-xlarge-v2/resolve/main/tokenizer.json',
        'albert-xxlarge-v2': 'https://huggingface.co/albert-xxlarge-v2/resolve/main/tokenizer.json',
    },
}

__a       :	Optional[int]             = {
    'albert-base-v1': 512,
    'albert-large-v1': 512,
    'albert-xlarge-v1': 512,
    'albert-xxlarge-v1': 512,
    'albert-base-v2': 512,
    'albert-large-v2': 512,
    'albert-xlarge-v2': 512,
    'albert-xxlarge-v2': 512,
}

__a       :	Union[str, Any]             = '▁'







class        _SCREAMING_SNAKE_CASE						(  __snake_case							):





							"""simple docstring"""





							_SCREAMING_SNAKE_CASE    =VOCAB_FILES_NAMES
							_SCREAMING_SNAKE_CASE    =PRETRAINED_VOCAB_FILES_MAP
							_SCREAMING_SNAKE_CASE    =PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
							_SCREAMING_SNAKE_CASE    =AlbertTokenizer




							def __init__(   self:     List[Any]				,		__A:     List[Any]=None				,		__A:     Tuple=None				,		__A:     Union[str, Any]=True				,		__A:     int=True				,		__A:     Optional[int]=False				,		__A:     List[Any]="[CLS]"				,		__A:     Optional[int]="[SEP]"				,		__A:     Union[str, Any]="<unk>"				,		__A:     int="[SEP]"				,		__A:     Optional[Any]="<pad>"				,		__A:     Optional[int]="[CLS]"				,		__A:     str="[MASK]"				,		**__A:     List[Any]				,		):

												'''simple docstring'''

												a__          =  (
												    AddedToken(__A				,		lstrip=__A				,		rstrip=__A				,		normalized=__A    )
												    if isinstance(__A				,		__A    )
												    else mask_token
												)

												super().__init__(
												    __A				,		tokenizer_file=__A				,		do_lower_case=__A				,		remove_space=__A				,		keep_accents=__A				,		bos_token=__A				,		eos_token=__A				,		unk_token=__A				,		sep_token=__A				,		pad_token=__A				,		cls_token=__A				,		mask_token=__A				,		**__A				,		)

												a__          =  do_lower_case
												a__          =  remove_space
												a__          =  keep_accents
												a__          =  vocab_file
												a__          =  False if not self.vocab_file else True




							def  lowercase		(   self:     Union[str, Any]				,		__A:     List[int]				,		__A:     Optional[List[int]] = None    ):

												'''simple docstring'''

												a__          =  [self.sep_token_id]
												a__          =  [self.cls_token_id]
												if token_ids_a is None:
																	return cls + token_ids_a + sep
												return cls + token_ids_a + sep + token_ids_a + sep




							def  lowercase		(   self:     List[Any]				,		__A:     List[int]				,		__A:     Optional[List[int]] = None    ):

												'''simple docstring'''

												a__          =  [self.sep_token_id]
												a__          =  [self.cls_token_id]

												if token_ids_a is None:
																	return len(cls + token_ids_a + sep    ) * [0]
												return len(cls + token_ids_a + sep    ) * [0] + len(token_ids_a + sep    ) * [1]





							def  lowercase		(   self:     Union[str, Any]				,		__A:     str				,		__A:     Optional[str] = None    ):

												'''simple docstring'''

												if not self.can_save_slow_tokenizer:
																	raise ValueError(
																	    '''Your fast tokenizer does not have the necessary information to save the vocabulary for a slow '''
																	    '''tokenizer.'''    )

												if not os.path.isdir(__A    ):
																	logger.error(F'Vocabulary path ({save_directory}) should be a directory'    )
																	return
												a__          =  os.path.join(
												    __A				,		(filename_prefix + '''-''' if filename_prefix else '''''') + VOCAB_FILES_NAMES['''vocab_file''']    )

												if os.path.abspath(self.vocab_file    ) != os.path.abspath(__A    ):
																	copyfile(self.vocab_file				,		__A    )

												return (out_vocab_file,)


