"""simple docstring"""







import pytest

from datasets.utils.sharding import _distribute_shards, _number_of_shards_in_gen_kwargs, _split_gen_kwargs



@pytest.mark.parametrize(
    'kwargs, expected'	,     [
        ({'num_shards': 0, 'max_num_jobs': 1}, []),
        ({'num_shards': 10, 'max_num_jobs': 1}, [range(10 )]),
        ({'num_shards': 10, 'max_num_jobs': 10}, [range(__SCREAMING_SNAKE_CASE	,     i + 1 ) for i in range(10 )]),
        ({'num_shards': 1, 'max_num_jobs': 10}, [range(1 )]),
        ({'num_shards': 10, 'max_num_jobs': 3}, [range(0	,     4 ), range(4	,     7 ), range(7	,     10 )]),
        ({'num_shards': 3, 'max_num_jobs': 10}, [range(0	,     1 ), range(1	,     2 ), range(2	,     3 )]),
    ]	,     )
def      lowercase__(			__SCREAMING_SNAKE_CASE				:	Union[str, Any]	,     __SCREAMING_SNAKE_CASE				:	Optional[int] ):
     lowercase_      :							Union[str, Any]						=      _distribute_shards(**__SCREAMING_SNAKE_CASE )
     assert out == expected



@pytest.mark.parametrize(
    'gen_kwargs, max_num_jobs, expected'	,     [
        ({'foo': 0}, 10, [{'foo': 0}]),
        ({'shards': [0, 1, 2, 3]}, 1, [{'shards': [0, 1, 2, 3]}]),
        ({'shards': [0, 1, 2, 3]}, 4, [{'shards': [0]}, {'shards': [1]}, {'shards': [2]}, {'shards': [3]}]),
        ({'shards': [0, 1]}, 4, [{'shards': [0]}, {'shards': [1]}]),
        ({'shards': [0, 1, 2, 3]}, 2, [{'shards': [0, 1]}, {'shards': [2, 3]}]),
    ]	,     )
def      lowercase__(			__SCREAMING_SNAKE_CASE				:	Any	,     __SCREAMING_SNAKE_CASE				:	int	,     __SCREAMING_SNAKE_CASE				:	Optional[int] ):
     lowercase_      :							Union[str, Any]						=      _split_gen_kwargs(__SCREAMING_SNAKE_CASE	,     __SCREAMING_SNAKE_CASE )
     assert out == expected







@pytest.mark.parametrize(
    'gen_kwargs, expected'	,     [
        ({'foo': 0}, 1),
        ({'shards': [0]}, 1),
        ({'shards': [0, 1, 2, 3]}, 4),
        ({'shards': [0, 1, 2, 3], 'foo': 0}, 4),
        ({'shards': [0, 1, 2, 3], 'other': (0, 1)}, 4),
        ({'shards': [0, 1, 2, 3], 'shards2': [0, 1]}, RuntimeError),
    ]	,     )
def      lowercase__(			__SCREAMING_SNAKE_CASE				:	List[str]	,     __SCREAMING_SNAKE_CASE				:	Union[str, Any] ):
     if expected is RuntimeError:
          with pytest.raises(__SCREAMING_SNAKE_CASE ):
               _number_of_shards_in_gen_kwargs(__SCREAMING_SNAKE_CASE )
     else:
          lowercase_      :							List[Any]						=      _number_of_shards_in_gen_kwargs(__SCREAMING_SNAKE_CASE )
          assert out == expected






'''simple docstring'''



def        UpperCAmelCase (    A	:					int					):
							if not isinstance(A       ,		A					):
														SCREAMING_SNAKE_CASE       :   List[str]         =      F"""Input value of [number={number}] must be an integer"""
														raise TypeError(A					)
							if number < 0:
														return False
							SCREAMING_SNAKE_CASE       :   List[str]         =      number * number
							while number > 0:
														if number % 10 != number_square % 10:
																					return False
														number //= 10
														number_square //= 10
							return True


if __name__ == "__main__":
							import doctest

							doctest.testmod()




