'''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 				a__:


									'''simple docstring'''






									@staticmethod
									def 							a_       (   *__lowerCAmelCase       ,    **__lowerCAmelCase):




											"""simple docstring"""


											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 							a_       (   self       ,    __lowerCAmelCase       ,    __lowerCAmelCase       ,    __lowerCAmelCase):




					"""simple docstring"""


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

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



			def 							a_       (   self       ,    __lowerCAmelCase       ,    __lowerCAmelCase):




					"""simple docstring"""


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

					lowerCAmelCase   					=  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 							a_       (   self):




					"""simple docstring"""


					pass



			@require_torch
			def 							a_       (   self):




					"""simple docstring"""


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

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

					self.assertEqual(
					    nested_simplify(__lowerCAmelCase       ,    decimals=4)       ,    [
					        {"""score""": 0.7235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					        {"""score""": 0.7218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					        {"""score""": 0.7184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					        {"""score""": 0.6748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					        {"""score""": 0.6656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					        {"""score""": 0.6614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					        {"""score""": 0.6456, """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.6419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
					    ]       ,    )

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

					self.assertEqual(
					    nested_simplify(__lowerCAmelCase       ,    decimals=4)       ,    [
					        [
					            {"""score""": 0.7235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					            {"""score""": 0.7218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					            {"""score""": 0.7184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
					            {"""score""": 0.6748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					            {"""score""": 0.6656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					            {"""score""": 0.6614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
					            {"""score""": 0.6456, """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.6419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
					        ]
					    ]       ,    )



			@require_torch
			@slow
			def 							a_       (   self):




					"""simple docstring"""


					lowerCAmelCase   					=  pipeline("""zero-shot-object-detection""")

					lowerCAmelCase   					=  object_detector(
					    """http://images.cocodataset.org/val2017/000000039769.jpg"""       ,    candidate_labels=["""cat""", """remote""", """couch"""]       ,    )
					self.assertEqual(
					    nested_simplify(__lowerCAmelCase       ,    decimals=4)       ,    [
					        {"""score""": 0.2868, """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.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
					        {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
					        {"""score""": 0.1208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
					    ]       ,    )

					lowerCAmelCase   					=  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.2868, """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.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
					            {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
					            {"""score""": 0.1208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
					        ],
					        [
					            {"""score""": 0.2868, """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.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
					            {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
					            {"""score""": 0.1208, """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):




					"""simple docstring"""


					pass



			@require_torch
			@slow
			def 							a_       (   self):




					"""simple docstring"""


					lowerCAmelCase   					=  0.2
					lowerCAmelCase   					=  pipeline("""zero-shot-object-detection""")

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







			@require_torch
			@slow
			def 							a_       (   self):




					"""simple docstring"""


					lowerCAmelCase   					=  2
					lowerCAmelCase   					=  pipeline("""zero-shot-object-detection""")

					lowerCAmelCase   					=  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.2868, """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}},
					    ]       ,    )








"""simple docstring"""






from collections.abc import Callable
def      lowerCamelCase       (     _UpperCamelCase		:      Callable[[float], float]       ,			_UpperCamelCase		:      float       ,			_UpperCamelCase		:      float							)		->       float:

							'''simple docstring'''



							__UpperCAmelCase   :						float      							=					a
							__UpperCAmelCase   :						float      							=					b
							if function(_UpperCamelCase							) == 0:  # one of the a or b is a root for the function
														return a
							elif function(_UpperCamelCase							) == 0:
														return b
							elif (
							    function(_UpperCamelCase							) * function(_UpperCamelCase							) > 0
							):  # if none of these are root and they are both positive or negative,
														# then this algorithm can't find the root
														raise ValueError("""could not find root in given interval."""							)
							else:
														__UpperCAmelCase   :						float      							=					start + (end - start) / 2.0
														while abs(start - mid							) > 1_0**-7:  # until precisely equals to 10^-7
																					if function(_UpperCamelCase							) == 0:
																												return mid
																					elif function(_UpperCamelCase							) * function(_UpperCamelCase							) < 0:
																												__UpperCAmelCase   :						Union[str, Any]      							=					mid
																					else:
																												__UpperCAmelCase   :						List[Any]      							=					mid
																					__UpperCAmelCase   :						Optional[Any]      							=					start + (end - start) / 2.0
														return mid
def      lowerCamelCase       (     _UpperCamelCase		:      float							)		->       float:

							'''simple docstring'''



							return x**3 - 2 * x - 5


if __name__ == "__main__":
							print(bisection(f, 1, 1000))

							import doctest

							doctest.testmod()
