2021 the huggingface team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache orglicenseslicense2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license rgba la l this seems flaky self assertequaloutputsdepth 1a39394e282e9f3b0741a90b9f108977 this is highly irregular to have no small tests 2021 the huggingface team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache org licenses license 2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license rgba la l this seems flaky self assertequal outputs depth 1a39394e282e9f3b0741a90b9f108977 this is highly irregular to have no small tests
import unittest

from huggingface_hub.utils import insecure_hashlib

from transformers import MODEL_FOR_DEPTH_ESTIMATION_MAPPING, is_torch_available, is_vision_available
from transformers.pipelines import DepthEstimationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_timm,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_torch_available():
    import torch

if is_vision_available():
    from PIL import Image
else:

    class Image:
        @staticmethod
        def open(*args, **kwargs):
            pass


def hashimage(image: Image) -> str:
    m = insecure_hashlib.md5(image.tobytes())
    return m.hexdigest()


@is_pipeline_test
@require_vision
@require_timm
@require_torch
class DepthEstimationPipelineTests(unittest.TestCase):
    model_mapping = MODEL_FOR_DEPTH_ESTIMATION_MAPPING

    def get_test_pipeline(self, model, tokenizer, processor):
        depth_estimator = DepthEstimationPipeline(model=model, image_processor=processor)
        return depth_estimator, [
            "./tests/fixtures/tests_samples/COCO/000000039769.png",
            "./tests/fixtures/tests_samples/COCO/000000039769.png",
        ]

    def run_pipeline_test(self, depth_estimator, examples):
        outputs = depth_estimator("./tests/fixtures/tests_samples/COCO/000000039769.png")
        self.assertEqual({"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)}, outputs)
        import datasets

        dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", "image", split="test")
        outputs = depth_estimator(
            [
                Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"),
                "http://images.cocodataset.org/val2017/000000039769.jpg",
                
                dataset[0]["file"],
                
                dataset[1]["file"],
                
                dataset[2]["file"],
            ]
        )
        self.assertEqual(
            [
                {"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)},
                {"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)},
                {"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)},
                {"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)},
                {"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)},
            ],
            outputs,
        )

    @require_tf
    @unittest.skip("Depth estimation is not implemented in TF")
    def test_small_model_tf(self):
        pass

    @slow
    @require_torch
    def test_large_model_pt(self):
        model_id = "Intel/dpt-large"
        depth_estimator = pipeline("depth-estimation", model=model_id)
        outputs = depth_estimator("http://images.cocodataset.org/val2017/000000039769.jpg")
        outputs["depth"] = hashimage(outputs["depth"])

        
        
        self.assertEqual(nested_simplify(outputs["predicted_depth"].max().item()), 29.304)
        self.assertEqual(nested_simplify(outputs["predicted_depth"].min().item()), 2.662)

    @require_torch
    def test_small_model_pt(self):
        
        self.skipTest("There is not hf-internal-testing tiny model for either GLPN nor DPT")