


import copy
import tempfile
import unittest

from huggingface_hub import HfFolder, delete_repo
from parameterized import parameterized
from requests.exceptions import HTTPError

from transformers import AutoConfig, GenerationConfig
from transformers.testing_utils import TOKEN, USER, is_staging_test




class    UpperCAmelCase					(       unittest.TestCase    ):




			@parameterized.expand([(None,), ("""foo.json""",)]						)
			def   lowerCamelCase_					(						self							:		Optional[Any]       ,       __magic_name__							:		Any						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig(
						    do_sample=__magic_name__       ,       temperature=0.7       ,       length_penalty=1.0       ,       bad_words_ids=[[1, 2, 3], [4, 5]]       ,       )
						with tempfile.TemporaryDirectory() as tmp_dir:
									config.save_pretrained(__magic_name__       ,       config_name=__magic_name__						)
									UpperCamelCase         =					GenerationConfig.from_pretrained(__magic_name__       ,       config_name=__magic_name__						)

						# Checks parameters that were specified
						self.assertEqual(loaded_config.do_sample       ,       __magic_name__						)
						self.assertEqual(loaded_config.temperature       ,       0.7						)
						self.assertEqual(loaded_config.length_penalty       ,       1.0						)
						self.assertEqual(loaded_config.bad_words_ids       ,       [[1, 2, 3], [4, 5]]						)

						# Checks parameters that were not specified (defaults)
						self.assertEqual(loaded_config.top_k       ,       5_0						)
						self.assertEqual(loaded_config.max_length       ,       2_0						)
						self.assertEqual(loaded_config.max_time       ,       __magic_name__						)




			def   lowerCamelCase_					(						self							:		Dict						):







						"""simple docstring"""







						UpperCamelCase         =					AutoConfig.from_pretrained("""gpt2"""						)
						UpperCamelCase         =					GenerationConfig.from_model_config(__magic_name__						)
						UpperCamelCase         =					GenerationConfig()

						# The generation config has loaded a few non-default parameters from the model config
						self.assertNotEqual(__magic_name__       ,       __magic_name__						)

						# One of those parameters is eos_token_id -- check if it matches
						self.assertNotEqual(generation_config_from_model.eos_token_id       ,       default_generation_config.eos_token_id						)
						self.assertEqual(generation_config_from_model.eos_token_id       ,       model_config.eos_token_id						)




			def   lowerCamelCase_					(						self							:		Optional[int]						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig()
						UpperCamelCase         =					{
						    """max_new_tokens""": 1_0_2_4,
						    """foo""": """bar""",
						}
						UpperCamelCase         =					copy.deepcopy(__magic_name__						)
						UpperCamelCase         =					generation_config.update(**__magic_name__						)

						# update_kwargs was not modified (no side effects)
						self.assertEqual(__magic_name__       ,       __magic_name__						)

						# update_kwargs was used to update the config on valid attributes
						self.assertEqual(generation_config.max_new_tokens       ,       1_0_2_4						)

						# `.update()` returns a dictionary of unused kwargs
						self.assertEqual(__magic_name__       ,       {"""foo""": """bar"""}						)




			def   lowerCamelCase_					(						self							:		str						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig()
						UpperCamelCase         =					"""bar"""

						with tempfile.TemporaryDirectory("""test-generation-config"""						) as tmp_dir:
									generation_config.save_pretrained(__magic_name__						)

									UpperCamelCase         =					GenerationConfig.from_pretrained(__magic_name__						)
						# update_kwargs was used to update the config on valid attributes
						self.assertEqual(new_config.foo       ,       """bar"""						)

						UpperCamelCase         =					GenerationConfig.from_model_config(__magic_name__						)
						assert not hasattr(__magic_name__       ,       """foo"""						)  # no new kwargs should be initialized if from config





			def   lowerCamelCase_					(						self							:		Dict						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig()
						self.assertEqual(default_config.temperature       ,       1.0						)
						self.assertEqual(default_config.do_sample       ,       __magic_name__						)
						self.assertEqual(default_config.num_beams       ,       1						)

						UpperCamelCase         =					GenerationConfig(
						    do_sample=__magic_name__       ,       temperature=0.7       ,       length_penalty=1.0       ,       bad_words_ids=[[1, 2, 3], [4, 5]]       ,       )
						self.assertEqual(config.temperature       ,       0.7						)
						self.assertEqual(config.do_sample       ,       __magic_name__						)
						self.assertEqual(config.num_beams       ,       1						)

						with tempfile.TemporaryDirectory() as tmp_dir:
									config.save_pretrained(__magic_name__						)
									UpperCamelCase         =					GenerationConfig.from_pretrained(__magic_name__       ,       temperature=1.0						)

						self.assertEqual(loaded_config.temperature       ,       1.0						)
						self.assertEqual(loaded_config.do_sample       ,       __magic_name__						)
						self.assertEqual(loaded_config.num_beams       ,       1						)  # default value




@is_staging_test
class    UpperCAmelCase					(       unittest.TestCase    ):




			@classmethod
			def   lowerCamelCase_					(						cls							:		Dict						):







						"""simple docstring"""







						UpperCamelCase         =					TOKEN
						HfFolder.save_token(__magic_name__						)




			@classmethod
			def   lowerCamelCase_					(						cls							:		Union[str, Any]						):







						"""simple docstring"""







						try:
									delete_repo(token=cls._token       ,       repo_id="""test-generation-config"""						)
						except HTTPError:
									pass

						try:
									delete_repo(token=cls._token       ,       repo_id="""valid_org/test-generation-config-org"""						)
						except HTTPError:
									pass




			def   lowerCamelCase_					(						self							:		Optional[int]						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig(
						    do_sample=__magic_name__       ,       temperature=0.7       ,       length_penalty=1.0       ,       )
						config.push_to_hub("""test-generation-config"""       ,       use_auth_token=self._token						)

						UpperCamelCase         =					GenerationConfig.from_pretrained(F'{USER}/test-generation-config'						)
						for k, v in config.to_dict().items():
									if k != "transformers_version":
												self.assertEqual(__magic_name__       ,       getattr(__magic_name__       ,       __magic_name__						)						)

        # Reset repo
						delete_repo(token=self._token       ,       repo_id="""test-generation-config"""						)

						# Push to hub via save_pretrained
						with tempfile.TemporaryDirectory() as tmp_dir:
									config.save_pretrained(
									    __magic_name__       ,       repo_id="""test-generation-config"""       ,       push_to_hub=__magic_name__       ,       use_auth_token=self._token						)

						UpperCamelCase         =					GenerationConfig.from_pretrained(F'{USER}/test-generation-config'						)
						for k, v in config.to_dict().items():
									if k != "transformers_version":
												self.assertEqual(__magic_name__       ,       getattr(__magic_name__       ,       __magic_name__						)						)





			def   lowerCamelCase_					(						self							:		int						):







						"""simple docstring"""







						UpperCamelCase         =					GenerationConfig(
						    do_sample=__magic_name__       ,       temperature=0.7       ,       length_penalty=1.0       ,       )
						config.push_to_hub("""valid_org/test-generation-config-org"""       ,       use_auth_token=self._token						)

						UpperCamelCase         =					GenerationConfig.from_pretrained("""valid_org/test-generation-config-org"""						)
						for k, v in config.to_dict().items():
									if k != "transformers_version":
												self.assertEqual(__magic_name__       ,       getattr(__magic_name__       ,       __magic_name__						)						)

        # Reset repo
						delete_repo(token=self._token       ,       repo_id="""valid_org/test-generation-config-org"""						)

						# Push to hub via save_pretrained
						with tempfile.TemporaryDirectory() as tmp_dir:
									config.save_pretrained(
									    __magic_name__       ,       repo_id="""valid_org/test-generation-config-org"""       ,       push_to_hub=__magic_name__       ,       use_auth_token=self._token						)

						UpperCamelCase         =					GenerationConfig.from_pretrained("""valid_org/test-generation-config-org"""						)
						for k, v in config.to_dict().items():
									if k != "transformers_version":
												self.assertEqual(__magic_name__       ,       getattr(__magic_name__       ,       __magic_name__						)						)








from ...utils import is_torch_available, is_transformers_available


if is_transformers_available() and is_torch_available():
			from .pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings, VQDiffusionPipeline




