Skip to main content

Fast Luhn algorithm

Project description

Luhn-algorithm. Generate and validate strings of numbers. It is used for account number validation, credit card validation, data verification, cryptography, decoding, etcetera. Rust realization for speed-up python code. Thread-safe. See benchmark for details.

Author:

Matt Stroganov

Version:

0.1.5

Installation

Install with pip:

$ pip install fast-luhn

Usage

Import package:

>>> import fast_luhn as fl

Validate

Check if string is valid by luhn algorithm. Return bool.

>>> fl.validate("471629309440")
False

Digit

Calculate next digit for string of numbers. Return int.

>>> fl.digit("47162930944")
7

Complete

Add luhn-check digit to string of numbers. Return string.

>>> fl.complete("2398560146")
'23985601469'

Generate

Generate luhn-valid string of numbers with length. Return string.

>>> fl.generate(50)
'58126333877729238938910323395262199130041545367401'

Build

Install from sources:

$ git clone https://github.com/cybermatt/fast-luhn
$ cd fast-luhn
$ pip install -r requirements-dev.txt
$ python ./setup.py develop

Benchmark

Pure python realization (from here) was very slow.

Comparison with popular python Luhn modules:

method lib

luhn

LAP

fast-luhn

validate

4.65 µs

13.3 µs

0.2 µs

generate

48.1 µs

94.4 µs

3.17 µs

Environment:

  • CPU i5-6500 3.20GHz, 16gb RAM

  • Linux 4.19

  • Python 3.7.3

Tests

$ pytest -v tests.py

License

This project is licensed under the MIT License - see the LICENSE.txt file for details

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

fast_luhn-0.1.5-cp39-cp39-manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9

fast_luhn-0.1.5-cp38-cp38-manylinux2014_x86_64.whl (848.5 kB view details)

Uploaded CPython 3.8

fast_luhn-0.1.5-cp37-cp37m-manylinux2014_x86_64.whl (637.5 kB view details)

Uploaded CPython 3.7m

fast_luhn-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl (426.5 kB view details)

Uploaded CPython 3.6m

fast_luhn-0.1.5-cp35-cp35m-manylinux2014_x86_64.whl (215.2 kB view details)

Uploaded CPython 3.5m

File details

Details for the file fast_luhn-0.1.5-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: fast_luhn-0.1.5-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for fast_luhn-0.1.5-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b58be3816ee851b3845535caa2af51071a381cb02d099c24f83d52218105f179
MD5 543825b69613c1aee6281661d4c535d6
BLAKE2b-256 bac29baf17a042bdeada3224129e67ee3fdf48790eab41092f9d97fbf6b6212f

See more details on using hashes here.

File details

Details for the file fast_luhn-0.1.5-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: fast_luhn-0.1.5-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 848.5 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for fast_luhn-0.1.5-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1008ebac277babb4fdf0b4fe38946f58caa754453759c235ee96aaf77b320ea4
MD5 a1a7af542f8d7838735d0874a20374c0
BLAKE2b-256 315313d7345077276f46b485a4724083c568086504d7f39dac456521f9101ef8

See more details on using hashes here.

File details

Details for the file fast_luhn-0.1.5-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: fast_luhn-0.1.5-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 637.5 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for fast_luhn-0.1.5-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de54483db117743b74901ea06229cbf4e47c853e940add9fcc7d241ad7f8bd8c
MD5 70216e38605509e7eb62aef71ea2d15d
BLAKE2b-256 4d770bab6d3ef11d89300a4ec3c9cf854f3a45535cf5caaaabde10cea704c317

See more details on using hashes here.

File details

Details for the file fast_luhn-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: fast_luhn-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 426.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for fast_luhn-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0a8cfda573b01bd1fee21c4828861af03e21b1dc71cb6dda9e11cda1d1d8da0
MD5 42476e654735113019a292b2b7f4a5a5
BLAKE2b-256 ef2b338040c64fbdc892b2b9ec90c0059c168d66e8f3a2b410b5dc3ba2241b63

See more details on using hashes here.

File details

Details for the file fast_luhn-0.1.5-cp35-cp35m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: fast_luhn-0.1.5-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 215.2 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for fast_luhn-0.1.5-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2029459ac42149767d42e14ec96979259be62976e82889b8e14e5b6f14be43d
MD5 fa30f44fed8042c62eba139de5e1d039
BLAKE2b-256 dfd80354494db5cf34b1078aa8535dcaa1b860eba5ec27a92fdca645cf04368f

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