
'''simple docstring'''







import unittest

from transformers import (
    MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
    SummarizationPipeline,
    TFPreTrainedModel,
    pipeline,
)
from transformers.testing_utils import get_gpu_count, is_pipeline_test, require_tf, require_torch, slow, torch_device
from transformers.tokenization_utils import TruncationStrategy

from .test_pipelines_common import ANY


lowerCAmelCase_      =   -1 if torch_device == 'cpu' else 0







@is_pipeline_test
class 		snake_case_       (						unittest.TestCase						):



   """simple docstring"""





   __lowerCAmelCase	:							Union[str, Any]								=MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
   __lowerCAmelCase	:							Tuple								=TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING







   def     __UpperCAmelCase      ( self			,   UpperCamelCase			,   UpperCamelCase			,   UpperCamelCase):
          lowerCamelCase__				   =      SummarizationPipeline(model=_A			,   tokenizer=_A)
          return summarizer, ["(CNN)The Palestinian Authority officially became", "Some other text"]







   def     __UpperCAmelCase      ( self			,   UpperCamelCase			,   UpperCamelCase):
          lowerCamelCase__				   =      summarizer.model

          lowerCamelCase__				   =      summarizer("(CNN)The Palestinian Authority officially became")
          self.assertEqual(_A			,   [{"summary_text": ANY(_A)}])

          lowerCamelCase__				   =      summarizer(
              "(CNN)The Palestinian Authority officially became "			,   num_beams=2			,   min_length=2			,   max_length=5			,   )
          self.assertEqual(_A			,   [{"summary_text": ANY(_A)}])

          # Some models (Switch Transformers, LED, T5, LongT5, etc) can handle long sequences.
          lowerCamelCase__				   =      [
              "SwitchTransformersConfig",
              "T5Config",
              "LongT5Config",
              "LEDConfig",
              "PegasusXConfig",
              "FSMTConfig",
              "M2M100Config",
              "ProphetNetConfig",  # positional embeddings up to a fixed maximum size (otherwise clamping the values)
          ]
          if model.config.__class__.__name__ not in model_can_handle_longer_seq:
                 # Too long and exception is expected.
                 # For TF models, if the weights are initialized in GPU context, we won't get expected index error from
                 # the embedding layer.
                 if not (
                     isinstance(_A			,   _A)
                     and get_gpu_count() > 0
                     and len(summarizer.model.trainable_weights) > 0
                 ):
                        with self.assertRaises(_A):
                               lowerCamelCase__				   =      summarizer("This " * 10_00)
          lowerCamelCase__				   =      summarizer("This " * 10_00			,   truncation=TruncationStrategy.ONLY_FIRST)







   @require_torch
   def     __UpperCAmelCase      ( self):
          lowerCamelCase__				   =      pipeline(task="summarization"			,   model="sshleifer/tiny-mbart"			,   framework="pt")
          lowerCamelCase__				   =      summarizer("This is a small test")
          self.assertEqual(
              _A			,   [
                  {
                      "summary_text": "เข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไป"
                  }
              ]			,   )







   @require_tf
   def     __UpperCAmelCase      ( self):
          lowerCamelCase__				   =      pipeline(task="summarization"			,   model="sshleifer/tiny-mbart"			,   framework="tf")
          lowerCamelCase__				   =      summarizer("This is a small test")
          self.assertEqual(
              _A			,   [
                  {
                      "summary_text": "เข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไปเข้าไป"
                  }
              ]			,   )







   @require_torch
   @slow
   def     __UpperCAmelCase      ( self):
          lowerCamelCase__				   =      pipeline(task="summarization"			,   device=_A)
          lowerCamelCase__				   =      (
              " (CNN)The Palestinian Authority officially became the 123rd member of the International Criminal Court on"
              " Wednesday, a step that gives the court jurisdiction over alleged crimes in Palestinian territories. The"
              " formal accession was marked with a ceremony at The Hague, in the Netherlands, where the court is based."
              " The Palestinians signed the ICC's founding Rome Statute in January, when they also accepted its"
              " jurisdiction over alleged crimes committed \"in the occupied Palestinian territory, including East"
              " Jerusalem, since June 13, 2014.\" Later that month, the ICC opened a preliminary examination into the"
              " situation in Palestinian territories, paving the way for possible war crimes investigations against"
              " Israelis. As members of the court, Palestinians may be subject to counter-charges as well. Israel and"
              " the United States, neither of which is an ICC member, opposed the Palestinians' efforts to join the"
              " body. But Palestinian Foreign Minister Riad al-Malki, speaking at Wednesday's ceremony, said it was a"
              " move toward greater justice. \"As Palestine formally becomes a State Party to the Rome Statute today, the"
              " world is also a step closer to ending a long era of impunity and injustice,\" he said, according to an"
              " ICC news release. \"Indeed, today brings us closer to our shared goals of justice and peace.\" Judge"
              " Kuniko Ozaki, a vice president of the ICC, said acceding to the treaty was just the first step for the"
              " Palestinians. \"As the Rome Statute today enters into force for the State of Palestine, Palestine"
              " acquires all the rights as well as responsibilities that come with being a State Party to the Statute."
              " These are substantive commitments, which cannot be taken lightly,\" she said. Rights group Human Rights"
              " Watch welcomed the development. \"Governments seeking to penalize Palestine for joining the ICC should"
              " immediately end their pressure, and countries that support universal acceptance of the court's treaty"
              " should speak out to welcome its membership,\" said Balkees Jarrah, international justice counsel for the"
              " group. \"What's objectionable is the attempts to undermine international justice, not Palestine's"
              " decision to join a treaty to which over 100 countries around the world are members.\" In January, when"
              " the preliminary ICC examination was opened, Israeli Prime Minister Benjamin Netanyahu described it as an"
              " outrage, saying the court was overstepping its boundaries. The United States also said it \"strongly\""
              " disagreed with the court's decision. \"As we have said repeatedly, we do not believe that Palestine is a"
              " state and therefore we do not believe that it is eligible to join the ICC,\" the State Department said in"
              " a statement. It urged the warring sides to resolve their differences through direct negotiations. \"We"
              " will continue to oppose actions against Israel at the ICC as counterproductive to the cause of peace,\""
              " it said. But the ICC begs to differ with the definition of a state for its purposes and refers to the"
              " territories as \"Palestine.\" While a preliminary examination is not a formal investigation, it allows the"
              " court to review evidence and determine whether to investigate suspects on both sides. Prosecutor Fatou"
              " Bensouda said her office would \"conduct its analysis in full independence and impartiality.\" The war"
              " between Israel and Hamas militants in Gaza last summer left more than 2,000 people dead. The inquiry"
              " will include alleged war crimes committed since June. The International Criminal Court was set up in"
              " 2002 to prosecute genocide, crimes against humanity and war crimes. CNN's Vasco Cotovio, Kareem Khadder"
              " and Faith Karimi contributed to this report."
          )
          lowerCamelCase__				   =      (
              " The Palestinian Authority becomes the 123rd member of the International Criminal Court . The move gives"
              " the court jurisdiction over alleged crimes in Palestinian territories . Israel and the United States"
              " opposed the Palestinians' efforts to join the court . Rights group Human Rights Watch welcomes the move,"
              " says governments seeking to penalize Palestine should end pressure ."
          )
          lowerCamelCase__				   =      summarizer(_A)
          self.assertEqual(result[0]["summary_text"]			,   _A)






