



"""simple docstring"""




import hashlib
import unittest
from typing import Dict

import numpy as np

from transformers import (
    MODEL_FOR_MASK_GENERATION_MAPPING,
    TF_MODEL_FOR_MASK_GENERATION_MAPPING,
    is_vision_available,
    pipeline,
)
from transformers.pipelines import MaskGenerationPipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)


if is_vision_available():
 from PIL import Image
else:






 class      UpperCAmelCase_  :



       @staticmethod
       def 						snake_case_ (					*A					:     List[str]					,     **A					:     int						):
            pass

def 						__snake_case						(				SCREAMING_SNAKE_CASE__     :						Image    )  ->       str:





     '''simple docstring'''

     _UpperCAmelCase      :     List[str]        =   hashlib.mda(image.tobytes()    )
     return m.hexdigest()[:10]

def 						__snake_case						(				SCREAMING_SNAKE_CASE__     :						Image    )  ->       Dict:





     '''simple docstring'''

     _UpperCAmelCase      :     Optional[Any]        =   np.array(SCREAMING_SNAKE_CASE__    )
     _UpperCAmelCase      :     Any        =   npimg.shape
     return {"hash": hashimage(SCREAMING_SNAKE_CASE__    ), "shape": shape}






@is_pipeline_test
@require_vision
@require_torch
class      UpperCAmelCase_  (    unittest.TestCase						):
      __SCREAMING_SNAKE_CASE						:       List[Any]								=			dict(
          (list(MODEL_FOR_MASK_GENERATION_MAPPING.items()						) if MODEL_FOR_MASK_GENERATION_MAPPING else [])						)
      __SCREAMING_SNAKE_CASE						:       Optional[Any]								=			dict(
          (list(TF_MODEL_FOR_MASK_GENERATION_MAPPING.items()						) if TF_MODEL_FOR_MASK_GENERATION_MAPPING else [])						)



      def 						snake_case_ (					self					:     List[Any]					,     A					:     Tuple					,     A					:     Dict					,     A					:     List[Any]						):
           _UpperCAmelCase      :     List[str]        =   MaskGenerationPipeline(model=A					,     image_processor=A						)
           return image_segmenter, [
               "./tests/fixtures/tests_samples/COCO/000000039769.png",
               "./tests/fixtures/tests_samples/COCO/000000039769.png",
           ]



      def 						snake_case_ (					self					:     Optional[int]					,     A					:     int					,     A					:     int						):
           pass



      @require_tf
      @unittest.skip("Image segmentation not implemented in TF"						)
      def 						snake_case_ (					self					:     Optional[int]						):
           pass



      @slow
      @require_torch
      def 						snake_case_ (					self					:     int						):
           _UpperCAmelCase      :     List[Any]        =   pipeline("mask-generation"					,     model="facebook/sam-vit-huge"						)

           _UpperCAmelCase      :     List[Any]        =   image_segmenter("http://images.cocodataset.org/val2017/000000039769.jpg"					,     points_per_batch=2_5_6						)

           # Shortening by hashing
           _UpperCAmelCase      :     Dict        =   []
           for i, o in enumerate(outputs["masks"]						):
                new_outupt += [{"mask": mask_to_test_readable(A						), "scores": outputs["scores"][i]}]

           # fmt: off
           self.assertEqual(
               nested_simplify(A					,     decimals=4						)					,     [
                   {"mask": {"hash": "115ad19f5f", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_444},
                   {"mask": {"hash": "6affa964c6", "shape": (4_8_0, 6_4_0)}, "scores": 1.021},
                   {"mask": {"hash": "dfe28a0388", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_167},
                   {"mask": {"hash": "c0a5f4a318", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_132},
                   {"mask": {"hash": "fe8065c197", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_053},
                   {"mask": {"hash": "e2d0b7a0b7", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_967},
                   {"mask": {"hash": "453c7844bd", "shape": (4_8_0, 6_4_0)}, "scores": 0.993},
                   {"mask": {"hash": "3d44f2926d", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_909},
                   {"mask": {"hash": "64033ddc3f", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_879},
                   {"mask": {"hash": "801064ff79", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_834},
                   {"mask": {"hash": "6172f276ef", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_716},
                   {"mask": {"hash": "b49e60e084", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_612},
                   {"mask": {"hash": "a811e775fd", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_599},
                   {"mask": {"hash": "a6a8ebcf4b", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_552},
                   {"mask": {"hash": "9d8257e080", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_532},
                   {"mask": {"hash": "32de6454a8", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_516},
                   {"mask": {"hash": "af3d4af2c8", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_499},
                   {"mask": {"hash": "3c6db475fb", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_483},
                   {"mask": {"hash": "c290813fb9", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_464},
                   {"mask": {"hash": "b6f0b8f606", "shape": (4_8_0, 6_4_0)}, "scores": 0.943},
                   {"mask": {"hash": "92ce16bfdf", "shape": (4_8_0, 6_4_0)}, "scores": 0.943},
                   {"mask": {"hash": "c749b25868", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_408},
                   {"mask": {"hash": "efb6cab859", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_335},
                   {"mask": {"hash": "1ff2eafb30", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_326},
                   {"mask": {"hash": "788b798e24", "shape": (4_8_0, 6_4_0)}, "scores": 0.9_262},
                   {"mask": {"hash": "abea804f0e", "shape": (4_8_0, 6_4_0)}, "scores": 0.8_999},
                   {"mask": {"hash": "7b9e8ddb73", "shape": (4_8_0, 6_4_0)}, "scores": 0.8_986},
                   {"mask": {"hash": "cd24047c8a", "shape": (4_8_0, 6_4_0)}, "scores": 0.8_984},
                   {"mask": {"hash": "6943e6bcbd", "shape": (4_8_0, 6_4_0)}, "scores": 0.8_873},
                   {"mask": {"hash": "b5f47c9191", "shape": (4_8_0, 6_4_0)}, "scores": 0.8_871}
               ]					,     )
           # fmt: on



      @require_torch
      @slow
      def 						snake_case_ (					self					:     List[Any]						):
           _UpperCAmelCase      :     Any        =   "facebook/sam-vit-huge"
           _UpperCAmelCase      :     Any        =   pipeline("mask-generation"					,     model=A						)

           _UpperCAmelCase      :     Tuple        =   image_segmenter(
               "http://images.cocodataset.org/val2017/000000039769.jpg"					,     pred_iou_thresh=1					,     points_per_batch=2_5_6						)

           # Shortening by hashing
           _UpperCAmelCase      :     Tuple        =   []
           for i, o in enumerate(outputs["masks"]						):
                new_outupt += [{"mask": mask_to_test_readable(A						), "scores": outputs["scores"][i]}]

           self.assertEqual(
               nested_simplify(A					,     decimals=4						)					,     [
                   {"mask": {"hash": "115ad19f5f", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_444},
                   {"mask": {"hash": "6affa964c6", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_210},
                   {"mask": {"hash": "dfe28a0388", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_167},
                   {"mask": {"hash": "c0a5f4a318", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_132},
                   {"mask": {"hash": "fe8065c197", "shape": (4_8_0, 6_4_0)}, "scores": 1.0_053},
               ]					,     )





"""simple docstring"""




def 						__snake_case						(				SCREAMING_SNAKE_CASE__     :						Dict=28_123    )  ->       List[str]:





     '''simple docstring'''

     _UpperCAmelCase      :     List[Any]        =   [1] * (limit + 1)

     for i in range(2						,  int(limit**0.5    ) + 1    ):
          sum_divs[i * i] += i
          for k in range(i + 1						,  limit // i + 1    ):
               sum_divs[k * i] += k + i

     _UpperCAmelCase      :     Any        =   set()
     _UpperCAmelCase      :     List[str]        =   0

     for n in range(1						,  limit + 1    ):
          if sum_divs[n] > n:
               abundants.add(SCREAMING_SNAKE_CASE__    )

          if not any((n - a in abundants) for a in abundants    ):
               res += n

     return res


if __name__ == "__main__":
 print(solution())
