


"""simple docstring"""




import unittest

from transformers import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING, is_vision_available, 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 			__UpperCAmelCase       (  *_a							, **_a      ):
								pass
@is_pipeline_test
@require_vision
@require_torch
class 					__lowerCAmelCase					(   unittest.TestCase       ):


		'''simple docstring'''



		__UpperCAmelCase		:			List[str]										=				MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

		def 			__UpperCAmelCase       (  self							, _a							, _a							, _a      ):
				__a           =			pipeline(
				    '''zero-shot-object-detection'''							, model='''hf-internal-testing/tiny-random-owlvit-object-detection'''      )

				__a           =			[
				    {
				        '''image''': '''./tests/fixtures/tests_samples/COCO/000000039769.png''',
				        '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
				    }
				]
				return object_detector, examples

		def 			__UpperCAmelCase       (  self							, _a							, _a      ):
				__a           =			object_detector(examples[0]							, threshold=0.0      )

				__a           =			len(_a      )
				self.assertGreater(_a							, 0      )
				self.assertEqual(
				    _a							, [
				        {
				            '''score''': ANY(_a      ),
				            '''label''': ANY(_a      ),
				            '''box''': {'''xmin''': ANY(_a      ), '''ymin''': ANY(_a      ), '''xmax''': ANY(_a      ), '''ymax''': ANY(_a      )},
				        }
				        for i in range(_a      )
				    ]							, )

		@require_tf
		@unittest.skip('''Zero Shot Object Detection not implemented in TF'''      )
		def 			__UpperCAmelCase       (  self      ):
				pass

		@require_torch
		def 			__UpperCAmelCase       (  self      ):
				__a           =			pipeline(
				    '''zero-shot-object-detection'''							, model='''hf-internal-testing/tiny-random-owlvit-object-detection'''      )

				__a           =			object_detector(
				    '''./tests/fixtures/tests_samples/COCO/000000039769.png'''							, candidate_labels=['''cat''', '''remote''', '''couch''']							, threshold=0.64							, )

				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        {'''score''': 0.7235, '''label''': '''cat''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				        {'''score''': 0.7218, '''label''': '''remote''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				        {'''score''': 0.7184, '''label''': '''couch''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				        {'''score''': 0.6748, '''label''': '''remote''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				        {'''score''': 0.6656, '''label''': '''cat''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				        {'''score''': 0.6614, '''label''': '''couch''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				        {'''score''': 0.6456, '''label''': '''remote''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
				        {'''score''': 0.642, '''label''': '''remote''', '''box''': {'''xmin''': 67, '''ymin''': 274, '''xmax''': 93, '''ymax''': 297}},
				        {'''score''': 0.6419, '''label''': '''cat''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
				    ]							, )

				__a           =			object_detector(
				    [
				        {
				            '''image''': '''./tests/fixtures/tests_samples/COCO/000000039769.png''',
				            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
				        }
				    ]							, threshold=0.64							, )

				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        [
				            {'''score''': 0.7235, '''label''': '''cat''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				            {'''score''': 0.7218, '''label''': '''remote''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				            {'''score''': 0.7184, '''label''': '''couch''', '''box''': {'''xmin''': 204, '''ymin''': 167, '''xmax''': 232, '''ymax''': 190}},
				            {'''score''': 0.6748, '''label''': '''remote''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				            {'''score''': 0.6656, '''label''': '''cat''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				            {'''score''': 0.6614, '''label''': '''couch''', '''box''': {'''xmin''': 571, '''ymin''': 83, '''xmax''': 598, '''ymax''': 103}},
				            {'''score''': 0.6456, '''label''': '''remote''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
				            {'''score''': 0.642, '''label''': '''remote''', '''box''': {'''xmin''': 67, '''ymin''': 274, '''xmax''': 93, '''ymax''': 297}},
				            {'''score''': 0.6419, '''label''': '''cat''', '''box''': {'''xmin''': 494, '''ymin''': 105, '''xmax''': 521, '''ymax''': 127}},
				        ]
				    ]							, )

		@require_torch
		@slow
		def 			__UpperCAmelCase       (  self      ):
				__a           =			pipeline('''zero-shot-object-detection'''      )

				__a           =			object_detector(
				    '''http://images.cocodataset.org/val2017/000000039769.jpg'''							, candidate_labels=['''cat''', '''remote''', '''couch''']							, )
				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
				        {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
				        {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
				        {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
				        {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
				    ]							, )

				__a           =			object_detector(
				    [
				        {
				            '''image''': '''http://images.cocodataset.org/val2017/000000039769.jpg''',
				            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
				        },
				        {
				            '''image''': '''http://images.cocodataset.org/val2017/000000039769.jpg''',
				            '''candidate_labels''': ['''cat''', '''remote''', '''couch'''],
				        },
				    ]							, )
				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        [
				            {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
				            {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
				            {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
				            {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
				            {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
				        ],
				        [
				            {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
				            {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
				            {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
				            {'''score''': 0.1474, '''label''': '''remote''', '''box''': {'''xmin''': 335, '''ymin''': 74, '''xmax''': 371, '''ymax''': 187}},
				            {'''score''': 0.1208, '''label''': '''couch''', '''box''': {'''xmin''': 4, '''ymin''': 0, '''xmax''': 642, '''ymax''': 476}},
				        ],
				    ]							, )

		@require_tf
		@unittest.skip('''Zero Shot Object Detection not implemented in TF'''      )
		def 			__UpperCAmelCase       (  self      ):
				pass

		@require_torch
		@slow
		def 			__UpperCAmelCase       (  self      ):
				__a           =			0.2
				__a           =			pipeline('''zero-shot-object-detection'''      )

				__a           =			object_detector(
				    '''http://images.cocodataset.org/val2017/000000039769.jpg'''							, candidate_labels=['''cat''', '''remote''', '''couch''']							, threshold=_a							, )
				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
				        {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
				        {'''score''': 0.2537, '''label''': '''cat''', '''box''': {'''xmin''': 1, '''ymin''': 55, '''xmax''': 315, '''ymax''': 472}},
				    ]							, )





		@require_torch
		@slow
		def 			__UpperCAmelCase       (  self      ):
				__a           =			2
				__a           =			pipeline('''zero-shot-object-detection'''      )

				__a           =			object_detector(
				    '''http://images.cocodataset.org/val2017/000000039769.jpg'''							, candidate_labels=['''cat''', '''remote''', '''couch''']							, top_k=_a							, )
				self.assertEqual(
				    nested_simplify(_a							, decimals=4      )							, [
				        {'''score''': 0.2868, '''label''': '''cat''', '''box''': {'''xmin''': 324, '''ymin''': 20, '''xmax''': 640, '''ymax''': 373}},
				        {'''score''': 0.277, '''label''': '''remote''', '''box''': {'''xmin''': 40, '''ymin''': 72, '''xmax''': 177, '''ymax''': 115}},
				    ]							, )








import unittest

from huggingface_hub import hf_hub_download

from transformers import MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING, VideoMAEFeatureExtractor
from transformers.pipelines import VideoClassificationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_decord,
    require_tf,
    require_torch,
    require_torch_or_tf,
    require_vision,
)

from .test_pipelines_common import ANY

@is_pipeline_test
@require_torch_or_tf
@require_vision
@require_decord
class __snake_case		(      unittest.TestCase     ):
    _a		:						Optional[int]=				MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING
    def       _SCREAMING_SNAKE_CASE       (  self		,snake_case		,snake_case		,snake_case      ):



           '''simple docstring'''







           lowercase							:     Any       	=      hf_hub_download(
               repo_id="""nateraw/video-demo"""		,filename="""archery.mp4"""		,repo_type="""dataset"""      )
           lowercase							:     List[str]       	=      VideoClassificationPipeline(model=snake_case		,image_processor=snake_case		,top_k=2      )
           lowercase							:     Dict       	=      [
               example_video_filepath,
               """https://huggingface.co/datasets/nateraw/video-demo/resolve/main/archery.mp4""",
           ]
           return video_classifier, examples
    def       _SCREAMING_SNAKE_CASE       (  self		,snake_case		,snake_case      ):



           '''simple docstring'''







           for example in examples:
                  lowercase							:     int       	=      video_classifier(snake_case      )

                  self.assertEqual(
                      snake_case		,[
                          {"""score""": ANY(snake_case      ), """label""": ANY(snake_case      )},
                          {"""score""": ANY(snake_case      ), """label""": ANY(snake_case      )},
                      ]		,)
    @require_torch
    def       _SCREAMING_SNAKE_CASE       (  self      ):



           '''simple docstring'''







           lowercase							:     Any       	=      """hf-internal-testing/tiny-random-VideoMAEForVideoClassification"""
           lowercase							:     str       	=      VideoMAEFeatureExtractor(
               size={"""shortest_edge""": 10}		,crop_size={"""height""": 10, """width""": 10}      )
           lowercase							:     List[Any]       	=      pipeline(
               """video-classification"""		,model=snake_case		,feature_extractor=snake_case		,frame_sampling_rate=4      )

           lowercase							:     Dict       	=      hf_hub_download(repo_id="""nateraw/video-demo"""		,filename="""archery.mp4"""		,repo_type="""dataset"""      )
           lowercase							:     Any       	=      video_classifier(snake_case		,top_k=2      )
           self.assertEqual(
               nested_simplify(snake_case		,decimals=4      )		,[{"""score""": 0.5_199, """label""": """LABEL_0"""}, {"""score""": 0.4_801, """label""": """LABEL_1"""}]		,)

           lowercase							:     str       	=      video_classifier(
               [
                   video_file_path,
                   video_file_path,
               ]		,top_k=2		,)
           self.assertEqual(
               nested_simplify(snake_case		,decimals=4      )		,[
                   [{"""score""": 0.5_199, """label""": """LABEL_0"""}, {"""score""": 0.4_801, """label""": """LABEL_1"""}],
                   [{"""score""": 0.5_199, """label""": """LABEL_0"""}, {"""score""": 0.4_801, """label""": """LABEL_1"""}],
               ]		,)
    @require_tf
    def       _SCREAMING_SNAKE_CASE       (  self      ):



           '''simple docstring'''







           pass
