






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





				@staticmethod
				def 	_SCREAMING_SNAKE_CASE ( *lowerCAmelCase_   :					Dict      ,      **lowerCAmelCase_   :					Dict		)		->     Optional[int]:
							pass







@is_pipeline_test
@require_vision
@require_torch
class      UpperCamelCase_			(unittest.TestCase	):
	__magic_name__       =							MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING





	def 	_SCREAMING_SNAKE_CASE ( self   :					Union[str, Any]      ,      lowerCAmelCase_   :					str      ,      lowerCAmelCase_   :					Dict      ,      lowerCAmelCase_   :					int		)		->     List[str]:
				UpperCAmelCase_	:					Tuple     	=   pipeline(
				    "zero-shot-object-detection"      ,      model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

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





	def 	_SCREAMING_SNAKE_CASE ( self   :					int      ,      lowerCAmelCase_   :					Optional[int]      ,      lowerCAmelCase_   :					Dict		)		->     Optional[Any]:
				UpperCAmelCase_	:					Dict     	=   object_detector(examples[0]      ,      threshold=0.0		)

				UpperCAmelCase_	:					Tuple     	=   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 	_SCREAMING_SNAKE_CASE ( self   :					List[Any]		)		->     Tuple:
				pass





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

				UpperCAmelCase_	:					Dict     	=   object_detector(
				    "./tests/fixtures/tests_samples/COCO/000000039769.png"      ,      candidate_labels=["cat", "remote", "couch"]      ,      threshold=0.6_4      ,      )

				self.assertEqual(
				    nested_simplify(lowerCAmelCase_      ,      decimals=4		)      ,      [
				        {"score": 0.7_2_3_5, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				        {"score": 0.7_2_1_8, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				        {"score": 0.7_1_8_4, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				        {"score": 0.6_7_4_8, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				        {"score": 0.6_6_5_6, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				        {"score": 0.6_6_1_4, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				        {"score": 0.6_4_5_6, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
				        {"score": 0.6_4_2, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
				        {"score": 0.6_4_1_9, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
				    ]      ,      )

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

				self.assertEqual(
				    nested_simplify(lowerCAmelCase_      ,      decimals=4		)      ,      [
				        [
				            {"score": 0.7_2_3_5, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				            {"score": 0.7_2_1_8, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				            {"score": 0.7_1_8_4, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
				            {"score": 0.6_7_4_8, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				            {"score": 0.6_6_5_6, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				            {"score": 0.6_6_1_4, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
				            {"score": 0.6_4_5_6, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
				            {"score": 0.6_4_2, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
				            {"score": 0.6_4_1_9, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
				        ]
				    ]      ,      )





	@require_torch
	@slow
	def 	_SCREAMING_SNAKE_CASE ( self   :					Union[str, Any]		)		->     Tuple:
				UpperCAmelCase_	:					int     	=   pipeline("zero-shot-object-detection"		)

				UpperCAmelCase_	:					Any     	=   object_detector(
				    "http://images.cocodataset.org/val2017/000000039769.jpg"      ,      candidate_labels=["cat", "remote", "couch"]      ,      )
				self.assertEqual(
				    nested_simplify(lowerCAmelCase_      ,      decimals=4		)      ,      [
				        {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
				        {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
				        {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
				        {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
				        {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
				    ]      ,      )

				UpperCAmelCase_	:					List[str]     	=   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.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
				            {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
				            {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
				            {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
				            {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
				        ],
				        [
				            {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
				            {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
				            {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
				            {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
				            {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
				        ],
				    ]      ,      )





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





	@require_torch
	@slow
	def 	_SCREAMING_SNAKE_CASE ( self   :					Tuple		)		->     List[str]:
				UpperCAmelCase_	:					Optional[int]     	=   0.2
				UpperCAmelCase_	:					Any     	=   pipeline("zero-shot-object-detection"		)

				UpperCAmelCase_	:					Optional[int]     	=   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.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
				        {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
				        {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
				    ]      ,      )





	@require_torch
	@slow
	def 	_SCREAMING_SNAKE_CASE ( self   :					int		)		->     Any:
				UpperCAmelCase_	:					Optional[int]     	=   2
				UpperCAmelCase_	:					Tuple     	=   pipeline("zero-shot-object-detection"		)

				UpperCAmelCase_	:					Dict     	=   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.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
				        {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
				    ]      ,      )











"""simple docstring"""
from typing import List, Optional, Union

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


lowerCamelCase_							      = logging.get_logger(__name__)

lowerCamelCase_							      = {
    '''huggingface/informer-tourism-monthly''': (
        '''https://huggingface.co/huggingface/informer-tourism-monthly/resolve/main/config.json'''
    ),
    # See all Informer models at https://huggingface.co/models?filter=informer
}







class      UpperCamelCase_			(__A	):
	__magic_name__       =							'''informer'''
	__magic_name__       =							{
	    '''hidden_size''': '''d_model''',
	    '''num_attention_heads''': '''encoder_attention_heads''',
	    '''num_hidden_layers''': '''encoder_layers''',
	}





	def __init__( self   :					Optional[Any]      ,      lowerCAmelCase_   :					Optional[int] = None      ,      lowerCAmelCase_   :					Optional[int] = None      ,      lowerCAmelCase_   :					str = "student_t"      ,      lowerCAmelCase_   :					str = "nll"      ,      lowerCAmelCase_   :					int = 1      ,      lowerCAmelCase_   :					List[int] = None      ,      lowerCAmelCase_   :					Optional[Union[str, bool]] = "mean"      ,      lowerCAmelCase_   :					int = 0      ,      lowerCAmelCase_   :					int = 0      ,      lowerCAmelCase_   :					int = 0      ,      lowerCAmelCase_   :					int = 0      ,      lowerCAmelCase_   :					Optional[List[int]] = None      ,      lowerCAmelCase_   :					Optional[List[int]] = None      ,      lowerCAmelCase_   :					int = 64      ,      lowerCAmelCase_   :					int = 32      ,      lowerCAmelCase_   :					int = 32      ,      lowerCAmelCase_   :					int = 2      ,      lowerCAmelCase_   :					int = 2      ,      lowerCAmelCase_   :					int = 2      ,      lowerCAmelCase_   :					int = 2      ,      lowerCAmelCase_   :					bool = True      ,      lowerCAmelCase_   :					str = "gelu"      ,      lowerCAmelCase_   :					float = 0.0_5      ,      lowerCAmelCase_   :					float = 0.1      ,      lowerCAmelCase_   :					float = 0.1      ,      lowerCAmelCase_   :					float = 0.1      ,      lowerCAmelCase_   :					float = 0.1      ,      lowerCAmelCase_   :					int = 100      ,      lowerCAmelCase_   :					float = 0.0_2      ,      lowerCAmelCase_   :					List[Any]=True      ,      lowerCAmelCase_   :					str = "prob"      ,      lowerCAmelCase_   :					int = 5      ,      lowerCAmelCase_   :					bool = True      ,      **lowerCAmelCase_   :					Tuple      ,      )		->     Tuple:
				# time series specific configuration
				UpperCAmelCase_	:					str     	=   prediction_length
				UpperCAmelCase_	:					Tuple     	=   context_length or prediction_length
				UpperCAmelCase_	:					Any     	=   distribution_output
				UpperCAmelCase_	:					Union[str, Any]     	=   loss
				UpperCAmelCase_	:					Any     	=   input_size
				UpperCAmelCase_	:					int     	=   num_time_features
				UpperCAmelCase_	:					Union[str, Any]     	=   lags_sequence if lags_sequence is not None else [1, 2, 3, 4, 5, 6, 7]
				UpperCAmelCase_	:					List[Any]     	=   scaling
				UpperCAmelCase_	:					List[str]     	=   num_dynamic_real_features
				UpperCAmelCase_	:					int     	=   num_static_real_features
				UpperCAmelCase_	:					Any     	=   num_static_categorical_features

				# set cardinality
				if cardinality and num_static_categorical_features > 0:
							if len(lowerCAmelCase_		) != num_static_categorical_features:
										raise ValueError(
										    "The cardinality should be a list of the same length as `num_static_categorical_features`"		)
							UpperCAmelCase_	:					Optional[Any]     	=   cardinality
				else:
							UpperCAmelCase_	:					Optional[int]     	=   [0]

				# set embedding_dimension
				if embedding_dimension and num_static_categorical_features > 0:
							if len(lowerCAmelCase_		) != num_static_categorical_features:
										raise ValueError(
										    "The embedding dimension should be a list of the same length as `num_static_categorical_features`"		)
							UpperCAmelCase_	:					Any     	=   embedding_dimension
				else:
							UpperCAmelCase_	:					Optional[Any]     	=   [min(50      ,      (cat + 1) // 2		) for cat in self.cardinality]

				UpperCAmelCase_	:					Dict     	=   num_parallel_samples

				# Transformer architecture configuration
				UpperCAmelCase_	:					Optional[Any]     	=   input_size * len(self.lags_sequence		) + self._number_of_features
				UpperCAmelCase_	:					List[Any]     	=   d_model
				UpperCAmelCase_	:					List[str]     	=   encoder_attention_heads
				UpperCAmelCase_	:					List[str]     	=   decoder_attention_heads
				UpperCAmelCase_	:					Union[str, Any]     	=   encoder_ffn_dim
				UpperCAmelCase_	:					Union[str, Any]     	=   decoder_ffn_dim
				UpperCAmelCase_	:					Tuple     	=   encoder_layers
				UpperCAmelCase_	:					List[Any]     	=   decoder_layers

				UpperCAmelCase_	:					List[str]     	=   dropout
				UpperCAmelCase_	:					Optional[Any]     	=   attention_dropout
				UpperCAmelCase_	:					Any     	=   activation_dropout
				UpperCAmelCase_	:					Union[str, Any]     	=   encoder_layerdrop
				UpperCAmelCase_	:					Optional[int]     	=   decoder_layerdrop

				UpperCAmelCase_	:					Union[str, Any]     	=   activation_function
				UpperCAmelCase_	:					int     	=   init_std

				UpperCAmelCase_	:					Optional[Any]     	=   use_cache

				# Informer
				UpperCAmelCase_	:					int     	=   attention_type
				UpperCAmelCase_	:					List[str]     	=   sampling_factor
				UpperCAmelCase_	:					Union[str, Any]     	=   distil

				super().__init__(is_encoder_decoder=lowerCAmelCase_      ,      **lowerCAmelCase_		)





	@property
	def 	_SCREAMING_SNAKE_CASE ( self   :					List[Any]		)		->     int:
				return (
				    sum(self.embedding_dimension		)
				    + self.num_dynamic_real_features
				    + self.num_time_features
				    + self.num_static_real_features
				    + self.input_size * 2  # the log1p(abs(loc)) and log(scale) features
				)



