
    Ii7                     P    S r SSKrSSKJr  S\4S jrS\4S jr\S\4S	 j5       rg)
zIBAN.    N   )	validatorcharc                 v    U R                  5       (       a  U $ [        S[        U 5      -   [        S5      -
  5      $ )zA=10, B=11, ..., Z=35.
   A)isdigitstrord)r   s    5/venv/lib/python3.13/site-packages/validators/iban.py_char_valuer   
   s-    <<>>4Es2D	>CH+D'EE    valuec                 f    U SS U SS -   n[        SR                  S U 5       5      5      S-  S:H  $ )z0Check if the value string passes the mod97-test.   N c              3   8   #    U  H  n[        U5      v   M     g 7f)N)r   ).0r   s     r   	<genexpr>_mod_check.<locals>.<genexpr>   s     @ZT{4((Zs   a   r   )intjoin)r   
rearrangeds     r   
_mod_checkr      s>     qrU2AY&Jrww@Z@@ABF!KKr   c                    U (       a8  [         R                  " SU [         R                  5      =(       a    [        U 5      $ S$ )ap  Return whether or not given value is a valid IBAN code.

Examples:
    >>> iban('DE29100500001061045672')
    # Output: True
    >>> iban('123456')
    # Output: ValidationError(func=iban, ...)

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   s    r   ibanr       s9    (  
6r}}	M	cR\]bRc r   )__doc__r   utilsr   r
   r   r   r     r   r   <module>r$      sI     
 Fc F
Lc L   r   