




'''simple docstring'''



import tempfile
import unittest

from diffusers import (
    DDIMScheduler,
    DDPMScheduler,
    DPMSolverMultistepScheduler,
    EulerAncestralDiscreteScheduler,
    EulerDiscreteScheduler,
    PNDMScheduler,
    logging,
)
from diffusers.configuration_utils import ConfigMixin, register_to_config
from diffusers.utils.testing_utils import CaptureLogger







class 	lowercase_					(				A     ):


   """simple docstring"""

   lowerCamelCase_       						=		'''config.json'''



   @register_to_config
   def __init__(					self      :			List[str]						,   __lowerCamelCase      :			Optional[int]=2						,   __lowerCamelCase      :			Tuple=5						,   __lowerCamelCase      :			str=(2, 5)						,   __lowerCamelCase      :			Dict="for diffusion"						,   __lowerCamelCase      :			Any=[1, 3]						,   ):

      """simple docstring"""
      pass







class 	lowercase_					(				A     ):


   """simple docstring"""

   lowerCamelCase_       						=		'''config.json'''



   @register_to_config
   def __init__(					self      :			List[str]						,   __lowerCamelCase      :			List[Any]=2						,   __lowerCamelCase      :			List[str]=5						,   __lowerCamelCase      :			List[str]=(2, 5)						,   __lowerCamelCase      :			Any="for diffusion"						,   __lowerCamelCase      :			Optional[Any]=[1, 3]						,   ):

      """simple docstring"""
      pass







class 	lowercase_					(				A     ):


   """simple docstring"""

   lowerCamelCase_       						=		'''config.json'''



   @register_to_config
   def __init__(					self      :			List[Any]						,   __lowerCamelCase      :			Union[str, Any]=2						,   __lowerCamelCase      :			Union[str, Any]=5						,   __lowerCamelCase      :			Optional[int]=(2, 5)						,   __lowerCamelCase      :			Optional[Any]="for diffusion"						,   __lowerCamelCase      :			int=[1, 3]						,   __lowerCamelCase      :			int=[1, 3]						,   ):

      """simple docstring"""
      pass







class 	lowercase_					(				A     ):


   """simple docstring"""

   lowerCamelCase_       						=		'''config.json'''



   @register_to_config
   def __init__(					self      :			str						,   __lowerCamelCase      :			Optional[Any]=2						,   __lowerCamelCase      :			Union[str, Any]=5						,   __lowerCamelCase      :			int=(2, 5)						,   __lowerCamelCase      :			Dict="for diffusion"						,   __lowerCamelCase      :			int=[1, 5]						,   __lowerCamelCase      :			List[Any]=[5, 4]						,   ):

      """simple docstring"""
      pass







