






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





						"""simple docstring"""






						@staticmethod
						def 	_lowercase					( *__A					:  str							,		**__A					:  Union[str, Any]	):
							pass



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





					"""simple docstring"""






					@require_torch
					def 	_lowercase					( self					:  Optional[Any]	):
						snake_case__			:				Optional[int]       =  pipeline(
						    model="hf-internal-testing/tiny-random-clip-zero-shot-image-classification"							,		)
						snake_case__			:				str       =  Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
						snake_case__			:				Tuple       =  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_3_3, "label": "a"}, {"score": 0.3_3_3, "label": "b"}, {"score": 0.3_3_3, "label": "c"}],
						        [{"score": 0.3_3_3, "label": "a"}, {"score": 0.3_3_3, "label": "c"}, {"score": 0.3_3_3, "label": "b"}],
						    ]							,		)

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



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

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

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



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

						self.assertEqual(
						    nested_simplify(__A	)							,		[
						        {"score": 0.5_1_1, "label": "remote"},
						        {"score": 0.4_8_5, "label": "cat"},
						        {"score": 0.0_0_4, "label": "plane"},
						    ]							,		)

						snake_case__			:				int       =  image_classifier([image] * 5							,		candidate_labels=["cat", "plane", "remote"]							,		batch_size=2	)
						self.assertEqual(
						    nested_simplify(__A	)							,		[
						        [
						            {"score": 0.5_1_1, "label": "remote"},
						            {"score": 0.4_8_5, "label": "cat"},
						            {"score": 0.0_0_4, "label": "plane"},
						        ],
						    ]
						    * 5							,		)






					@slow
					@require_tf
					def 	_lowercase					( self					:  Optional[Any]	):
						snake_case__			:				Dict       =  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
						snake_case__			:				List[str]       =  Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"	)
						snake_case__			:				Dict       =  image_classifier(__A							,		candidate_labels=["cat", "plane", "remote"]	)
						self.assertEqual(
						    nested_simplify(__A	)							,		[
						        {"score": 0.5_1_1, "label": "remote"},
						        {"score": 0.4_8_5, "label": "cat"},
						        {"score": 0.0_0_4, "label": "plane"},
						    ]							,		)

						snake_case__			:				Optional[int]       =  image_classifier([image] * 5							,		candidate_labels=["cat", "plane", "remote"]							,		batch_size=2	)
						self.assertEqual(
						    nested_simplify(__A	)							,		[
						        [
						            {"score": 0.5_1_1, "label": "remote"},
						            {"score": 0.4_8_5, "label": "cat"},
						            {"score": 0.0_0_4, "label": "plane"},
						        ],
						    ]
						    * 5							,		)











from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__lowerCamelCase :      Union[str, Any]										=				{
    """configuration_time_series_transformer""": [
        """TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """TimeSeriesTransformerConfig""",
    ],
}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__lowerCamelCase :      Tuple										=				[
	    """TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """TimeSeriesTransformerForPrediction""",
	    """TimeSeriesTransformerModel""",
	    """TimeSeriesTransformerPreTrainedModel""",
	]


if TYPE_CHECKING:
	from .configuration_time_series_transformer import (
	    TIME_SERIES_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    TimeSeriesTransformerConfig,
	)

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_time_series_transformer import (
		    TIME_SERIES_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TimeSeriesTransformerForPrediction,
		    TimeSeriesTransformerModel,
		    TimeSeriesTransformerPreTrainedModel,
		)

else:
	import sys

	__lowerCamelCase :      Tuple										=				_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)



