Ë
    Ã?ÆiÍ  ã                  óx   — d Z ddlmZ ddl­ ddlmZ g d¢Z eeg d¢z   «      ZdZ	dd„Z
dd	„Zdd
„Zdd„Zdd„Zy)aõ  ISIN (International Securities Identification Number).

The ISIN is a 12-character alpha-numerical code specified in ISO 6166 used to
identify exchange listed securities such as bonds, commercial paper, stocks
and warrants. The number is formed of a two-letter country code, a nine
character national security identifier and a single check digit.

This module does not currently separately validate the embedded national
security identifier part (e.g. when it is a CUSIP).

More information:

* https://en.wikipedia.org/wiki/International_Securities_Identification_Number

>>> validate('US0378331005')
'US0378331005'
>>> validate('US0378331003')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> from_natid('gb', 'BYXJL75')
'GB00BYXJL758'
é    )Úannotations)Ú*)Úclean)ûÚADÚAEÚAFÚAGÚAIÚALÚAMÚANÚAOÚAQÚARÚASÚATÚAUÚAWÚAXÚAZÚBAÚBBÚBDÚBEÚBFÚBGÚBHÚBIÚBJÚBLÚBMÚBNÚBOÚBQÚBRÚBSÚBTÚBVÚBWÚBYÚBZÚCAÚCCÚCDÚCFÚCGÚCHÚCIÚCKÚCLÚCMÚCNÚCOÚCRÚCSÚCUÚCVÚCWÚCXÚCYÚCZÚDEÚDJÚDKÚDMÚDOÚDZÚECÚEEÚEGÚEHÚERÚESÚETÚFIÚFJÚFKÚFMÚFOÚFRÚGAÚGBÚGDÚGEÚGFÚGGÚGHÚGIÚGLÚGMÚGNÚGPÚGQÚGRÚGSÚGTÚGUÚGWÚGYÚHKÚHMÚHNÚHRÚHTÚHUÚIDÚIEÚILÚIMÚINÚIOÚIQÚIRÚISÚITÚJEÚJMÚJOÚJPÚKEÚKGÚKHÚKIÚKMÚKNÚKPÚKRÚKWÚKYÚKZÚLAÚLBÚLCÚLIÚLKÚLRÚLSÚLTÚLUÚLVÚLYÚMAÚMCÚMDÚMEÚMFÚMGÚMHÚMKÚMLÚMMÚMNÚMOÚMPÚMQÚMRÚMSÚMTÚMUÚMVÚMWÚMXÚMYÚMZÚNAÚNCÚNEÚNFÚNGÚNIÚNLÚNOÚNPÚNRÚNUÚNZÚOMÚPAÚPEÚPFÚPGÚPHÚPKÚPLÚPMÚPNÚPRÚPSÚPTÚPWÚPYÚQAÚREÚROÚRSÚRUÚRWÚSAÚSBÚSCÚSDÚSEÚSGÚSHÚSIÚSJÚSKÚSLÚSMÚSNÚSOÚSRÚSSÚSTÚSVÚSXÚSYÚSZÚTCÚTDÚTFÚTGÚTHÚTJÚTKÚTLÚTMÚTNÚTOÚTRÚTTÚTVÚTWÚTZÚUAÚUGÚUMÚUSÚUYÚUZÚVAÚVCÚVEÚVGÚVIÚVNÚVUÚWFÚWSÚYEÚYTÚZAÚZMÚZW)ÚEUÚQSr  ÚQTÚXAÚXBÚXCÚXDÚXFÚXKÚXSÚ$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZc                óR   — t        | d«      j                  «       j                  «       S )zˆConvert the number to the minimal representation. This strips the
    number of any valid separators and removes surrounding whitespace.ú )r   ÚstripÚupper©Únumbers    úR/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/isin.pyÚcompactr  ]   s#   € ô �˜Ó×#Ñ#Ó%×+Ñ+Ó-Ð-ó    c                óÈ   — dj                  d„ | D «       «      } dj                  d„ t        t        | «      «      D «       «      } t        dt	        d„ | D «       «      z
  dz  «      S )z*Calculate the check digits for the number.Ú c              3  óX   K  — | ]"  }t        t        j                  |«      «      –— Œ$ y ­w©N)ÚstrÚ	_alphabetÚindex©Ú.0Úns     r  ú	<genexpr>z#calc_check_digit.<locals>.<genexpr>f   s   è ø€ Ò=°”SœŸ™¨Ó+×,Ñ=ùs   ‚(*c              3  ó\   K  — | ]$  \  }}t        d |dz     t        |«      z  «      –— Œ& y­w))é   é   r!  N)r  Úint)r  Úir  s      r  r  z#calc_check_digit.<locals>.<genexpr>g   s1   è ø€ ò MÙ(,¨¨1ŒˆF�1�q‘5‰MœC ›FÑ"×#ñMùs   ‚*,é
   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr  )r#  r  s     r  r  z#calc_check_digit.<locals>.<genexpr>i   s   è ø€ Ò0 Aœ˜QŸÑ0ùs   ‚)ÚjoinÚ	enumerateÚreversedr  Úsumr  s    r  Úcalc_check_digitr+  c   s`   € ð �W‰WÑ=°fÔ=Ó=€FØ�W‰Wñ MÜ09¼(À6Ó:JÓ0KôMó M€Fä�”SÑ0¨Ô0Ó0Ñ0°BÑ6Ó7Ð7r  c                óê   — t        | «      } t        d„ | D «       «      s
t        «       ‚t        | «      dk7  r
t	        «       ‚| dd t
        vr
t        «       ‚t        | dd «      | d   k7  r
t        «       ‚| S )úRCheck if the number provided is valid. This checks the length and
    check digit.c              3  ó,   K  — | ]  }|t         v –— Œ y ­wr  )r  )r  Úxs     r  r  zvalidate.<locals>.<genexpr>p   s   è ø€ Ò. !ˆq”IŒ~Ñ.ùs   ‚é   Nr!  éÿÿÿÿ)	r  ÚallÚInvalidFormatÚlenÚInvalidLengthÚ_country_codesÚInvalidComponentr+  ÚInvalidChecksumr  s    r  Úvalidater9  l   ss   € ô �V‹_€FÜÑ. vÔ.Ô.Ü‹oÐÜ
ˆ6ƒ{�bÒÜ‹oÐØˆbˆq€zœÑ'ÜÓ Ð Ü˜˜s ˜Ó$¨¨r©
Ò2ÜÓÐØ€Mr  c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)r-  F)Úboolr9  ÚValidationErrorr  s    r  Úis_validr=  {   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"c                ót   — | j                  «       t        |«      j                  d«      z   }|t        |«      z   S )z5Generate an ISIN from a national security identifier.é	   )r  r  Úzfillr+  )Úcountry_coder  s     r  Ú
from_natidrB  „   s5   € à×ÑÓ!¤G¨F£O×$9Ñ$9¸!Ó$<Ñ<€FØÔ$ VÓ,Ñ,Ð,r  N)r  r  Úreturnr  )r  r  rC  r;  )rA  r  r  r  rC  r  )Ú__doc__Ú
__future__r   Ústdnum.exceptionsÚstdnum.utilr   Ú_iso_3116_1_country_codesÚsetr6  r  r  r+  r9  r=  rB  © r  r  ú<module>rK     sW   ðñ(õ0 #ä Ý òFÐ ñ0 Ð.ò 2ñ ó €ð 3€	ó.ó8óóô-r  