





import pytest

from datasets.splits import SplitDict, SplitInfo
from datasets.utils.py_utils import asdict

@pytest.mark.parametrize(
    'split_dict'			,							[
        SplitDict(),
        SplitDict({'train': SplitInfo(name='train'			,							num_bytes=1337			,							num_examples=42			,							dataset_name='my_dataset'     )}     ),
        SplitDict({'train': SplitInfo(name='train'			,							num_bytes=1337			,							num_examples=42     )}     ),
        SplitDict({'train': SplitInfo()}     ),
    ]			,							)
def 							SCREAMING_SNAKE_CASE__       (  snake_case__  :SplitDict     )      ->						Any:
  _lowercase							= split_dict._to_yaml_list()
  assert len(snake_case__     ) == len(snake_case__     )
  _lowercase							= SplitDict._from_yaml_list(snake_case__     )
  for split_name, split_info in split_dict.items():
    # dataset_name field is deprecated, and is therefore not part of the YAML dump
    _lowercase							= None
    # the split name of split_dict takes over the name of the split info object
    _lowercase							= split_name
  assert split_dict == reloaded







@pytest.mark.parametrize(
    'split_info'			,							[SplitInfo(), SplitInfo(dataset_name=snake_case__     ), SplitInfo(dataset_name='my_dataset'     )]     )
def 							SCREAMING_SNAKE_CASE__       (  snake_case__  :List[str]     )      ->						int:
  # For backward compatibility, we need asdict(split_dict) to return split info dictrionaries with the "dataset_name"
  # field even if it's deprecated. This way old versionso of `datasets` can still reload dataset_infos.json files
  _lowercase							= asdict(SplitDict({'train': split_info}     )     )
  assert "dataset_name" in split_dict_asdict["train"]
  assert split_dict_asdict["train"]["dataset_name"] == split_info.dataset_name






from itertools import count

def 							SCREAMING_SNAKE_CASE__       (  snake_case__  :int = 50     )      ->						int:
  _lowercase							= [1] * min_block_length

  for n in count(snake_case__     ):
    fill_count_functions.append(1     )

    for block_length in range(snake_case__			,							n + 1     ):
      for block_start in range(n - block_length     ):
        fill_count_functions[n] += fill_count_functions[
            n - block_start - block_length - 1
        ]

      fill_count_functions[n] += 1

    if fill_count_functions[n] > 100_0000:
      break

  return n


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