



'''simple docstring'''





import os
import sys
import unittest


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

lowercase_		       =  "\n{0} = None\n"

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


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






class __A			(  unittest.TestCase						):



 '''simple docstring'''







 def 					a__  (self       )    ->     Dict:


      """simple docstring"""



      _a      =  find_backend('''    _import_structure[\"models.albert\"].append(\"AlbertTokenizerFast\")'''       )
      self.assertIsNone(UpperCamelCase_       )

      _a      =  find_backend('''    if not is_tokenizers_available():'''       )
      self.assertEqual(UpperCamelCase_ ,   '''tokenizers'''       )

      _a      =  find_backend('''    if not is_tensorflow_text_available():'''       )
      self.assertEqual(UpperCamelCase_ ,   '''tensorflow_text'''       )

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

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

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



 def 					a__  (self       )    ->     List[Any]:


      """simple docstring"""



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

      # 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       )    ->     Optional[Any]:


      """simple docstring"""



      _a      =  create_dummy_object('''CONSTANT''' ,   '''\'torch\''''       )
      self.assertEqual(UpperCamelCase_ ,   '''\nCONSTANT = None\n'''       )

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

      _a      =  '''
class FakeClass(metaclass=DummyObject):
    _backends = \'torch\'

    def __init__(self, *args, **kwargs):
        requires_backends(self, \'torch\')
'''
      _a      =  create_dummy_object('''FakeClass''' ,   '''\'torch\''''       )
      self.assertEqual(UpperCamelCase_ ,   UpperCamelCase_       )



 def 					a__  (self       )    ->     Tuple:


      """simple docstring"""



      _a      =  '''# This file is autogenerated by the command `make fix-copies`, do not edit.
from ..utils import DummyObject, requires_backends


CONSTANT = None


def function(*args, **kwargs):
    requires_backends(function, [\"torch\"])


class FakeClass(metaclass=DummyObject):
    _backends = [\"torch\"]

    def __init__(self, *args, **kwargs):
        requires_backends(self, [\"torch\"])
'''
      _a      =  create_dummy_files({'''torch''': ['''CONSTANT''', '''function''', '''FakeClass''']}       )
      self.assertEqual(dummy_files['''torch'''] ,   UpperCamelCase_       )









from __future__ import annotations




def 					lowerCamelCase__       (						A__       :					list[int | float]  ,			A__       :					int  ,			A__       :					int	):





       '''simple docstring'''



       if len(A__	) == 0:
              raise ValueError("""find_max() arg is an empty sequence"""	)
       if (
           left >= len(A__	)
           or left < -len(A__	)
           or right >= len(A__	)
           or right < -len(A__	)
       ):
              raise IndexError("""list index out of range"""	)
       if left == right:
              return nums[left]
       __lowerCamelCase   =						(left + right) >> 1  # the middle
       __lowerCamelCase   =						find_max(A__  ,			A__  ,			A__	)  # find max in range[left, mid]
       __lowerCamelCase   =						find_max(A__  ,			mid + 1  ,			A__	)  # find max in range[mid + 1, right]

       return left_max if left_max >= right_max else right_max


if __name__ == "__main__":
       import doctest

       doctest.testmod(verbose=True)

