o
    7D©i´  ã                   @   s&   d Z ddlmZ edefdd„ƒZdS )zRussia.é    )Ú	validatorÚvaluec                 C   s,  | sdS z‡t tt| ƒƒ}t|ƒdkr8g d¢}tdd„ t||ƒD ƒƒd }|dkr1|d |d kW S ||d kW S t|ƒd	kr‰g d
¢}tdd„ t||ƒD ƒƒd }g d¢}tdd„ t||ƒD ƒƒd }|dkro|d |d kW S |dkr‚||d ko€|d |d kW S ||d kW S W dS  ty•   Y dS w )aœ  Validate a Russian INN (Taxpayer Identification Number).

    The INN can be either 10 digits (for companies) or 12 digits (for individuals).
    The function checks both the length and the control digits according to Russian tax rules.

    Examples:
        >>> ru_inn('500100732259')  # Valid 12-digit INN
        True
        >>> ru_inn('7830002293')    # Valid 10-digit INN
        True
        >>> ru_inn('1234567890')    # Invalid INN
        ValidationError(func=ru_inn, args={'value': '1234567890'})

    Args:
        value: Russian INN string to validate. Can contain only digits.

    Returns:
        (Literal[True]): If `value` is a valid Russian INN.
        (ValidationError): If `value` is an invalid Russian INN.

    Note:
        The validation follows the official algorithm:
        - For 10-digit INN: checks 10th control digit
        - For 12-digit INN: checks both 11th and 12th control digits
    Fé
   )
é   é   r   é   é   é	   r   é   é   r   c                 S   ó   g | ]\}}|| ‘qS © r   ©Ú.0ÚdÚwr   r   úK/var/www/Datamplify/venv/lib/python3.10/site-packages/validators/i18n/ru.pyÚ
<listcomp>)   ó    zru_inn.<locals>.<listcomp>é   r	   éÿÿÿÿé   )é   r   r   r   r   r   r	   r   r
   r   r   r   c                 S   r   r   r   r   r   r   r   r   2   r   )r   r   r   r   r   r   r   r	   r   r
   r   r   c                 S   r   r   r   r   r   r   r   r   4   r   éþÿÿÿ)ÚlistÚmapÚintÚlenÚsumÚzipÚ
ValueError)r   ÚdigitsÚweight_coefsÚcontrol_numberÚweight_coefs1Úcontrol_number1Úweight_coefs2Úcontrol_number2r   r   r   Úru_inn   s:   ÿÿ
ýÿÿÿý
ûÿr(   N)Ú__doc__Úvalidators.utilsr   Ústrr(   r   r   r   r   Ú<module>   s    