Ë
    Ã?ÆiY
  ã                  ó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, 2 algorithm.

The Mod 37, 2 checksum can be used for alphanumeric numbers and the check
digit may also be numeric, a letter or '*'.

>>> calc_check_digit('G123489654321')
'Y'
>>> validate('G123489654321Y')
'G123489654321Y'
>>> checksum('G123489654321Y')
1

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

>>> calc_check_digit('079', alphabet='0123456789X')
'X'
>>> validate('079X', alphabet='0123456789X')
'079X'
>>> checksum('079X', alphabet='0123456789X')
1
é    )Úannotations)Ú*c                ób   — t        |«      }d}| D ]  }d|z  |j                  |«      z   |z  }Œ |S )zCCalculate the checksum. A valid number should have a checksum of 1.r   é   )ÚlenÚindex)ÚnumberÚalphabetÚmodulusÚcheckÚns        ú^/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/iso7064/mod_37_2.pyÚchecksumr   0   s@   € ä�(‹m€GØ€EØò :ˆØ�U‘˜XŸ^™^¨AÓ.Ñ.°'Ñ9‰ð:à€Ló    c                óH   — t        |«      }|ddt        | |«      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   s      r   Úcalc_check_digitr   9   s.   € ô �(‹m€GØ�Q˜œX f¨hÓ7Ñ7Ñ7¸7ÑBÑCÐCr   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   K   s+   € ðÜ”H˜V XÓ.Ó/Ð/øÜò Ùðús   ‚ —	#¢#N)z%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'   ðñ(õ. #ä ôôDôõr   