Skip to main content

Cython implementation of ksuid

Project description

CyKSUID

A high performance Cython implementation of KSUID (K-Sortable Globally Unique IDs).

LICENSE

New BSD. See License File.

Install

cyksuid is on the Python Package Index (PyPI):

pip install cyksuid

Dependencies

cyksuid supports Python 3.7+ with a common codebase. It is developed in Cython, but requires no dependency other than CPython and a C compiler.

Sample Usage

v1 API

from cyksuid import ksuid, parse

uid = ksuid.ksuid()

uid.bytes       # b'\x0f\xd4oB\x81I\xe5\x8d\x95\xb5\xeb\xbc"\xa0\xcd\xfe)N\xe0I'
uid.hex         # '0fd46f428149e58d95b5ebbc22a0cdfe294ee049'
uid.datetime    # datetime.datetime(2022, 10, 12, 13, 12, 34)
uid.timestamp   # 1665580354
uid.encoded     # b'2G2IfS6177qFICE3w10eMjgYu89'

parse(uid.encoded)

v2 API

from cyksuid.v2 import ksuid, parse

uid = ksuid()

uid.bytes       # b'\x0f\xd4oB\x81I\xe5\x8d\x95\xb5\xeb\xbc"\xa0\xcd\xfe)N\xe0I'
uid.hex         # '0fd46f428149e58d95b5ebbc22a0cdfe294ee049'
uid.datetime    # datetime.datetime(2022, 10, 12, 13, 12, 34, tzinfo=datetime.timezone.utc)
uid.timestamp   # 1665580354.0
uid.encoded     # b'2G2IfS6177qFICE3w10eMjgYu89'
str(uid)        # '2G2IfS6177qFICE3w10eMjgYu89'

parse(uid.encoded)

Benchmark

--------------------------------------------------------------------------------------- benchmark 'test_generate': 2 tests ---------------------------------------------------------------------------------------
Name (time in ns)                 Min                    Max                  Mean              StdDev                Median                IQR               Outliers  OPS (Kops/s)            Rounds  Iterations
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_generate[cyksuid]       374.9997 (1.0)      16,666.9997 (1.0)        490.1096 (1.0)      127.4882 (1.0)        458.9997 (1.0)      42.0000 (1.0)      13826;14525    2,040.3599 (1.0)      175193           1
test_generate[svix]        1,250.0000 (3.33)     22,290.9998 (1.34)     1,483.5142 (3.03)     796.5151 (6.25)     1,416.0000 (3.08)     42.0000 (1.0)         114;1573      674.0751 (0.33)      13676           1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------- benchmark 'test_parse': 2 tests -----------------------------------------------------------------------------------------
Name (time in ns)               Min                     Max                   Mean                StdDev                 Median                 IQR            Outliers  OPS (Kops/s)            Rounds  Iterations
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_parse[cyksuid]        191.6400 (1.0)        1,250.0000 (1.0)         201.6890 (1.0)         13.9646 (1.0)         200.0000 (1.0)        5.0000 (1.0)     2667;6555    4,958.1283 (1.0)      190477          25
test_parse[svix]        12,042.0000 (62.84)    129,332.9997 (103.47)   12,452.2963 (61.74)    1,232.3979 (88.25)    12,292.0001 (61.46)    125.0000 (25.00)    890;4344       80.3065 (0.02)      28674           1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

cyksuid-2.0.2.tar.gz (101.0 kB view hashes)

Uploaded Source

Built Distributions

cyksuid-2.0.2-pp39-pypy39_pp73-win_amd64.whl (245.2 kB view hashes)

Uploaded PyPy Windows x86-64

cyksuid-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (165.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cyksuid-2.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (162.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (143.8 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

cyksuid-2.0.2-pp38-pypy38_pp73-win_amd64.whl (245.3 kB view hashes)

Uploaded PyPy Windows x86-64

cyksuid-2.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (162.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (165.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

cyksuid-2.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (143.8 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

cyksuid-2.0.2-pp37-pypy37_pp73-win_amd64.whl (245.4 kB view hashes)

Uploaded PyPy Windows x86-64

cyksuid-2.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (163.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (165.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

cyksuid-2.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (143.9 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

cyksuid-2.0.2-cp311-cp311-win_amd64.whl (249.4 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

cyksuid-2.0.2-cp311-cp311-win32.whl (223.2 kB view hashes)

Uploaded CPython 3.11 Windows x86

cyksuid-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl (698.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

cyksuid-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl (683.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

cyksuid-2.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (153.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

cyksuid-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (170.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-cp311-cp311-macosx_10_15_universal2.whl (209.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)

cyksuid-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl (154.6 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

cyksuid-2.0.2-cp310-cp310-win_amd64.whl (250.0 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

cyksuid-2.0.2-cp310-cp310-win32.whl (223.1 kB view hashes)

Uploaded CPython 3.10 Windows x86

cyksuid-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl (698.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

cyksuid-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl (682.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

cyksuid-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (173.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cyksuid-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (169.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-cp310-cp310-macosx_10_15_universal2.whl (209.6 kB view hashes)

Uploaded CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64)

cyksuid-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl (154.6 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

cyksuid-2.0.2-cp39-cp39-win_amd64.whl (251.4 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

cyksuid-2.0.2-cp39-cp39-win32.whl (224.0 kB view hashes)

Uploaded CPython 3.9 Windows x86

cyksuid-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl (700.5 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

cyksuid-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl (685.0 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

cyksuid-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (172.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (175.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

cyksuid-2.0.2-cp39-cp39-macosx_10_15_universal2.whl (211.6 kB view hashes)

Uploaded CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64)

cyksuid-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl (155.6 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

cyksuid-2.0.2-cp38-cp38-win_amd64.whl (251.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

cyksuid-2.0.2-cp38-cp38-win32.whl (224.0 kB view hashes)

Uploaded CPython 3.8 Windows x86

cyksuid-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl (701.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

cyksuid-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl (686.0 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

cyksuid-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (173.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (176.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

cyksuid-2.0.2-cp38-cp38-macosx_10_15_universal2.whl (209.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.15+ universal2 (ARM64, x86-64)

cyksuid-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl (154.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

cyksuid-2.0.2-cp37-cp37m-win_amd64.whl (250.9 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

cyksuid-2.0.2-cp37-cp37m-win32.whl (223.6 kB view hashes)

Uploaded CPython 3.7m Windows x86

cyksuid-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl (700.9 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

cyksuid-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl (684.9 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ ARM64

cyksuid-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (176.0 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

cyksuid-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (172.3 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

cyksuid-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl (154.0 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

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