# stdnum.isil

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'

stdnum.isil.compact(number)

  Convert the ISIL to the minimal representation. This strips surrounding whitespace.

stdnum.isil.format(number)

  Reformat the number to the standard presentation format.

stdnum.isil.is_valid(number)

  Check if the number provided is a valid ISIL.

stdnum.isil.validate(number)

  Check if the number provided is a valid ISIL.