stdnum.bg.egn

EGN (ЕГН, Единен граждански номер, Bulgarian personal identity codes).

It is a 10-digit number of which the first 6 digits denote the person’s birth date, the next three digits represent a birth order number from which the person’s gender can be determined and the last digit is a check digit.

>>> compact('752316 926 3')
'7523169263'
>>> validate('8032056031')
'8032056031'
>>> get_birth_date('7542011030')
datetime.date(2075, 2, 1)
>>> validate('7552A10004')  # invalid digit
Traceback (most recent call last):
    ...
InvalidFormat: ...
>>> validate('8019010008')  # invalid date
Traceback (most recent call last):
    ...
InvalidComponent: ...
stdnum.bg.egn.calc_check_digit(number: str) str

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

stdnum.bg.egn.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.egn.get_birth_date(number: str) date

Split the date parts from the number and return the birth date.

stdnum.bg.egn.is_valid(number: str) bool

Check if the number is a valid national identification number.

stdnum.bg.egn.validate(number: str) str

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