


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




         '''simple docstring'''


         @staticmethod
         def  _lowerCamelCase (						*__lowerCamelCase ,						**__lowerCamelCase)			->				Union[str, Any]:
                pass







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




     '''simple docstring'''
     __SCREAMING_SNAKE_CASE  			= MODEL_FOR_OBJECT_DETECTION_MAPPING


     def  _lowerCamelCase (						self ,						__lowerCamelCase ,						__lowerCamelCase ,						__lowerCamelCase)			->				Optional[Any]:
            _A      :       Dict				    = ObjectDetectionPipeline(model=__lowerCamelCase ,						image_processor=__lowerCamelCase)
            return object_detector, ["./tests/fixtures/tests_samples/COCO/000000039769.png"]


     def  _lowerCamelCase (						self ,						__lowerCamelCase ,						__lowerCamelCase)			->				Tuple:
            _A      :       Optional[int]				    = object_detector("./tests/fixtures/tests_samples/COCO/000000039769.png" ,						threshold=0.0)

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

            import datasets

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

            _A      :       str				    = [
                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      :       str				    = object_detector(__lowerCamelCase ,						threshold=0.0)

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


     @require_tf
     @unittest.skip("Object detection not implemented in TF")
     def  _lowerCamelCase (						self)			->				List[Any]:
            pass


     @require_torch
     def  _lowerCamelCase (						self)			->				List[Any]:
            _A      :       Optional[Any]				    = "hf-internal-testing/tiny-detr-mobilenetsv3"

            _A      :       Optional[int]				    = AutoModelForObjectDetection.from_pretrained(__lowerCamelCase)
            _A      :       int				    = AutoFeatureExtractor.from_pretrained(__lowerCamelCase)
            _A      :       Optional[Any]				    = ObjectDetectionPipeline(model=__lowerCamelCase ,						feature_extractor=__lowerCamelCase)

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

            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                    {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                ] ,						)

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

            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    [
                        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                    ],
                    [
                        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_5_9, "ymin": 1_2_0, "xmax": 4_8_0, "ymax": 3_5_9}},
                    ],
                ] ,						)


     @require_torch
     @slow
     def  _lowerCamelCase (						self)			->				Optional[Any]:
            _A      :       List[Any]				    = "facebook/detr-resnet-50"

            _A      :       Union[str, Any]				    = AutoModelForObjectDetection.from_pretrained(__lowerCamelCase)
            _A      :       Optional[int]				    = AutoFeatureExtractor.from_pretrained(__lowerCamelCase)
            _A      :       Union[str, Any]				    = ObjectDetectionPipeline(model=__lowerCamelCase ,						feature_extractor=__lowerCamelCase)

            _A      :       Optional[Any]				    = object_detector("http://images.cocodataset.org/val2017/000000039769.jpg")
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                    {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                    {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                    {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                    {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                ] ,						)

            _A      :       Any				    = object_detector(
                [
                    "http://images.cocodataset.org/val2017/000000039769.jpg",
                    "http://images.cocodataset.org/val2017/000000039769.jpg",
                ])
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    [
                        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                    ],
                    [
                        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                    ],
                ] ,						)


     @require_torch
     @slow
     def  _lowerCamelCase (						self)			->				Optional[Any]:
            _A      :       int				    = "facebook/detr-resnet-50"

            _A      :       str				    = pipeline("object-detection" ,						model=__lowerCamelCase)

            _A      :       str				    = object_detector("http://images.cocodataset.org/val2017/000000039769.jpg")
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                    {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                    {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                    {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                    {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                ] ,						)

            _A      :       List[Any]				    = object_detector(
                [
                    "http://images.cocodataset.org/val2017/000000039769.jpg",
                    "http://images.cocodataset.org/val2017/000000039769.jpg",
                ])
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    [
                        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                    ],
                    [
                        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_0, "xmax": 1_7_5, "ymax": 1_1_7}},
                        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_3_3, "ymin": 7_2, "xmax": 3_6_8, "ymax": 1_8_7}},
                        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_3_9, "ymax": 4_7_3}},
                        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                    ],
                ] ,						)


     @require_torch
     @slow
     def  _lowerCamelCase (						self)			->				int:
            _A      :       Any				    = 0.9_9_8_5
            _A      :       List[str]				    = "facebook/detr-resnet-50"

            _A      :       Dict				    = pipeline("object-detection" ,						model=__lowerCamelCase)

            _A      :       List[Any]				    = object_detector("http://images.cocodataset.org/val2017/000000039769.jpg" ,						threshold=__lowerCamelCase)
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 1_3, "ymin": 5_2, "xmax": 3_1_4, "ymax": 4_7_0}},
                    {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_4_5, "ymin": 2_3, "xmax": 6_4_0, "ymax": 3_6_8}},
                ] ,						)


     @require_torch
     @require_pytesseract
     @slow
     def  _lowerCamelCase (						self)			->				Tuple:
            _A      :       str				    = "Narsil/layoutlmv3-finetuned-funsd"
            _A      :       Optional[Any]				    = 0.9_9_9_3

            _A      :       Any				    = pipeline("object-detection" ,						model=__lowerCamelCase ,						threshold=__lowerCamelCase)

            _A      :       List[str]				    = object_detector(
                "https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png")
            self.assertEqual(
                nested_simplify(__lowerCamelCase ,						decimals=4) ,						[
                    {"score": 0.9_9_9_3, "label": "I-ANSWER", "box": {"xmin": 2_9_4, "ymin": 2_5_4, "xmax": 3_4_3, "ymax": 2_6_4}},
                    {"score": 0.9_9_9_3, "label": "I-ANSWER", "box": {"xmin": 2_9_4, "ymin": 2_5_4, "xmax": 3_4_3, "ymax": 2_6_4}},
                ] ,						)







