

'''simple docstring'''




import random
import unittest

import numpy as np

from diffusers import (
    DPMSolverMultistepScheduler,
    EulerAncestralDiscreteScheduler,
    EulerDiscreteScheduler,
    LMSDiscreteScheduler,
    OnnxStableDiffusionImgaImgPipeline,
    PNDMScheduler,
)
from diffusers.utils import floats_tensor
from diffusers.utils.testing_utils import (
    is_onnx_available,
    load_image,
    nightly,
    require_onnxruntime,
    require_torch_gpu,
)

from ..test_pipelines_onnx_common import OnnxPipelineTesterMixin


if is_onnx_available():
      import onnxruntime as ort






class     _SCREAMING_SNAKE_CASE       (       SCREAMING_SNAKE_CASE_						,unittest.TestCase      ):
 __SCREAMING_SNAKE_CASE	:Union[str, Any]     			=	'hf-internal-testing/tiny-random-OnnxStableDiffusionPipeline'



 def 					snake_case__    (       self						:       str					, a__						:       Dict=0     ):
      __magic_name__		  =							floats_tensor((1, 3, 128, 128)					, rng=random.Random(a__     )     )
      __magic_name__		  =							np.random.RandomState(a__     )
      __magic_name__		  =							{
          'prompt': 'A painting of a squirrel eating a burger',
          'image': image,
          'generator': generator,
          'num_inference_steps': 3,
          'strength': 0.75,
          'guidance_scale': 7.5,
          'output_type': 'numpy',
      }
      return inputs



 def 					snake_case__    (       self						:       Optional[int]     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1].flatten()

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.69_643, 0.58_484, 0.50_314, 0.58_760, 0.55_368, 0.59_643, 0.51_529, 0.41_217, 0.49_087]     )
      assert np.abs(image_slice - expected_slice     ).max() < 1E-1



 def 					snake_case__    (       self						:       Optional[Any]     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      __magic_name__		  =							PNDMScheduler.from_config(pipe.scheduler.config					, skip_prk_steps=a__     )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1]

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.61_737, 0.54_642, 0.53_183, 0.54_465, 0.52_742, 0.60_525, 0.49_969, 0.40_655, 0.48_154]     )

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



 def 					snake_case__    (       self						:       str     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      __magic_name__		  =							LMSDiscreteScheduler.from_config(pipe.scheduler.config     )
      pipe.set_progress_bar_config(disable=a__     )

      # warmup pass to apply optimizations
      __magic_name__		  =							pipe(**self.get_dummy_inputs()     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1]

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.52_761, 0.59_977, 0.49_033, 0.49_619, 0.54_282, 0.50_311, 0.47_600, 0.40_918, 0.45_203]     )

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



 def 					snake_case__    (       self						:       List[Any]     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      __magic_name__		  =							EulerDiscreteScheduler.from_config(pipe.scheduler.config     )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1]

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.52_911, 0.60_004, 0.49_229, 0.49_805, 0.54_502, 0.50_680, 0.47_777, 0.41_028, 0.45_304]     )

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



 def 					snake_case__    (       self						:       int     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      __magic_name__		  =							EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config     )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1]

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.52_911, 0.60_004, 0.49_229, 0.49_805, 0.54_502, 0.50_680, 0.47_777, 0.41_028, 0.45_304]     )

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



 def 					snake_case__    (       self						:       List[str]     ):
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(self.hub_checkpoint					, provider='''CPUExecutionProvider'''     )
      __magic_name__		  =							DPMSolverMultistepScheduler.from_config(pipe.scheduler.config     )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							self.get_dummy_inputs()
      __magic_name__		  =							pipe(**a__     ).images
      __magic_name__		  =							image[0, -3:, -3:, -1]

      assert image.shape == (1, 128, 128, 3)
      __magic_name__		  =							np.array([0.65_331, 0.58_277, 0.48_204, 0.56_059, 0.53_665, 0.56_235, 0.50_969, 0.40_009, 0.46_552]     )

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






