Metadata-Version: 2.4
Name: fastuuid
Version: 0.14.0
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE
Summary: Python bindings to Rust's UUID library.
Author: Omer Katz <omer.drow@gmail.com>
Author-email: Omer Katz <omer.drow@gmail.com>
Maintainer-email: Omer Katz <omer.drow@gmail.com>
License: BSD3
Requires-Python: >=3.8
Description-Content-Type: text/x-rst; charset=UTF-8
Project-URL: homepage, https://github.com/thedrow/fastuuid/

fastuuid
========

.. image:: https://github.com/fastuuid/fastuuid/actions/workflows/ci-cd.yml/badge.svg
    :target: https://github.com/fastuuid/fastuuid/actions/workflows/ci-cd.yml

FastUUID is a library which provides CPython bindings to Rust's UUID library.

The provided API is exactly as Python's builtin UUID class. The supported UUID versions are v1, v3, v4, v5, and v7.

It is supported on Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14

Why?
----

It is much faster than Python's pure-python implementation and it is stricter
when parsing hexadecimal representation of UUIDs.

If you need to generate a lot of random UUIDs we also provide the `uuid4_bulk()`
function which releases the GIL for the entire duration of the generation.
This allows other threads to run while the library generates UUIDs.

Benchmarks
----------

===========  =========  =================  =======================  ===============================  ================  ====================  =================  ========  =========================================
processor    machine    python compiler    python implementation    python implementation version    python version    python build          release            system    cpu
===========  =========  =================  =======================  ===============================  ================  ====================  =================  ========  =========================================
x86_64       x86_64     GCC 5.5.0          CPython                  3.7.2                            3.7.2             default               4.15.0-50-generic  Linux     Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
===========  =========  =================  =======================  ===============================  ================  ====================  =================  ========  =========================================


