# stdnum.bg.pnf

PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner).

The personal number of a foreigner is a 10-digit number where the last digit is the result of a weighted checksum.

    >>> validate('7111 042 925')
    '7111042925'
    >>> validate('7111042922')  # invalid check digit
    Traceback (most recent call last):
        ...
    InvalidChecksum: ...
    >>> validate('71110A2922')  # invalid digit
    Traceback (most recent call last):
        ...
    InvalidFormat: ...

stdnum.bg.pnf.calc_check_digit(number: str) → str

  Calculate the check digit. The number passed should not have the check digit included.

stdnum.bg.pnf.compact(number: str) → str

  Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.

stdnum.bg.pnf.is_valid(number: str) → bool

  Check if the number is a valid national identification number.

stdnum.bg.pnf.validate(number: str) → str

  Check if the number is a valid national identification number. This checks the length, formatting, embedded date and check digit.