

import unittest

from transformers import is_vision_available
from transformers.pipelines import pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
						from PIL import Image
else:




						class      UpperCamelCase :

										@staticmethod
										def UpperCamelCase			(			*snake_case__ :      List[str]							,    **snake_case__ :      Tuple    ):

											"""simple docstring"""






											pass




@is_pipeline_test
@require_vision
class      UpperCamelCase (     unittest.TestCase   ):

				@require_torch
				def UpperCamelCase			(			self :      List[Any]    ):

					"""simple docstring"""






					SCREAMING_SNAKE_CASE								=			pipeline(
					    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'							,    )
					SCREAMING_SNAKE_CASE								=			Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'    )
					SCREAMING_SNAKE_CASE								=			image_classifier(snake_case__							,    candidate_labels=['a', 'b', 'c']    )

					# The floating scores are so close, we enter floating error approximation and the order is not guaranteed across
					# python and torch versions.
					self.assertIn(
					    nested_simplify(snake_case__    )							,    [
					        [{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'b'}, {'score': 0.333, 'label': 'c'}],
					        [{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'c'}, {'score': 0.333, 'label': 'b'}],
					    ]							,    )

					SCREAMING_SNAKE_CASE								=			image_classifier([image] * 5							,    candidate_labels=['A', 'B', 'C']							,    batch_size=2    )
					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					    ]							,    )

				@require_tf
				def UpperCamelCase			(			self :      List[str]    ):

					"""simple docstring"""






					SCREAMING_SNAKE_CASE								=			pipeline(
					    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'							,    framework='tf'    )
					SCREAMING_SNAKE_CASE								=			Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'    )
					SCREAMING_SNAKE_CASE								=			image_classifier(snake_case__							,    candidate_labels=['a', 'b', 'c']    )

					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'b'}, {'score': 0.333, 'label': 'c'}]							,    )

					SCREAMING_SNAKE_CASE								=			image_classifier([image] * 5							,    candidate_labels=['A', 'B', 'C']							,    batch_size=2    )
					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					        [
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					            {'score': 0.333, 'label': ANY(snake_case__    )},
					        ],
					    ]							,    )

				@slow
				@require_torch
				def UpperCamelCase			(			self :      Optional[int]    ):

					"""simple docstring"""






					SCREAMING_SNAKE_CASE								=			pipeline(
					    task='zero-shot-image-classification'							,    model='openai/clip-vit-base-patch32'							,    )
					# This is an image of 2 cats with remotes and no planes
					SCREAMING_SNAKE_CASE								=			Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'    )
					SCREAMING_SNAKE_CASE								=			image_classifier(snake_case__							,    candidate_labels=['cat', 'plane', 'remote']    )

					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        {'score': 0.511, 'label': 'remote'},
					        {'score': 0.485, 'label': 'cat'},
					        {'score': 0.004, 'label': 'plane'},
					    ]							,    )

					SCREAMING_SNAKE_CASE								=			image_classifier([image] * 5							,    candidate_labels=['cat', 'plane', 'remote']							,    batch_size=2    )
					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        [
					            {'score': 0.511, 'label': 'remote'},
					            {'score': 0.485, 'label': 'cat'},
					            {'score': 0.004, 'label': 'plane'},
					        ],
					    ]
					    * 5							,    )




				@slow
				@require_tf
				def UpperCamelCase			(			self :      List[str]    ):

					"""simple docstring"""






					SCREAMING_SNAKE_CASE								=			pipeline(
					    task='zero-shot-image-classification'							,    model='openai/clip-vit-base-patch32'							,    framework='tf'    )
					# This is an image of 2 cats with remotes and no planes
					SCREAMING_SNAKE_CASE								=			Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'    )
					SCREAMING_SNAKE_CASE								=			image_classifier(snake_case__							,    candidate_labels=['cat', 'plane', 'remote']    )
					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        {'score': 0.511, 'label': 'remote'},
					        {'score': 0.485, 'label': 'cat'},
					        {'score': 0.004, 'label': 'plane'},
					    ]							,    )

					SCREAMING_SNAKE_CASE								=			image_classifier([image] * 5							,    candidate_labels=['cat', 'plane', 'remote']							,    batch_size=2    )
					self.assertEqual(
					    nested_simplify(snake_case__    )							,    [
					        [
					            {'score': 0.511, 'label': 'remote'},
					            {'score': 0.485, 'label': 'cat'},
					            {'score': 0.004, 'label': 'plane'},
					        ],
					    ]
					    * 5							,    )




# limitations under the License.

# NOTE: This file is deprecated and will be removed in a future version.
# It only exists so that temporarely `from diffusers.pipelines import DiffusionPipeline` works

from .pipelines import DiffusionPipeline, ImagePipelineOutput  # noqa: F401
from .utils import deprecate


deprecate(
    "pipelines_utils",
    "0.22.0",
    "Importing `DiffusionPipeline` or `ImagePipelineOutput` from diffusers.pipeline_utils is deprecated. Please import from diffusers.pipelines.pipeline_utils instead.",
    standard_warn=False,
    stacklevel=3,
)

