


'''simple docstring'''






import unittest

import numpy as np

from transformers.testing_utils import require_pytesseract, require_torch
from transformers.utils import is_pytesseract_available, is_torch_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
  import torch

if is_pytesseract_available():
  from PIL import Image

  from transformers import LayoutLMvaImageProcessor






class    __snake_case       (   unittest.TestCase):







    """simple docstring"""



    def __init__(   self    :  Dict    ,						lowerCamelCase    :  Tuple    ,						lowerCamelCase    :  Optional[int]=7    ,						lowerCamelCase    :  Dict=3    ,						lowerCamelCase    :  List[Any]=18    ,						lowerCamelCase    :  Any=30    ,						lowerCamelCase    :  Union[str, Any]=4_00    ,						lowerCamelCase    :  Any=True    ,						lowerCamelCase    :  Any=None    ,						lowerCamelCase    :  Tuple=True    ,						)   ->  Optional[int]:
      lowerCAmelCase_			:      int			=   size if size is not None else {"""height""": 18, """width""": 18}
      lowerCAmelCase_			:      str			=   parent
      lowerCAmelCase_			:      Dict			=   batch_size
      lowerCAmelCase_			:      List[str]			=   num_channels
      lowerCAmelCase_			:      Any			=   image_size
      lowerCAmelCase_			:      List[Any]			=   min_resolution
      lowerCAmelCase_			:      Union[str, Any]			=   max_resolution
      lowerCAmelCase_			:      Tuple			=   do_resize
      lowerCAmelCase_			:      Optional[int]			=   size
      lowerCAmelCase_			:      Optional[Any]			=   apply_ocr





    def __lowercase   (   self    :  int		)   ->  str:
      return {"do_resize": self.do_resize, "size": self.size, "apply_ocr": self.apply_ocr}







