

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       __lowerCAmelCase			(     *__UpperCamelCase			,					**__UpperCamelCase				):

						"""simple docstring"""


						pass


@is_pipeline_test
@require_vision
@require_torch
class SCREAMING_SNAKE_CASE	(		unittest.TestCase				):






			"""simple docstring"""




			__A    	=	MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING


			def       __lowerCAmelCase			(     self			,					__UpperCamelCase			,					__UpperCamelCase			,					__UpperCamelCase				):

				"""simple docstring"""


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

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


			def       __lowerCAmelCase			(     self			,					__UpperCamelCase			,					__UpperCamelCase				):

				"""simple docstring"""


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

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


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

				"""simple docstring"""


				pass


			@require_torch
			def       __lowerCAmelCase			(     self				):

				"""simple docstring"""


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

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

				self.assertEqual(
				    nested_simplify(__UpperCamelCase			,					decimals=4				)			,					[
				        {'score': 0.7235, 'label': 'cat', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				        {'score': 0.7218, 'label': 'remote', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				        {'score': 0.7184, 'label': 'couch', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				        {'score': 0.6748, 'label': 'remote', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				        {'score': 0.6656, 'label': 'cat', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				        {'score': 0.6614, 'label': 'couch', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				        {'score': 0.6456, 'label': 'remote', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
				        {'score': 0.642, 'label': 'remote', 'box': {'xmin': 67, 'ymin': 2_74, 'xmax': 93, 'ymax': 2_97}},
				        {'score': 0.6419, 'label': 'cat', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
				    ]			,					)

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

				self.assertEqual(
				    nested_simplify(__UpperCamelCase			,					decimals=4				)			,					[
				        [
				            {'score': 0.7235, 'label': 'cat', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				            {'score': 0.7218, 'label': 'remote', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				            {'score': 0.7184, 'label': 'couch', 'box': {'xmin': 2_04, 'ymin': 1_67, 'xmax': 2_32, 'ymax': 1_90}},
				            {'score': 0.6748, 'label': 'remote', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				            {'score': 0.6656, 'label': 'cat', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				            {'score': 0.6614, 'label': 'couch', 'box': {'xmin': 5_71, 'ymin': 83, 'xmax': 5_98, 'ymax': 1_03}},
				            {'score': 0.6456, 'label': 'remote', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
				            {'score': 0.642, 'label': 'remote', 'box': {'xmin': 67, 'ymin': 2_74, 'xmax': 93, 'ymax': 2_97}},
				            {'score': 0.6419, 'label': 'cat', 'box': {'xmin': 4_94, 'ymin': 1_05, 'xmax': 5_21, 'ymax': 1_27}},
				        ]
				    ]			,					)


			@require_torch
			@slow
			def       __lowerCAmelCase			(     self				):

				"""simple docstring"""


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

				snake_case_   		=			object_detector(
				    'http://images.cocodataset.org/val2017/000000039769.jpg'			,					candidate_labels=['cat', 'remote', 'couch']			,					)
				self.assertEqual(
				    nested_simplify(__UpperCamelCase			,					decimals=4				)			,					[
				        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
				        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
				        {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
				        {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
				        {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
				    ]			,					)

				snake_case_   		=			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(__UpperCamelCase			,					decimals=4				)			,					[
				        [
				            {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
				            {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
				            {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
				            {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
				            {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
				        ],
				        [
				            {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
				            {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
				            {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
				            {'score': 0.1474, 'label': 'remote', 'box': {'xmin': 3_35, 'ymin': 74, 'xmax': 3_71, 'ymax': 1_87}},
				            {'score': 0.1208, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 6_42, 'ymax': 4_76}},
				        ],
				    ]			,					)


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

				"""simple docstring"""


				pass


			@require_torch
			@slow
			def       __lowerCAmelCase			(     self				):

				"""simple docstring"""


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

				snake_case_   		=			object_detector(
				    'http://images.cocodataset.org/val2017/000000039769.jpg'			,					candidate_labels=['cat', 'remote', 'couch']			,					threshold=__UpperCamelCase			,					)
				self.assertEqual(
				    nested_simplify(__UpperCamelCase			,					decimals=4				)			,					[
				        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
				        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
				        {'score': 0.2537, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 3_15, 'ymax': 4_72}},
				    ]			,					)







			@require_torch
			@slow
			def       __lowerCAmelCase			(     self				):

				"""simple docstring"""


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

				snake_case_   		=			object_detector(
				    'http://images.cocodataset.org/val2017/000000039769.jpg'			,					candidate_labels=['cat', 'remote', 'couch']			,					top_k=__UpperCamelCase			,					)
				self.assertEqual(
				    nested_simplify(__UpperCamelCase			,					decimals=4				)			,					[
				        {'score': 0.2868, 'label': 'cat', 'box': {'xmin': 3_24, 'ymin': 20, 'xmax': 6_40, 'ymax': 3_73}},
				        {'score': 0.277, 'label': 'remote', 'box': {'xmin': 40, 'ymin': 72, 'xmax': 1_77, 'ymax': 1_15}},
				    ]			,					)



from itertools import count





def a(lowercase__ = 50						):





	'''simple docstring'''
	snake_case_   		=			[1] * min_block_length

	for n in count(lowercase__						):
		fill_count_functions.append(1						)

		for block_length in range(lowercase__      ,			n + 1						):
			for block_start in range(n - block_length						):
				fill_count_functions[n] += fill_count_functions[
				    n - block_start - block_length - 1
				]

			fill_count_functions[n] += 1

		if fill_count_functions[n] > 1000000:
			break

	return n


if __name__ == "__main__":
		print(f"""{solution() = }""")
