






def   SCREAMING_SNAKE_CASE       (				snake_case_      :							str     ):
 return credit_card_number.startswith(("34", "35", "37", "4", "5", "6")     )







def   SCREAMING_SNAKE_CASE       (				snake_case_      :							str     ):
 snake_case__				:   Tuple     =						credit_card_number
 snake_case__				:   int     =						0
 snake_case__				:   Optional[Any]     =						len(snake_case_     ) - 2
 for i in range(snake_case_  ,						-1  ,						-2     ):
  #  double the value of every second digit
  snake_case__				:   str     =						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
  snake_case__				:   Union[str, Any]     =						cc_number[:i] + str(snake_case_     ) + cc_number[i + 1 :]
  total += digit

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

 return total % 10 == 0







def   SCREAMING_SNAKE_CASE       (				snake_case_      :							str     ):
 snake_case__				:   List[Any]     =						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(snake_case_     ) <= 16:
  print(F'''{error_message} of its length.'''     )
  return False

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

 if not luhn_validation(snake_case_     ):
  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""")











# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import sys
import warnings
from os.path import abspath, dirname, join


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
__lowerCamelCase      :    Dict   		=   abspath(join(dirname(dirname(__file__)), """src"""))
sys.path.insert(1, git_repo_path)

# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action="""ignore""", category=FutureWarning)







def   SCREAMING_SNAKE_CASE       (				snake_case_      :							str     ):
	from diffusers.utils.testing_utils import pytest_addoption_shared

	pytest_addoption_shared(snake_case_     )







def   SCREAMING_SNAKE_CASE       (				snake_case_      :							Any     ):
	from diffusers.utils.testing_utils import pytest_terminal_summary_main

	snake_case__				:   Optional[int]     =						terminalreporter.config.getoption("--make-reports"     )
	if make_reports:
		pytest_terminal_summary_main(snake_case_  ,						id=snake_case_     )



