


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


snake_case				:    List[Any]       				=     {
    '''configuration_conditional_detr''': [
        '''CONDITIONAL_DETR_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''ConditionalDetrConfig''',
        '''ConditionalDetrOnnxConfig''',
    ]
}

try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case				:    str       				=     ['''ConditionalDetrFeatureExtractor''']
     snake_case				:    List[str]       				=     ['''ConditionalDetrImageProcessor''']

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case				:    str       				=     [
         '''CONDITIONAL_DETR_PRETRAINED_MODEL_ARCHIVE_LIST''',
         '''ConditionalDetrForObjectDetection''',
         '''ConditionalDetrForSegmentation''',
         '''ConditionalDetrModel''',
         '''ConditionalDetrPreTrainedModel''',
     ]


if TYPE_CHECKING:
     from .configuration_conditional_detr import (
         CONDITIONAL_DETR_PRETRAINED_CONFIG_ARCHIVE_MAP,
         ConditionalDetrConfig,
         ConditionalDetrOnnxConfig,
     )

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_conditional_detr import ConditionalDetrFeatureExtractor
          from .image_processing_conditional_detr import ConditionalDetrImageProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_conditional_detr import (
              CONDITIONAL_DETR_PRETRAINED_MODEL_ARCHIVE_LIST,
              ConditionalDetrForObjectDetection,
              ConditionalDetrForSegmentation,
              ConditionalDetrModel,
              ConditionalDetrPreTrainedModel,
          )

else:
     import sys

     snake_case				:    List[str]       				=     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







"""simple docstring"""





def       lowerCamelCase__		(			__snake_case	)							->		bool:


					"""simple docstring"""





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



def       lowerCamelCase__		(			__snake_case	)							->		bool:


					"""simple docstring"""





					_UpperCamelCase							 =  credit_card_number
					_UpperCamelCase							 =  0
					_UpperCamelCase							 =  len(__snake_case	) - 2
					for i in range(__snake_case,     -1,     -2	):
										#  double the value of every second digit
										_UpperCamelCase							 =  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
										_UpperCamelCase							 =  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       lowerCamelCase__		(			__snake_case	)							->		bool:


					"""simple docstring"""





					_UpperCamelCase							 =  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""")






