




"""simple docstring"""

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







						@staticmethod
						def 					a_  (							*_lowerCamelCase   :					Union[str, Any]      ,     **_lowerCamelCase   :					Any       ):



							"""simple docstring"""

							pass

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







				@require_torch
				def 					a_  (							self   :					Optional[Any]       ):



					"""simple docstring"""

					A_  :				Dict	   =		pipeline(
					    model='''hf-internal-testing/tiny-random-clip-zero-shot-image-classification'''      ,     )
					A_  :				Optional[Any]	   =		Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''       )
					A_  :				int	   =		image_classifier(_lowerCamelCase      ,     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(_lowerCamelCase       )      ,     [
					        [{'''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'''}],
					    ]      ,     )

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







				@require_tf
				def 					a_  (							self   :					Union[str, Any]       ):



					"""simple docstring"""

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

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

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







				@slow
				@require_torch
				def 					a_  (							self   :					List[str]       ):



					"""simple docstring"""

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

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

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







				@slow
				@require_tf
				def 					a_  (							self   :					Union[str, Any]       ):



					"""simple docstring"""

					A_  :				List[str]	   =		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
					A_  :				List[Any]	   =		Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''       )
					A_  :				Any	   =		image_classifier(_lowerCamelCase      ,     candidate_labels=['''cat''', '''plane''', '''remote''']       )
					self.assertEqual(
					    nested_simplify(_lowerCamelCase       )      ,     [
					        {'''score''': 0.511, '''label''': '''remote'''},
					        {'''score''': 0.485, '''label''': '''cat'''},
					        {'''score''': 0.004, '''label''': '''plane'''},
					    ]      ,     )

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











"""simple docstring"""

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


_lowerCamelCase  :			Optional[Any]        =       {
    'configuration_mask2former': [
        'MASK2FORMER_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'Mask2FormerConfig',
    ],
}

try:
		if not is_vision_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowerCamelCase  :			int        =       ['Mask2FormerImageProcessor']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowerCamelCase  :			Tuple        =       [
		    'MASK2FORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
		    'Mask2FormerForUniversalSegmentation',
		    'Mask2FormerModel',
		    'Mask2FormerPreTrainedModel',
		]

if TYPE_CHECKING:
		from .configuration_maskaformer import MASK2FORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, MaskaFormerConfig

		try:
				if not is_vision_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .image_processing_maskaformer import MaskaFormerImageProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_maskaformer import (
				    MASK2FORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
				    MaskaFormerForUniversalSegmentation,
				    MaskaFormerModel,
				    MaskaFormerPreTrainedModel,
				)


else:
		import sys

		_lowerCamelCase  :			Optional[Any]        =       _LazyModule(__name__, globals()['__file__'], _import_structure)





