



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 	lowerCamelCase      :







								'''simple docstring'''







								@staticmethod
								def    A__		(			*lowerCAmelCase    ,	**lowerCAmelCase     ):
										pass



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







					'''simple docstring'''







					@require_torch
					def    A__		(			self     ):
							UpperCAmelCase_						=				pipeline(
							    model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"    ,	)
							UpperCAmelCase_						=				Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"     )
							UpperCAmelCase_						=				image_classifier(__lowercase    ,	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(__lowercase     )    ,	[
							        [{"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"}],
							    ]    ,	)

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



					@require_tf
					def    A__		(			self     ):
							UpperCAmelCase_						=				pipeline(
							    model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"    ,	framework="tf"     )
							UpperCAmelCase_						=				Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"     )
							UpperCAmelCase_						=				image_classifier(__lowercase    ,	candidate_labels=["a", "b", "c"]     )

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

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



					@slow
					@require_torch
					def    A__		(			self     ):
							UpperCAmelCase_						=				pipeline(
							    task="zero-shot-image-classification"    ,	model="openai/clip-vit-base-patch32"    ,	)
							# This is an image of 2 cats with remotes and no planes
							UpperCAmelCase_						=				Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"     )
							UpperCAmelCase_						=				image_classifier(__lowercase    ,	candidate_labels=["cat", "plane", "remote"]     )

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

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



					@slow
					@require_tf
					def    A__		(			self     ):
							UpperCAmelCase_						=				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
							UpperCAmelCase_						=				Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"     )
							UpperCAmelCase_						=				image_classifier(__lowercase    ,	candidate_labels=["cat", "plane", "remote"]     )
							self.assertEqual(
							    nested_simplify(__lowercase     )    ,	[
							        {"score": 0.511, "label": "remote"},
							        {"score": 0.485, "label": "cat"},
							        {"score": 0.004, "label": "plane"},
							    ]    ,	)

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






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
)


SCREAMING_SNAKE_CASE     				=						{
    "configuration_gpt_bigcode": ["GPT_BIGCODE_PRETRAINED_CONFIG_ARCHIVE_MAP", "GPTBigCodeConfig"],
}

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			SCREAMING_SNAKE_CASE     				=						[
			    "GPT_BIGCODE_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "GPTBigCodeForSequenceClassification",
			    "GPTBigCodeForTokenClassification",
			    "GPTBigCodeForCausalLM",
			    "GPTBigCodeModel",
			    "GPTBigCodePreTrainedModel",
			]

if TYPE_CHECKING:
			from .configuration_gpt_bigcode import GPT_BIGCODE_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTBigCodeConfig

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_gpt_bigcode import (
						    GPT_BIGCODE_PRETRAINED_MODEL_ARCHIVE_LIST,
						    GPTBigCodeForCausalLM,
						    GPTBigCodeForSequenceClassification,
						    GPTBigCodeForTokenClassification,
						    GPTBigCodeModel,
						    GPTBigCodePreTrainedModel,
						)


else:
			import sys

			SCREAMING_SNAKE_CASE     				=						_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)

