





import unittest

from transformers import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING, is_vision_available, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
  from PIL import Image
else:





  class  lowerCAmelCase							:







    @staticmethod
    def   UpperCAmelCase					(      *_lowercase  :Tuple   ,							**_lowercase  :Union[str, Any] ):






       '''simple docstring'''





       pass





@is_pipeline_test
@require_vision
@require_torch
class  lowerCAmelCase							(       unittest.TestCase ):
  __lowerCamelCase		=      MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING







  def   UpperCAmelCase					(      self  :List[Any]   ,							_lowercase  :Union[str, Any]   ,							_lowercase  :Union[str, Any]   ,							_lowercase  :List[str] ):






     '''simple docstring'''





     lowercase__			       =  pipeline(
         "zero-shot-object-detection"   ,							model="hf-internal-testing/tiny-random-owlvit-object-detection" )

     lowercase__			       =  [
         {
             "image": "./tests/fixtures/tests_samples/COCO/000000039769.png",
             "candidate_labels": ["cat", "remote", "couch"],
         }
     ]
     return object_detector, examples







  def   UpperCAmelCase					(      self  :List[Any]   ,							_lowercase  :Optional[Any]   ,							_lowercase  :int ):






     '''simple docstring'''





     lowercase__			       =  object_detector(examples[0]   ,							threshold=0.0 )

     lowercase__			       =  len(_lowercase )
     self.assertGreater(_lowercase   ,							0 )
     self.assertEqual(
         _lowercase   ,							[
             {
                 "score": ANY(_lowercase ),
                 "label": ANY(_lowercase ),
                 "box": {"xmin": ANY(_lowercase ), "ymin": ANY(_lowercase ), "xmax": ANY(_lowercase ), "ymax": ANY(_lowercase )},
             }
             for i in range(_lowercase )
         ]   ,							)







  @require_tf
  @unittest.skip("Zero Shot Object Detection not implemented in TF" )
  def   UpperCAmelCase					(      self  :int ):






     '''simple docstring'''





     pass







  @require_torch
  def   UpperCAmelCase					(      self  :Optional[Any] ):






     '''simple docstring'''





     lowercase__			       =  pipeline(
         "zero-shot-object-detection"   ,							model="hf-internal-testing/tiny-random-owlvit-object-detection" )

     lowercase__			       =  object_detector(
         "./tests/fixtures/tests_samples/COCO/000000039769.png"   ,							candidate_labels=["cat", "remote", "couch"]   ,							threshold=0.64   ,							)

     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             {"score": 0.7235, "label": "cat", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
             {"score": 0.7218, "label": "remote", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
             {"score": 0.7184, "label": "couch", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
             {"score": 0.6748, "label": "remote", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
             {"score": 0.6656, "label": "cat", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
             {"score": 0.6614, "label": "couch", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
             {"score": 0.6456, "label": "remote", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
             {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 2_74, "xmax": 93, "ymax": 2_97}},
             {"score": 0.6419, "label": "cat", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
         ]   ,							)

     lowercase__			       =  object_detector(
         [
             {
                 "image": "./tests/fixtures/tests_samples/COCO/000000039769.png",
                 "candidate_labels": ["cat", "remote", "couch"],
             }
         ]   ,							threshold=0.64   ,							)

     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             [
                 {"score": 0.7235, "label": "cat", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
                 {"score": 0.7218, "label": "remote", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
                 {"score": 0.7184, "label": "couch", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
                 {"score": 0.6748, "label": "remote", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
                 {"score": 0.6656, "label": "cat", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
                 {"score": 0.6614, "label": "couch", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
                 {"score": 0.6456, "label": "remote", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
                 {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 2_74, "xmax": 93, "ymax": 2_97}},
                 {"score": 0.6419, "label": "cat", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
             ]
         ]   ,							)







  @require_torch
  @slow
  def   UpperCAmelCase					(      self  :Optional[Any] ):






     '''simple docstring'''





     lowercase__			       =  pipeline("zero-shot-object-detection" )

     lowercase__			       =  object_detector(
         "http://images.cocodataset.org/val2017/000000039769.jpg"   ,							candidate_labels=["cat", "remote", "couch"]   ,							)
     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
             {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
             {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
             {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
             {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
         ]   ,							)

     lowercase__			       =  object_detector(
         [
             {
                 "image": "http://images.cocodataset.org/val2017/000000039769.jpg",
                 "candidate_labels": ["cat", "remote", "couch"],
             },
             {
                 "image": "http://images.cocodataset.org/val2017/000000039769.jpg",
                 "candidate_labels": ["cat", "remote", "couch"],
             },
         ]   ,							)
     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             [
                 {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
                 {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
                 {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
                 {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
                 {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
             ],
             [
                 {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
                 {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
                 {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
                 {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
                 {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
             ],
         ]   ,							)







  @require_tf
  @unittest.skip("Zero Shot Object Detection not implemented in TF" )
  def   UpperCAmelCase					(      self  :List[str] ):






     '''simple docstring'''





     pass







  @require_torch
  @slow
  def   UpperCAmelCase					(      self  :Optional[int] ):






     '''simple docstring'''





     lowercase__			       =  0.2
     lowercase__			       =  pipeline("zero-shot-object-detection" )

     lowercase__			       =  object_detector(
         "http://images.cocodataset.org/val2017/000000039769.jpg"   ,							candidate_labels=["cat", "remote", "couch"]   ,							threshold=_lowercase   ,							)
     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
             {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
             {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
         ]   ,							)







  @require_torch
  @slow
  def   UpperCAmelCase					(      self  :Dict ):






     '''simple docstring'''





     lowercase__			       =  2
     lowercase__			       =  pipeline("zero-shot-object-detection" )

     lowercase__			       =  object_detector(
         "http://images.cocodataset.org/val2017/000000039769.jpg"   ,							candidate_labels=["cat", "remote", "couch"]   ,							top_k=_lowercase   ,							)
     self.assertEqual(
         nested_simplify(_lowercase   ,							decimals=4 )   ,							[
             {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
             {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
         ]   ,							)













from collections import namedtuple

import requests
from lxml import html  # type: ignore

_snake_case           =			namedtuple("""covid_data""", """cases deaths recovered""")


def _A       (   __magic_name__ = "https://www.worldometers.info/coronavirus/"	):
   lowercase__			       =  "//div[@class = \"maincounter-number\"]/span/text()"
   return covid_data(*html.fromstring(requests.get(__magic_name__	).content	).xpath(__magic_name__	)	)


_snake_case           =			"""Total COVID-19 cases in the world: {}
Total deaths due to COVID-19 in the world: {}
Total COVID-19 patients recovered in the world: {}"""







print(fmt.format(*covid_stats()))






