





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        _UpperCamelCase				(						__lowerCamelCase			):


			"""simple docstring"""






			__a  :			List[Any]      			=						"config.json"





			@register_to_config
			def __init__(       self				,       lowerCAmelCase__=2				,       lowerCAmelCase__=5				,       lowerCAmelCase__=(2, 5)				,       lowerCAmelCase__="for diffusion"				,       lowerCAmelCase__=[1, 3]				,       )					-> Any:

							'''simple docstring'''


							pass




class        _UpperCamelCase				(						__lowerCamelCase			):


			"""simple docstring"""






			__a  :			List[str]      			=						"config.json"





			@register_to_config
			def __init__(       self				,       lowerCAmelCase__=2				,       lowerCAmelCase__=5				,       lowerCAmelCase__=(2, 5)				,       lowerCAmelCase__="for diffusion"				,       lowerCAmelCase__=[1, 3]				,       )					-> List[str]:

							'''simple docstring'''


							pass




class        _UpperCamelCase				(						__lowerCamelCase			):


			"""simple docstring"""






			__a  :			Optional[Any]      			=						"config.json"





			@register_to_config
			def __init__(       self				,       lowerCAmelCase__=2				,       lowerCAmelCase__=5				,       lowerCAmelCase__=(2, 5)				,       lowerCAmelCase__="for diffusion"				,       lowerCAmelCase__=[1, 3]				,       lowerCAmelCase__=[1, 3]				,       )					-> Any:

							'''simple docstring'''


							pass




class        _UpperCamelCase				(						__lowerCamelCase			):


			"""simple docstring"""






			__a  :			List[Any]      			=						"config.json"





			@register_to_config
			def __init__(       self				,       lowerCAmelCase__=2				,       lowerCAmelCase__=5				,       lowerCAmelCase__=(2, 5)				,       lowerCAmelCase__="for diffusion"				,       lowerCAmelCase__=[1, 5]				,       lowerCAmelCase__=[5, 4]				,       )					-> List[Any]:

							'''simple docstring'''


							pass




class        _UpperCamelCase				(						unittest.TestCase			):


			"""simple docstring"""






			def 	_SCREAMING_SNAKE_CASE      (       self						)					-> Optional[Any]:

							'''simple docstring'''


							with self.assertRaises(_UpperCamelCase						):
											ConfigMixin.load_config('''dummy_path'''						)





			def 	_SCREAMING_SNAKE_CASE      (       self						)					-> List[str]:

							'''simple docstring'''


							__lowercase			      =							SampleObject()
							__lowercase			      =							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
							__lowercase			      =							SampleObject(_name_or_path='''lalala'''						)
							__lowercase			      =							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
							__lowercase			      =							SampleObject(c=6						)
							__lowercase			      =							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.
							__lowercase			      =							SampleObject(1				,       c=6						)
							__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> Tuple:

							'''simple docstring'''


							__lowercase			      =							SampleObject()
							__lowercase			      =							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(_UpperCamelCase						)
											__lowercase			      =							SampleObject.from_config(SampleObject.load_config(_UpperCamelCase						)						)
											__lowercase			      =							new_obj.config

							# unfreeze configs
							__lowercase			      =							dict(_UpperCamelCase						)
							__lowercase			      =							dict(_UpperCamelCase						)

							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> Union[str, Any]:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

							with CaptureLogger(_UpperCamelCase						) as cap_logger:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> Optional[Any]:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

							with CaptureLogger(_UpperCamelCase						) as cap_logger:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> int:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

							with CaptureLogger(_UpperCamelCase						) as cap_logger:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> Optional[int]:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

							with CaptureLogger(_UpperCamelCase						) as cap_logger:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> List[str]:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

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

							with CaptureLogger(_UpperCamelCase						) as cap_logger_a:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> Optional[int]:

							'''simple docstring'''


							__lowercase			      =							logging.get_logger('''diffusers.configuration_utils'''						)
							# 30 for warning
							logger.setLevel(30						)

							with CaptureLogger(_UpperCamelCase						) as cap_logger:
											__lowercase			      =							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 	_SCREAMING_SNAKE_CASE      (       self						)					-> str:

							'''simple docstring'''


							__lowercase			      =							SampleObject()

							__lowercase			      =							{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(_UpperCamelCase						)

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

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

							config.config._use_default_values.pop()
							__lowercase			      =							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]
import json
import os
import tempfile

import datasets
from utils import generate_example_dataset, get_duration


__a  :					int          =  5_0_0_0_0_0

__a   ,						__a  :					Any          =  os.path.split(__file__)
__a  :					Dict          =  os.path.join(RESULTS_BASEPATH, """results""", RESULTS_FILENAME.replace(""".py""", """.json"""))





@get_duration
def     UpperCAmelCase						(   lowercase							):







				"""simple docstring"""



				__lowercase			      =							dataset.select(range(0							,      len(lowercase							)							,      2							)							)





@get_duration
def     UpperCAmelCase						(   lowercase							):







				"""simple docstring"""



				__lowercase			      =							dataset.sort('''numbers'''							)





@get_duration
def     UpperCAmelCase						(   lowercase							):







				"""simple docstring"""



				__lowercase			      =							dataset.shuffle()





@get_duration
def     UpperCAmelCase						(   lowercase							):







				"""simple docstring"""



				__lowercase			      =							dataset.train_test_split(0.1							)





@get_duration
def     UpperCAmelCase						(   lowercase							,      lowercase=10							):







				"""simple docstring"""



				for shard_id in range(lowercase							):
								__lowercase			      =							dataset.shard(lowercase							,      lowercase							)





def     UpperCAmelCase						(   ):







				"""simple docstring"""



				__lowercase			      =							{'''num examples''': SPEED_TEST_N_EXAMPLES}
				__lowercase			      =							(select, sort, shuffle, train_test_split, shard)
				with tempfile.TemporaryDirectory() as tmp_dir:
								print('''generating dataset'''							)
								__lowercase			      =							datasets.Features({'''text''': datasets.Value('''string'''							), '''numbers''': datasets.Value('''float32'''							)}							)
								__lowercase			      =							generate_example_dataset(
								    os.path.join(lowercase							,      '''dataset.arrow'''							)							,      lowercase							,      num_examples=lowercase							)
								print('''Functions'''							)
								for func in functions:
												print(func.__name__							)
												__lowercase			      =							func(lowercase							)

				with open(lowercase							,      '''wb'''							) as f:
								f.write(json.dumps(lowercase							).encode('''utf-8'''							)							)


if __name__ == "__main__":  # useful to run the profiler
		benchmark_indices_mapping()