






'''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							:   Optional[int]						,		__A							:   Optional[int]      ):
				a_		:  Tuple											=      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}}'''      )
				a_		:  List[str]											=      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							:   List[str]						,		__A							:   DatasetInfo      ):
				a_		:  Union[str, Any]											=      str(__A      )
				dataset_info.write_to_directory(__A      )
				a_		:  List[Any]											=      DatasetInfo.from_directory(__A      )
				assert dataset_info == reloaded
				assert os.path.exists(os.path.join(__A						,		'''dataset_info.json'''      )      )





def 		_UpperCAmelCase   (							):
				a_		:  Optional[int]											=      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						,		)
				a_		:  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)      )
				a_		:  Dict											=      yaml.safe_dump(__A      )
				a_		:  Optional[int]											=      yaml.safe_load(__A      )
				assert dataset_info_yaml_dict == reloaded





def 		_UpperCAmelCase   (							):
				a_		:  List[Any]											=      DatasetInfo()
				a_		:  Dict											=      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							:   List[Any]						,		__A							:   DatasetInfosDict      ):
				a_		:  Union[str, Any]											=      str(__A      )
				dataset_infos_dict.write_to_directory(__A      )
				a_		:  Optional[int]											=      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():
								a_		:  Any											=      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
								a_		:  Optional[int]											=      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'''







import warnings


warnings.warn(
    'memory_utils has been reorganized to utils.memory. Import `find_executable_batchsize` from the main `__init__`: '
    '`from accelerate import find_executable_batch_size` to avoid this warning.',
    FutureWarning,
)




