



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  __snake_case      :







								'''simple docstring'''






								@staticmethod
								def _a      (							*a_  ,  **a_		):
												pass

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







							'''simple docstring'''






							UpperCamelCase__				:      str         =					MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING


							def _a      (							self  ,  a_  ,  a_  ,  a_		):
											a__				      =		pipeline(
											    """zero-shot-object-detection"""  ,  model="""hf-internal-testing/tiny-random-owlvit-object-detection"""		)

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


							def _a      (							self  ,  a_  ,  a_		):
											a__				      =		object_detector(examples[0]  ,  threshold=0.0		)

											a__				      =		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 _a      (							self		):
											pass


							@require_torch
							def _a      (							self		):
											a__				      =		pipeline(
											    """zero-shot-object-detection"""  ,  model="""hf-internal-testing/tiny-random-owlvit-object-detection"""		)

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

											self.assertEqual(
											    nested_simplify(a_  ,  decimals=4		)  ,  [
											        {"""score""": 0.7_235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.7_218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.7_184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.6_748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6_656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6_614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6_456, """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.6_419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											    ]  ,  )

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

											self.assertEqual(
											    nested_simplify(a_  ,  decimals=4		)  ,  [
											        [
											            {"""score""": 0.7_235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.7_218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.7_184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.6_748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6_656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6_614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6_456, """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.6_419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											        ]
											    ]  ,  )


							@require_torch
							@slow
							def _a      (							self		):
											a__				      =		pipeline("""zero-shot-object-detection"""		)

											a__				      =		object_detector(
											    """http://images.cocodataset.org/val2017/000000039769.jpg"""  ,  candidate_labels=["""cat""", """remote""", """couch"""]  ,  )
											self.assertEqual(
											    nested_simplify(a_  ,  decimals=4		)  ,  [
											        {"""score""": 0.2_868, """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.2_537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											        {"""score""": 0.1_474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											        {"""score""": 0.1_208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											    ]  ,  )

											a__				      =		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_868, """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.2_537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											            {"""score""": 0.1_474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											            {"""score""": 0.1_208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											        ],
											        [
											            {"""score""": 0.2_868, """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.2_537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											            {"""score""": 0.1_474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											            {"""score""": 0.1_208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											        ],
											    ]  ,  )


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


							@require_torch
							@slow
							def _a      (							self		):
											a__				      =		0.2
											a__				      =		pipeline("""zero-shot-object-detection"""		)

											a__				      =		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_868, """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.2_537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											    ]  ,  )







							@require_torch
							@slow
							def _a      (							self		):
											a__				      =		2
											a__				      =		pipeline("""zero-shot-object-detection"""		)

											a__				      =		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_868, """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}},
											    ]  ,  )






from typing import TYPE_CHECKING

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


UpperCAmelCase							 =					{
    """configuration_falcon""": ["""FALCON_PRETRAINED_CONFIG_ARCHIVE_MAP""", """FalconConfig"""],
}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	UpperCAmelCase							 =					[
	    """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							 =					_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)

