





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tokenizers_available,
    is_torch_available,
)


__lowercase       :Tuple       =  {"configuration_fnet": ["FNET_PRETRAINED_CONFIG_ARCHIVE_MAP", "FNetConfig"]}

try:
				if not is_sentencepiece_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowercase       :List[str]       =  ["FNetTokenizer"]

try:
				if not is_tokenizers_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowercase       :List[str]       =  ["FNetTokenizerFast"]

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowercase       :List[Any]       =  [
				    "FNET_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "FNetForMaskedLM",
				    "FNetForMultipleChoice",
				    "FNetForNextSentencePrediction",
				    "FNetForPreTraining",
				    "FNetForQuestionAnswering",
				    "FNetForSequenceClassification",
				    "FNetForTokenClassification",
				    "FNetLayer",
				    "FNetModel",
				    "FNetPreTrainedModel",
				]


if TYPE_CHECKING:
				from .configuration_fnet import FNET_PRETRAINED_CONFIG_ARCHIVE_MAP, FNetConfig

				try:
								if not is_sentencepiece_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_fnet import FNetTokenizer

				try:
								if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_fnet_fast import FNetTokenizerFast

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_fnet import (
								    FNET_PRETRAINED_MODEL_ARCHIVE_LIST,
								    FNetForMaskedLM,
								    FNetForMultipleChoice,
								    FNetForNextSentencePrediction,
								    FNetForPreTraining,
								    FNetForQuestionAnswering,
								    FNetForSequenceClassification,
								    FNetForTokenClassification,
								    FNetLayer,
								    FNetModel,
								    FNetPreTrainedModel,
								)


else:
				import sys

				__lowercase       :Dict       =  _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)






import sys

from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

__lowercase       :List[Any]       =  "python tqdm regex requests packaging filelock numpy tokenizers".split()
if sys.version_info < (3, 7):
				pkgs_to_check_at_runtime.append("dataclasses")
if sys.version_info < (3, 8):
				pkgs_to_check_at_runtime.append("importlib_metadata")

for pkg in pkgs_to_check_at_runtime:
				if pkg in deps:
								if pkg == "tokenizers":
												# must be loaded here, or else tqdm check may fail
												from .utils import is_tokenizers_available

												if not is_tokenizers_available():
																continue  # not required, check version only if installed

								require_version_core(deps[pkg])
				else:
								raise ValueError(f"can't find {pkg} in {deps.keys()}, check dependency_versions_table.py")







def       UpperCAmelCase							(     _lowerCamelCase      :  Optional[Any]			,   _lowerCamelCase      :  Optional[Any]=None     ):





						'''simple docstring'''


						require_version(deps[pkg]			,   _lowerCamelCase     )