class 	lowercase_					(				unittest.TestCase     ):


   """simple docstring"""

   def 							lowerCAmelCase_    (					self      :			Tuple					):

      """simple docstring"""
      with self.assertRaises(__lowerCamelCase					):
         ConfigMixin.load_config("dummy_path"					)



   def 							lowerCAmelCase_    (					self      :			int					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   SampleObject()
      _SCREAMING_SNAKE_CASE =   obj.config
      assert config["a"] == 2
      assert config["b"] == 5
      assert config["c"] == (2, 5)
      assert config["d"] == "for diffusion"
      assert config["e"] == [1, 3]

      # init ignore private arguments
      _SCREAMING_SNAKE_CASE =   SampleObject(_name_or_path="lalala"					)
      _SCREAMING_SNAKE_CASE =   obj.config
      assert config["a"] == 2
      assert config["b"] == 5
      assert config["c"] == (2, 5)
      assert config["d"] == "for diffusion"
      assert config["e"] == [1, 3]

      # can override default
      _SCREAMING_SNAKE_CASE =   SampleObject(c=6					)
      _SCREAMING_SNAKE_CASE =   obj.config
      assert config["a"] == 2
      assert config["b"] == 5
      assert config["c"] == 6
      assert config["d"] == "for diffusion"
      assert config["e"] == [1, 3]

      # can use positional arguments.
      _SCREAMING_SNAKE_CASE =   SampleObject(1						,   c=6					)
      _SCREAMING_SNAKE_CASE =   obj.config
      assert config["a"] == 1
      assert config["b"] == 5
      assert config["c"] == 6
      assert config["d"] == "for diffusion"
      assert config["e"] == [1, 3]



   def 							lowerCAmelCase_    (					self      :			Any					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   SampleObject()
      _SCREAMING_SNAKE_CASE =   obj.config

      assert config["a"] == 2
      assert config["b"] == 5
      assert config["c"] == (2, 5)
      assert config["d"] == "for diffusion"
      assert config["e"] == [1, 3]

      with tempfile.TemporaryDirectory() as tmpdirname:
         obj.save_config(__lowerCamelCase					)
         _SCREAMING_SNAKE_CASE =   SampleObject.from_config(SampleObject.load_config(__lowerCamelCase					)					)
         _SCREAMING_SNAKE_CASE =   new_obj.config

      # unfreeze configs
      _SCREAMING_SNAKE_CASE =   dict(__lowerCamelCase					)
      _SCREAMING_SNAKE_CASE =   dict(__lowerCamelCase					)

      assert config.pop("c"					) == (2, 5)  # instantiated as tuple
      assert new_config.pop("c"					) == [2, 5]  # saved & loaded as list because of json
      config.pop("_use_default_values"					)
      assert config == new_config



   def 							lowerCAmelCase_    (					self      :			List[str]					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   DDIMScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"					)

      assert ddim.__class__ == DDIMScheduler
      # no warning should be thrown
      assert cap_logger.out == ""



   def 							lowerCAmelCase_    (					self      :			Tuple					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   EulerDiscreteScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"					)

      assert euler.__class__ == EulerDiscreteScheduler
      # no warning should be thrown
      assert cap_logger.out == ""



   def 							lowerCAmelCase_    (					self      :			int					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   EulerAncestralDiscreteScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"					)

      assert euler.__class__ == EulerAncestralDiscreteScheduler
      # no warning should be thrown
      assert cap_logger.out == ""



   def 							lowerCAmelCase_    (					self      :			str					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   PNDMScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"					)

      assert pndm.__class__ == PNDMScheduler
      # no warning should be thrown
      assert cap_logger.out == ""



   def 							lowerCAmelCase_    (					self      :			Dict					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   DDPMScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"						,   prediction_type="sample"						,   beta_end=8						,   )

      with CaptureLogger(__lowerCamelCase					) as cap_logger_a:
         _SCREAMING_SNAKE_CASE =   DDPMScheduler.from_pretrained("google/ddpm-celebahq-256"						,   beta_start=8_8					)

      assert ddpm.__class__ == DDPMScheduler
      assert ddpm.config.prediction_type == "sample"
      assert ddpm.config.beta_end == 8
      assert ddpm_a.config.beta_start == 8_8

      # no warning should be thrown
      assert cap_logger.out == ""
      assert cap_logger_a.out == ""



   def 							lowerCAmelCase_    (					self      :			Union[str, Any]					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   logging.get_logger("diffusers.configuration_utils"					)
      # 30 for warning
      logger.setLevel(3_0					)

      with CaptureLogger(__lowerCamelCase					) as cap_logger:
         _SCREAMING_SNAKE_CASE =   DPMSolverMultistepScheduler.from_pretrained(
             "hf-internal-testing/tiny-stable-diffusion-torch"						,   subfolder="scheduler"					)

      assert dpm.__class__ == DPMSolverMultistepScheduler
      # no warning should be thrown
      assert cap_logger.out == ""



   def 							lowerCAmelCase_    (					self      :			Optional[Any]					):

      """simple docstring"""
      # let's first save a config that should be in the form
      #    a=2,
      #    b=5,
      #    c=(2, 5),
      #    d="for diffusion",
      #    e=[1, 3],

      _SCREAMING_SNAKE_CASE =   SampleObject()

      _SCREAMING_SNAKE_CASE =   {k: v for k, v in config.config.items() if not k.startswith("_"					)}

      # make sure that default config has all keys in `_use_default_values`
      assert set(config_dict.keys()					) == set(config.config._use_default_values					)

      with tempfile.TemporaryDirectory() as tmpdirname:
         config.save_config(__lowerCamelCase					)

         # now loading it with SampleObject2 should put f into `_use_default_values`
         _SCREAMING_SNAKE_CASE =   SampleObjecta.from_config(__lowerCamelCase					)

         assert "f" in config._use_default_values
         assert config.f == [1, 3]

      # now loading the config, should **NOT** use [1, 3] for `f`, but the default [1, 4] value
      # **BECAUSE** it is part of `config._use_default_values`
      _SCREAMING_SNAKE_CASE =   SampleObjecta.from_config(config.config					)
      assert new_config.f == [5, 4]

      config.config._use_default_values.pop()
      _SCREAMING_SNAKE_CASE =   SampleObjecta.from_config(config.config					)
      assert new_config_a.f == [1, 3]

      # Nevertheless "e" should still be correctly loaded to [1, 3] from SampleObject2 instead of defaulting to [1, 5]
      assert new_config_a.e == [1, 3]







'''simple docstring'''



import unittest
from pathlib import Path
from tempfile import TemporaryDirectory
from unittest.mock import Mock, patch

import diffusers.utils.hub_utils







class 	lowercase_					(				unittest.TestCase     ):


   """simple docstring"""

   @patch("diffusers.utils.hub_utils.get_full_repo_name"					)
   def 							lowerCAmelCase_    (					self      :			List[Any]						,   __lowerCamelCase      :			Mock					):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE =   "full_repo_name"
      with TemporaryDirectory() as tmpdir:
         # Dummy args values
         _SCREAMING_SNAKE_CASE =   Mock()
         _SCREAMING_SNAKE_CASE =   tmpdir
         _SCREAMING_SNAKE_CASE =   0
         _SCREAMING_SNAKE_CASE =   "hub_token"
         _SCREAMING_SNAKE_CASE =   "dataset_name"
         _SCREAMING_SNAKE_CASE =   0.0_1
         _SCREAMING_SNAKE_CASE =   1_0_0_0_0_0
         _SCREAMING_SNAKE_CASE =   1_0_0_0_0
         _SCREAMING_SNAKE_CASE =   0.0_1
         _SCREAMING_SNAKE_CASE =   0.0_2
         _SCREAMING_SNAKE_CASE =   0.0_3
         _SCREAMING_SNAKE_CASE =   0.0_0_0_5
         _SCREAMING_SNAKE_CASE =   0.0_0_0_0_0_1
         _SCREAMING_SNAKE_CASE =   1
         _SCREAMING_SNAKE_CASE =   1_0
         _SCREAMING_SNAKE_CASE =   0.0_0_1
         _SCREAMING_SNAKE_CASE =   0.1
         _SCREAMING_SNAKE_CASE =   0.2
         _SCREAMING_SNAKE_CASE =   True

         # Model card mush be rendered and saved
         diffusers.utils.hub_utils.create_model_card(__lowerCamelCase						,   model_name="model_name"					)
         self.assertTrue((Path(__lowerCamelCase					) / "README.md").is_file()					)

