






'''simple docstring'''




import os
import sys
import unittest


__lowerCamelCase :       int 				=       os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, '''utils'''))

import check_dummies  # noqa: E402
from check_dummies import create_dummy_files, create_dummy_object, find_backend, read_init  # noqa: E402


# Align TRANSFORMERS_PATH in check_dummies with the current path
__lowerCamelCase :       int 				=       os.path.join(git_repo_path, '''src''', '''transformers''')

__lowerCamelCase :       Union[str, Any] 				=       "\n{0} = None\n"

__lowerCamelCase :       Any 				=       "\nclass {0}(metaclass=DummyObject):\n    _backends = {1}\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, {1})\n"


__lowerCamelCase :       Any 				=       "\ndef {0}(*args, **kwargs):\n    requires_backends({0}, {1})\n"







class  A_						(unittest.TestCase				):
							"""simple docstring"""




							def 				_A						(		self      :Optional[Any]					)					->	Tuple:


										'''simple docstring'''




										snake_case_					:       List[str] =							find_backend("    _import_structure[\"models.albert\"].append(\"AlbertTokenizerFast\")"					)
										self.assertIsNone(lowerCAmelCase__					)

										snake_case_					:       Any =							find_backend("    if not is_tokenizers_available():"					)
										self.assertEqual(lowerCAmelCase__							,				"tokenizers"					)

										snake_case_					:       Optional[int] =							find_backend("    if not is_tensorflow_text_available():"					)
										self.assertEqual(lowerCAmelCase__							,				"tensorflow_text"					)

										snake_case_					:       Optional[int] =							find_backend("    if not (is_sentencepiece_available() and is_tokenizers_available()):"					)
										self.assertEqual(lowerCAmelCase__							,				"sentencepiece_and_tokenizers"					)

										snake_case_					:       int =							find_backend(
										    "    if not (is_sentencepiece_available() and is_tensorflow_text_available()):"					)
										self.assertEqual(lowerCAmelCase__							,				"sentencepiece_and_tensorflow_text"					)

										snake_case_					:       str =							find_backend(
										    "    if not (is_sentencepiece_available() and is_tokenizers_available() and is_vision_available()):"					)
										self.assertEqual(lowerCAmelCase__							,				"sentencepiece_and_tokenizers_and_vision"					)

							def 				_A						(		self      :Tuple					)					->	str:


										'''simple docstring'''




										snake_case_					:       Tuple =							read_init()
										# We don't assert on the exact list of keys to allow for smooth grow of backend-specific objects
										self.assertIn("torch"							,				lowerCAmelCase__					)
										self.assertIn("tensorflow_text"							,				lowerCAmelCase__					)
										self.assertIn("sentencepiece_and_tokenizers"							,				lowerCAmelCase__					)

										# Likewise, we can't assert on the exact content of a key
										self.assertIn("BertModel"							,				objects["torch"]					)
										self.assertIn("TFBertModel"							,				objects["tf"]					)
										self.assertIn("FlaxBertModel"							,				objects["flax"]					)
										self.assertIn("BertModel"							,				objects["torch"]					)
										self.assertIn("TFBertTokenizer"							,				objects["tensorflow_text"]					)
										self.assertIn("convert_slow_tokenizer"							,				objects["sentencepiece_and_tokenizers"]					)

							def 				_A						(		self      :List[Any]					)					->	List[str]:


										'''simple docstring'''




										snake_case_					:       int =							create_dummy_object("CONSTANT"							,				"'torch'"					)
										self.assertEqual(lowerCAmelCase__							,				"\nCONSTANT = None\n"					)

										snake_case_					:       Any =							create_dummy_object("function"							,				"'torch'"					)
										self.assertEqual(
										    lowerCAmelCase__							,				"\ndef function(*args, **kwargs):\n    requires_backends(function, 'torch')\n"					)

										snake_case_					:       Dict =							"\nclass FakeClass(metaclass=DummyObject):\n    _backends = 'torch'\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, 'torch')\n"
										snake_case_					:       Optional[int] =							create_dummy_object("FakeClass"							,				"'torch'"					)
										self.assertEqual(lowerCAmelCase__							,				lowerCAmelCase__					)






							def 				_A						(		self      :List[str]					)					->	Dict:


										'''simple docstring'''




										snake_case_					:       int =							"# This file is autogenerated by the command `make fix-copies`, do not edit.\nfrom ..utils import DummyObject, requires_backends\n\n\nCONSTANT = None\n\n\ndef function(*args, **kwargs):\n    requires_backends(function, [\"torch\"])\n\n\nclass FakeClass(metaclass=DummyObject):\n    _backends = [\"torch\"]\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, [\"torch\"])\n"
										snake_case_					:       Union[str, Any] =							create_dummy_files({"torch": ["CONSTANT", "function", "FakeClass"]}					)
										self.assertEqual(dummy_files["torch"]							,				lowerCAmelCase__					)










from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__UpperCamelCase   :			Optional[int]          = {
    "configuration_jukebox": [
        "JUKEBOX_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "JukeboxConfig",
        "JukeboxPriorConfig",
        "JukeboxVQVAEConfig",
    ],
    "tokenization_jukebox": ["JukeboxTokenizer"],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		__UpperCamelCase   :			int          = [
		    "JUKEBOX_PRETRAINED_MODEL_ARCHIVE_LIST",
		    "JukeboxModel",
		    "JukeboxPreTrainedModel",
		    "JukeboxVQVAE",
		    "JukeboxPrior",
		]

if TYPE_CHECKING:
		from .configuration_jukebox import (
		    JUKEBOX_PRETRAINED_CONFIG_ARCHIVE_MAP,
		    JukeboxConfig,
		    JukeboxPriorConfig,
		    JukeboxVQVAEConfig,
		)
		from .tokenization_jukebox import JukeboxTokenizer

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_jukebox import (
				    JUKEBOX_PRETRAINED_MODEL_ARCHIVE_LIST,
				    JukeboxModel,
				    JukeboxPreTrainedModel,
				    JukeboxPrior,
				    JukeboxVQVAE,
				)

else:
		import sys

		__UpperCamelCase   :			List[str]          = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)

