






'''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        a__     (      lowerCamelCase    ):
     '''simple docstring'''







     _snake_case							   =	'config.json'






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







class        a__     (      lowerCamelCase    ):
     '''simple docstring'''







     _snake_case							   =	'config.json'






     @register_to_config
     def __init__(self     :						Union[str, Any]					,					lowercase__     :						Optional[int]=2					,					lowercase__     :						int=5					,					lowercase__     :						Any=(2, 5)					,					lowercase__     :						Tuple="for diffusion"					,					lowercase__     :						Optional[int]=[1, 3]					,					)	->							Tuple:
           pass







class        a__     (      lowerCamelCase    ):
     '''simple docstring'''







     _snake_case							   =	'config.json'






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







class        a__     (      lowerCamelCase    ):
     '''simple docstring'''







     _snake_case							   =	'config.json'






     @register_to_config
     def __init__(self     :						Union[str, Any]					,					lowercase__     :						Tuple=2					,					lowercase__     :						Optional[Any]=5					,					lowercase__     :						Tuple=(2, 5)					,					lowercase__     :						str="for diffusion"					,					lowercase__     :						Dict=[1, 5]					,					lowercase__     :						str=[5, 4]					,					)	->							Optional[Any]:
           pass







class        a__     (      unittest.TestCase    ):
     '''simple docstring'''







     def      _UpperCamelCase (self     :						Dict       )	->							Optional[Any]:
           with self.assertRaises(lowercase__       ):
                 ConfigMixin.load_config("dummy_path"       )






     def      _UpperCamelCase (self     :						Optional[Any]       )	->							Union[str, Any]:
           __A		 =   SampleObject()
           __A		 =   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
           __A		 =   SampleObject(_name_or_path="lalala"       )
           __A		 =   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
           __A		 =   SampleObject(c=6       )
           __A		 =   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.
           __A		 =   SampleObject(1					,					c=6       )
           __A		 =   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      _UpperCamelCase (self     :						Union[str, Any]       )	->							Any:
           __A		 =   SampleObject()
           __A		 =   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(lowercase__       )
                 __A		 =   SampleObject.from_config(SampleObject.load_config(lowercase__       )       )
                 __A		 =   new_obj.config

           # unfreeze configs
           __A		 =   dict(lowercase__       )
           __A		 =   dict(lowercase__       )

           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      _UpperCamelCase (self     :						str       )	->							int:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

           with CaptureLogger(lowercase__       ) as cap_logger:
                 __A		 =   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      _UpperCamelCase (self     :						List[Any]       )	->							Optional[Any]:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

           with CaptureLogger(lowercase__       ) as cap_logger:
                 __A		 =   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      _UpperCamelCase (self     :						Optional[int]       )	->							Any:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

           with CaptureLogger(lowercase__       ) as cap_logger:
                 __A		 =   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      _UpperCamelCase (self     :						Tuple       )	->							Optional[Any]:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

           with CaptureLogger(lowercase__       ) as cap_logger:
                 __A		 =   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      _UpperCamelCase (self     :						Optional[Any]       )	->							List[Any]:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

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

           with CaptureLogger(lowercase__       ) as cap_logger_a:
                 __A		 =   DDPMScheduler.from_pretrained("google/ddpm-celebahq-256"					,					beta_start=88       )

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

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






     def      _UpperCamelCase (self     :						Optional[int]       )	->							str:
           __A		 =   logging.get_logger("diffusers.configuration_utils"       )
           # 30 for warning
           logger.setLevel(30       )

           with CaptureLogger(lowercase__       ) as cap_logger:
                 __A		 =   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      _UpperCamelCase (self     :						Optional[int]       )	->							Union[str, Any]:
           # 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],

           __A		 =   SampleObject()

           __A		 =   {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(lowercase__       )

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

                 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`
           __A		 =   SampleObjecta.from_config(config.config       )
           assert new_config.f == [5, 4]

           config.config._use_default_values.pop()
           __A		 =   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 inspect
import os
import unittest

import torch

import accelerate
from accelerate import debug_launcher
from accelerate.test_utils import (
    execute_subprocess_async,
    require_cpu,
    require_multi_gpu,
    require_single_gpu,
    test_sync,
)
from accelerate.utils import patch_environment






class        a__     (      unittest.TestCase    ):
     '''simple docstring'''







     def      _UpperCamelCase (self     :						int       )	->							Optional[int]:
           __A		 =   inspect.getfile(accelerate.test_utils       )
           __A		 =   os.path.sep.join(mod_file.split(os.path.sep       )[:-1] + ["scripts", "test_sync.py"]       )






     @require_cpu
     def      _UpperCamelCase (self     :						str       )	->							Optional[Any]:
           debug_launcher(test_sync.main					,					num_processes=1       )






     @require_cpu
     def      _UpperCamelCase (self     :						Union[str, Any]       )	->							Optional[Any]:
           debug_launcher(test_sync.main       )






     @require_single_gpu
     def      _UpperCamelCase (self     :						Union[str, Any]       )	->							List[str]:
           test_sync.main()






     @require_multi_gpu
     def      _UpperCamelCase (self     :						Optional[int]       )	->							List[str]:
           print(f"Found {torch.cuda.device_count()} devices."       )
           __A		 =   ["torchrun", f"--nproc_per_node={torch.cuda.device_count()}", self.test_file_path]
           with patch_environment(omp_num_threads=1       ):
                 execute_subprocess_async(lowercase__					,					env=os.environ.copy()       )


