Skip to main content

South African (RSA/ZA) ID number validation and easy data extraction Library.

Project description

za_identity_number

ZA / RSA Identity Number Library to validate/check/manipulate and retrieve ID number info for South African IDs

Current version: 0.0.5

Poetry & pip compatibility

Python 3.5 or greater for f-strings

Installation:

pip:

pip install za-id-number

poetry:

poetry add za-id-number

ZA ID Numbers / RSA ID numbers / South African ID numbers:

ZA id numbers are validated by the luhn algorithm, with the last number validating that the entire number is correct.

ZA ID number is broken up into 2 digits birth year, 2 digits birth month, 2 digits birth date, 4 digits for gender, 1 digit for citizenship (za/other), 1 digit race (phased out after 1980) 1 digit for validation.

For more info: https://www.westerncape.gov.za/sites/www.westerncape.gov.za/files/sa-id-number-new.png

Easiest ZA ID validation is the length. The length must be exactly 13 integers.

Example:

from za_id_number.za_identity_number import SouthAfricanIdentityValidate

if __name__ == "__main__":
    za_validation = SouthAfricanIdentityValidate("9202204720082")
    valid = za_validation.validate()
    za_identity = za_validation.identity()
    print(f"Valid: {valid}, Identity: {za_identity}")

Classes:

# Validation class, inherits from SouthAfricanIdentityNumber
validate_id = SouthAfricanIdentityValidate("9001245289086")

# SouthAfricanIdentityNumber class
identity_obj = SouthAfricanIdentityNumber("9001245289086")

Class Attributes:

# SouthAfricanIdentityValidate
SouthAfricanIdentityValidate("9202204720082").valid

# SouthAfricanIdentityNumber
SouthAfricanIdentityNumber("9202204720082").id_number
SouthAfricanIdentityNumber("9202204720082").birthdate
SouthAfricanIdentityNumber("9202204720082").year
SouthAfricanIdentityNumber("9202204720082").month
SouthAfricanIdentityNumber("9202204720082").day
SouthAfricanIdentityNumber("9202204720082").gender
SouthAfricanIdentityNumber("9202204720082").citizenship
SouthAfricanIdentityNumber("9202204720082").age

Methods:

# SouthAfricanIdentityValidate class
SouthAfricanIdentityValidate("9202204720082").valid_birth_date()
SouthAfricanIdentityValidate("9202204720082").validate()
SouthAfricanIdentityValidate("9202204720082").identity()
SouthAfricanIdentityValidate("9202204720082").identity_length()

# SouthAfricanIdentityNumber class
SouthAfricanIdentityNumber("9202204720082").get_age()
SouthAfricanIdentityNumber("9202204720082").get_citizenship()
SouthAfricanIdentityNumber("9202204720082").get_gender()
SouthAfricanIdentityNumber("9202204720082").calculate_birthday()
SouthAfricanIdentityNumber("9202204720082").get_month()
SouthAfricanIdentityNumber("9202204720082").get_year()
SouthAfricanIdentityNumber("9202204720082").get_day()

Questions/Ideas/Feedback

christogoosen@gmail.com christo@anomaloustech.co.za

Future features:

  • Generating random ID numbers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

za-id-number-0.0.5.post1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

za_id_number-0.0.5.post1-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file za-id-number-0.0.5.post1.tar.gz.

File metadata

  • Download URL: za-id-number-0.0.5.post1.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for za-id-number-0.0.5.post1.tar.gz
Algorithm Hash digest
SHA256 60633783ceb42623fae25c3ab1b0b37fa0ded948ea24ae5718c5aa103efa9959
MD5 12e4f2c0633030bc5901c3cf00835a7d
BLAKE2b-256 09ec7dfbde9a06618e389c88611a345b5fcb21d03da334482bf5405c5ac51c75

See more details on using hashes here.

File details

Details for the file za_id_number-0.0.5.post1-py3-none-any.whl.

File metadata

  • Download URL: za_id_number-0.0.5.post1-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for za_id_number-0.0.5.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 09b7dbdfce4ffb203887af66733e9a5aa3644b3e392c418ee1d2bb03c55a5b84
MD5 884008bd02071f988114fab6ca5c3bea
BLAKE2b-256 6e3502ebf935e0948b2cdccc848a3c7ed0bb6ab405f1b7df740609dfb20c7634

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page