'''simple docstring'''







import unittest

from diffusers.pipelines.pipeline_utils import is_safetensors_compatible
class 				__SCREAMING_SNAKE_CASE  (unittest.TestCase      ):






				"""simple docstring"""







				def   UpperCamelCase__   (  self     :					str					):
								_a								= [
								    "safety_checker/pytorch_model.bin",
								    "safety_checker/model.safetensors",
								    "vae/diffusion_pytorch_model.bin",
								    "vae/diffusion_pytorch_model.safetensors",
								    "text_encoder/pytorch_model.bin",
								    "text_encoder/model.safetensors",
								    "unet/diffusion_pytorch_model.bin",
								    "unet/diffusion_pytorch_model.safetensors",
								]
								self.assertTrue(is_safetensors_compatible(__a					)					)




				def   UpperCamelCase__   (  self     :					List[str]					):
								_a								= [
								    "unet/diffusion_pytorch_model.bin",
								    "unet/diffusion_pytorch_model.safetensors",
								]
								self.assertTrue(is_safetensors_compatible(__a					)					)




				def   UpperCamelCase__   (  self     :					List[str]					):
								_a								= [
								    "safety_checker/pytorch_model.bin",
								    "safety_checker/model.safetensors",
								    "vae/diffusion_pytorch_model.bin",
								    "vae/diffusion_pytorch_model.safetensors",
								    "text_encoder/pytorch_model.bin",
								    "text_encoder/model.safetensors",
								    "unet/diffusion_pytorch_model.bin",
								    # Removed: 'unet/diffusion_pytorch_model.safetensors',
								]
								self.assertFalse(is_safetensors_compatible(__a					)					)




				def   UpperCamelCase__   (  self     :					List[str]					):
								_a								= [
								    "text_encoder/pytorch_model.bin",
								    "text_encoder/model.safetensors",
								]
								self.assertTrue(is_safetensors_compatible(__a					)					)




				def   UpperCamelCase__   (  self     :					Optional[Any]					):
								_a								= [
								    "safety_checker/pytorch_model.bin",
								    "safety_checker/model.safetensors",
								    "vae/diffusion_pytorch_model.bin",
								    "vae/diffusion_pytorch_model.safetensors",
								    "text_encoder/pytorch_model.bin",
								    # Removed: 'text_encoder/model.safetensors',
								    "unet/diffusion_pytorch_model.bin",
								    "unet/diffusion_pytorch_model.safetensors",
								]
								self.assertFalse(is_safetensors_compatible(__a					)					)




				def   UpperCamelCase__   (  self     :					str					):
								_a								= [
								    "safety_checker/pytorch_model.fp16.bin",
								    "safety_checker/model.fp16.safetensors",
								    "vae/diffusion_pytorch_model.fp16.bin",
								    "vae/diffusion_pytorch_model.fp16.safetensors",
								    "text_encoder/pytorch_model.fp16.bin",
								    "text_encoder/model.fp16.safetensors",
								    "unet/diffusion_pytorch_model.fp16.bin",
								    "unet/diffusion_pytorch_model.fp16.safetensors",
								]
								_a								= "fp16"
								self.assertTrue(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					Any					):
								_a								= [
								    "unet/diffusion_pytorch_model.fp16.bin",
								    "unet/diffusion_pytorch_model.fp16.safetensors",
								]
								_a								= "fp16"
								self.assertTrue(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					Any					):
								# pass variant but use the non-variant filenames
								_a								= [
								    "unet/diffusion_pytorch_model.bin",
								    "unet/diffusion_pytorch_model.safetensors",
								]
								_a								= "fp16"
								self.assertTrue(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					Optional[Any]					):
								_a								= [
								    "safety_checker/pytorch_model.fp16.bin",
								    "safety_checker/model.fp16.safetensors",
								    "vae/diffusion_pytorch_model.fp16.bin",
								    "vae/diffusion_pytorch_model.fp16.safetensors",
								    "text_encoder/pytorch_model.fp16.bin",
								    "text_encoder/model.fp16.safetensors",
								    "unet/diffusion_pytorch_model.fp16.bin",
								    # Removed: 'unet/diffusion_pytorch_model.fp16.safetensors',
								]
								_a								= "fp16"
								self.assertFalse(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					Dict					):
								_a								= [
								    "text_encoder/pytorch_model.fp16.bin",
								    "text_encoder/model.fp16.safetensors",
								]
								_a								= "fp16"
								self.assertTrue(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					List[str]					):
								# pass variant but use the non-variant filenames
								_a								= [
								    "text_encoder/pytorch_model.bin",
								    "text_encoder/model.safetensors",
								]
								_a								= "fp16"
								self.assertTrue(is_safetensors_compatible(__a					,				variant=__a					)					)




				def   UpperCamelCase__   (  self     :					Optional[int]					):
								_a								= [
								    "safety_checker/pytorch_model.fp16.bin",
								    "safety_checker/model.fp16.safetensors",
								    "vae/diffusion_pytorch_model.fp16.bin",
								    "vae/diffusion_pytorch_model.fp16.safetensors",
								    "text_encoder/pytorch_model.fp16.bin",
								    # 'text_encoder/model.fp16.safetensors',
								    "unet/diffusion_pytorch_model.fp16.bin",
								    "unet/diffusion_pytorch_model.fp16.safetensors",
								]
								_a								= "fp16"
								self.assertFalse(is_safetensors_compatible(__a					,				variant=__a					)					)
