

import os
import sys
import unittest


_UpperCAmelCase	:     Optional[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
_UpperCAmelCase	:     Optional[Any]		       = os.path.join(git_repo_path, """src""", """transformers""")

_UpperCAmelCase	:     str		       = """
{0} = None
"""

_UpperCAmelCase	:     int		       = """
class {0}(metaclass=DummyObject):
    _backends = {1}

    def __init__(self, *args, **kwargs):
        requires_backends(self, {1})
"""


_UpperCAmelCase	:     Any		       = """
def {0}(*args, **kwargs):
    requires_backends({0}, {1})
"""







class 				lowercase       ( unittest.TestCase    ):




				def 					a							(      self ):
											snake_case_           =					find_backend('    _import_structure["models.albert"].append("AlbertTokenizerFast")' )
											self.assertIsNone(snake_case )

											snake_case_           =					find_backend('    if not is_tokenizers_available():' )
											self.assertEqual(snake_case   ,     'tokenizers' )

											snake_case_           =					find_backend('    if not is_tensorflow_text_available():' )
											self.assertEqual(snake_case   ,     'tensorflow_text' )

											snake_case_           =					find_backend('    if not (is_sentencepiece_available() and is_tokenizers_available()):' )
											self.assertEqual(snake_case   ,     'sentencepiece_and_tokenizers' )

											snake_case_           =					find_backend(
											    '    if not (is_sentencepiece_available() and is_tensorflow_text_available()):' )
											self.assertEqual(snake_case   ,     'sentencepiece_and_tensorflow_text' )

											snake_case_           =					find_backend(
											    '    if not (is_sentencepiece_available() and is_tokenizers_available() and is_vision_available()):' )
											self.assertEqual(snake_case   ,     'sentencepiece_and_tokenizers_and_vision' )




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

											# 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 ):
											snake_case_           =					create_dummy_object('CONSTANT'   ,     '\'torch\'' )
											self.assertEqual(snake_case   ,     '\nCONSTANT = None\n' )

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

											snake_case_           =					'\nclass FakeClass(metaclass=DummyObject):\n    _backends = \'torch\'\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, \'torch\')\n'
											snake_case_           =					create_dummy_object('FakeClass'   ,     '\'torch\'' )
											self.assertEqual(snake_case   ,     snake_case )




				def 					a							(      self ):
											snake_case_           =					'# 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_           =					create_dummy_files({'torch': ['CONSTANT', 'function', 'FakeClass']} )
											self.assertEqual(dummy_files['torch']   ,     snake_case )







def       __lowerCamelCase			(				UpperCamelCase__     ,							UpperCamelCase__   ):







							'''simple docstring'''






							snake_case_           =					len(UpperCamelCase__   )
							snake_case_           =					len(UpperCamelCase__   )
							snake_case_           =					(
							    first_str_length if first_str_length > second_str_length else second_str_length
							)
							snake_case_           =					[]
							for char_count in range(UpperCamelCase__   ):
														if char_count < first_str_length:
																					output_list.append(first_str[char_count]   )
														if char_count < second_str_length:
																					output_list.append(second_str[char_count]   )
							return "".join(UpperCamelCase__   )


if __name__ == "__main__":
					print(alternative_string_arrange("""AB""", """XYZ"""), end=""" """)