@require_torch
@require_pytesseract
class    __snake_case       (   _SCREAMING_SNAKE_CASE	,unittest.TestCase):







    """simple docstring"""



    lowercase    =					LayoutLMvaImageProcessor if is_pytesseract_available() else None

    def __lowercase   (   self    :  Union[str, Any]		)   ->  List[str]:
      lowerCAmelCase_			:      Optional[Any]			=   LayoutLMvaImageProcessingTester(self		)

    @property
    def __lowercase   (   self    :  Union[str, Any]		)   ->  str:
      return self.image_processor_tester.prepare_image_processor_dict()

    def __lowercase   (   self    :  List[str]		)   ->  List[str]:
      lowerCAmelCase_			:      Tuple			=   self.image_processing_class(**self.image_processor_dict		)
      self.assertTrue(hasattr(lowerCamelCase    ,						"""do_resize"""		)		)
      self.assertTrue(hasattr(lowerCamelCase    ,						"""size"""		)		)
      self.assertTrue(hasattr(lowerCamelCase    ,						"""apply_ocr"""		)		)

    def __lowercase   (   self    :  Tuple		)   ->  Dict:
      lowerCAmelCase_			:      List[Any]			=   self.image_processing_class.from_dict(self.image_processor_dict		)
      self.assertEqual(image_processor.size    ,						{"""height""": 18, """width""": 18}		)

      lowerCAmelCase_			:      Any			=   self.image_processing_class.from_dict(self.image_processor_dict    ,						size=42		)
      self.assertEqual(image_processor.size    ,						{"""height""": 42, """width""": 42}		)

    def __lowercase   (   self    :  Any		)   ->  Tuple:
      pass

    def __lowercase   (   self    :  Tuple		)   ->  Any:
      # Initialize image_processing
      lowerCAmelCase_			:      Tuple			=   self.image_processing_class(**self.image_processor_dict		)
      # create random PIL images
      lowerCAmelCase_			:      Tuple			=   prepare_image_inputs(self.image_processor_tester    ,						equal_resolution=lowerCamelCase		)
      for image in image_inputs:
        self.assertIsInstance(lowerCamelCase    ,						Image.Image		)

      # Test not batched input
      lowerCAmelCase_			:      Any			=   image_processing(image_inputs[0]    ,						return_tensors="""pt"""		)
      self.assertEqual(
          encoding.pixel_values.shape    ,						(
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)

      self.assertIsInstance(encoding.words    ,						lowerCamelCase		)
      self.assertIsInstance(encoding.boxes    ,						lowerCamelCase		)

      # Test batched
      lowerCAmelCase_			:      Any			=   image_processing(lowerCamelCase    ,						return_tensors="""pt"""		).pixel_values
      self.assertEqual(
          encoded_images.shape    ,						(
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)

    def __lowercase   (   self    :  int		)   ->  List[str]:
      # Initialize image_processing
      lowerCAmelCase_			:      Union[str, Any]			=   self.image_processing_class(**self.image_processor_dict		)
      # create random numpy tensors
      lowerCAmelCase_			:      List[str]			=   prepare_image_inputs(self.image_processor_tester    ,						equal_resolution=lowerCamelCase    ,						numpify=lowerCamelCase		)
      for image in image_inputs:
        self.assertIsInstance(lowerCamelCase    ,						np.ndarray		)

      # Test not batched input
      lowerCAmelCase_			:      List[Any]			=   image_processing(image_inputs[0]    ,						return_tensors="""pt"""		).pixel_values
      self.assertEqual(
          encoded_images.shape    ,						(
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)

      # Test batched
      lowerCAmelCase_			:      Dict			=   image_processing(lowerCamelCase    ,						return_tensors="""pt"""		).pixel_values
      self.assertEqual(
          encoded_images.shape    ,						(
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)

    def __lowercase   (   self    :  Optional[int]		)   ->  Optional[int]:
      # Initialize image_processing
      lowerCAmelCase_			:      Any			=   self.image_processing_class(**self.image_processor_dict		)
      # create random PyTorch tensors
      lowerCAmelCase_			:      str			=   prepare_image_inputs(self.image_processor_tester    ,						equal_resolution=lowerCamelCase    ,						torchify=lowerCamelCase		)
      for image in image_inputs:
        self.assertIsInstance(lowerCamelCase    ,						torch.Tensor		)

      # Test not batched input
      lowerCAmelCase_			:      List[str]			=   image_processing(image_inputs[0]    ,						return_tensors="""pt"""		).pixel_values
      self.assertEqual(
          encoded_images.shape    ,						(
              1,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)

      # Test batched
      lowerCAmelCase_			:      Optional[Any]			=   image_processing(lowerCamelCase    ,						return_tensors="""pt"""		).pixel_values
      self.assertEqual(
          encoded_images.shape    ,						(
              self.image_processor_tester.batch_size,
              self.image_processor_tester.num_channels,
              self.image_processor_tester.size["""height"""],
              self.image_processor_tester.size["""width"""],
          )    ,						)





    def __lowercase   (   self    :  Any		)   ->  Union[str, Any]:
      # with apply_OCR = True
      lowerCAmelCase_			:      Any			=   LayoutLMvaImageProcessor()

      from datasets import load_dataset

      lowerCAmelCase_			:      int			=   load_dataset("""hf-internal-testing/fixtures_docvqa"""    ,						split="""test"""		)

      lowerCAmelCase_			:      int			=   Image.open(ds[0]["""file"""]		).convert("""RGB"""		)

      lowerCAmelCase_			:      Dict			=   image_processing(lowerCamelCase    ,						return_tensors="""pt"""		)

      self.assertEqual(encoding.pixel_values.shape    ,						(1, 3, 2_24, 2_24)		)
      self.assertEqual(len(encoding.words		)    ,						len(encoding.boxes		)		)

      # fmt: off
      # the words and boxes were obtained with Tesseract 4.1.1
      lowerCAmelCase_			:      str			=   [["""11:14""", """to""", """11:39""", """a.m""", """11:39""", """to""", """11:44""", """a.m.""", """11:44""", """a.m.""", """to""", """12:25""", """p.m.""", """12:25""", """to""", """12:58""", """p.m.""", """12:58""", """to""", """4:00""", """p.m.""", """2:00""", """to""", """5:00""", """p.m.""", """Coffee""", """Break""", """Coffee""", """will""", """be""", """served""", """for""", """men""", """and""", """women""", """in""", """the""", """lobby""", """adjacent""", """to""", """exhibit""", """area.""", """Please""", """move""", """into""", """exhibit""", """area.""", """(Exhibits""", """Open)""", """TRRF""", """GENERAL""", """SESSION""", """(PART""", """|)""", """Presiding:""", """Lee""", """A.""", """Waller""", """TRRF""", """Vice""", """President""", """“Introductory""", """Remarks”""", """Lee""", """A.""", """Waller,""", """TRRF""", """Vice""", """Presi-""", """dent""", """Individual""", """Interviews""", """with""", """TRRF""", """Public""", """Board""", """Members""", """and""", """Sci-""", """entific""", """Advisory""", """Council""", """Mem-""", """bers""", """Conducted""", """by""", """TRRF""", """Treasurer""", """Philip""", """G.""", """Kuehn""", """to""", """get""", """answers""", """which""", """the""", """public""", """refrigerated""", """warehousing""", """industry""", """is""", """looking""", """for.""", """Plus""", """questions""", """from""", """the""", """floor.""", """Dr.""", """Emil""", """M.""", """Mrak,""", """University""", """of""", """Cal-""", """ifornia,""", """Chairman,""", """TRRF""", """Board;""", """Sam""", """R.""", """Cecil,""", """University""", """of""", """Georgia""", """College""", """of""", """Agriculture;""", """Dr.""", """Stanley""", """Charm,""", """Tufts""", """University""", """School""", """of""", """Medicine;""", """Dr.""", """Robert""", """H.""", """Cotton,""", """ITT""", """Continental""", """Baking""", """Company;""", """Dr.""", """Owen""", """Fennema,""", """University""", """of""", """Wis-""", """consin;""", """Dr.""", """Robert""", """E.""", """Hardenburg,""", """USDA.""", """Questions""", """and""", """Answers""", """Exhibits""", """Open""", """Capt.""", """Jack""", """Stoney""", """Room""", """TRRF""", """Scientific""", """Advisory""", """Council""", """Meeting""", """Ballroom""", """Foyer"""]]  # noqa: E231
      lowerCAmelCase_			:      Optional[int]			=   [[[1_41, 57, 2_14, 69], [2_28, 58, 2_52, 69], [1_41, 75, 2_16, 88], [2_30, 79, 2_80, 88], [1_42, 2_60, 2_18, 2_73], [2_30, 2_61, 2_55, 2_73], [1_43, 2_79, 2_18, 2_90], [2_31, 2_82, 2_90, 2_91], [1_43, 3_42, 2_18, 3_54], [2_31, 3_45, 2_89, 3_55], [2_02, 3_62, 2_27, 3_73], [1_43, 3_79, 2_20, 3_92], [2_31, 3_82, 2_91, 3_94], [1_44, 7_14, 2_20, 7_26], [2_31, 7_15, 2_56, 7_26], [1_44, 7_32, 2_20, 7_45], [2_32, 7_36, 2_91, 7_47], [1_44, 7_69, 2_18, 7_82], [2_31, 7_70, 2_56, 7_82], [1_41, 7_88, 2_02, 8_01], [2_15, 7_91, 2_74, 8_04], [1_43, 8_26, 2_04, 8_38], [2_15, 8_26, 2_40, 8_38], [1_42, 8_44, 2_02, 8_57], [2_15, 8_47, 2_74, 8_59], [3_34, 57, 4_27, 69], [4_40, 57, 5_22, 69], [3_69, 75, 4_61, 88], [4_69, 75, 5_16, 88], [5_28, 76, 5_62, 88], [5_70, 76, 6_67, 88], [6_75, 75, 7_11, 87], [7_21, 79, 7_78, 88], [7_89, 75, 8_40, 88], [3_69, 97, 4_70, 1_07], [4_84, 94, 5_07, 1_06], [5_18, 94, 5_62, 1_07], [5_76, 94, 6_55, 1_10], [6_68, 94, 7_92, 1_09], [8_04, 95, 8_29, 1_07], [3_69, 1_13, 4_65, 1_25], [4_77, 1_16, 5_47, 1_25], [5_62, 1_13, 6_58, 1_25], [6_71, 1_16, 7_48, 1_25], [7_61, 1_13, 8_11, 1_25], [3_69, 1_31, 4_65, 1_43], [4_77, 1_33, 5_48, 1_43], [5_63, 1_30, 6_98, 1_45], [7_10, 1_30, 8_02, 1_46], [3_36, 1_71, 4_12, 1_83], [4_23, 1_71, 5_72, 1_83], [5_82, 1_70, 7_16, 1_84], [7_28, 1_71, 8_17, 1_87], [8_29, 1_71, 8_44, 1_86], [3_38, 1_97, 4_82, 2_12], [5_07, 1_96, 5_57, 2_09], [5_69, 1_96, 5_95, 2_08], [6_10, 1_96, 7_02, 2_09], [5_05, 2_14, 5_83, 2_26], [5_95, 2_14, 6_56, 2_27], [6_70, 2_15, 8_07, 2_27], [3_35, 2_59, 5_43, 2_74], [5_56, 2_59, 7_08, 2_72], [3_72, 2_79, 4_22, 2_91], [4_35, 2_79, 4_60, 2_91], [4_74, 2_79, 5_74, 2_92], [5_87, 2_78, 6_64, 2_91], [6_76, 2_78, 7_38, 2_91], [7_51, 2_79, 8_34, 2_91], [3_72, 2_98, 4_34, 3_10], [3_35, 3_41, 4_83, 3_54], [4_97, 3_41, 6_55, 3_54], [6_67, 3_41, 7_28, 3_54], [7_40, 3_41, 8_25, 3_54], [3_35, 3_60, 4_30, 3_72], [4_42, 3_60, 5_34, 3_72], [5_45, 3_59, 6_87, 3_72], [6_97, 3_60, 7_54, 3_72], [7_65, 3_60, 8_23, 3_73], [3_34, 3_78, 4_28, 3_91], [4_40, 3_78, 5_77, 3_94], [5_90, 3_78, 7_05, 3_91], [7_20, 3_78, 8_01, 3_91], [3_34, 3_97, 4_00, 4_09], [3_70, 4_16, 5_29, 4_29], [5_44, 4_16, 5_76, 4_32], [5_87, 4_16, 6_65, 4_28], [6_77, 4_16, 8_14, 4_29], [3_72, 4_35, 4_52, 4_50], [4_65, 4_34, 4_95, 4_47], [5_11, 4_34, 6_00, 4_47], [6_11, 4_36, 6_37, 4_47], [6_49, 4_36, 6_94, 4_51], [7_05, 4_38, 8_24, 4_47], [3_69, 4_53, 4_52, 4_66], [4_64, 4_54, 5_09, 4_66], [5_22, 4_53, 6_11, 4_69], [6_25, 4_53, 7_92, 4_69], [3_70, 4_72, 5_56, 4_88], [5_70, 4_72, 6_84, 4_87], [6_97, 4_72, 7_18, 4_85], [7_32, 4_72, 8_35, 4_88], [3_69, 4_90, 4_11, 5_03], [4_25, 4_90, 4_84, 5_03], [4_96, 4_90, 6_35, 5_06], [6_45, 4_90, 7_07, 5_03], [7_18, 4_91, 7_61, 5_03], [7_71, 4_90, 8_40, 5_03], [3_36, 5_10, 3_74, 5_21], [3_88, 5_10, 4_47, 5_22], [4_60, 5_10, 4_89, 5_21], [5_03, 5_10, 5_80, 5_22], [5_92, 5_09, 7_36, 5_25], [7_45, 5_09, 7_70, 5_22], [7_81, 5_09, 8_40, 5_22], [3_38, 5_28, 4_34, 5_41], [4_48, 5_28, 5_96, 5_41], [6_09, 5_27, 6_87, 5_40], [7_00, 5_28, 7_92, 5_41], [3_36, 5_46, 3_97, 5_59], [4_07, 5_46, 4_31, 5_59], [4_43, 5_46, 5_25, 5_60], [5_37, 5_46, 6_80, 5_62], [6_88, 5_46, 7_14, 5_59], [7_22, 5_46, 8_37, 5_62], [3_36, 5_65, 4_49, 5_81], [4_61, 5_65, 4_85, 5_77], [4_97, 5_65, 6_65, 5_81], [6_81, 5_65, 7_18, 5_77], [7_32, 5_65, 8_37, 5_80], [3_37, 5_84, 4_38, 5_97], [4_52, 5_83, 5_21, 5_96], [5_35, 5_84, 6_77, 5_99], [6_90, 5_83, 7_87, 5_96], [8_01, 5_83, 8_25, 5_96], [3_38, 6_02, 4_78, 6_15], [4_92, 6_02, 5_30, 6_14], [5_43, 6_02, 6_38, 6_15], [6_50, 6_02, 6_76, 6_14], [6_88, 6_02, 7_88, 6_15], [8_02, 6_02, 8_43, 6_14], [3_37, 6_21, 5_02, 6_33], [5_16, 6_21, 6_15, 6_37], [6_29, 6_21, 7_74, 6_36], [7_89, 6_21, 8_27, 6_33], [3_37, 6_39, 4_18, 6_52], [4_32, 6_40, 5_71, 6_53], [5_87, 6_39, 7_31, 6_55], [7_43, 6_39, 7_69, 6_52], [7_80, 6_39, 8_41, 6_52], [3_38, 6_58, 4_40, 6_73], [4_55, 6_58, 4_91, 6_70], [5_08, 6_58, 6_02, 6_71], [6_16, 6_58, 6_38, 6_70], [6_54, 6_58, 8_35, 6_74], [3_37, 6_77, 4_29, 6_89], [3_37, 7_14, 4_82, 7_26], [4_95, 7_14, 5_48, 7_26], [5_61, 7_14, 6_83, 7_26], [3_38, 7_70, 4_61, 7_82], [4_74, 7_69, 5_54, 7_85], [4_89, 7_88, 5_62, 8_03], [5_76, 7_88, 6_43, 8_01], [6_56, 7_87, 7_51, 8_04], [7_64, 7_88, 8_44, 8_01], [3_34, 8_25, 4_21, 8_38], [4_30, 8_24, 5_74, 8_38], [5_84, 8_24, 7_23, 8_41], [3_35, 8_44, 4_50, 8_57], [4_64, 8_43, 5_83, 8_60], [6_28, 8_62, 7_55, 8_75], [7_69, 8_61, 8_48, 8_78]]]  # noqa: E231
      # fmt: on

      self.assertListEqual(encoding.words    ,						lowerCamelCase		)
      self.assertListEqual(encoding.boxes    ,						lowerCamelCase		)

      # with apply_OCR = False
      lowerCAmelCase_			:      List[str]			=   LayoutLMvaImageProcessor(apply_ocr=lowerCamelCase		)

      lowerCAmelCase_			:      Any			=   image_processing(lowerCamelCase    ,						return_tensors="""pt"""		)

      self.assertEqual(encoding.pixel_values.shape    ,						(1, 3, 2_24, 2_24)		)







'''simple docstring'''






from sklearn.metrics import recall_score

import datasets


__A					:  Dict											=      "\nRecall is the fraction of the positive examples that were correctly labeled by the model as positive. It can be computed with the equation:\nRecall = TP / (TP + FN)\nWhere TP is the true positives and FN is the false negatives.\n"


__A					:  List[Any]											=      "\nArgs:\n- **predictions** (`list` of `int`): The predicted labels.\n- **references** (`list` of `int`): The ground truth labels.\n- **labels** (`list` of `int`): The set of labels to include when `average` is not set to `binary`, and their order when average is `None`. Labels present in the data can be excluded in this input, for example to calculate a multiclass average ignoring a majority negative class, while labels not present in the data will result in 0 components in a macro average. For multilabel targets, labels are column indices. By default, all labels in y_true and y_pred are used in sorted order. Defaults to None.\n- **pos_label** (`int`): The class label to use as the 'positive class' when calculating the recall. Defaults to `1`.\n- **average** (`string`): This parameter is required for multiclass/multilabel targets. If None, the scores for each class are returned. Otherwise, this determines the type of averaging performed on the data. Defaults to `'binary'`.\n    - `'binary'`: Only report results for the class specified by `pos_label`. This is applicable only if the target labels and predictions are binary.\n    - `'micro'`: Calculate metrics globally by counting the total true positives, false negatives, and false positives.\n    - `'macro'`: Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.\n    - `'weighted'`: Calculate metrics for each label, and find their average weighted by support (the number of true instances for each label). This alters `'macro'` to account for label imbalance. Note that it can result in an F-score that is not between precision and recall.\n    - `'samples'`: Calculate metrics for each instance, and find their average (only meaningful for multilabel classification).\n- **sample_weight** (`list` of `float`): Sample weights Defaults to `None`.\n- **zero_division** (): Sets the value to return when there is a zero division. Defaults to .\n    - `'warn'`: If there is a zero division, the return value is `0`, but warnings are also raised.\n    - `0`: If there is a zero division, the return value is `0`.\n    - `1`: If there is a zero division, the return value is `1`.\n\nReturns:\n- **recall** (`float`, or `array` of `float`): Either the general recall score, or the recall scores for individual classes, depending on the values input to `labels` and `average`. Minimum possible value is 0. Maximum possible value is 1. A higher recall means that more of the positive examples have been labeled correctly. Therefore, a higher recall is generally considered better.\n\nExamples:\n\n    Example 1-A simple example with some errors\n        >>> recall_metric = datasets.load_metric('recall')\n        >>> results = recall_metric.compute(references=[0, 0, 1, 1, 1], predictions=[0, 1, 0, 1, 1])\n        >>> print(results)\n        {'recall': 0.6666666666666666}\n\n    Example 2-The same example as Example 1, but with `pos_label=0` instead of the default `pos_label=1`.\n        >>> recall_metric = datasets.load_metric('recall')\n        >>> results = recall_metric.compute(references=[0, 0, 1, 1, 1], predictions=[0, 1, 0, 1, 1], pos_label=0)\n        >>> print(results)\n        {'recall': 0.5}\n\n    Example 3-The same example as Example 1, but with `sample_weight` included.\n        >>> recall_metric = datasets.load_metric('recall')\n        >>> sample_weight = [0.9, 0.2, 0.9, 0.3, 0.8]\n        >>> results = recall_metric.compute(references=[0, 0, 1, 1, 1], predictions=[0, 1, 0, 1, 1], sample_weight=sample_weight)\n        >>> print(results)\n        {'recall': 0.55}\n\n    Example 4-A multiclass example, using different averages.\n        >>> recall_metric = datasets.load_metric('recall')\n        >>> predictions = [0, 2, 1, 0, 0, 1]\n        >>> references = [0, 1, 2, 0, 1, 2]\n        >>> results = recall_metric.compute(predictions=predictions, references=references, average='macro')\n        >>> print(results)\n        {'recall': 0.3333333333333333}\n        >>> results = recall_metric.compute(predictions=predictions, references=references, average='micro')\n        >>> print(results)\n        {'recall': 0.3333333333333333}\n        >>> results = recall_metric.compute(predictions=predictions, references=references, average='weighted')\n        >>> print(results)\n        {'recall': 0.3333333333333333}\n        >>> results = recall_metric.compute(predictions=predictions, references=references, average=None)\n        >>> print(results)\n        {'recall': array([1., 0., 0.])}\n"


__A					:  str											=      "\n@article{scikit-learn, title={Scikit-learn: Machine Learning in {P}ython}, author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.}, journal={Journal of Machine Learning Research}, volume={12}, pages={2825--2830}, year={2011}\n"






@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION	,_KWARGS_DESCRIPTION)
class    __snake_case       (   datasets.Metric):







    """simple docstring"""



    def __lowercase   (   self    :  str		)   ->  Dict:
      return datasets.MetricInfo(
          description=_DESCRIPTION    ,						citation=_CITATION    ,						inputs_description=_KWARGS_DESCRIPTION    ,						features=datasets.Features(
              {
                  """predictions""": datasets.Sequence(datasets.Value("""int32"""		)		),
                  """references""": datasets.Sequence(datasets.Value("""int32"""		)		),
              }
              if self.config_name == """multilabel"""
              else {
                  """predictions""": datasets.Value("""int32"""		),
                  """references""": datasets.Value("""int32"""		),
              }		)    ,						reference_urls=["""https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html"""]    ,						)





    def __lowercase   (   self    :  Tuple    ,						lowerCamelCase    :  Optional[Any]    ,						lowerCamelCase    :  str    ,						lowerCamelCase    :  Optional[Any]=None    ,						lowerCamelCase    :  Optional[int]=1    ,						lowerCamelCase    :  Union[str, Any]="binary"    ,						lowerCamelCase    :  Any=None    ,						lowerCamelCase    :  str="warn"    ,						)   ->  List[Any]:
      lowerCAmelCase_			:      Optional[int]			=   recall_score(
          lowerCamelCase    ,						lowerCamelCase    ,						labels=lowerCamelCase    ,						pos_label=lowerCamelCase    ,						average=lowerCamelCase    ,						sample_weight=lowerCamelCase    ,						zero_division=lowerCamelCase    ,						)
      return {"recall": float(lowerCamelCase		) if score.size == 1 else score}



