�
L�g� � �� � d Z ddlZddlmZ edefd�� � Zedefd�� � Zedefd�� � Zedefd �� � Zedefd
�� � Z edefd�� � Z
edefd�� � Zedefd
�� � ZdS )zCard.� N� )� validator�valuec �� � | sdS t t t | � � � � }t |ddd� � � }t d� |ddd� D � � � � }||z dz dk S # t $ r Y dS w xY w)ai Return whether or not given value is a valid generic card number.
This validator is based on [Luhn's algorithm][1].
[1]: https://github.com/mmcloughlin/luhn
Examples:
>>> card_number('4242424242424242')
# Output: True
>>> card_number('4242424242424241')
# Output: ValidationError(func=card_number, args={'value': '4242424242424241'})
Args:
value:
Generic card number string to validate
Returns:
(Literal[True]): If `value` is a valid generic card number.
(ValidationError): If `value` is an invalid generic card number.
F�����N�����c 3 �V K � | ]$}t t d |z d� � � � V � �%dS )� �
N)�sum�divmod)�.0�ds �_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/validators/card.py� <genexpr>zcard_number.<locals>.<genexpr>% s8 � � � �F�F�!�s�6�!�a�%��,�,�-�-�F�F�F�F�F�F� r r )�list�map�intr �
ValueError)r �digits�odd_sum�even_sums r �card_numberr
s� � �, � ��u���c�#�u�o�o�&�&���f�R�V��V�n�%�%���F�F�v�b�f�"�f�~�F�F�F�F�F���(�"�b�(�A�-�-��� � � ��u�u����s �A'A. �.
A<�;A<c � � t j d� � }t | � � o't | � � dk o|� | � � S )a� Return whether or not given value is a valid Visa card number.
Examples:
>>> visa('4242424242424242')
# Output: True
>>> visa('2223003122003222')
# Output: ValidationError(func=visa, args={'value': '2223003122003222'})
Args:
value:
Visa card number string to validate
Returns:
(Literal[True]): If `value` is a valid Visa card number.
(ValidationError): If `value` is an invalid Visa card number.
z^4� ��re�compiler �len�match�r �patterns r �visar$ + sB � �$ �j����G��u���K�#�e�*�*��"2�K�w�}�}�U�7K�7K�Kr c � � t j d� � }t | � � o't | � � dk o|� | � � S )a
Return whether or not given value is a valid Mastercard card number.
Examples:
>>> mastercard('5555555555554444')
# Output: True
>>> mastercard('4242424242424242')
# Output: ValidationError(func=mastercard, args={'value': '4242424242424242'})
Args:
value:
Mastercard card number string to validate
Returns:
(Literal[True]): If `value` is a valid Mastercard card number.
(ValidationError): If `value` is an invalid Mastercard card number.
z#^(51|52|53|54|55|22|23|24|25|26|27)r r r"