=======================================================  ======================  ======================  ======================  ======================  ======================  ======================  ==========  ==================  ======  ==========
name                                                     min                     max                     mean                    stddev                  median                  iqr                     outliers    ops                 rounds  iterations
=======================================================  ======================  ======================  ======================  ======================  ======================  ======================  ==========  ==================  ======  ==========
tests/test_benchmarks.py::test_parse_bytes_fastuuid      8.770148269832134e-07   3.0054012313485146e-05  9.848993185755912e-07   6.654121944953314e-07   9.530049283057451e-07   2.6979250833392143e-08  515;8080    1015332.2082162144  149366  1
tests/test_benchmarks.py::test_parse_bytes_uuid          9.00006853044033e-07    2.4181994376704097e-05  1.0102117337399724e-06  6.361040394445994e-07   9.739887900650501e-07   3.899913281202316e-08   1130;10702  989891.4916557473   198020  1
tests/test_benchmarks.py::test_parse_bytes_le_fastuuid   9.00996383279562e-07    2.4662993382662535e-05  1.0116569599011118e-06  5.687526428398989e-07   9.840005077421665e-07   2.200249582529068e-08   703;9368    988477.3590622543   163052  1
tests/test_benchmarks.py::test_parse_bytes_le_uuid       1.348991645500064e-06   3.5200006095692515e-05  1.5184524591452776e-06  9.295692916442362e-07   1.448992406949401e-06   3.897002898156643e-08   1620;12511  658565.2346092485   170271  1
tests/test_benchmarks.py::test_parse_fields_fastuuid     9.819923434406519e-07   3.2625976018607616e-05  1.217285795660234e-06   1.0234898538816672e-06  1.087988493964076e-06   6.702612154185772e-08   3199;12487  821499.7690477591   143844  1
tests/test_benchmarks.py::test_parse_fields_uuid         1.1137977708131076e-06  0.000147809402551502    1.2054474234359692e-06  5.093104655522965e-07   1.144595444202423e-06   6.060581654310231e-08   2304;5896   829567.4954861335   167983  5
tests/test_benchmarks.py::test_parse_hex_fastuuid        9.870273061096668e-07   2.906599547713995e-05   1.11212962918218e-06    6.906885628642859e-07   1.0759977158159018e-06  3.0995579436421394e-08  577;8272    899175.7559191765   143288  1
tests/test_benchmarks.py::test_parse_hex_uuid            1.3360113371163607e-06  2.6262016035616398e-05  1.4448148991822913e-06  7.064083638385458e-07   1.3989920262247324e-06  2.9016518965363503e-08  679;4802    692130.1826039868   82156   1
tests/test_benchmarks.py::test_parse_int_uuid            5.448004230856896e-07   4.164349229540676e-06   6.099919819231937e-07   2.0401652680352933e-07  5.548994522541762e-07   4.430039552971725e-08   3607;3925   1639365.8107557097  87951   20
tests/test_benchmarks.py::test_parse_int_fastuuid        8.950009942054749e-07   4.946498665958643e-05   1.0105578493921953e-06  6.873330198387691e-07   9.739887900650501e-07   2.1012965589761734e-08  529;12534   989552.4542226401   176088  1
tests/test_benchmarks.py::test_fast_uuidv3               5.410998710431158e-07   3.5570512409321965e-06  5.971385425220447e-07   1.672736409563351e-07   5.526497261598707e-07   2.949964255094524e-08   4865;6332   1674653.248434526   83508   20
tests/test_benchmarks.py::test_uuidv3                    3.6269775591790676e-06  4.193797940388322e-05   3.933511159797234e-06   1.4521217506191846e-06  3.782013664022088e-06   6.00120984017849e-08    548;4193    254225.79455743768  53582   1
tests/test_benchmarks.py::test_fast_uuidv4               1.47343598655425e-07    2.069187758024782e-06   1.6777362874701377e-07  7.169360028617447e-08   1.5453133528353646e-07  8.188180800061673e-09   6101;11550  5960412.297619802   198413  32
tests/test_benchmarks.py::test_uuidv4                    2.275977749377489e-06   5.939402035437524e-05   2.5699563458422217e-06  1.316784132061215e-06   2.38200300373137e-06    1.309963408857584e-07   2068;5815   389111.667837409    85610   1
tests/test_benchmarks.py::test_fast_uuidv4_bulk_threads  0.0009843519947025925   0.007268004992511123    0.0014418828965801719   0.0007545185495019851   0.0012059269938617945   0.0003288870066171512   42;54       693.5375975204223   549     1
tests/test_benchmarks.py::test_fast_uuidv4_threads       0.0030693279986735433   0.008087011985480785    0.004009611603774935    0.000715605913448762    0.0038650799833703786   0.0006588477554032579   53;19       249.40071478707026  273     1
tests/test_benchmarks.py::test_uuidv4_threads            0.030999513022834435    0.06895541000994854     0.040025271589084616    0.009975862168373506    0.036475206492468715    0.008713199000339955    3;2         24.98421522947798   22      1
tests/test_benchmarks.py::test_fast_uuidv5               5.316498572938144e-07   4.090600123163313e-06   5.890041556925782e-07   1.8620985914996815e-07  5.419497028924525e-07   2.9799412004649576e-08  3998;6415   1697780.8905680121  88921   20
tests/test_benchmarks.py::test_uuidv5                    3.7190038710832596e-06  5.8079982409253716e-05  4.403547300216035e-06   2.439066121654033e-06   3.910012310370803e-06   2.169981598854065e-07   2283;4139   227089.64655629804  57383   1
=======================================================  ======================  ======================  ======================  ======================  ======================  ======================  ==========  ==================  ======  ==========

Run them yourself to verify.


Contributing
============

We are running tests and build's for all target python versions for every PR.

The version number is stored in the `Cargo.toml` file. 
To release a new version, update the version number in `Cargo.toml` and create a new tag with the version number. 
Pipeline will pick it up and publish it to PyPI.


PRs are welcome.

