

"""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 		_A       :





           @staticmethod
           def 					_lowerCamelCase  (  *SCREAMING_SNAKE_CASE__    ,						**SCREAMING_SNAKE_CASE__		)   ->					Optional[Any]:
              pass


@is_pipeline_test
@require_vision
@require_torch
class 		_A       (			unittest.TestCase					):
      __a								=	MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING





      def 					_lowerCamelCase  (  self    ,						SCREAMING_SNAKE_CASE__    ,						SCREAMING_SNAKE_CASE__    ,						SCREAMING_SNAKE_CASE__		)   ->					Dict:
         lowerCamelCase__						=			pipeline(
             "zero-shot-object-detection"    ,						model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

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





      def 					_lowerCamelCase  (  self    ,						SCREAMING_SNAKE_CASE__    ,						SCREAMING_SNAKE_CASE__		)   ->					Tuple:
         lowerCamelCase__						=			object_detector(examples[0]    ,						threshold=0.0		)

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





      @require_tf
      @unittest.skip("Zero Shot Object Detection not implemented in TF"		)
      def 					_lowerCamelCase  (  self		)   ->					Tuple:
         pass





      @require_torch
      def 					_lowerCamelCase  (  self		)   ->					List[Any]:
         lowerCamelCase__						=			pipeline(
             "zero-shot-object-detection"    ,						model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

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

         self.assertEqual(
             nested_simplify(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 {"score": 0.72_35, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.72_18, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.71_84, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.67_48, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.66_56, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.66_14, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.64_56, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
                 {"score": 0.6_42, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
                 {"score": 0.64_19, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
             ]    ,						)

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

         self.assertEqual(
             nested_simplify(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 [
                     {"score": 0.72_35, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                     {"score": 0.72_18, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                     {"score": 0.71_84, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                     {"score": 0.67_48, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                     {"score": 0.66_56, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                     {"score": 0.66_14, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                     {"score": 0.64_56, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
                     {"score": 0.6_42, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
                     {"score": 0.64_19, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
                 ]
             ]    ,						)





      @require_torch
      @slow
      def 					_lowerCamelCase  (  self		)   ->					str:
         lowerCamelCase__						=			pipeline("zero-shot-object-detection"		)

         lowerCamelCase__						=			object_detector(
             "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						)
         self.assertEqual(
             nested_simplify(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                 {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                 {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                 {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                 {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
             ]    ,						)

         lowerCamelCase__						=			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(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 [
                     {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                     {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                     {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                     {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                     {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
                 ],
                 [
                     {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                     {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                     {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                     {"score": 0.14_74, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                     {"score": 0.12_08, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
                 ],
             ]    ,						)





      @require_tf
      @unittest.skip("Zero Shot Object Detection not implemented in TF"		)
      def 					_lowerCamelCase  (  self		)   ->					Optional[Any]:
         pass





      @require_torch
      @slow
      def 					_lowerCamelCase  (  self		)   ->					Dict:
         lowerCamelCase__						=			0.2
         lowerCamelCase__						=			pipeline("zero-shot-object-detection"		)

         lowerCamelCase__						=			object_detector(
             "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						threshold=SCREAMING_SNAKE_CASE__    ,						)
         self.assertEqual(
             nested_simplify(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                 {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                 {"score": 0.25_37, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
             ]    ,						)





      @require_torch
      @slow
      def 					_lowerCamelCase  (  self		)   ->					Optional[Any]:
         lowerCamelCase__						=			2
         lowerCamelCase__						=			pipeline("zero-shot-object-detection"		)

         lowerCamelCase__						=			object_detector(
             "http://images.cocodataset.org/val2017/000000039769.jpg"    ,						candidate_labels=["cat", "remote", "couch"]    ,						top_k=SCREAMING_SNAKE_CASE__    ,						)
         self.assertEqual(
             nested_simplify(SCREAMING_SNAKE_CASE__    ,						decimals=4		)    ,						[
                 {"score": 0.28_68, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                 {"score": 0.2_77, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
             ]    ,						)







"""simple docstring"""




from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE_     :			List[Any]	  =			{
    '''configuration_rag''': ['''RagConfig'''],
    '''retrieval_rag''': ['''RagRetriever'''],
    '''tokenization_rag''': ['''RagTokenizer'''],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     SCREAMING_SNAKE_CASE_     :			Union[str, Any]	  =			[
         '''RagModel''',
         '''RagPreTrainedModel''',
         '''RagSequenceForGeneration''',
         '''RagTokenForGeneration''',
     ]

try:
     if not is_tf_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     SCREAMING_SNAKE_CASE_     :			str	  =			[
         '''TFRagModel''',
         '''TFRagPreTrainedModel''',
         '''TFRagSequenceForGeneration''',
         '''TFRagTokenForGeneration''',
     ]


if TYPE_CHECKING:
     from .configuration_rag import RagConfig
     from .retrieval_rag import RagRetriever
     from .tokenization_rag import RagTokenizer

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_rag import RagModel, RagPreTrainedModel, RagSequenceForGeneration, RagTokenForGeneration

     try:
          if not is_tf_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_rag import (
              TFRagModel,
              TFRagPreTrainedModel,
              TFRagSequenceForGeneration,
              TFRagTokenForGeneration,
          )

else:
     import sys

     SCREAMING_SNAKE_CASE_     :			List[str]	  =			_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




