

import os
import sys
import unittest


snake_case_			  = 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
snake_case_			  = os.path.join(git_repo_path, '''src''', '''transformers''')

snake_case_			  = '''
{0} = None
'''

snake_case_			  = '''
class {0}(metaclass=DummyObject):
    _backends = {1}

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


snake_case_			  = '''
def {0}(*args, **kwargs):
    requires_backends({0}, {1})
'''


class       SCREAMING_SNAKE_CASE__					(unittest.TestCase     ):





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

         lowercase__    :   List[str]      =       find_backend('    if not is_tokenizers_available():')
         self.assertEqual(a						,   'tokenizers')

         lowercase__    :   Optional[int]      =       find_backend('    if not is_tensorflow_text_available():')
         self.assertEqual(a						,   'tensorflow_text')

         lowercase__    :   List[Any]      =       find_backend('    if not (is_sentencepiece_available() and is_tokenizers_available()):')
         self.assertEqual(a						,   'sentencepiece_and_tokenizers')

         lowercase__    :   List[Any]      =       find_backend(
             '    if not (is_sentencepiece_available() and is_tensorflow_text_available()):')
         self.assertEqual(a						,   'sentencepiece_and_tensorflow_text')

         lowercase__    :   Tuple      =       find_backend(
             '    if not (is_sentencepiece_available() and is_tokenizers_available() and is_vision_available()):')
         self.assertEqual(a						,   'sentencepiece_and_tokenizers_and_vision')





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

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

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

         lowercase__    :   Optional[Any]      =       '\nclass FakeClass(metaclass=DummyObject):\n    _backends = \'torch\'\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, \'torch\')\n'
         lowercase__    :   List[Any]      =       create_dummy_object('FakeClass'						,   '\'torch\'')
         self.assertEqual(a						,   a)





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




def 	snake_case__			(    SCREAMING_SNAKE_CASE_		:    str			):



     '''simple docstring'''





     if not all(char in '01' for char in bin_string			):
          raise ValueError('Non-binary value was passed to the function'			)
     if not bin_string:
          raise ValueError('Empty string was passed to the function'			)
     lowercase__    :   Union[str, Any]      =       ''
     while len(SCREAMING_SNAKE_CASE_			) % 3 != 0:
          lowercase__    :   List[str]      =       '0' + bin_string
     lowercase__    :   Any      =       [
         bin_string[index : index + 3]
         for index in range(len(SCREAMING_SNAKE_CASE_			)			)
         if index % 3 == 0
     ]
     for bin_group in bin_string_in_3_list:
          lowercase__    :   str      =       0
          for index, val in enumerate(SCREAMING_SNAKE_CASE_			):
               oct_val += int(2 ** (2 - index) * int(SCREAMING_SNAKE_CASE_			)			)
          oct_string += str(SCREAMING_SNAKE_CASE_			)
     return oct_string


if __name__ == "__main__":
       from doctest import testmod

       testmod()

