





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






										"""simple docstring"""



										@staticmethod
										def       _UpperCamelCase       (    *a_						:     Tuple ,					**a_						:     Any							):

											"""simple docstring"""



											pass






@is_pipeline_test
@require_vision
@require_timm
@require_torch
class  lowercase    (      unittest.TestCase       ):






					"""simple docstring"""



					snake_case_						  =			MODEL_FOR_OBJECT_DETECTION_MAPPING





					def       _UpperCamelCase       (    self						:     int ,					a_						:     Any ,					a_						:     Union[str, Any] ,					a_						:     List[str]							):

						"""simple docstring"""



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





					def       _UpperCamelCase       (    self						:     Optional[Any] ,					a_						:     Tuple ,					a_						:     Any							):

						"""simple docstring"""



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

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

						import datasets

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

						lowerCamelCase__										=			[
						    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"],
						]
						lowerCamelCase__										=			object_detector(a_ ,					threshold=0.0							)

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





					@require_tf
					@unittest.skip("""Object detection not implemented in TF"""							)
					def       _UpperCamelCase       (    self						:     Union[str, Any]							):

						"""simple docstring"""



						pass





					@require_torch
					def       _UpperCamelCase       (    self						:     Optional[int]							):

						"""simple docstring"""



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

						lowerCamelCase__										=			AutoModelForObjectDetection.from_pretrained(a_							)
						lowerCamelCase__										=			AutoFeatureExtractor.from_pretrained(a_							)
						lowerCamelCase__										=			ObjectDetectionPipeline(model=a_ ,					feature_extractor=a_							)

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

						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						        {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						    ] ,					)

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

						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        [
						            {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						            {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						        ],
						        [
						            {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						            {"""score""": 0.3_3_7_6, """label""": """LABEL_0""", """box""": {"""xmin""": 1_59, """ymin""": 1_20, """xmax""": 4_80, """ymax""": 3_59}},
						        ],
						    ] ,					)





					@require_torch
					@slow
					def       _UpperCamelCase       (    self						:     int							):

						"""simple docstring"""



						lowerCamelCase__										=			"facebook/detr-resnet-50"

						lowerCamelCase__										=			AutoModelForObjectDetection.from_pretrained(a_							)
						lowerCamelCase__										=			AutoFeatureExtractor.from_pretrained(a_							)
						lowerCamelCase__										=			ObjectDetectionPipeline(model=a_ ,					feature_extractor=a_							)

						lowerCamelCase__										=			object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg"""							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						        {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						        {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						        {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						        {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						    ] ,					)

						lowerCamelCase__										=			object_detector(
						    [
						        """http://images.cocodataset.org/val2017/000000039769.jpg""",
						        """http://images.cocodataset.org/val2017/000000039769.jpg""",
						    ]							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        [
						            {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						            {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						            {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						            {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						            {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						        ],
						        [
						            {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						            {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						            {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						            {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						            {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						        ],
						    ] ,					)





					@require_torch
					@slow
					def       _UpperCamelCase       (    self						:     Tuple							):

						"""simple docstring"""



						lowerCamelCase__										=			"facebook/detr-resnet-50"

						lowerCamelCase__										=			pipeline("""object-detection""" ,					model=a_							)

						lowerCamelCase__										=			object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg"""							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						        {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						        {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						        {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						        {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						    ] ,					)

						lowerCamelCase__										=			object_detector(
						    [
						        """http://images.cocodataset.org/val2017/000000039769.jpg""",
						        """http://images.cocodataset.org/val2017/000000039769.jpg""",
						    ]							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        [
						            {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						            {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						            {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						            {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						            {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						        ],
						        [
						            {"""score""": 0.9_9_8_2, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 70, """xmax""": 1_75, """ymax""": 1_17}},
						            {"""score""": 0.9_9_6_0, """label""": """remote""", """box""": {"""xmin""": 3_33, """ymin""": 72, """xmax""": 3_68, """ymax""": 1_87}},
						            {"""score""": 0.9_9_5_5, """label""": """couch""", """box""": {"""xmin""": 0, """ymin""": 1, """xmax""": 6_39, """ymax""": 4_73}},
						            {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						            {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						        ],
						    ] ,					)





					@require_torch
					@slow
					def       _UpperCamelCase       (    self						:     Tuple							):

						"""simple docstring"""



						lowerCamelCase__										=			0.9_9_8_5
						lowerCamelCase__										=			"facebook/detr-resnet-50"

						lowerCamelCase__										=			pipeline("""object-detection""" ,					model=a_							)

						lowerCamelCase__										=			object_detector("""http://images.cocodataset.org/val2017/000000039769.jpg""" ,					threshold=a_							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        {"""score""": 0.9_9_8_8, """label""": """cat""", """box""": {"""xmin""": 13, """ymin""": 52, """xmax""": 3_14, """ymax""": 4_70}},
						        {"""score""": 0.9_9_8_7, """label""": """cat""", """box""": {"""xmin""": 3_45, """ymin""": 23, """xmax""": 6_40, """ymax""": 3_68}},
						    ] ,					)





					@require_torch
					@require_pytesseract
					@slow
					def       _UpperCamelCase       (    self						:     Tuple							):

						"""simple docstring"""



						lowerCamelCase__										=			"Narsil/layoutlmv3-finetuned-funsd"
						lowerCamelCase__										=			0.9_9_9_3

						lowerCamelCase__										=			pipeline("""object-detection""" ,					model=a_ ,					threshold=a_							)

						lowerCamelCase__										=			object_detector(
						    """https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png"""							)
						self.assertEqual(
						    nested_simplify(a_ ,					decimals=4							) ,					[
						        {"""score""": 0.9_9_9_3, """label""": """I-ANSWER""", """box""": {"""xmin""": 2_94, """ymin""": 2_54, """xmax""": 3_43, """ymax""": 2_64}},
						        {"""score""": 0.9_9_9_3, """label""": """I-ANSWER""", """box""": {"""xmin""": 2_94, """ymin""": 2_54, """xmax""": 3_43, """ymax""": 2_64}},
						    ] ,					)


from typing import TYPE_CHECKING

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


lowercase    :   List[str]						=			{
    'configuration_gpt_bigcode': ['GPT_BIGCODE_PRETRAINED_CONFIG_ARCHIVE_MAP', 'GPTBigCodeConfig'],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowercase    :   List[str]						=			[
		    'GPT_BIGCODE_PRETRAINED_MODEL_ARCHIVE_LIST',
		    'GPTBigCodeForSequenceClassification',
		    'GPTBigCodeForTokenClassification',
		    'GPTBigCodeForCausalLM',
		    'GPTBigCodeModel',
		    'GPTBigCodePreTrainedModel',
		]

if TYPE_CHECKING:
		from .configuration_gpt_bigcode import GPT_BIGCODE_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTBigCodeConfig

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_gpt_bigcode import (
				    GPT_BIGCODE_PRETRAINED_MODEL_ARCHIVE_LIST,
				    GPTBigCodeForCausalLM,
				    GPTBigCodeForSequenceClassification,
				    GPTBigCodeForTokenClassification,
				    GPTBigCodeModel,
				    GPTBigCodePreTrainedModel,
				)


else:
		import sys

		lowercase    :   Tuple						=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)