





"""simple docstring"""






import os
import sys
import unittest


lowerCAmelCase_			=							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_			=							os.path.join(git_repo_path, '''src''', '''diffusers''')



class 	lowerCAmelCase					(      unittest.TestCase							):






       def 							__A (   self     ):
              _UpperCAmelCase     =     find_backend('    if not is_torch_available():'     )
              self.assertEqual(a__    ,  'torch'     )

              # backend_with_underscore = find_backend("    if not is_tensorflow_text_available():")
              # self.assertEqual(backend_with_underscore, "tensorflow_text")

              _UpperCAmelCase     =     find_backend('    if not (is_torch_available() and is_transformers_available()):'     )
              self.assertEqual(a__    ,  'torch_and_transformers'     )

              # double_backend_with_underscore = find_backend(
              #    "    if not (is_sentencepiece_available() and is_tensorflow_text_available()):"
              # )
              # self.assertEqual(double_backend_with_underscore, "sentencepiece_and_tensorflow_text")

              _UpperCAmelCase     =     find_backend(
                  '    if not (is_torch_available() and is_transformers_available() and is_onnx_available()):'     )
              self.assertEqual(a__    ,  'torch_and_transformers_and_onnx'     )






       def 							__A (   self     ):
              _UpperCAmelCase     =     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('torch_and_transformers'    ,  a__     )
              self.assertIn('flax_and_transformers'    ,  a__     )
              self.assertIn('torch_and_transformers_and_onnx'    ,  a__     )

              # Likewise, we can't assert on the exact content of a key
              self.assertIn('UNet2DModel'    ,  objects['torch']     )
              self.assertIn('FlaxUNet2DConditionModel'    ,  objects['flax']     )
              self.assertIn('StableDiffusionPipeline'    ,  objects['torch_and_transformers']     )
              self.assertIn('FlaxStableDiffusionPipeline'    ,  objects['flax_and_transformers']     )
              self.assertIn('LMSDiscreteScheduler'    ,  objects['torch_and_scipy']     )
              self.assertIn('OnnxStableDiffusionPipeline'    ,  objects['torch_and_transformers_and_onnx']     )






       def 							__A (   self     ):
              _UpperCAmelCase     =     create_dummy_object('CONSTANT'    ,  '\'torch\''     )
              self.assertEqual(a__    ,  '\nCONSTANT = None\n'     )

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

              _UpperCAmelCase     =     '\nclass FakeClass(metaclass=DummyObject):\n    _backends = \'torch\'\n\n    def __init__(self, *args, **kwargs):\n        requires_backends(self, \'torch\')\n\n    @classmethod\n    def from_config(cls, *args, **kwargs):\n        requires_backends(cls, \'torch\')\n\n    @classmethod\n    def from_pretrained(cls, *args, **kwargs):\n        requires_backends(cls, \'torch\')\n'
              _UpperCAmelCase     =     create_dummy_object('FakeClass'    ,  '\'torch\''     )
              self.assertEqual(a__    ,  a__     )






       def 							__A (   self     ):
              _UpperCAmelCase     =     '# 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\n    @classmethod\n    def from_config(cls, *args, **kwargs):\n        requires_backends(cls, ["torch"])\n\n    @classmethod\n    def from_pretrained(cls, *args, **kwargs):\n        requires_backends(cls, ["torch"])\n'
              _UpperCAmelCase     =     create_dummy_files({'torch': ['CONSTANT', 'function', 'FakeClass']}     )
              self.assertEqual(dummy_files['torch']    ,  a__     )













"""simple docstring"""






from datetime import datetime

import matplotlib.pyplot as plt
import torch

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE							)		->       Any:






       """simple docstring"""




       for param in module.parameters():
              _UpperCAmelCase     =     False

def       __lowerCamelCase    (       )		->       Dict:






       """simple docstring"""




       _UpperCAmelCase     =     'cuda' if torch.cuda.is_available() else 'cpu'
       if torch.backends.mps.is_available() and torch.backends.mps.is_built():
              _UpperCAmelCase     =     'mps'
       if device == "mps":
              print(
                  'WARNING: MPS currently doesn\'t seem to work, and messes up backpropagation without any visible torch'
                  ' errors. I recommend using CUDA on a colab notebook or CPU instead if you\'re facing inexplicable issues'
                  ' with generations.'							)
       return device

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE							)		->       str:






       """simple docstring"""




       _UpperCAmelCase     =     plt.imshow(SCREAMING_SNAKE_CASE							)
       fig.axes.get_xaxis().set_visible(SCREAMING_SNAKE_CASE							)
       fig.axes.get_yaxis().set_visible(SCREAMING_SNAKE_CASE							)
       plt.show()


def       __lowerCamelCase    (       )		->       Dict:






       """simple docstring"""




       _UpperCAmelCase     =     datetime.now()
       _UpperCAmelCase     =     current_time.strftime('%H:%M:%S'							)
       return timestamp






