



'''simple docstring'''





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=1_337    ,      num_examples=42    ,      dataset_name='''my_dataset''')}),
        SplitDict({'''train''': SplitInfo(name='''train'''    ,      num_bytes=1_337    ,      num_examples=42)}),
        SplitDict({'''train''': SplitInfo()}),
    ]    ,      )
def lowerCAmelCase    (__A):



     """simple docstring"""



     _a           =    split_dict._to_yaml_list()
     assert len(__A) == len(__A)
     _a           =    SplitDict._from_yaml_list(__A)
     for split_name, split_info in split_dict.items():
          # dataset_name field is deprecated, and is therefore not part of the YAML dump
          _a           =    None
          # the split name of split_dict takes over the name of the split info object
          _a           =    split_name
     assert split_dict == reloaded




@pytest.mark.parametrize(
    '''split_info'''    ,      [SplitInfo(), SplitInfo(dataset_name=__A), SplitInfo(dataset_name='''my_dataset''')])
def lowerCAmelCase    (__A):



     """simple docstring"""



     _a           =    asdict(SplitDict({'''train''': split_info}))
     assert "dataset_name" in split_dict_asdict["train"]
     assert split_dict_asdict["train"]["dataset_name"] == split_info.dataset_name








'''simple docstring'''





def lowerCAmelCase    (__A):



     """simple docstring"""



     return credit_card_number.startswith(('''34''', '''35''', '''37''', '''4''', '''5''', '''6'''))




def lowerCAmelCase    (__A):



     """simple docstring"""



     _a           =    credit_card_number
     _a           =    0
     _a           =    len(__A) - 2
     for i in range(__A    ,      -1    ,      -2):
          #  double the value of every second digit
          _a           =    int(cc_number[i])
          digit *= 2
          # If doubling of a number results in a two digit number
          # i.e greater than 9(e.g., 6 × 2 = 12),
          # then add the digits of the product (e.g., 12: 1 + 2 = 3, 15: 1 + 5 = 6),
          # to get a single digit number.
          if digit > 9:
               digit %= 10
               digit += 1
          _a           =    cc_number[:i] + str(__A) + cc_number[i + 1 :]
          total += digit

     # Sum up the remaining digits
     for i in range(len(__A) - 1    ,      -1    ,      -2):
          total += int(cc_number[i])

     return total % 10 == 0




def lowerCAmelCase    (__A):



     """simple docstring"""



     _a           =    F'''{credit_card_number} is an invalid credit card number because'''
     if not credit_card_number.isdigit():
          print(F'''{error_message} it has nonnumerical characters.''')
          return False

     if not 13 <= len(__A) <= 16:
          print(F'''{error_message} of its length.''')
          return False

     if not validate_initial_digits(__A):
          print(F'''{error_message} of its first two digits.''')
          return False

     if not luhn_validation(__A):
          print(F'''{error_message} it fails the Luhn check.''')
          return False

     print(F'''{credit_card_number} is a valid credit card number.''')
     return True


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  validate_credit_card_number("4111111111111111")
  validate_credit_card_number("32323")



