Ë
    Ã?Æi  ã                  óV   — d Z ddlmZ ddl­ ddlmZmZ dd„Zdd„Zdd„Z	dd„Z
dd	„Zy
)u  Ð˜Ð�Ð� (Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð½Ð°Ð»Ð¾Ð³Ð¾Ð¿Ð»Ð°Ñ‚ÐµÐ»ÑŒÑ‰Ð¸ÐºÐ°, Russian tax identifier).

The Indentifikatzionny nomer nalogoplatel'shchika is a Russian tax
identification number that consists 10 digits for companies and 12 digits for
persons.

>>> validate('123456789047')
'123456789047'
>>> validate('1234567894')
'1234567894'
>>> validate('123456789037')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> validate('1234567895')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
é    )Úannotations)Ú*)ÚcleanÚisdigitsc                ó6   — t        | d«      j                  «       S )zˆConvert the number to the minimal representation. This strips the
    number of any valid separators and removes surrounding whitespace.ú )r   Ústrip©Únumbers    úT/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/ru/inn.pyÚcompactr   /   s   € ô �˜Ó×#Ñ#Ó%Ð%ó    c           	     ó\   — d}t        t        d„ t        || «      D «       «      dz  dz  «      S )uD   Calculate the check digit for the 10-digit Ð˜Ð�Ð� for organisations.)	é   é   é
   é   é   é	   r   é   é   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­w©N©Úint©Ú.0ÚwÚns      r   ú	<genexpr>z+calc_company_check_digit.<locals>.<genexpr>8   s   è ø€ Ò?¡$ ! Q�1”s˜1“v•:Ñ?ùó   ‚é   r   ©ÚstrÚsumÚzip)r   Úweightss     r   Úcalc_company_check_digitr(   5   s.   € à*€GÜŒsÑ?¬#¨g°vÓ*>Ô?Ó?À"ÑDÀrÑIÓJÐJr   c                óÔ   — g d¢}t        t        d„ t        || «      D «       «      dz  dz  «      }g d¢}t        t        d„ t        || dd |z   «      D «       «      dz  dz  «      }||z   S )u<   Calculate the check digits for the 12-digit personal Ð˜Ð�Ð�.)
é   r   r   r   r   r   r   r   r   r   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­wr   r   r   s      r   r    z-calc_personal_check_digits.<locals>.<genexpr>>   s   è ø€ Ò=¡  1�”S˜“V•Ñ=ùr!   r"   r   )r   r*   r   r   r   r   r   r   r   r   r   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­wr   r   r   s      r   r    z-calc_personal_check_digits.<locals>.<genexpr>@   s   è ø€ ÒG¡  1�”S˜“V•ÑGùr!   Nr#   )r   r'   Úd1Úd2s       r   Úcalc_personal_check_digitsr/   ;   sl   € â-€GÜ	ŒSÑ=¬¨G°VÓ(<Ô=Ó=ÀÑBÀRÑGÓ	H€BÚ0€GÜ	ŒSÑG¬¨G°V¸C¸R°[À2Ñ5EÓ(FÔGÓGÈ"ÑLÈrÑQÓ	R€BØ�‰7€Nr   c                ó  — t        | «      } t        | «      s
t        «       ‚t        | «      dk(  rt	        | «      | d   k7  r
t        «       ‚| S t        | «      dk(  rt        | «      | dd k7  r
t        «       ‚| S t        «       ‚)u^   Check if the number is a valid Ð˜Ð�Ð�. This checks the length, formatting
    and check digit.r   éÿÿÿÿé   éþÿÿÿN)r   r   ÚInvalidFormatÚlenr(   ÚInvalidChecksumr/   ÚInvalidLengthr
   s    r   Úvalidater8   D   s…   € ô �V‹_€FÜ�FÔÜ‹oÐÜ
ˆ6ƒ{�bÒÜ# FÓ+¨v°b©zÒ9Ü!Ó#Ð#ð €Mô 
ˆV‹˜Ò	ä% fÓ-°¸¸°Ò<Ü!Ó#Ð#ð €Mô ‹oÐr   c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)u&   Check if the number is a valid Ð˜Ð�Ð�.F)Úboolr8   ÚValidationErrorr
   s    r   Úis_validr<   V   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"N)r   r$   Úreturnr$   )r   r$   r=   r:   )Ú__doc__Ú
__future__r   Ústdnum.exceptionsÚstdnum.utilr   r   r   r(   r/   r8   r<   © r   r   ú<module>rC      s/   ðñ*õ( #ä ß 'ó&óKóóô$r   