



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 	__a					(   lowerCAmelCase_       : List[str]      ,lowerCAmelCase_       : Optional[Any]    )				->			str:






						'''simple docstring'''



						UpperCAmelCase_=       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}}"""    )
						UpperCAmelCase_=       DatasetInfosDict.from_directory(lowerCAmelCase_    )
						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 	__a					(   lowerCAmelCase_       : Optional[int]      ,lowerCAmelCase_       : DatasetInfo    )				->			List[str]:






						'''simple docstring'''



						UpperCAmelCase_=       str(lowerCAmelCase_    )
						dataset_info.write_to_directory(lowerCAmelCase_    )
						UpperCAmelCase_=       DatasetInfo.from_directory(lowerCAmelCase_    )
						assert dataset_info == reloaded
						assert os.path.exists(os.path.join(lowerCAmelCase_      ,"""dataset_info.json"""    )    )



def 	__a					(   )				->			Optional[Any]:






						'''simple docstring'''



						UpperCAmelCase_=       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      ,)
						UpperCAmelCase_=       dataset_info._to_yaml_dict()
						assert sorted(lowerCAmelCase_    ) == 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)    )
						UpperCAmelCase_=       yaml.safe_dump(lowerCAmelCase_    )
						UpperCAmelCase_=       yaml.safe_load(lowerCAmelCase_    )
						assert dataset_info_yaml_dict == reloaded



def 	__a					(   )				->			List[Any]:






						'''simple docstring'''



						UpperCAmelCase_=       DatasetInfo()
						UpperCAmelCase_=       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 	__a					(   lowerCAmelCase_       : Union[str, Any]      ,lowerCAmelCase_       : DatasetInfosDict    )				->			str:






						'''simple docstring'''



						UpperCAmelCase_=       str(lowerCAmelCase_    )
						dataset_infos_dict.write_to_directory(lowerCAmelCase_    )
						UpperCAmelCase_=       DatasetInfosDict.from_directory(lowerCAmelCase_    )

						# the config_name of the dataset_infos_dict take over the attribute
						for config_name, dataset_info in dataset_infos_dict.items():
												UpperCAmelCase_=       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
												UpperCAmelCase_=       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(lowerCAmelCase_      ,"""README.md"""    )    )









__A       =						6_5521



def 	__a					(   lowerCAmelCase_       : str    )				->			int:






						'''simple docstring'''



						UpperCAmelCase_=       1
						UpperCAmelCase_=       0
						for plain_chr in plain_text:
												UpperCAmelCase_=       (a + ord(lowerCAmelCase_    )) % MOD_ADLER
												UpperCAmelCase_=       (b + a) % MOD_ADLER
						return (b << 16) | a




