Skip to main content

cpr-generator - An Unofficial library and tool for generating and verifying Danish CPR-numbers.

This project contains a library and some CLI-tools for generating, manipulating and verifying Danish CPR-numbers, called "personnummer" or "CPR-nummer" in Danish, as defined by the Danish authority "Det Centrale Personregister".

Disclaimer

This is a community project that is NOT indorsed by the Danish authorities and should not be used as a reference.

Getting Started

This is available on PyPI via. pip which includes both the library and the CLI-tools. Simply install with the command:

pip install -U cpr-generator

Using the Library

The library contains a few different modules. Most important are the cpr_verifier and the generator modules.

The cpr_verifier contains three functions:

  • is_leap_year: takes a year (int) checks whether the year is a leap year.
  • is_cpr_number: takes a potential CPR-number (str) and checks that it fulfills the format: DDMMYY(-)NNNN.
  • satisfies_mod11 takes a potential CPR-number (str), checks that it fulfills both the format: DDMMYY(-)NNNN and the Modulus-11 control condition.

Using the CLI-tools

cpr-gen

This is a simple CLI tool that can generate random CPR-numbers, with or without hyphens.

Example usage:

cpr-gen -n 1000 -m False --hyphen True

The above generates a thousand CPR-numbers with hyphens, not satisfying the Modulus-11 control condition.

cpr-server

This CLI-tools starts a HTTP server (using flask) on port 5000 that can generate random CPR-numbers on demand.

Simply run:

cpr-server

And the server should be available at localhost:5000.

The server has the following available URL endpoints:

  • /: Returns a random CPR-number (no hyphen)
  • /no-mod11/: Returns a random CPR-number (no hyphen), not satisfying Modulus-11.
  • /hyphen/: Returns a random CPR-number (with hyphen)
  • /no-mod11/hyphen/: Returns a random CPR-number (with hyphen), not satisfying Modulus-11.
  • /<int:number>/: Returns number random CPR-numbers (no hyphen)
  • /no-mod11/<int:number>/: Returns number random CPR-numbers (no hyphens), not satisfying Modulus-11.
  • /hyphen/<int:number>/: Returns number random CPR-numbers (with hyphens)
  • /no-mod11/hyphen/<int:number>/: Returns number random CPR-numbers (with hyphens), not satisfying Modulus-11.

cpr-verify

This CLI-tool can be used to check the input fulfills the format of a CPR-number, with or without hyphen, and whether or not the input satisfies the Modulus-11 control condition.

Example usage:

cpr-verify 111111-1118  # --> True

The above verifies that the input 111111-1118 fulfills the CPR-number format.

Metadata

Release files for cpr-generator 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpr-generator 0.2.2
File Size Uploaded Provenance Actions
cpr_generator-0.2.2.tar.gz 8.0 kB Without provenance Details for cpr_generator-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cpr-generator 0.2.2
File Interpreter ABI Platform Actions
cpr_generator-0.2.2-py3-none-any.whl Python 3 none any Details for cpr_generator-0.2.2-py3-none-any.whl

Total release size: 16.6 kB

Release files / cpr_generator-0.2.2.tar.gz

Download URL cpr_generator-0.2.2.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7a1f5d2a10c97eac43aeed89b445f49a325e6b60e092e13b72bb5054c78ae77c
BLAKE2b-256 checksum
How to use checksums
42d9867bd1c11848f57876bb8d16e94d8a9e8f16bd406818561a49a54cd5ba07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / cpr_generator-0.2.2-py3-none-any.whl

Download URL cpr_generator-0.2.2-py3-none-any.whl
Size 8.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a0cb6e606bf712f782513651fcee8f763ab28f9df1471b12b4c050689a777b7d
BLAKE2b-256 checksum
How to use checksums
4365793a56351f31c084f59826908ecb29d50c3b3fd146fe208a9fb9e9de70b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Security for cpr-generator 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page