


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     :

								"""simple docstring"""







								@staticmethod
								def   _UpperCAmelCase       (    *a__					, **a__ )						->					Union[str, Any]:
									pass






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

				"""simple docstring"""







				@require_torch
				def   _UpperCAmelCase       (    self )						->					List[str]:
					A             =					pipeline(
					    model="""hf-internal-testing/tiny-random-clip-zero-shot-image-classification"""					, )
					A             =					Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png""" )
					A             =					image_classifier(a__					, 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(a__ )					, [
					        [{"""score""": 0.3_33, """label""": """a"""}, {"""score""": 0.3_33, """label""": """b"""}, {"""score""": 0.3_33, """label""": """c"""}],
					        [{"""score""": 0.3_33, """label""": """a"""}, {"""score""": 0.3_33, """label""": """c"""}, {"""score""": 0.3_33, """label""": """b"""}],
					    ]					, )

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

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

					self.assertEqual(
					    nested_simplify(a__ )					, [{"""score""": 0.3_33, """label""": """a"""}, {"""score""": 0.3_33, """label""": """b"""}, {"""score""": 0.3_33, """label""": """c"""}]					, )

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

				@slow
				@require_torch
				def   _UpperCAmelCase       (    self )						->					int:
					A             =					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             =					Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png""" )
					A             =					image_classifier(a__					, candidate_labels=["""cat""", """plane""", """remote"""] )

					self.assertEqual(
					    nested_simplify(a__ )					, [
					        {"""score""": 0.5_11, """label""": """remote"""},
					        {"""score""": 0.4_85, """label""": """cat"""},
					        {"""score""": 0.0_04, """label""": """plane"""},
					    ]					, )

					A             =					image_classifier([image] * 5					, candidate_labels=["""cat""", """plane""", """remote"""]					, batch_size=2 )
					self.assertEqual(
					    nested_simplify(a__ )					, [
					        [
					            {"""score""": 0.5_11, """label""": """remote"""},
					            {"""score""": 0.4_85, """label""": """cat"""},
					            {"""score""": 0.0_04, """label""": """plane"""},
					        ],
					    ]
					    * 5					, )

				@slow
				@require_tf
				def   _UpperCAmelCase       (    self )						->					Optional[int]:
					A             =					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             =					Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png""" )
					A             =					image_classifier(a__					, candidate_labels=["""cat""", """plane""", """remote"""] )
					self.assertEqual(
					    nested_simplify(a__ )					, [
					        {"""score""": 0.5_11, """label""": """remote"""},
					        {"""score""": 0.4_85, """label""": """cat"""},
					        {"""score""": 0.0_04, """label""": """plane"""},
					    ]					, )

					A             =					image_classifier([image] * 5					, candidate_labels=["""cat""", """plane""", """remote"""]					, batch_size=2 )
					self.assertEqual(
					    nested_simplify(a__ )					, [
					        [
					            {"""score""": 0.5_11, """label""": """remote"""},
					            {"""score""": 0.4_85, """label""": """cat"""},
					            {"""score""": 0.0_04, """label""": """plane"""},
					        ],
					    ]
					    * 5					, )







from typing import TYPE_CHECKING

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


_lowercase							:   int						=						{
    "configuration_roberta_prelayernorm": [
        "ROBERTA_PRELAYERNORM_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "RobertaPreLayerNormConfig",
        "RobertaPreLayerNormOnnxConfig",
    ],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_lowercase							:   List[Any]						=						[
				    "ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "RobertaPreLayerNormForCausalLM",
				    "RobertaPreLayerNormForMaskedLM",
				    "RobertaPreLayerNormForMultipleChoice",
				    "RobertaPreLayerNormForQuestionAnswering",
				    "RobertaPreLayerNormForSequenceClassification",
				    "RobertaPreLayerNormForTokenClassification",
				    "RobertaPreLayerNormModel",
				    "RobertaPreLayerNormPreTrainedModel",
				]

try:
				if not is_tf_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_lowercase							:   Optional[int]						=						[
				    "TF_ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "TFRobertaPreLayerNormForCausalLM",
				    "TFRobertaPreLayerNormForMaskedLM",
				    "TFRobertaPreLayerNormForMultipleChoice",
				    "TFRobertaPreLayerNormForQuestionAnswering",
				    "TFRobertaPreLayerNormForSequenceClassification",
				    "TFRobertaPreLayerNormForTokenClassification",
				    "TFRobertaPreLayerNormMainLayer",
				    "TFRobertaPreLayerNormModel",
				    "TFRobertaPreLayerNormPreTrainedModel",
				]

try:
				if not is_flax_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_lowercase							:   str						=						[
				    "FlaxRobertaPreLayerNormForCausalLM",
				    "FlaxRobertaPreLayerNormForMaskedLM",
				    "FlaxRobertaPreLayerNormForMultipleChoice",
				    "FlaxRobertaPreLayerNormForQuestionAnswering",
				    "FlaxRobertaPreLayerNormForSequenceClassification",
				    "FlaxRobertaPreLayerNormForTokenClassification",
				    "FlaxRobertaPreLayerNormModel",
				    "FlaxRobertaPreLayerNormPreTrainedModel",
				]


if TYPE_CHECKING:
				from .configuration_roberta_prelayernorm import (
				    ROBERTA_PRELAYERNORM_PRETRAINED_CONFIG_ARCHIVE_MAP,
				    RobertaPreLayerNormConfig,
				    RobertaPreLayerNormOnnxConfig,
				)

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_roberta_prelayernorm import (
								    ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST,
								    RobertaPreLayerNormForCausalLM,
								    RobertaPreLayerNormForMaskedLM,
								    RobertaPreLayerNormForMultipleChoice,
								    RobertaPreLayerNormForQuestionAnswering,
								    RobertaPreLayerNormForSequenceClassification,
								    RobertaPreLayerNormForTokenClassification,
								    RobertaPreLayerNormModel,
								    RobertaPreLayerNormPreTrainedModel,
								)

				try:
								if not is_tf_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_tf_roberta_prelayernorm import (
								    TF_ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TFRobertaPreLayerNormForCausalLM,
								    TFRobertaPreLayerNormForMaskedLM,
								    TFRobertaPreLayerNormForMultipleChoice,
								    TFRobertaPreLayerNormForQuestionAnswering,
								    TFRobertaPreLayerNormForSequenceClassification,
								    TFRobertaPreLayerNormForTokenClassification,
								    TFRobertaPreLayerNormMainLayer,
								    TFRobertaPreLayerNormModel,
								    TFRobertaPreLayerNormPreTrainedModel,
								)

				try:
								if not is_flax_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_flax_roberta_prelayernorm import (
								    FlaxRobertaPreLayerNormForCausalLM,
								    FlaxRobertaPreLayerNormForMaskedLM,
								    FlaxRobertaPreLayerNormForMultipleChoice,
								    FlaxRobertaPreLayerNormForQuestionAnswering,
								    FlaxRobertaPreLayerNormForSequenceClassification,
								    FlaxRobertaPreLayerNormForTokenClassification,
								    FlaxRobertaPreLayerNormModel,
								    FlaxRobertaPreLayerNormPreTrainedModel,
								)

else:
				import sys

				_lowercase							:   List[Any]						=						_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



