


'''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 (						UpperCamelCase__	, UpperCamelCase__   ):
   UpperCAmelCase__					:   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}}"""   )
   UpperCAmelCase__					:   Any       				=       DatasetInfosDict.from_directory(UpperCamelCase__   )
   assert dataset_infos
   assert dataset_infos["default"].dataset_size == 4_2







@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=4_2	, ),
    ]	, )
def       _UpperCamelCase (						UpperCamelCase__	, UpperCamelCase__   ):
   UpperCAmelCase__					:   str       				=       str(UpperCamelCase__   )
   dataset_info.write_to_directory(UpperCamelCase__   )
   UpperCAmelCase__					:   Optional[Any]       				=       DatasetInfo.from_directory(UpperCamelCase__   )
   assert dataset_info == reloaded
   assert os.path.exists(os.path.join(UpperCamelCase__	, """dataset_info.json"""   )   )







def       _UpperCamelCase (						):
   UpperCAmelCase__					:   List[str]       				=       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""": 4_2}]	, download_checksums={}	, download_size=1_3_3_7	, post_processing_size=4_4_2	, dataset_size=1_2_3_4	, size_in_bytes=1_3_3_7 + 4_4_2 + 1_2_3_4	, )
   UpperCAmelCase__					:   Dict       				=       dataset_info._to_yaml_dict()
   assert sorted(UpperCamelCase__   ) == 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__					:   List[str]       				=       yaml.safe_dump(UpperCamelCase__   )
   UpperCAmelCase__					:   Dict       				=       yaml.safe_load(UpperCamelCase__   )
   assert dataset_info_yaml_dict == reloaded







def       _UpperCamelCase (						):
   UpperCAmelCase__					:   Any       				=       DatasetInfo()
   UpperCAmelCase__					:   Optional[int]       				=       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=4_2	, )
            }   ),
        DatasetInfosDict(
            {
                """v1""": DatasetInfo(dataset_size=4_2   ),
                """v2""": DatasetInfo(dataset_size=1_3_3_7   ),
            }   ),
    ]	, )
def       _UpperCamelCase (						UpperCamelCase__	, UpperCamelCase__   ):
   UpperCAmelCase__					:   Dict       				=       str(UpperCamelCase__   )
   dataset_infos_dict.write_to_directory(UpperCamelCase__   )
   UpperCAmelCase__					:   int       				=       DatasetInfosDict.from_directory(UpperCamelCase__   )

   # the config_name of the dataset_infos_dict take over the attribute
   for config_name, dataset_info in dataset_infos_dict.items():
      UpperCAmelCase__					:   Union[str, 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
      UpperCAmelCase__					:   Tuple       				=       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(UpperCamelCase__	, """README.md"""   )   )



'''simple docstring'''



def       _UpperCamelCase (						UpperCamelCase__ = 4_0_0_0_0_0_0   ):
			UpperCAmelCase__					:   List[str]       				=       [0, 1]
			UpperCAmelCase__					:   Any       				=       0
			while fib[i] <= n:
						fib.append(fib[i] + fib[i + 1]   )
						if fib[i + 2] > n:
									break
						i += 1
			UpperCAmelCase__					:   str       				=       0
			for j in range(len(UpperCamelCase__   ) - 1   ):
						if fib[j] % 2 == 0:
									total += fib[j]

			return total


if __name__ == "__main__":
		print(f"""{solution() = }""")