Ë
    Ã?Æi�
  ã                  óF   — d Z ddlmZ ddl­ d	d
d„Zd	dd„Zd	dd„Zd	dd„Zy)a  The ISO 7064 Mod 37, 36 algorithm.

The Mod 37, 36 algorithm uses an alphanumeric check digit and the number
itself may also contain letters.

>>> checksum('A12425GABC1234002M')
1
>>> calc_check_digit('A12425GABC1234002')
'M'
>>> validate('A12425GABC1234002M')
'A12425GABC1234002M'

By changing the alphabet this can be turned into any Mod x+1, x
algorithm. For example Mod 11, 10:

>>> calc_check_digit('00200667308', alphabet='0123456789')
'5'
>>> validate('002006673085', alphabet='0123456789')
'002006673085'
é    )Úannotations)Ú*c                ó|   — t        |«      }|dz  }| D ]&  }|xs |dz  |dz   z  |j                  |«      z   |z  }Œ( |S )zCCalculate the checksum. A valid number should have a checksum of 1.é   é   )ÚlenÚindex)ÚnumberÚalphabetÚmodulusÚcheckÚns        ú_/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/iso7064/mod_37_36.pyÚchecksumr   .   sV   € ä�(‹m€GØ�q‰L€EØò YˆØÒ#˜G qÑ(¨W°q©[Ñ9¸H¿N¹NÈ1Ó<MÑMÐQXÑX‰ðYà€Ló    c                ó\   — t        |«      }|dt        | |«      xs |dz  |dz   z  z
  |z     S )z^Calculate the extra digit that should be appended to the number to
    make it a valid number.r   r   )r   r   )r
   r   r   s      r   Úcalc_check_digitr   7   s>   € ô �(‹m€GØ�Qœ8 F¨HÓ5Ò@¸ÀAÑEÈ'ÐTUÉ+ÑVÑVÐZaÑaÑbÐbr   c                ól   — 	 t        | |«      dk(  }|s
t        «       ‚| S # t        $ r t        «       ‚w xY w)ú'Check whether the check digit is valid.r   )r   Ú	ExceptionÚInvalidFormatÚInvalidChecksum)r
   r   Úvalids      r   Úvalidater   >   sD   € ðÜ˜ Ó*¨aÑ/ˆñ ÜÓÐØ€Møô	 ò Ü‹oÐðús   ‚ Ÿ3c                óL   — 	 t        t        | |«      «      S # t        $ r Y yw xY w)r   F)Úboolr   ÚValidationError)r
   r   s     r   Úis_validr   I   s+   € ðÜ”H˜V XÓ.Ó/Ð/øÜò Ùðús   ‚ —	#¢#N)Ú$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)r
   Ústrr   r    ÚreturnÚint)r
   r    r   r    r!   r    )r
   r    r   r    r!   r   )Ú__doc__Ú
__future__r   Ústdnum.exceptionsr   r   r   r   © r   r   ú<module>r'      s'   ðñ(õ* #ä ôôcôõr   