o
    7Di8                     @   sJ   d Z ddlZddlmZ defddZdefd	d
ZedefddZdS )zIBAN.    N   )	validatorcharc                 C   s$   |   r| S tdt|  td S )zA=10, B=11, ..., Z=35.
   A)isdigitstrord)r    r
   H/var/www/Datamplify/venv/lib/python3.10/site-packages/validators/iban.py_char_value
   s   $r   valuec                 C   s8   | dd | dd  }t ddd |D d dkS )z0Check if the value string passes the mod97-test.   N c                 s   s    | ]}t |V  qd S )N)r   ).0r   r
   r
   r   	<genexpr>   s    z_mod_check.<locals>.<genexpr>a   r   )intjoin)r   
rearrangedr
   r
   r   
_mod_check   s    r   c                C   s    | rt d| t jot| S dS )a  Return whether or not given value is a valid IBAN code.

    Examples:
        >>> iban('DE29100500001061045672')
        True
        >>> iban('123456')
        ValidationError(func=iban, args={'value': '123456'})

    Args:
        value:
            IBAN string to validate.

    Returns:
        (Literal[True]): If `value` is a valid IBAN code.
        (ValidationError): If `value` is an invalid IBAN code.
    z!^[a-z]{2}[0-9]{2}[a-z0-9]{11,30}$F)rematch
IGNORECASEr   )r   r
   r
   r   iban   s
   r   )__doc__r   utilsr   r   r   r   r   r
   r
   r
   r   <module>   s    