

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  :




    @staticmethod
    def 						A__  (       *lowerCAmelCase							,     **lowerCAmelCase      )						->				int:
          '''simple docstring'''






          pass





@is_pipeline_test
@require_vision
@require_torch
class 				__lowerCAmelCase  (      unittest.TestCase							):
  _a		    =						MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING




  def 						A__  (       self							,     lowerCAmelCase							,     lowerCAmelCase							,     lowerCAmelCase      )						->				int:
        '''simple docstring'''






        _lowercase			 =pipeline(
            'zero-shot-object-detection'							,     model='hf-internal-testing/tiny-random-owlvit-object-detection'      )

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




  def 						A__  (       self							,     lowerCAmelCase							,     lowerCAmelCase      )						->				List[str]:
        '''simple docstring'''






        _lowercase			 =object_detector(examples[0]							,     threshold=0.0      )

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




  @require_tf
  @unittest.skip('Zero Shot Object Detection not implemented in TF'      )
  def 						A__  (       self      )						->				List[Any]:
        '''simple docstring'''






        pass




  @require_torch
  def 						A__  (       self      )						->				int:
        '''simple docstring'''






        _lowercase			 =pipeline(
            'zero-shot-object-detection'							,     model='hf-internal-testing/tiny-random-owlvit-object-detection'      )

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

        self.assertEqual(
            nested_simplify(lowerCAmelCase							,     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}},
            ]							,     )

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

        self.assertEqual(
            nested_simplify(lowerCAmelCase							,     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 						A__  (       self      )						->				Any:
        '''simple docstring'''






        _lowercase			 =pipeline('zero-shot-object-detection'      )

        _lowercase			 =object_detector(
            'http://images.cocodataset.org/val2017/000000039769.jpg'							,     candidate_labels=['cat', 'remote', 'couch']							,     )
        self.assertEqual(
            nested_simplify(lowerCAmelCase							,     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}},
            ]							,     )

        _lowercase			 =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(lowerCAmelCase							,     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 						A__  (       self      )						->				List[Any]:
        '''simple docstring'''






        pass




  @require_torch
  @slow
  def 						A__  (       self      )						->				List[Any]:
        '''simple docstring'''






        _lowercase			 =0.2
        _lowercase			 =pipeline('zero-shot-object-detection'      )

        _lowercase			 =object_detector(
            'http://images.cocodataset.org/val2017/000000039769.jpg'							,     candidate_labels=['cat', 'remote', 'couch']							,     threshold=lowerCAmelCase							,     )
        self.assertEqual(
            nested_simplify(lowerCAmelCase							,     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 						A__  (       self      )						->				Any:
        '''simple docstring'''






        _lowercase			 =2
        _lowercase			 =pipeline('zero-shot-object-detection'      )

        _lowercase			 =object_detector(
            'http://images.cocodataset.org/val2017/000000039769.jpg'							,     candidate_labels=['cat', 'remote', 'couch']							,     top_k=lowerCAmelCase							,     )
        self.assertEqual(
            nested_simplify(lowerCAmelCase							,     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 requests

lowercase_             =     'YOUR API KEY'
def   a   (    A__			:     str   ,     A__			:     str = giphy_api_key  )					->   list:





      """simple docstring"""



      _lowercase			 ='+'.join(query.split()  )
      _lowercase			 =F'''https://api.giphy.com/v1/gifs/search?q={formatted_query}&api_key={api_key}'''
      _lowercase			 =requests.get(A__  ).json()['data']
      return [gif["url"] for gif in gifs]


if __name__ == "__main__":
  print('\n'.join(get_gifs('space ship')))


