

from abc import ABC, abstractmethod
from typing import Optional, Union

from .. import Dataset, DatasetDict, Features, IterableDataset, IterableDatasetDict, NamedSplit
from ..utils.typing import NestedDataStructureLike, PathLike







class 					__lowercase  (						_SCREAMING_SNAKE_CASE				):





							"""simple docstring"""

							def __init__(					self    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = False    ,						__UpperCAmelCase = False    ,						__UpperCAmelCase = None    ,						**__UpperCAmelCase    ,						)		->       List[Any]:
														A      :					Optional[int]      		=					path_or_paths
														A      :					Any      		=					split if split or isinstance(__UpperCAmelCase    ,						__UpperCAmelCase						) else '''train'''
														A      :					Tuple      		=					features
														A      :					List[str]      		=					cache_dir
														A      :					int      		=					keep_in_memory
														A      :					Any      		=					streaming
														A      :					int      		=					num_proc
														A      :					Tuple      		=					kwargs






							@abstractmethod
							def       snake_case			(					self						)		->       Union[Dataset, DatasetDict, IterableDataset, IterableDatasetDict]:
														pass







class 					__lowercase  (						_SCREAMING_SNAKE_CASE				):





							"""simple docstring"""

							def __init__(					self    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = None    ,						__UpperCAmelCase = False    ,						__UpperCAmelCase = False    ,						__UpperCAmelCase = None    ,						**__UpperCAmelCase    ,						)		->       Optional[Any]:
														A      :					Union[str, Any]      		=					features
														A      :					Optional[Any]      		=					cache_dir
														A      :					List[Any]      		=					keep_in_memory
														A      :					Optional[Any]      		=					streaming
														A      :					Optional[int]      		=					num_proc
														A      :					int      		=					kwargs






							@abstractmethod
							def       snake_case			(					self						)		->       Union[Dataset, IterableDataset]:
														pass









def        snake_case__		(    lowerCamelCase_ = 1000		):
							return sum(e for e in range(3     ,				lowerCamelCase_		) if e % 3 == 0 or e % 5 == 0		)


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






