





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:


								"""simple docstring"""


								@staticmethod
								def 					UpperCAmelCase_		(			*_A     ,					**_A     ):
													pass





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


				"""simple docstring"""


				UpperCamelCase    :  List[str]					    =	MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING



				def 					UpperCAmelCase_		(			self     ,					_A     ,					_A     ,					_A     ):
									__A	:						str       =				pipeline(
									    'zero-shot-object-detection'     ,					model='hf-internal-testing/tiny-random-owlvit-object-detection'     )

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



				def 					UpperCAmelCase_		(			self     ,					_A     ,					_A     ):
									__A	:						str       =				object_detector(examples[0]     ,					threshold=0.0     )

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



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



				@require_torch
				def 					UpperCAmelCase_		(			self     ):
									__A	:						int       =				pipeline(
									    'zero-shot-object-detection'     ,					model='hf-internal-testing/tiny-random-owlvit-object-detection'     )

									__A	:						str       =				object_detector(
									    './tests/fixtures/tests_samples/COCO/000000039769.png'     ,					candidate_labels=['cat', 'remote', 'couch']     ,					threshold=0.6_4     ,					)

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

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

									self.assertEqual(
									    nested_simplify(_A     ,					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 					UpperCAmelCase_		(			self     ):
									__A	:						Union[str, Any]       =				pipeline('zero-shot-object-detection'     )

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

									__A	:						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(_A     ,					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 					UpperCAmelCase_		(			self     ):
									pass



				@require_torch
				@slow
				def 					UpperCAmelCase_		(			self     ):
									__A	:						Any       =				0.2
									__A	:						Dict       =				pipeline('zero-shot-object-detection'     )

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

									__A	:						Dict       =				object_detector(
									    'http://images.cocodataset.org/val2017/000000039769.jpg'     ,					candidate_labels=['cat', 'remote', 'couch']     ,					top_k=_A     ,					)
									self.assertEqual(
									    nested_simplify(_A     ,					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}},
									    ]     ,					)











from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
)


UpperCAmelCase						:   Any			  =     {
    '''configuration_falcon''': ['''FALCON_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''FalconConfig'''],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				UpperCAmelCase						:   Any			  =     [
				    '''FALCON_PRETRAINED_MODEL_ARCHIVE_LIST''',
				    '''FalconForCausalLM''',
				    '''FalconModel''',
				    '''FalconPreTrainedModel''',
				    '''FalconForSequenceClassification''',
				    '''FalconForTokenClassification''',
				    '''FalconForQuestionAnswering''',
				]


if TYPE_CHECKING:
				from .configuration_falcon import FALCON_PRETRAINED_CONFIG_ARCHIVE_MAP, FalconConfig

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_falcon import (
								    FALCON_PRETRAINED_MODEL_ARCHIVE_LIST,
								    FalconForCausalLM,
								    FalconForQuestionAnswering,
								    FalconForSequenceClassification,
								    FalconForTokenClassification,
								    FalconModel,
								    FalconPreTrainedModel,
								)


else:
				import sys

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




