
'''simple docstring'''


import unittest

from transformers import (
    MODEL_FOR_OBJECT_DETECTION_MAPPING,
    AutoFeatureExtractor,
    AutoModelForObjectDetection,
    ObjectDetectionPipeline,
    is_vision_available,
    pipeline,
)
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_pytesseract,
    require_tf,
    require_timm,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
						from PIL import Image
else:




						class      __UpperCamelCase       :







							@staticmethod
							def   _a   (    *_lowerCAmelCase ,				**_lowerCAmelCase						)    ->    Tuple:
													'''simple docstring'''






													pass




@is_pipeline_test
@require_vision
@require_timm
@require_torch
class      __UpperCamelCase       (unittest.TestCase			):
	__A			  =					MODEL_FOR_OBJECT_DETECTION_MAPPING







	def   _a   (    self ,				_lowerCAmelCase ,				_lowerCAmelCase ,				_lowerCAmelCase						)    ->    Union[str, Any]:
							'''simple docstring'''






							lowercase        =							ObjectDetectionPipeline(model=_SCREAMING_SNAKE_CASE ,				image_processor=_SCREAMING_SNAKE_CASE						)
							return object_detector, ["./tests/fixtures/tests_samples/COCO/000000039769.png"]







	def   _a   (    self ,				_lowerCAmelCase ,				_lowerCAmelCase						)    ->    Any:
							'''simple docstring'''






							lowercase        =							object_detector("""./tests/fixtures/tests_samples/COCO/000000039769.png""" ,				threshold=0.0						)

							self.assertGreater(len(_SCREAMING_SNAKE_CASE						) ,				0						)
							for detected_object in outputs:
													self.assertEqual(
													    _SCREAMING_SNAKE_CASE ,				{
													        """score""": ANY(_SCREAMING_SNAKE_CASE						),
													        """label""": ANY(_SCREAMING_SNAKE_CASE						),
													        """box""": {"""xmin""": ANY(_SCREAMING_SNAKE_CASE						), """ymin""": ANY(_SCREAMING_SNAKE_CASE						), """xmax""": ANY(_SCREAMING_SNAKE_CASE						), """ymax""": ANY(_SCREAMING_SNAKE_CASE						)},
													    } ,				)

							import datasets

							lowercase        =							datasets.load_dataset("""hf-internal-testing/fixtures_image_utils""" ,				"""image""" ,				split="""test"""						)

							lowercase        =							[
							    Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""						),
							    """http://images.cocodataset.org/val2017/000000039769.jpg""",
							    # RGBA
							    dataset[0]["""file"""],
							    # LA
							    dataset[1]["""file"""],
							    # L
							    dataset[2]["""file"""],
							]
							lowercase        =							object_detector(_SCREAMING_SNAKE_CASE ,				threshold=0.0						)

							self.assertEqual(len(_SCREAMING_SNAKE_CASE						) ,				len(_SCREAMING_SNAKE_CASE						)						)
							for outputs in batch_outputs:
													self.assertGreater(len(_SCREAMING_SNAKE_CASE						) ,				0						)
													for detected_object in outputs:
																			self.assertEqual(
																			    _SCREAMING_SNAKE_CASE ,				{
																			        """score""": ANY(_SCREAMING_SNAKE_CASE						),
																			        """label""": ANY(_SCREAMING_SNAKE_CASE						),
																			        """box""": {"""xmin""": ANY(_SCREAMING_SNAKE_CASE						), """ymin""": ANY(_SCREAMING_SNAKE_CASE						), """xmax""": ANY(_SCREAMING_SNAKE_CASE						), """ymax""": ANY(_SCREAMING_SNAKE_CASE						)},
																			    } ,				)







	@require_tf
	@unittest.skip("""Object detection not implemented in TF"""						)
	def   _a   (    self						)    ->    int:
							'''simple docstring'''






							pass







	@require_torch
	def   _a   (    self						)    ->    List[str]:
							'''simple docstring'''






							lowercase        =							"""hf-internal-testing/tiny-detr-mobilenetsv3"""

							lowercase        =							AutoModelForObjectDetection.from_pretrained(_SCREAMING_SNAKE_CASE						)
							lowercase        =							AutoFeatureExtractor.from_pretrained(_SCREAMING_SNAKE_CASE						)
							lowercase        =							ObjectDetectionPipeline(model=_SCREAMING_SNAKE_CASE ,				feature_extractor=_SCREAMING_SNAKE_CASE						)

							lowercase        =							object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg""" ,				threshold=0.0						)

							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							        {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							    ] ,				)

							lowercase        =							object_detector(
							    [
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							    ] ,				threshold=0.0 ,				)

							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        [
							            {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							            {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							        ],
							        [
							            {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							            {"""score""": 0.3376, """label""": """LABEL_0""", """box""": {"""xmin""": 159, """ymin""": 120, """xmax""": 480, """ymax""": 359}},
							        ],
							    ] ,				)







	@require_torch
	@slow
	def   _a   (    self						)    ->    List[str]:
							'''simple docstring'''






							lowercase        =							"""facebook/detr-resnet-50"""

							lowercase        =							AutoModelForObjectDetection.from_pretrained(_SCREAMING_SNAKE_CASE						)
							lowercase        =							AutoFeatureExtractor.from_pretrained(_SCREAMING_SNAKE_CASE						)
							lowercase        =							ObjectDetectionPipeline(model=_SCREAMING_SNAKE_CASE ,				feature_extractor=_SCREAMING_SNAKE_CASE						)

							lowercase        =							object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg"""						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							        {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							        {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							        {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							        {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							    ] ,				)

							lowercase        =							object_detector(
							    [
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							    ]						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        [
							            {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							            {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							            {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							            {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							            {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							        ],
							        [
							            {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							            {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							            {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							            {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							            {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							        ],
							    ] ,				)







	@require_torch
	@slow
	def   _a   (    self						)    ->    Optional[Any]:
							'''simple docstring'''






							lowercase        =							"""facebook/detr-resnet-50"""

							lowercase        =							pipeline("""object-detection""" ,				model=_SCREAMING_SNAKE_CASE						)

							lowercase        =							object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg"""						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							        {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							        {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							        {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							        {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							    ] ,				)

							lowercase        =							object_detector(
							    [
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							        """http://images.cocodataset.org/val2017/000000039769.jpg""",
							    ]						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        [
							            {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							            {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							            {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							            {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							            {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							        ],
							        [
							            {"""score""": 0.9982, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 175, """ymax""": 117}},
							            {"""score""": 0.9960, """label""": """remote""", """box""": {"""xmin""": 333, """ymin""": 72, """xmax""": 368, """ymax""": 187}},
							            {"""score""": 0.9955, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 639, """ymax""": 473}},
							            {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							            {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							        ],
							    ] ,				)







	@require_torch
	@slow
	def   _a   (    self						)    ->    int:
							'''simple docstring'''






							lowercase        =							0.9985
							lowercase        =							"""facebook/detr-resnet-50"""

							lowercase        =							pipeline("""object-detection""" ,				model=_SCREAMING_SNAKE_CASE						)

							lowercase        =							object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg""" ,				threshold=_SCREAMING_SNAKE_CASE						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        {"""score""": 0.9988, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 314, """ymax""": 470}},
							        {"""score""": 0.9987, """label""": """cat""", """box""": {"""xmin""": 345, """ymin""": 23, """xmax""": 640, """ymax""": 368}},
							    ] ,				)







	@require_torch
	@require_pytesseract
	@slow
	def   _a   (    self						)    ->    Optional[int]:
							'''simple docstring'''






							lowercase        =							"""Narsil/layoutlmv3-finetuned-funsd"""
							lowercase        =							0.9993

							lowercase        =							pipeline("""object-detection""" ,				model=_SCREAMING_SNAKE_CASE ,				threshold=_SCREAMING_SNAKE_CASE						)

							lowercase        =							object_detector(
							    """https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png"""						)
							self.assertEqual(
							    nested_simplify(_SCREAMING_SNAKE_CASE ,				decimals=4						) ,				[
							        {"""score""": 0.9993, """label""": """I-ANSWER""", """box""": {"""xmin""": 294, """ymin""": 254, """xmax""": 343, """ymax""": 264}},
							        {"""score""": 0.9993, """label""": """I-ANSWER""", """box""": {"""xmin""": 294, """ymin""": 254, """xmax""": 343, """ymax""": 264}},
							    ] ,				)







'''simple docstring'''


import requests







def      SCREAMING_SNAKE_CASE				(				lowercase_    :      str ,  lowercase_    :      str						):
						lowercase        =							{"""Content-Type""": """application/json"""}
						lowercase        =							requests.post(lowercase_ ,  json={"""text""": message_body} ,  headers=lowercase_						)
						if response.status_code != 200:
												lowercase        =							(
												    """Request to slack returned an error """
												    F"""{response.status_code}, the response is:\n{response.text}"""
												)
												raise ValueError(lowercase_						)


if __name__ == "__main__":
						# Set the slack url to the one provided by Slack when you create the webhook at
						# https://my.slack.com/services/new/incoming-webhook/
						send_slack_message('''<YOUR MESSAGE BODY>''', '''<SLACK CHANNEL URL>''')


