Ë
    Ã?Æ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  Ð„Ð”Ð ÐŸÐžÐ£, EDRPOU (Identifier for enterprises and organizations in Ukraine).

The Ð„Ð”Ð ÐŸÐžÐ£ (Ð„Ð´Ð¸Ð½Ð¾Ð³Ð¾ Ð´ÐµÑ€Ð¶Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñ€ÐµÑ”Ñ�Ñ‚Ñ€Ñƒ Ð¿Ñ–Ð´Ð¿Ñ€Ð¸Ñ”Ð¼Ñ�Ñ‚Ð² Ñ‚Ð° Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ð¹ Ð£ÐºÑ€Ð°Ñ—Ð½Ð¸,
Unified State Register of Enterprises and Organizations of Ukraine) is a
unique identification number of a legal entities in Ukraine. The number
consists of 8 digits, the last being a check digit.

More information:

* https://uk.wikipedia.org/wiki/ÐšÐ¾Ð´_Ð„Ð”Ð ÐŸÐžÐ£
* https://1cinfo.com.ua/Articles/Proverka_koda_po_EDRPOU.aspx

>>> validate('32855961')
'32855961'
>>> validate('32855968')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> validate('12345')
Traceback (most recent call last):
    ...
InvalidLength: ...
>>> format(' 32855961 ')
'32855961'
é    )Úannotations)Ú*)ÚcleanÚisdigitsc                ó6   — t        | d«      j                  «       S )z1Convert the number to the minimal representation.ú )r   Ústrip©Únumbers    úW/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/ua/edrpou.pyÚcompactr   5   s   € ä�˜Ó×#Ñ#Ó%Ð%ó    c                ó  — g d¢}| d   dv rg d¢}t        d„ t        || «      D «       «      }|dz  dk  rt        |dz  «      S |D �cg c]  }|dz   ‘Œ	 }}t        d	„ t        || «      D «       «      }t        |dz  dz  «      S c c}w )
z%Calculate the check digit for number.)é   é   é   é   é   é   é   r   Ú345)r   r   r   r   r   r   r   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­w©N©Úint©Ú.0ÚwÚns      r   ú	<genexpr>z#calc_check_digit.<locals>.<genexpr>?   ó   è ø€ Ò<™t˜q !�”C˜“F•
Ñ<ùó   ‚é   é
   r   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­wr   r   r   s      r   r    z#calc_check_digit.<locals>.<genexpr>D   r!   r"   )ÚsumÚzipÚstr)r   ÚweightsÚtotalr   s       r   Úcalc_check_digitr+   :   sŽ   € â#€GØˆa�y�EÑÚ'ˆÜÑ<¤s¨7°FÓ';Ô<Ó<€EØˆr�z�B‚Ü�5˜2‘:‹Ðà%Ö&˜ˆq�1‹uÐ&€GÐ&ÜÑ<¤s¨7°FÓ';Ô<Ó<€EÜˆu�r‰z˜B‰ÓÐùò 's   ÁBc                ó¬   — t        | «      } t        | «      dk7  r
t        «       ‚t        | «      s
t	        «       ‚| d   t        | «      k7  r
t        «       ‚| S )u‚   Check if the number is a valid Ukraine EDRPOU (Ð„Ð”Ð ÐŸÐžÐ£) number.

    This checks the length, formatting and check digit.
    é   éÿÿÿÿ)r   ÚlenÚInvalidLengthr   ÚInvalidFormatr+   ÚInvalidChecksumr
   s    r   Úvalidater3   H   sQ   € ô
 �V‹_€FÜ
ˆ6ƒ{�aÒÜ‹oÐÜ�FÔÜ‹oÐØˆb�zÔ% fÓ-Ò-ÜÓÐØ€Mr   c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)uD   Check if the number is a valid Ukraine EDRPOU (Ð„Ð”Ð ÐŸÐžÐ£) number.F)Úboolr3   ÚValidationErrorr
   s    r   Úis_validr7   W   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"c                ó   — t        | «      S )z8Reformat the number to the standard presentation format.)r   r
   s    r   Úformatr9   _   s   € ä�6‹?Ðr   N)r   r(   Úreturnr(   )r   r(   r:   r5   )Ú__doc__Ú
__future__r   Ústdnum.exceptionsÚstdnum.utilr   r   r   r+   r3   r7   r9   © r   r   ú<module>r@      s.   ðñ*õ4 #ä ß 'ó&ó
 óóôr   