stdnum.pl.pesel

PESEL (Polish national identification number).

The Powszechny Elektroniczny System Ewidencji Ludności (PESEL, Universal Electronic System for Registration of the Population) is a 11-digit Polish national identification number. The number consists of the date of birth, a serial number, the person’s gender and a check digit.

>>> validate('44051401359')
'44051401359'
>>> validate('44051401358')  # incorrect check digit
Traceback (most recent call last):
    ...
InvalidChecksum: ...
>>> validate('02381307589')  # invalid birth date
Traceback (most recent call last):
    ...
InvalidComponent: ...
>>> get_birth_date('02122401358')
datetime.date(1902, 12, 24)
>>> get_gender('02122401358')
'M'
>>> get_birth_date('02211307589')
datetime.date(2002, 1, 13)
>>> get_gender('02211307589')
'F'
stdnum.pl.pesel.calc_check_digit(number: str) str

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

stdnum.pl.pesel.compact(number: str) str

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

stdnum.pl.pesel.get_birth_date(number: str) date

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

stdnum.pl.pesel.get_gender(number: str) str

Get the person’s birth gender (‘M’ or ‘F’).

stdnum.pl.pesel.is_valid(number: str) bool

Check if the number is a valid national identification number.

stdnum.pl.pesel.validate(number: str) str

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