@nightly
@require_onnxruntime
@require_torch_gpu
class     _SCREAMING_SNAKE_CASE       (       unittest.TestCase      ):



 @property
 def 					snake_case__    (       self						:       Dict     ):
      return (
          "CUDAExecutionProvider",
          {
              "gpu_mem_limit": "15000000000",  # 15GB
              "arena_extend_strategy": "kSameAsRequested",
          },
      )



 @property
 def 					snake_case__    (       self						:       Dict     ):
      __magic_name__		  =							ort.SessionOptions()
      __magic_name__		  =							False
      return options



 def 					snake_case__    (       self						:       str     ):
      __magic_name__		  =							load_image(
          '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'''
          '''/img2img/sketch-mountains-input.jpg'''     )
      __magic_name__		  =							init_image.resize((768, 512)     )
      # using the PNDM scheduler by default
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(
          '''CompVis/stable-diffusion-v1-4'''					, revision='''onnx'''					, safety_checker=a__					, feature_extractor=a__					, provider=self.gpu_provider					, sess_options=self.gpu_options					, )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							'A fantasy landscape, trending on artstation'

      __magic_name__		  =							np.random.RandomState(0     )
      __magic_name__		  =							pipe(
          prompt=a__					, image=a__					, strength=0.75					, guidance_scale=7.5					, num_inference_steps=10					, generator=a__					, output_type='''np'''					, )
      __magic_name__		  =							output.images
      __magic_name__		  =							images[0, 255:258, 383:386, -1]

      assert images.shape == (1, 512, 768, 3)
      __magic_name__		  =							np.array([0.4_909, 0.5_059, 0.5_372, 0.4_623, 0.4_876, 0.5_049, 0.4_820, 0.4_956, 0.5_019]     )
      # TODO: lower the tolerance after finding the cause of onnxruntime reproducibility issues

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



 def 					snake_case__    (       self						:       Optional[Any]     ):
      __magic_name__		  =							load_image(
          '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'''
          '''/img2img/sketch-mountains-input.jpg'''     )
      __magic_name__		  =							init_image.resize((768, 512)     )
      __magic_name__		  =							LMSDiscreteScheduler.from_pretrained(
          '''runwayml/stable-diffusion-v1-5'''					, subfolder='''scheduler'''					, revision='''onnx'''     )
      __magic_name__		  =							OnnxStableDiffusionImgaImgPipeline.from_pretrained(
          '''runwayml/stable-diffusion-v1-5'''					, revision='''onnx'''					, scheduler=a__					, safety_checker=a__					, feature_extractor=a__					, provider=self.gpu_provider					, sess_options=self.gpu_options					, )
      pipe.set_progress_bar_config(disable=a__     )

      __magic_name__		  =							'A fantasy landscape, trending on artstation'

      __magic_name__		  =							np.random.RandomState(0     )
      __magic_name__		  =							pipe(
          prompt=a__					, image=a__					, strength=0.75					, guidance_scale=7.5					, num_inference_steps=20					, generator=a__					, output_type='''np'''					, )
      __magic_name__		  =							output.images
      __magic_name__		  =							images[0, 255:258, 383:386, -1]

      assert images.shape == (1, 512, 768, 3)
      __magic_name__		  =							np.array([0.8_043, 0.926, 0.9_581, 0.8_119, 0.8_954, 0.913, 0.7_209, 0.7_463, 0.7_431]     )
      # TODO: lower the tolerance after finding the cause of onnxruntime reproducibility issues

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











import requests

_lowerCamelCase    :		int		      =    """https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey="""

def        __a			(   __lowerCAmelCase   )     ->     None:
					# fetching a list of articles in json format
					SCREAMING_SNAKE_CASE							:     List[str]						=				requests.get(_NEWS_API + bbc_news_api_key   ).json()
					# each article in the list is a dict
					for i, article in enumerate(bbc_news_page['articles']      ,	1   ):
										print(F'''{i}.) {article['title']}'''   )


if __name__ == "__main__":
			fetch_bbc_news(bbc_news_api_key="""<Your BBC News API key goes here>""")