Ë
    Ã?Æi°  ã                  ób   — d Z ddlmZ ddl­ ddlmZ  ed«      Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zy)a1  ISIL (International Standard Identifier for Libraries).

The ISIL is the International Standard Identifier for Libraries and Related
Organizations (ISO 15511) used to uniquely identify libraries, archives,
museums, and similar organisations.

The identifier can be up to 15 characters that may use digits,
letters (case insensitive) hyphens, colons and slashes. The non-alphanumeric
characters are part of the identifier and are not just for readability.

The identifier consists of two parts separated by a hyphen. The first part is
either a two-letter ISO 3166 country code or a (not two-letter) non-national
prefix that identifies the agency that issued the ISIL. The second part is
the is the identifier issued by that agency.

Only the first part can be validated since it is registered globally. There
may be some validation possible with the second parts (some agencies provide
web services for validation) but there is no common format to these services.

More information:

* https://en.wikipedia.org/wiki/ISBT_128
* https://biblstandard.dk/isil/
* https://www.iso.org/standard/57332.html

>>> validate('IT-RM0267')
'IT-RM0267'
>>> validate('OCLC-DLC')
'OCLC-DLC'
>>> validate('WW-RM0267')  # unregistered country code
Traceback (most recent call last):
    ...
InvalidComponent: ...
>>> format('it-RM0267')
'IT-RM0267'
é    )Úannotations)Ú*)ÚcleanzA0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-:/c                ó6   — t        | d«      j                  «       S )zWConvert the ISIL to the minimal representation. This strips
    surrounding whitespace.Ú )r   Ústrip©Únumbers    úR/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/isil.pyÚcompactr   E   s   € ô �˜Ó×"Ñ"Ó$Ð$ó    c                ó²   — ddl m} |j                  d«      j                  | j	                  «       dz   «      }t        |«      dk(  xr t        |d   d   «      S )z,Check whether the specified agency is valid.r   )ÚnumdbÚisilú$é   )Ústdnumr   ÚgetÚinfoÚupperÚlenÚbool)Úagencyr   Úresultss      r   Ú_is_known_agencyr   K   sL   € õ Ø�i‰i˜Ó×$Ñ$ V§\¡\£^°cÑ%9Ó:€Gäˆw‹<˜1ÑÒ4¤ g¨a¡j°¡mÓ!4Ð4r   c                óÒ   — t        | «      } t        d„ | D «       «      s
t        «       ‚t        | «      dkD  r
t	        «       ‚t        | j                  d«      d   «      s
t        «       ‚| S )ú-Check if the number provided is a valid ISIL.c              3  ó,   K  — | ]  }|t         v –— Œ y ­w)N)Ú	_alphabet)Ú.0Úxs     r   ú	<genexpr>zvalidate.<locals>.<genexpr>W   s   è ø€ Ò. !ˆq”IŒ~Ñ.ùs   ‚é   ú-r   )r   ÚallÚInvalidFormatr   ÚInvalidLengthr   ÚsplitÚInvalidComponentr	   s    r   Úvalidater*   T   sY   € ä�V‹_€FÜÑ. vÔ.Ô.Ü‹oÐÜ
ˆ6ƒ{�RÒÜ‹oÐÜ˜FŸL™L¨Ó-¨aÑ0Ô1ÜÓ Ð Ø€Mr   c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)r   F)r   r*   ÚValidationErrorr	   s    r   Úis_validr-   `   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡"c                óÀ   — t        | «      } | j                  d«      }t        |«      dkD  r$t        |d   «      r|d   j	                  «       |d<   dj                  |«      S )z8Reformat the number to the standard presentation format.r$   r   r   )r   r(   r   r   r   Újoin)r
   Úpartss     r   Úformatr1   h   sR   € ä�V‹_€FØ�L‰L˜Ó€EÜ
ˆ5ƒz�A‚~Ô*¨5°©8Ô4Ø˜‘8—>‘>Ó#ˆˆa‰Ø�8‰8�E‹?Ðr   N)r
   ÚstrÚreturnr2   )r   r2   r3   r   )r
   r2   r3   r   )Ú__doc__Ú
__future__r   Ústdnum.exceptionsÚstdnum.utilr   Úsetr   r   r   r*   r-   r1   © r   r   ú<module>r:      s?   ðñ*#õJ #ä Ý ñ ØGóI€	ó%ó5ó	óôr   