






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


__UpperCAmelCase      =				-1 if torch_device == "cpu" else 0
@is_pipeline_test
class 	a_(		unittest.TestCase	):



     """simple docstring"""



     __snake_case		:				int  					=MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
     __snake_case		:				Optional[Any]  					=TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING





     def     __UpperCamelCase						(		self					:	int  ,  lowerCAmelCase__					:	Tuple  ,  lowerCAmelCase__					:	int  ,  lowerCAmelCase__					:	Tuple)							->	List[Any]:

      """simple docstring"""
      SCREAMING_SNAKE_CASE				    =		SummarizationPipeline(model=_A  ,  tokenizer=_A)
      return summarizer, ["(CNN)The Palestinian Authority officially became", "Some other text"]





     def     __UpperCamelCase						(		self					:	List[Any]  ,  lowerCAmelCase__					:	Any  ,  lowerCAmelCase__					:	Optional[Any])							->	Optional[Any]:

      """simple docstring"""
      SCREAMING_SNAKE_CASE				    =		summarizer.model

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

      SCREAMING_SNAKE_CASE				    =		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.
      SCREAMING_SNAKE_CASE				    =		[
          '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):
         SCREAMING_SNAKE_CASE				    =		summarizer('This ' * 1_0_0_0)
      SCREAMING_SNAKE_CASE				    =		summarizer('This ' * 1_0_0_0  ,  truncation=TruncationStrategy.ONLY_FIRST)





     @require_torch
     def     __UpperCamelCase						(		self					:	Optional[Any])							->	List[Any]:

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





     @require_tf
     def     __UpperCamelCase						(		self					:	Optional[Any])							->	List[str]:

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





     @require_torch
     @slow
     def     __UpperCamelCase						(		self					:	Union[str, Any])							->	Any:

      """simple docstring"""
      SCREAMING_SNAKE_CASE				    =		pipeline(task='summarization'  ,  device=_A)
      SCREAMING_SNAKE_CASE				    =		(
          ' (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.'
      )
      SCREAMING_SNAKE_CASE				    =		(
          ' 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 .'
      )
      SCREAMING_SNAKE_CASE				    =		summarizer(_A)
      self.assertEqual(result[0]['summary_text']  ,  _A)






'''simple docstring'''





import gc
import unittest

import numpy as np
import torch

from diffusers import RePaintPipeline, RePaintScheduler, UNetaDModel
from diffusers.utils.testing_utils import (
    enable_full_determinism,
    load_image,
    load_numpy,
    nightly,
    require_torch_gpu,
    skip_mps,
    torch_device,
)

from ..pipeline_params import IMAGE_INPAINTING_BATCH_PARAMS, IMAGE_INPAINTING_PARAMS
from ..test_pipelines_common import PipelineTesterMixin


enable_full_determinism()


class 			UpperCamelCase__	(     SCREAMING_SNAKE_CASE   ,  unittest.TestCase):
 UpperCAmelCase__     :     Union[str, Any]    					=       RePaintPipeline
 UpperCAmelCase__     :     Any    					=       IMAGE_INPAINTING_PARAMS - {'width', 'height', 'guidance_scale'}
 UpperCAmelCase__     :     Optional[int]    					=       PipelineTesterMixin.required_optional_params - {
     'latents',
     'num_images_per_prompt',
     'callback',
     'callback_steps',
 }
 UpperCAmelCase__     :     Optional[int]    					=       IMAGE_INPAINTING_BATCH_PARAMS
 UpperCAmelCase__     :     Any    					=       False






 def 						lowercase_    (      self	:Any      )					->      int:







       '''simple docstring'''



       torch.manual_seed(0      )
       torch.manual_seed(0      )
       __A													=      UNetaDModel(
           block_out_channels=(32, 64)						,					layers_per_block=2						,					sample_size=32						,					in_channels=3						,					out_channels=3						,					down_block_types=('DownBlock2D', 'AttnDownBlock2D')						,					up_block_types=('AttnUpBlock2D', 'UpBlock2D')						,					)
       __A													=      RePaintScheduler()
       __A													=      {'unet': unet, 'scheduler': scheduler}
       return components






 def 						lowercase_    (      self	:Any						,					_A	:List[Any]						,					_A	:Tuple=0      )					->      List[str]:







       '''simple docstring'''



       if str(_A      ).startswith('mps'      ):
             __A													=      torch.manual_seed(_A      )
       else:
             __A													=      torch.Generator(device=_A      ).manual_seed(_A      )
       __A													=      np.random.RandomState(_A      ).standard_normal((1, 3, 32, 32)      )
       __A													=      torch.from_numpy(_A      ).to(device=_A						,					dtype=torch.floataa      )
       __A													=      (image > 0).to(device=_A						,					dtype=torch.floataa      )
       __A													=      {
           'image': image,
           'mask_image': mask,
           'generator': generator,
           'num_inference_steps': 5,
           'eta': 0.0,
           'jump_length': 2,
           'jump_n_sample': 2,
           'output_type': 'numpy',
       }
       return inputs






 def 						lowercase_    (      self	:Union[str, Any]      )					->      Optional[int]:







       '''simple docstring'''



       __A													=      'cpu'  # ensure determinism for the device-dependent torch.Generator
       __A													=      self.get_dummy_components()
       __A													=      RePaintPipeline(**_A      )
       __A													=      sd_pipe.to(_A      )
       sd_pipe.set_progress_bar_config(disable=_A      )

       __A													=      self.get_dummy_inputs(_A      )
       __A													=      sd_pipe(**_A      ).images
       __A													=      image[0, -3:, -3:, -1]

       assert image.shape == (1, 32, 32, 3)
       __A													=      np.array([1.0_000, 0.5_426, 0.5_497, 0.2_200, 1.0_000, 1.0_000, 0.5_623, 1.0_000, 0.6_274]      )

       assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-3






 @skip_mps
 def 						lowercase_    (      self	:Dict      )					->      Optional[int]:







       '''simple docstring'''



       return super().test_save_load_local()






 @unittest.skip('non-deterministic pipeline'      )
 def 						lowercase_    (      self	:Union[str, Any]      )					->      int:







       '''simple docstring'''



       return super().test_inference_batch_single_identical()






 @skip_mps
 def 						lowercase_    (      self	:Dict      )					->      Union[str, Any]:







       '''simple docstring'''



       return super().test_dict_tuple_outputs_equivalent()






 @skip_mps
 def 						lowercase_    (      self	:List[str]      )					->      int:







       '''simple docstring'''



       return super().test_save_load_optional_components()






 @skip_mps
 def 						lowercase_    (      self	:Optional[int]      )					->      Optional[Any]:







       '''simple docstring'''



       return super().test_attention_slicing_forward_pass()


@nightly
@require_torch_gpu
class 			UpperCamelCase__	(     unittest.TestCase):






 def 						lowercase_    (      self	:Optional[int]      )					->      int:







       '''simple docstring'''



       super().tearDown()
       gc.collect()
       torch.cuda.empty_cache()






 def 						lowercase_    (      self	:Dict      )					->      Optional[Any]:







       '''simple docstring'''



       __A													=      load_image(
           'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/'
           'repaint/celeba_hq_256.png'      )
       __A													=      load_image(
           'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/repaint/mask_256.png'      )
       __A													=      load_numpy(
           'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/'
           'repaint/celeba_hq_256_result.npy'      )

       __A													=      'google/ddpm-ema-celebahq-256'
       __A													=      UNetaDModel.from_pretrained(_A      )
       __A													=      RePaintScheduler.from_pretrained(_A      )

       __A													=      RePaintPipeline(unet=_A						,					scheduler=_A      ).to(_A      )
       repaint.set_progress_bar_config(disable=_A      )
       repaint.enable_attention_slicing()

       __A													=      torch.manual_seed(0      )
       __A													=      repaint(
           _A						,					_A						,					num_inference_steps=250						,					eta=0.0						,					jump_length=10						,					jump_n_sample=10						,					generator=_A						,					output_type='np'						,					)
       __A													=      output.images[0]

       assert image.shape == (256, 256, 3)
       assert np.abs(expected_image - image      ).mean() < 1E-2






