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




									@staticmethod
									def 				SCREAMING_SNAKE_CASE_		(     *_snake_case		,     **_snake_case				)    ->      Tuple:


													'''simple docstring'''




													pass







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




				def 				SCREAMING_SNAKE_CASE_		(     self		,     _snake_case		,     _snake_case		,     _snake_case				)    ->      List[str]:


								'''simple docstring'''




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




				def 				SCREAMING_SNAKE_CASE_		(     self		,     _snake_case		,     _snake_case				)    ->      Optional[int]:


								'''simple docstring'''




								__a										=    object_detector('''./tests/fixtures/tests_samples/COCO/000000039769.png'''		,     threshold=0.0				)

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

								import datasets

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

								__a										=    [
								    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'''],
								]
								__a										=    object_detector(_snake_case		,     threshold=0.0				)

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




				@require_tf
				@unittest.skip('''Object detection not implemented in TF'''				)
				def 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Dict:


								'''simple docstring'''




								pass




				@require_torch
				def 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Tuple:


								'''simple docstring'''




								__a										=    '''hf-internal-testing/tiny-detr-mobilenetsv3'''

								__a										=    AutoModelForObjectDetection.from_pretrained(_snake_case				)
								__a										=    AutoFeatureExtractor.from_pretrained(_snake_case				)
								__a										=    ObjectDetectionPipeline(model=_snake_case		,     feature_extractor=_snake_case				)

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

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

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

								self.assertEqual(
								    nested_simplify(_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 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Dict:


								'''simple docstring'''




								__a										=    '''facebook/detr-resnet-50'''

								__a										=    AutoModelForObjectDetection.from_pretrained(_snake_case				)
								__a										=    AutoFeatureExtractor.from_pretrained(_snake_case				)
								__a										=    ObjectDetectionPipeline(model=_snake_case		,     feature_extractor=_snake_case				)

								__a										=    object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''				)
								self.assertEqual(
								    nested_simplify(_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}},
								    ]		,     )

								__a										=    object_detector(
								    [
								        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
								        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
								    ]				)
								self.assertEqual(
								    nested_simplify(_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 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Optional[int]:


								'''simple docstring'''




								__a										=    '''facebook/detr-resnet-50'''

								__a										=    pipeline('''object-detection'''		,     model=_snake_case				)

								__a										=    object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''				)
								self.assertEqual(
								    nested_simplify(_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}},
								    ]		,     )

								__a										=    object_detector(
								    [
								        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
								        '''http://images.cocodataset.org/val2017/000000039769.jpg''',
								    ]				)
								self.assertEqual(
								    nested_simplify(_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 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Optional[int]:


								'''simple docstring'''




								__a										=    0.9985
								__a										=    '''facebook/detr-resnet-50'''

								__a										=    pipeline('''object-detection'''		,     model=_snake_case				)

								__a										=    object_detector('''http://images.cocodataset.org/val2017/000000039769.jpg'''		,     threshold=_snake_case				)
								self.assertEqual(
								    nested_simplify(_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 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Optional[int]:


								'''simple docstring'''




								__a										=    '''Narsil/layoutlmv3-finetuned-funsd'''
								__a										=    0.9993

								__a										=    pipeline('''object-detection'''		,     model=_snake_case		,     threshold=_snake_case				)

								__a										=    object_detector(
								    '''https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png'''				)
								self.assertEqual(
								    nested_simplify(_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}},
								    ]		,     )

# flake8: noqa
# Lint as: python3
A     :	Optional[Any]    = [
    'VerificationMode',
    'Version',
    'disable_progress_bar',
    'enable_progress_bar',
    'is_progress_bar_enabled',
    'experimental',
]

from .info_utils import VerificationMode
from .logging import disable_progress_bar, enable_progress_bar, is_progress_bar_enabled
from .version import Version
from .experimental import experimental