


"""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       SCREAMING_SNAKE_CASE__				:
            """simple docstring"""


            @staticmethod
            def        lowercase__							(						*snake_case__		,     **snake_case__						):






              """simple docstring"""





              pass


@is_pipeline_test
@require_vision
@require_torch
class       SCREAMING_SNAKE_CASE__				(		unittest.TestCase				):
       """simple docstring"""


       a  :				Any   =MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

       def        lowercase__							(						self		,     snake_case__		,     snake_case__		,     snake_case__						):






         """simple docstring"""





         lowerCAmelCase     :     Optional[int]								=							pipeline(
             "zero-shot-object-detection"		,     model="hf-internal-testing/tiny-random-owlvit-object-detection"						)

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

       def        lowercase__							(						self		,     snake_case__		,     snake_case__						):






         """simple docstring"""





         lowerCAmelCase     :     Tuple								=							object_detector(examples[0]		,     threshold=0.0						)

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

       @require_tf
       @unittest.skip("Zero Shot Object Detection not implemented in TF"						)
       def        lowercase__							(						self						):






         """simple docstring"""





         pass

       @require_torch
       def        lowercase__							(						self						):






         """simple docstring"""





         lowerCAmelCase     :     Any								=							pipeline(
             "zero-shot-object-detection"		,     model="hf-internal-testing/tiny-random-owlvit-object-detection"						)

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

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

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

         self.assertEqual(
             nested_simplify(snake_case__		,     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        lowercase__							(						self						):






         """simple docstring"""





         lowerCAmelCase     :     Optional[Any]								=							pipeline("zero-shot-object-detection"						)

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

         lowerCAmelCase     :     Tuple								=							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(snake_case__		,     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        lowercase__							(						self						):






         """simple docstring"""





         pass

       @require_torch
       @slow
       def        lowercase__							(						self						):






         """simple docstring"""





         lowerCAmelCase     :     Optional[Any]								=							0.2
         lowerCAmelCase     :     Dict								=							pipeline("zero-shot-object-detection"						)

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






         """simple docstring"""





         lowerCAmelCase     :     Tuple								=							2
         lowerCAmelCase     :     Any								=							pipeline("zero-shot-object-detection"						)

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









"""simple docstring"""







from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowerCAmelCase__      				=   logging.get_logger(__name__)

lowerCAmelCase__      				=   {}


class       SCREAMING_SNAKE_CASE__				(		lowercase				):
       """simple docstring"""


       a  :				str   ="llama"
       a  :				List[str]   =["past_key_values"]

       def __init__(						self		,     snake_case__=32_000		,     snake_case__=4_096		,     snake_case__=11_008		,     snake_case__=32		,     snake_case__=32		,     snake_case__=None		,     snake_case__="silu"		,     snake_case__=2_048		,     snake_case__=0.02		,     snake_case__=1e-6		,     snake_case__=True		,     snake_case__=0		,     snake_case__=1		,     snake_case__=2		,     snake_case__=1		,     snake_case__=False		,     snake_case__=None		,     **snake_case__		,     ):






         """simple docstring"""





         lowerCAmelCase     :     Optional[Any]								=							vocab_size
         lowerCAmelCase     :     str								=							max_position_embeddings
         lowerCAmelCase     :     str								=							hidden_size
         lowerCAmelCase     :     Optional[int]								=							intermediate_size
         lowerCAmelCase     :     Any								=							num_hidden_layers
         lowerCAmelCase     :     List[str]								=							num_attention_heads

         # for backward compatibility
         if num_key_value_heads is None:
           lowerCAmelCase     :     Tuple								=							num_attention_heads

         lowerCAmelCase     :     Dict								=							num_key_value_heads
         lowerCAmelCase     :     Optional[Any]								=							hidden_act
         lowerCAmelCase     :     Optional[Any]								=							initializer_range
         lowerCAmelCase     :     Any								=							rms_norm_eps
         lowerCAmelCase     :     List[Any]								=							pretraining_tp
         lowerCAmelCase     :     int								=							use_cache
         lowerCAmelCase     :     List[str]								=							rope_scaling
         self._rope_scaling_validation()

         super().__init__(
             pad_token_id=snake_case__		,     bos_token_id=snake_case__		,     eos_token_id=snake_case__		,     tie_word_embeddings=snake_case__		,     **snake_case__		,     )







       def        lowercase__							(						self						):






         """simple docstring"""





         if self.rope_scaling is None:
           return

         if not isinstance(self.rope_scaling		,     snake_case__						) or len(self.rope_scaling						) != 2:
           raise ValueError(
               "`rope_scaling` must be a dictionary with with two fields, `name` and `factor`, "
               f"""got {self.rope_scaling}"""						)
         lowerCAmelCase     :     Optional[Any]								=							self.rope_scaling.get("type"		,     snake_case__						)
         lowerCAmelCase     :     int								=							self.rope_scaling.get("factor"		,     snake_case__						)
         if rope_scaling_type is None or rope_scaling_type not in ["linear", "dynamic"]:
           raise ValueError(
               f"""`rope_scaling`'s name field must be one of ['linear', 'dynamic'], got {rope_scaling_type}"""						)
         if rope_scaling_factor is None or not isinstance(snake_case__		,     snake_case__						) or rope_scaling_factor <= 1.0:
           raise ValueError(f"""`rope_scaling`'s factor field must be an float > 1, got {rope_scaling_factor}"""						)