import unittest

import numpy as np
from datasets import load_dataset

from transformers.testing_utils import require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
		import torch

if is_vision_available():
		from PIL import Image

		from transformers import SegformerImageProcessor




class 				lowerCAmelCase__	(						unittest.TestCase    ):







					def __init__(							self   :  int      ,		_A   :  Optional[Any]      ,		_A   :  Optional[int]=7      ,		_A   :  str=3      ,		_A   :  Optional[int]=30      ,		_A   :  List[str]=400      ,		_A   :  Tuple=True      ,		_A   :  List[Any]=None      ,		_A   :  Dict=True      ,		_A   :  Tuple=[0.5, 0.5, 0.5]      ,		_A   :  List[str]=[0.5, 0.5, 0.5]      ,		_A   :  int=False      ,		):
											A__						:				Tuple         =			size if size is not None else {"height": 30, "width": 30}
											A__						:				Tuple         =			parent
											A__						:				str         =			batch_size
											A__						:				int         =			num_channels
											A__						:				Union[str, Any]         =			min_resolution
											A__						:				List[str]         =			max_resolution
											A__						:				int         =			do_resize
											A__						:				Tuple         =			size
											A__						:				Union[str, Any]         =			do_normalize
											A__						:				Optional[int]         =			image_mean
											A__						:				List[Any]         =			image_std
											A__						:				Dict         =			do_reduce_labels







					def 			_lowercase      (							self   :  Optional[int]):
											return {
											    "do_resize": self.do_resize,
											    "size": self.size,
											    "do_normalize": self.do_normalize,
											    "image_mean": self.image_mean,
											    "image_std": self.image_std,
											    "do_reduce_labels": self.do_reduce_labels,
											}




