

import os
import sys
import unittest


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

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

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


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







class   __lowercase      (unittest.TestCase ):
 def 	UpperCamelCase__  (							self					)					->str:



       '''simple docstring'''





       __lowerCAmelCase					:						Optional[int]					=					find_backend('''    _import_structure["models.albert"].append("AlbertTokenizerFast")'''					)
       self.assertIsNone(A_					)

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

       __lowerCAmelCase					:						int					=					find_backend('''    if not is_tensorflow_text_available():'''					)
       self.assertEqual(A_      ,							'''tensorflow_text'''					)

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

       __lowerCAmelCase					:						List[str]					=					find_backend(
           '''    if not (is_sentencepiece_available() and is_tensorflow_text_available()):'''					)
       self.assertEqual(A_      ,							'''sentencepiece_and_tensorflow_text'''					)

       __lowerCAmelCase					:						List[str]					=					find_backend(
           '''    if not (is_sentencepiece_available() and is_tokenizers_available() and is_vision_available()):'''					)
       self.assertEqual(A_      ,							'''sentencepiece_and_tokenizers_and_vision'''					)
 def 	UpperCamelCase__  (							self					)					->Tuple:



       '''simple docstring'''





       __lowerCAmelCase					:						str					=					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 	UpperCamelCase__  (							self					)					->str:



       '''simple docstring'''





       __lowerCAmelCase					:						List[str]					=					create_dummy_object('''CONSTANT'''      ,							'''\'torch\''''					)
       self.assertEqual(A_      ,							'''\nCONSTANT = None\n'''					)

       __lowerCAmelCase					:						int					=					create_dummy_object('''function'''      ,							'''\'torch\''''					)
       self.assertEqual(
           A_      ,							'''\ndef function(*args, **kwargs):\n    requires_backends(function, \'torch\')\n'''					)

       __lowerCAmelCase					:						List[Any]					=					'''
class FakeClass(metaclass=DummyObject):
    _backends = \'torch\'

    def __init__(self, *args, **kwargs):
        requires_backends(self, \'torch\')
'''
       __lowerCAmelCase					:						int					=					create_dummy_object('''FakeClass'''      ,							'''\'torch\''''					)
       self.assertEqual(A_      ,							A_					)





 def 	UpperCamelCase__  (							self					)					->Dict:



       '''simple docstring'''





       __lowerCAmelCase					:						Tuple					=					'''# 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"])
'''
       __lowerCAmelCase					:						Tuple					=					create_dummy_files({'''torch''': ['''CONSTANT''', '''function''', '''FakeClass''']}					)
       self.assertEqual(dummy_files['''torch''']      ,							A_					)





def 		_lowercase (     lowercase__						):
      if not all(x.isalpha() for x in string						):
            raise ValueError('''String must only contain alphabetic characters.'''						)

      __lowerCAmelCase					:						int					=					sorted(string.lower()						)
      return len(lowercase__						) == len(set(lowercase__						)						)


if __name__ == "__main__":
 _UpperCamelCase 			=		input("Enter a string ").strip()

 _UpperCamelCase 			=		is_isogram(input_str)
 print(F"{input_str} is {'an' if isogram else 'not an'} isogram.")


