





'''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(__lowerCamelCase     ,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 							UpperCAmelCase_  (						__lowerCamelCase : Any     ,__lowerCamelCase : Optional[int]			):
   lowercase_      :List[str]         =			_distribute_shards(**__lowerCamelCase			)
   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 							UpperCAmelCase_  (						__lowerCamelCase : str     ,__lowerCamelCase : Optional[Any]     ,__lowerCamelCase : Union[str, Any]			):
   lowercase_      :List[Any]         =			_split_gen_kwargs(__lowerCamelCase     ,__lowerCamelCase			)
   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 							UpperCAmelCase_  (						__lowerCamelCase : Optional[Any]     ,__lowerCamelCase : List[str]			):
   if expected is RuntimeError:
      with pytest.raises(__lowerCamelCase			):
         _number_of_shards_in_gen_kwargs(__lowerCamelCase			)
   else:
      lowercase_      :Union[str, Any]         =			_number_of_shards_in_gen_kwargs(__lowerCamelCase			)
      assert out == expected









'''simple docstring'''


import sys

lowerCAmelCase :					List[Any] 							=(
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)
def 							UpperCAmelCase_  (						__lowerCamelCase : str			):
   lowercase_      :List[str]         =			1
   for digit in s:
      product *= int(__lowerCamelCase			)
   return product
def 							UpperCAmelCase_  (						__lowerCamelCase : str = N			):
   lowercase_      :Any         =			-sys.maxsize - 1
   lowercase_      :int         =			n[:13]
   lowercase_      :Optional[int]         =			13
   while cur_index < len(__lowerCamelCase			) - 13:
      if int(n[cur_index]			) >= int(substr[0]			):
         lowercase_      :str         =			substr[1:] + n[cur_index]
         cur_index += 1
      else:
         lowercase_      :List[str]         =			max(__lowerCamelCase     ,str_eval(__lowerCamelCase			)			)
         lowercase_      :Any         =			n[cur_index : cur_index + 13]
         cur_index += 13
   return largest_product


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