def 						snake_case__							(       )		->		Tuple:







						"""simple docstring"""

						A__						:				Union[str, Any]         =			load_dataset("hf-internal-testing/fixtures_ade20k"				,  split="test"							)

						A__						:				Any         =			Image.open(dataset[0]["file"]							)
						A__						:				Any         =			Image.open(dataset[1]["file"]							)

						return image, map
def 						snake_case__							(       )		->		List[str]:







						"""simple docstring"""

						A__						:				Tuple         =			load_dataset("hf-internal-testing/fixtures_ade20k"				,  split="test"							)

						A__						:				Tuple         =			Image.open(dataset[0]["file"]							)
						A__						:				int         =			Image.open(dataset[1]["file"]							)
						A__						:				str         =			Image.open(dataset[2]["file"]							)
						A__						:				List[Any]         =			Image.open(dataset[3]["file"]							)

						return [imagea, imagea], [mapa, mapa]




@require_torch
@require_vision
class 				lowerCAmelCase__	(						UpperCamelCase       ,				unittest.TestCase    ):
					__A  :     int     =    SegformerImageProcessor if is_vision_available() else None







					def 			_lowercase      (							self   :  int):
											A__						:				int         =			SegformerImageProcessingTester(self)







					@property
					def 			_lowercase      (							self   :  str):
											return self.image_processor_tester.prepare_image_processor_dict()







					def 			_lowercase      (							self   :  Optional[Any]):
											A__						:				Any         =			self.image_processing_class(**self.image_processor_dict)
											self.assertTrue(hasattr(_A      ,		"do_resize"))
											self.assertTrue(hasattr(_A      ,		"size"))
											self.assertTrue(hasattr(_A      ,		"do_normalize"))
											self.assertTrue(hasattr(_A      ,		"image_mean"))
											self.assertTrue(hasattr(_A      ,		"image_std"))
											self.assertTrue(hasattr(_A      ,		"do_reduce_labels"))







					def 			_lowercase      (							self   :  Tuple):
											A__						:				Union[str, Any]         =			self.image_processing_class.from_dict(self.image_processor_dict)
											self.assertEqual(image_processor.size      ,		{"height": 30, "width": 30})
											self.assertEqual(image_processor.do_reduce_labels      ,		_A)

											A__						:				Union[str, Any]         =			self.image_processing_class.from_dict(self.image_processor_dict      ,		size=42      ,		reduce_labels=_A)
											self.assertEqual(image_processor.size      ,		{"height": 42, "width": 42})
											self.assertEqual(image_processor.do_reduce_labels      ,		_A)







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







					def 			_lowercase      (							self   :  Dict):
											# Initialize image_processing
											A__						:				Tuple         =			self.image_processing_class(**self.image_processor_dict)
											# create random PIL images
											A__						:				Union[str, Any]         =			prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A)
											for image in image_inputs:
																	self.assertIsInstance(_A      ,		Image.Image)

											# Test not batched input
											A__						:				Dict         =			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
											A__						:				List[Any]         =			image_processing(_A      ,		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]):
											# Initialize image_processing
											A__						:				Tuple         =			self.image_processing_class(**self.image_processor_dict)
											# create random numpy tensors
											A__						:				Tuple         =			prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A      ,		numpify=_A)
											for image in image_inputs:
																	self.assertIsInstance(_A      ,		np.ndarray)

											# Test not batched input
											A__						:				Optional[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
											A__						:				Optional[int]         =			image_processing(_A      ,		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   :  Tuple):
											# Initialize image_processing
											A__						:				str         =			self.image_processing_class(**self.image_processor_dict)
											# create random PyTorch tensors
											A__						:				str         =			prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A      ,		torchify=_A)
											for image in image_inputs:
																	self.assertIsInstance(_A      ,		torch.Tensor)

											# Test not batched input
											A__						:				int         =			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
											A__						:				List[str]         =			image_processing(_A      ,		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]):
											# Initialize image_processing
											A__						:				str         =			self.image_processing_class(**self.image_processor_dict)
											# create random PyTorch tensors
											A__						:				Optional[Any]         =			prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A      ,		torchify=_A)
											A__						:				List[str]         =			[]
											for image in image_inputs:
																	self.assertIsInstance(_A      ,		torch.Tensor)
																	maps.append(torch.zeros(image.shape[-2:]).long())

											# Test not batched input
											A__						:				Any         =			image_processing(image_inputs[0]      ,		maps[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.assertEqual(
											    encoding["labels"].shape      ,		(
											        1,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    )      ,		)
											self.assertEqual(encoding["labels"].dtype      ,		torch.long)
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 255)

											# Test batched
											A__						:				int         =			image_processing(_A      ,		_A      ,		return_tensors="pt")
											self.assertEqual(
											    encoding["pixel_values"].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"],
											    )      ,		)
											self.assertEqual(
											    encoding["labels"].shape      ,		(
											        self.image_processor_tester.batch_size,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    )      ,		)
											self.assertEqual(encoding["labels"].dtype      ,		torch.long)
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 255)

											# Test not batched input (PIL images)
											A__     ,							A__						:				List[str]         =			prepare_semantic_single_inputs()

											A__						:				Any         =			image_processing(_A      ,		_A      ,		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.assertEqual(
											    encoding["labels"].shape      ,		(
											        1,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    )      ,		)
											self.assertEqual(encoding["labels"].dtype      ,		torch.long)
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 255)

											# Test batched input (PIL images)
											A__     ,							A__						:				Union[str, Any]         =			prepare_semantic_batch_inputs()

											A__						:				str         =			image_processing(_A      ,		_A      ,		return_tensors="pt")
											self.assertEqual(
											    encoding["pixel_values"].shape      ,		(
											        2,
											        self.image_processor_tester.num_channels,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    )      ,		)
											self.assertEqual(
											    encoding["labels"].shape      ,		(
											        2,
											        self.image_processor_tester.size["height"],
											        self.image_processor_tester.size["width"],
											    )      ,		)
											self.assertEqual(encoding["labels"].dtype      ,		torch.long)
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 255)







					def 			_lowercase      (							self   :  Union[str, Any]):
											# Initialize image_processing
											A__						:				List[str]         =			self.image_processing_class(**self.image_processor_dict)

											# ADE20k has 150 classes, and the background is included, so labels should be between 0 and 150
											A__     ,							A__						:				Tuple         =			prepare_semantic_single_inputs()
											A__						:				Dict         =			image_processing(_A      ,		_A      ,		return_tensors="pt")
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 150)

											A__						:				str         =			True
											A__						:				int         =			image_processing(_A      ,		_A      ,		return_tensors="pt")
											self.assertTrue(encoding["labels"].min().item() >= 0)
											self.assertTrue(encoding["labels"].max().item() <= 255)