Ë
    Ã?Æ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
)a:  VAT (United Kingdom (and Isle of Man) VAT registration number).

The VAT number can either be a 9-digit standard number, a 12-digit standard
number followed by a 3-digit branch identifier, a 5-digit number for
government departments (first two digits are GD) or a 5-digit number for
health authorities (first two digits are HA). The 9-digit variants use a
weighted checksum.

>>> validate('GB 980 7806 84')
'980780684'
>>> validate('802311781')  # invalid check digit
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> format('980780684')
'980 7806 84'
é    )Úannotations)Ú*)ÚcleanÚisdigitsc                ó¤   — t        | d«      j                  «       j                  «       } | j                  d«      s| j                  d«      r| dd } | S )zˆConvert the number to the minimal representation. This strips the
    number of any valid separators and removes surrounding whitespace.z -.ÚGBÚXIé   N)r   ÚupperÚstripÚ
startswith©Únumbers    úT/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/gb/vat.pyÚcompactr   ,   sM   € ô �6˜5Ó!×'Ñ'Ó)×/Ñ/Ó1€FØ×Ñ˜Ô &×"3Ñ"3°DÔ"9Ø˜˜�ˆØ€Mó    c                óD   — d}t        d„ t        || «      D «       «      dz  S )zzCalculate the checksum. The checksum is only used for the 9 digits
    of the number and the result can either be 0 or 42.)	é   é   é   é   é   é   r
   é
   é   c              3  ó>   K  — | ]  \  }}|t        |«      z  –— Œ y ­w)N)Úint)Ú.0ÚwÚns      r   ú	<genexpr>zchecksum.<locals>.<genexpr>9   s   è ø€ Ò;™d˜a ˆq”3�q“6�zÑ;ùs   ‚éa   )ÚsumÚzip)r   Úweightss     r   Úchecksumr&   5   s&   € ð +€GÜÑ;¤c¨'°6Ó&:Ô;Ó;¸bÑ@Ð@r   c                óF  — t        | «      } t        | «      dk(  rlt        | dd «      s
t        «       ‚| j	                  d«      rt        | dd «      dk  r	 | S | j	                  d«      rt        | dd «      dk\  r	 | S t        «       ‚t        | «      dk(  r›| dd	 d
v r”t        | d	d «      s
t        «       ‚| j	                  d«      rt        | d	d «      dk  rn-| j	                  d«      rt        | d	d «      dk\  rn
t        «       ‚t        | d	d «      dz  t        | dd «      k7  r
t        «       ‚| S t        | «      dv r]t        | «      s
t        «       ‚t        | dd «      dk\  rt        | dd «      dvr%t        «       ‚t        | dd «      dk7  r
t        «       ‚| S t        «       ‚)zbCheck if the number is a valid VAT number. This checks the length,
    formatting and check digit.r   r
   NÚGDiô  ÚHAé   r   r   )ÚGD8888ÚHA8888é	   r"   )r-   é   r   éd   )r   é*   é7   )
r   Úlenr   ÚInvalidFormatr   r   ÚInvalidComponentÚInvalidChecksumr&   ÚInvalidLengthr   s    r   Úvalidater7   <   s½  € ô �V‹_€FÜ
ˆ6ƒ{�aÒÜ˜˜q˜r˜
Ô#Ü“/Ð!Ø×Ñ˜TÔ"¤s¨6°!°"¨:£¸Ò'<àðB €MðA ×Ñ˜tÔ$¬¨V°A°B¨Z«¸CÒ)?àð< €Mô9 #Ó$Ð$Ü	ˆV‹˜Ò	˜v a¨˜{Ð.BÑBÜ˜˜q˜r˜
Ô#Ü“/Ð!Ø×Ñ˜TÔ"¤s¨6°!°A¨;Ó'7¸#Ò'=àØ×Ñ˜tÔ$¬¨V°A°a¨[Ó)9¸SÒ)@àä"Ó$Ð$Üˆv�a˜ˆ{Ó˜bÑ ¤C¨¨q°¨Ó$5Ò5Ü!Ó#Ð#ð €Mô 
ˆV‹˜Ñ	Ü˜ÔÜ“/Ð!ô ˆv�b�qˆz‹?˜cÒ!Ü˜˜r ˜
Ó#¨;Ñ6Ü%Ó'Ð'ä˜˜r ˜
Ó# qÒ(Ü%Ó'Ð'ð €Mô ‹oÐr   c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)z*Check if the number is a valid VAT number.F)Úboolr7   ÚValidationErrorr   s    r   Úis_validr;   i   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"c                óÂ   — t        | «      } t        | «      dk(  r| S t        | «      dk(  r | dd dz   | dd z   dz   | dd z   dz   | dd z   S | dd dz   | dd z   dz   | dd z   S )z8Reformat the number to the standard presentation format.r   r.   Nr   ú r   r-   )r   r2   r   s    r   Úformatr>   q   s’   € ä�V‹_€FÜ
ˆ6ƒ{�aÒàˆÜ
ˆ6ƒ{�bÒà�b�qˆz˜CÑ &¨¨1 +Ñ-°Ñ3°f¸Q¸q°kÑAÀCÑGÈ&ÐQRÐQSÈ*ÑTÐTà�"�1ˆ:˜Ñ˜f Q q˜kÑ)¨CÑ/°&¸¸°*Ñ<Ð<r   N)r   ÚstrÚreturnr?   )r   r?   r@   r   )r   r?   r@   r9   )Ú__doc__Ú
__future__r   Ústdnum.exceptionsÚstdnum.utilr   r   r   r&   r7   r;   r>   © r   r   ú<module>rF      s0   ðñ(õ$ #ä ß 'óóAó*óZô
=r   