


'''simple docstring'''




import os

import pytest
import yaml

from datasets.features.features import Features, Value
from datasets.info import DatasetInfo, DatasetInfosDict

@pytest.mark.parametrize(
    'files'					,   [
        ['full:README.md', 'dataset_infos.json'],
        ['empty:README.md', 'dataset_infos.json'],
        ['dataset_infos.json'],
        ['full:README.md'],
    ]					,   )
def 			__UpperCamelCase    (    _A    :				str					,   _A    :				List[Any]				)    ->      Union[str, Any]:




	"""simple docstring"""





	lowerCAmelCase					:    Optional[int]      							= tmp_path_factory.mktemp('dset_infos_dir'				)
	if "full:README.md" in files:
		with open(dataset_infos_dir / 'README.md'					,   'w'				) as f:
			f.write('---\ndataset_info:\n  dataset_size: 42\n---'				)
	if "empty:README.md" in files:
		with open(dataset_infos_dir / 'README.md'					,   'w'				) as f:
			f.write(''				)
    # we want to support dataset_infos.json for backward compatibility
	if "dataset_infos.json" in files:
		with open(dataset_infos_dir / 'dataset_infos.json'					,   'w'				) as f:
			f.write('{"default": {"dataset_size": 42}}'				)
	lowerCAmelCase					:    Union[str, Any]      							= DatasetInfosDict.from_directory(_A				)
	assert dataset_infos
	assert dataset_infos["default"].dataset_size == 42

@pytest.mark.parametrize(
    'dataset_info'					,   [
        DatasetInfo(),
        DatasetInfo(
            description='foo'					,   features=Features({'a': Value('int32'				)}				)					,   builder_name='builder'					,   config_name='config'					,   version='1.0.0'					,   splits=[{'name': 'train'}]					,   download_size=42					,   ),
    ]					,   )
def 			__UpperCamelCase    (    _A    :				str					,   _A    :				DatasetInfo				)    ->      Optional[int]:




	"""simple docstring"""





	lowerCAmelCase					:    str      							= str(_A				)
	dataset_info.write_to_directory(_A				)
	lowerCAmelCase					:    List[str]      							= DatasetInfo.from_directory(_A				)
	assert dataset_info == reloaded
	assert os.path.exists(os.path.join(_A					,   'dataset_info.json'				)				)

def 			__UpperCamelCase    (    )    ->      List[str]:




	"""simple docstring"""





	lowerCAmelCase					:    Tuple      							= DatasetInfo(
	    description='foo'					,   citation='bar'					,   homepage='https://foo.bar'					,   license='CC0'					,   features=Features({'a': Value('int32'				)}				)					,   post_processed={}					,   supervised_keys=()					,   task_templates=[]					,   builder_name='builder'					,   config_name='config'					,   version='1.0.0'					,   splits=[{'name': 'train', 'num_examples': 42}]					,   download_checksums={}					,   download_size=13_37					,   post_processing_size=4_42					,   dataset_size=12_34					,   size_in_bytes=13_37 + 4_42 + 12_34					,   )
	lowerCAmelCase					:    Optional[int]      							= dataset_info._to_yaml_dict()
	assert sorted(_A				) == sorted(DatasetInfo._INCLUDED_INFO_IN_YAML				)
	for key in DatasetInfo._INCLUDED_INFO_IN_YAML:
		assert key in dataset_info_yaml_dict
		assert isinstance(dataset_info_yaml_dict[key]					,   (list, dict, int, str)				)
	lowerCAmelCase					:    Any      							= yaml.safe_dump(_A				)
	lowerCAmelCase					:    int      							= yaml.safe_load(_A				)
	assert dataset_info_yaml_dict == reloaded

def 			__UpperCamelCase    (    )    ->      Dict:




	"""simple docstring"""





	lowerCAmelCase					:    Union[str, Any]      							= DatasetInfo()
	lowerCAmelCase					:    List[Any]      							= dataset_info._to_yaml_dict()
	assert dataset_info_yaml_dict == {}






@pytest.mark.parametrize(
    'dataset_infos_dict'					,   [
        DatasetInfosDict(),
        DatasetInfosDict({'default': DatasetInfo()}				),
        DatasetInfosDict({'my_config_name': DatasetInfo()}				),
        DatasetInfosDict(
            {
                'default': DatasetInfo(
                    description='foo'					,   features=Features({'a': Value('int32'				)}				)					,   builder_name='builder'					,   config_name='config'					,   version='1.0.0'					,   splits=[{'name': 'train'}]					,   download_size=42					,   )
            }				),
        DatasetInfosDict(
            {
                'v1': DatasetInfo(dataset_size=42				),
                'v2': DatasetInfo(dataset_size=13_37				),
            }				),
    ]					,   )
def 			__UpperCamelCase    (    _A    :				Tuple					,   _A    :				DatasetInfosDict				)    ->      List[Any]:




	"""simple docstring"""





	lowerCAmelCase					:    Tuple      							= str(_A				)
	dataset_infos_dict.write_to_directory(_A				)
	lowerCAmelCase					:    List[str]      							= DatasetInfosDict.from_directory(_A				)

	# the config_name of the dataset_infos_dict take over the attribute
	for config_name, dataset_info in dataset_infos_dict.items():
		lowerCAmelCase					:    Tuple      							= config_name
		# the yaml representation doesn't include fields like description or citation
		# so we just test that we can recover what we can from the yaml
		lowerCAmelCase					:    Optional[Any]      							= DatasetInfo._from_yaml_dict(dataset_info._to_yaml_dict()				)
	assert dataset_infos_dict == reloaded

	if dataset_infos_dict:
		assert os.path.exists(os.path.join(_A					,   'README.md'				)				)




'''simple docstring'''




_lowerCAmelCase  :		List[str]		     =	{str(digit): digit**5 for digit in range(10)}

def 			__UpperCamelCase    (    _A    :				int				)    ->      int:




	"""simple docstring"""





	return sum(DIGITS_FIFTH_POWER[digit] for digit in str(_A				)				)

def 			__UpperCamelCase    (    )    ->      int:




	"""simple docstring"""





	return sum(
	    number
	    for number in range(10_00					,   1_00_00_00				)
	    if number == digits_fifth_powers_sum(_A				)				)


if __name__ == "__main__":
				print(solution())
