



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 				_lowercase(						*A	,	**A					)    ->    Optional[int]:
															pass

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





	def 				_lowercase(						self	,	A	,	A	,	A					)    ->    Union[str, Any]:
								UpperCAmelCase  :	int							  =	pipeline(
								    """zero-shot-object-detection"""	,	model="""hf-internal-testing/tiny-random-owlvit-object-detection"""					)

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





	def 				_lowercase(						self	,	A	,	A					)    ->    int:
								UpperCAmelCase  :	List[Any]							  =	object_detector(examples[0]	,	threshold=0.0					)

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





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





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

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

								self.assertEqual(
								    nested_simplify(_lowercase	,	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  :	int							  =	object_detector(
								    [
								        {
								            """image""": """./tests/fixtures/tests_samples/COCO/000000039769.png""",
								            """candidate_labels""": ["""cat""", """remote""", """couch"""],
								        }
								    ]	,	threshold=0.6_4	,	)

								self.assertEqual(
								    nested_simplify(_lowercase	,	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 				_lowercase(						self					)    ->    Optional[Any]:
								UpperCAmelCase  :	Any							  =	pipeline("""zero-shot-object-detection"""					)

								UpperCAmelCase  :	List[str]							  =	object_detector(
								    """http://images.cocodataset.org/val2017/000000039769.jpg"""	,	candidate_labels=["""cat""", """remote""", """couch"""]	,	)
								self.assertEqual(
								    nested_simplify(_lowercase	,	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[Any]							  =	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(_lowercase	,	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 				_lowercase(						self					)    ->    Union[str, Any]:
								pass





	@require_torch
	@slow
	def 				_lowercase(						self					)    ->    List[str]:
								UpperCAmelCase  :	Optional[int]							  =	0.2
								UpperCAmelCase  :	Dict							  =	pipeline("""zero-shot-object-detection"""					)

								UpperCAmelCase  :	Tuple							  =	object_detector(
								    """http://images.cocodataset.org/val2017/000000039769.jpg"""	,	candidate_labels=["""cat""", """remote""", """couch"""]	,	threshold=_lowercase	,	)
								self.assertEqual(
								    nested_simplify(_lowercase	,	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 				_lowercase(						self					)    ->    Optional[int]:
								UpperCAmelCase  :	Optional[int]							  =	2
								UpperCAmelCase  :	List[Any]							  =	pipeline("""zero-shot-object-detection"""					)

								UpperCAmelCase  :	Any							  =	object_detector(
								    """http://images.cocodataset.org/val2017/000000039769.jpg"""	,	candidate_labels=["""cat""", """remote""", """couch"""]	,	top_k=_lowercase	,	)
								self.assertEqual(
								    nested_simplify(_lowercase	,	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 ...configuration_utils import PretrainedConfig
from ...utils import logging


a     :    str      						=					logging.get_logger(__name__)

a     :    Any      						=					{
    """google/fnet-base""": """https://huggingface.co/google/fnet-base/resolve/main/config.json""",
    """google/fnet-large""": """https://huggingface.co/google/fnet-large/resolve/main/config.json"""
    # See all FNet models at https://huggingface.co/models?filter=fnet
}

class     UpperCamelCase_				(							__magic_name__    ):
	lowercase    =				'fnet'





	def __init__(						self	,	A=32000	,	A=768	,	A=12	,	A=3072	,	A="gelu_new"	,	A=0.1	,	A=512	,	A=4	,	A=0.0_2	,	A=1e-12	,	A=False	,	A=512	,	A=3	,	A=1	,	A=2	,	**A	,	)    ->    int:
								super().__init__(pad_token_id=A	,	bos_token_id=A	,	eos_token_id=A	,	**A					)

								UpperCAmelCase  :	Optional[Any]							  =	vocab_size
								UpperCAmelCase  :	Dict							  =	max_position_embeddings
								UpperCAmelCase  :	List[str]							  =	hidden_size
								UpperCAmelCase  :	int							  =	num_hidden_layers
								UpperCAmelCase  :	Any							  =	intermediate_size
								UpperCAmelCase  :	List[str]							  =	hidden_act
								UpperCAmelCase  :	Tuple							  =	hidden_dropout_prob
								UpperCAmelCase  :	List[str]							  =	initializer_range
								UpperCAmelCase  :	List[Any]							  =	type_vocab_size
								UpperCAmelCase  :	int							  =	layer_norm_eps
								UpperCAmelCase  :	Optional[Any]							  =	use_tpu_fourier_optimizations
								UpperCAmelCase  :	List[Any]							  =	tpu_short_seq_length

