Ë
    Ã?Æi{  ã                  ó†   — d Z ddlmZ ddlmZ ddl­ ddlmZ g d¢Zej                  Z	dd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zy)uá  RUC (Registro Ãšnico de Contribuyentes, Ecuadorian company tax number).

The RUC is a tax identification number for legal entities. It has 13 digits
where the third digit is a number denoting the type of entity.

>>> validate('1792060346-001')
'1792060346001'
>>> validate('1763154690001')  # invalid check digit
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> validate('179206034601')  # too short
Traceback (most recent call last):
    ...
InvalidLength: ...
é    )Úannotations)Úci)Ú*)Úisdigits)ÚcompactÚvalidateÚis_validc                ó@   — t        d„ t        || «      D «       «      dz  S )z7Calculate a checksum over the number given the weights.c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­w)N)Úint)Ú.0ÚwÚns      úT/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/ec/ruc.pyú	<genexpr>z_checksum.<locals>.<genexpr>7   s   è ø€ Ò;™d˜a ˆq”3�q“6�zÑ;ùs   ‚é   )ÚsumÚzip)ÚnumberÚweightss     r   Ú	_checksumr   5   s   € äÑ;¤c¨'°6Ó&:Ô;Ó;¸bÑ@Ð@ó    c                óZ   — | dd dk(  r
t        «       ‚t        j                  | dd «       | S )zCCheck if the number is a valid natural RUC (CI plus establishment).éýÿÿÿNÚ000é
   )ÚInvalidComponentr   r   ©r   s    r   Ú_validate_naturalr   :   s0   € àˆbˆc€{�eÒÜÓ Ð Ü‡K�K��s˜�ÔØ€Mr   c                óf   — | dd dk(  r
t        «       ‚t        | dd g d¢«      dk7  r
t        «       ‚| S )z*Check if the number is a valid public RUC.éüÿÿÿNÚ0000é	   )	é   é   é   é   é   é   r$   r%   é   r   ©r   r   ÚInvalidChecksumr   s    r   Ú_validate_publicr-   B   s=   € àˆbˆc€{�fÒÜÓ Ð Ü�˜˜�Ò8Ó9¸QÒ>ÜÓÐØ€Mr   c                óf   — | dd dk(  r
t        «       ‚t        | dd g d¢«      dk7  r
t        «       ‚| S )z-Check if the number is a valid juridical RUC.r   Nr   r   )
r)   r$   r%   r&   r'   r(   r)   r$   r%   r*   r   r+   r   s    r   Ú_validate_juridicalr/   K   s=   € àˆbˆc€{�eÒÜÓ Ð Ü�˜˜�Ò<Ó=ÀÒBÜÓÐØ€Mr   c                ó¶  — t        | «      } t        | «      dk7  r
t        «       ‚t        | «      s
t	        «       ‚| dd dk  s| dd dkD  r| dd dvr
t        «       ‚| d   dk  rt        | «       | S | d   dk(  r	 t        | «       | S | d   dk(  r	 t        | «       | S t        «       ‚# t        $ r t        | «       Y | S w xY w# t        $ r t        | «       Y | S w xY w)	zvCheck if the number provided is a valid RUC number. This checks the
    length, formatting, check digit and check sum.é   Nr%   Ú01Ú24)Ú30Ú50Ú6Ú9)
r   ÚlenÚInvalidLengthr   ÚInvalidFormatr   r   r-   ÚValidationErrorr/   r   s    r   r   r   T   s
  € ô �V‹_€FÜ
ˆ6ƒ{�bÒÜ‹oÐÜ�FÔÜ‹oÐØˆr�ˆ
�TÒ˜V B Q˜Z¨$Ò.°V¸B¸Q°ZÀ|Ñ5SÜÓ Ð Øˆa�y�3‚ä˜&Ô!ð €Mð 
�‰�cÒ	ð	&Ü˜VÔ$ð €Mð 
�‰�cÒ	ð	(Ü˜VÔ$ð
 €Mô Ó Ð øô ò 	&Ü˜fÕ%ð €Mð	&ûô ò 	(Ü Õ'ð €Mð		(ús$   Á8B% ÂC  Â%B=Â<B=Ã CÃCc                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)zkCheck if the number provided is a valid RUC number. This checks the
    length, formatting and check digit.F)Úboolr   r;   r   s    r   r	   r	   r   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"N)r   Ústrr   z	list[int]Úreturnr   )r   r>   r?   r>   )r   r>   r?   r=   )Ú__doc__Ú
__future__r   Ú	stdnum.ecr   Ústdnum.exceptionsÚstdnum.utilr   Ú__all__r   r   r   r-   r/   r   r	   © r   r   ú<module>rG      sI   ðñ,õ" #å Ü Ý  ò .€ð �*‰*€óAó
óóóô<r   