





import os
import sys
import unittest


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






class 							__lowercase       (      unittest.TestCase						):







	'''simple docstring'''

	def 						_UpperCAmelCase     (self )							->							Tuple:







				'''simple docstring'''





				__lowercase										=							find_backend('''    if not is_torch_available():''' )
				self.assertEqual(_lowerCamelCase     ,'''torch''' )

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

				__lowercase										=							find_backend('''    if not (is_torch_available() and is_transformers_available()):''' )
				self.assertEqual(_lowerCamelCase     ,'''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")

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


	def 						_UpperCAmelCase     (self )							->							int:







				'''simple docstring'''





				__lowercase										=							read_init()
				# We don't assert on the exact list of keys to allow for smooth grow of backend-specific objects
				self.assertIn('''torch'''     ,_lowerCamelCase )
				self.assertIn('''torch_and_transformers'''     ,_lowerCamelCase )
				self.assertIn('''flax_and_transformers'''     ,_lowerCamelCase )
				self.assertIn('''torch_and_transformers_and_onnx'''     ,_lowerCamelCase )

				# 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 						_UpperCAmelCase     (self )							->							int:







				'''simple docstring'''





				__lowercase										=							create_dummy_object('''CONSTANT'''     ,'''\'torch\'''' )
				self.assertEqual(_lowerCamelCase     ,'''\nCONSTANT = None\n''' )

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

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

    def __init__(self, *args, **kwargs):
        requires_backends(self, \'torch\')

    @classmethod
    def from_config(cls, *args, **kwargs):
        requires_backends(cls, \'torch\')

    @classmethod
    def from_pretrained(cls, *args, **kwargs):
        requires_backends(cls, \'torch\')
'''
				__lowercase										=							create_dummy_object('''FakeClass'''     ,'''\'torch\'''' )
				self.assertEqual(_lowerCamelCase     ,_lowerCamelCase )


	def 						_UpperCAmelCase     (self )							->							Dict:







				'''simple docstring'''





				__lowercase										=							'''# 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\"])

    @classmethod
    def from_config(cls, *args, **kwargs):
        requires_backends(cls, [\"torch\"])

    @classmethod
    def from_pretrained(cls, *args, **kwargs):
        requires_backends(cls, [\"torch\"])
'''
				__lowercase										=							create_dummy_files({'''torch''': ['''CONSTANT''', '''function''', '''FakeClass''']} )
				self.assertEqual(dummy_files['''torch''']     ,_lowerCamelCase )












'''simple docstring'''



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_SCREAMING_SNAKE_CASE					=    {
    '''configuration_clipseg''': [
        '''CLIPSEG_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''CLIPSegConfig''',
        '''CLIPSegTextConfig''',
        '''CLIPSegVisionConfig''',
    ],
    '''processing_clipseg''': ['''CLIPSegProcessor'''],
}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_SCREAMING_SNAKE_CASE					=    [
	    '''CLIPSEG_PRETRAINED_MODEL_ARCHIVE_LIST''',
	    '''CLIPSegModel''',
	    '''CLIPSegPreTrainedModel''',
	    '''CLIPSegTextModel''',
	    '''CLIPSegVisionModel''',
	    '''CLIPSegForImageSegmentation''',
	]

if TYPE_CHECKING:
	from .configuration_clipseg import (
	    CLIPSEG_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    CLIPSegConfig,
	    CLIPSegTextConfig,
	    CLIPSegVisionConfig,
	)
	from .processing_clipseg import CLIPSegProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_clipseg import (
		    CLIPSEG_PRETRAINED_MODEL_ARCHIVE_LIST,
		    CLIPSegForImageSegmentation,
		    CLIPSegModel,
		    CLIPSegPreTrainedModel,
		    CLIPSegTextModel,
		    CLIPSegVisionModel,
		)

else:
	import sys

	_SCREAMING_SNAKE_CASE					=    _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





