# stdnum.luhn

The Luhn and Luhn mod N algorithms.

The Luhn algorithm is used to detect most accidental errors in various identification numbers.

    >>> validate('7894')
    Traceback (most recent call last):
        ...
    InvalidChecksum: ...
    >>> checksum('7894')
    6
    >>> calc_check_digit('7894')
    '9'
    >>> validate('78949')
    '78949'

An alternative alphabet can be provided to use the Luhn mod N algorithm. The default alphabet is ‘0123456789’.

    >>> validate('1234', alphabet='0123456789abcdef')
    Traceback (most recent call last):
        ...
    InvalidChecksum: ...
    >>> checksum('1234', alphabet='0123456789abcdef')
    14

`stdnum.luhn.``calc_check_digit`(number, alphabet='0123456789')

  Calculate the extra digit that should be appended to the number to make it a valid number.

`stdnum.luhn.``checksum`(number, alphabet='0123456789')

  Calculate the Luhn checksum over the provided number. The checksum is returned as an int. Valid numbers should have a checksum of 0.

`stdnum.luhn.``is_valid`(number, alphabet='0123456789')

  Check if the number passes the Luhn checksum.

`stdnum.luhn.``validate`(number, alphabet='0123456789')

  Check if the number provided passes the Luhn checksum.