{"id":726,"library":"uuid-utils","title":"uuid-utils","description":"uuid-utils is a Python library that provides a fast, drop-in replacement for Python's standard `uuid` module, leveraging Rust for performance. It supports all standard UUID versions (1, 3, 4, 5) and also newer draft versions like UUIDv6, UUIDv7, and UUIDv8. Currently at version 0.14.1, the library maintains an active release cadence with frequent updates and performance enhancements.","status":"active","version":"0.14.1","language":"python","source_language":"en","source_url":"https://github.com/aminalaee/uuid-utils","tags":["uuid","guid","performance","rust","identifiers","unique-id"],"install":[{"cmd":"pip install uuid-utils","lang":"bash","label":"Install with pip"}],"dependencies":[],"imports":[{"note":"Common pattern for a direct drop-in replacement, making most existing code compatible.","symbol":"uuid","correct":"import uuid_utils as uuid"},{"symbol":"uuid4","correct":"from uuid_utils import uuid4"},{"note":"Use the `compat` module if you require standard library `uuid.UUID` instances (e.g., for Django ORM compatibility). This incurs a slight performance penalty but is still faster than `stdlib` UUID.","symbol":"UUID","correct":"from uuid_utils.compat import UUID"}],"quickstart":{"code":"import uuid_utils as uuid\n\n# Generate a random UUID (Version 4)\nrandom_uuid = uuid.uuid4()\nprint(f\"Random UUID (v4): {random_uuid}\")\n\n# Generate a time-ordered UUID (Version 7)\ntime_ordered_uuid = uuid.uuid7()\nprint(f\"Time-ordered UUID (v7): {time_ordered_uuid}\")\n\n# Generate a name-based UUID using SHA-1 hash (Version 5)\nnamespace_dns = uuid.NAMESPACE_DNS\nname_uuid = uuid.uuid5(namespace_dns, 'example.com')\nprint(f\"Name-based UUID (v5) for 'example.com': {name_uuid}\")\n\n# To get a standard library UUID instance (e.g. for Django):\nfrom uuid_utils.compat import uuid4 as compat_uuid4\ncompat_instance = compat_uuid4()\nprint(f\"Compat UUID (v4): {compat_instance}\")\nprint(f\"Is compat instance a standard uuid.UUID? {isinstance(compat_instance, uuid.UUID)}\")","lang":"python","description":"This quickstart demonstrates how to generate various UUID versions using `uuid-utils`, including random (v4), time-ordered (v7), and name-based (v5) UUIDs. It also shows how to use the compatibility layer to obtain standard library `uuid.UUID` instances when required."},"warnings":[{"fix":"Review any code or stored UUIDs generated with `uuid1` or `uuid6` from versions prior to 0.14.1. Ensure that the new, correct byte order is compatible with your application's requirements.","message":"The byte-order for `uuid1` and `uuid6` was fixed in version 0.14.1. If you relied on the previous, incorrect byte-order in earlier versions, this change may break compatibility with existing data or systems.","severity":"breaking","affected_versions":">=0.14.1"},{"fix":"Upgrade to Python 3.8 or newer to continue receiving updates and security fixes for `uuid-utils`.","message":"Support for Python 3.7 was dropped in version 0.7.0. Users on Python 3.7 will not be able to upgrade to newer versions of `uuid-utils`.","severity":"deprecated","affected_versions":"<0.7.0"},{"fix":"Be aware that even `uuid_utils.compat` functions return custom `UUID` instances. If standard library `uuid.UUID` instances are strictly required, you may need to explicitly convert `uuid_utils.UUID` instances (e.g., by creating a `uuid.UUID` object from the string representation of the `uuid_utils.UUID` instance) or reconsider using `uuid-utils` if its custom `UUID` class is fundamentally incompatible with your application's requirements.","message":"The default `UUID` class returned by `uuid_utils` is a custom class. While `uuid_utils.compat` provides functions that *mimic* the standard library's `uuid` module, it still returns `uuid_utils` custom `UUID` instances, not standard library `uuid.UUID` instances. If you specifically require standard library `uuid.UUID` instances (e.g., for ORMs like Django), direct conversion or alternative methods might be necessary.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Verify that `getnode()` behavior is consistent with your expectations if you were using it prior to version 0.14.0. The new behavior aligns with `stdlib`.","message":"The behavior of `getnode` was changed in version 0.14.0 to be compatible with Python's standard library `uuid.getnode()`. If your application relied on the specific behavior of `getnode` in earlier `uuid-utils` versions, this might introduce subtle changes.","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Ensure `uuid-utils` is at least 0.14.0 for improved multiprocessing handling. For critical applications, consider explicitly re-seeding the random number generator in child processes if you encounter collisions, or use `uuid.uuid1()` or `uuid.uuid7()` which are time-based and generally more robust in distributed systems for ordering and uniqueness.","message":"While `uuid-utils` explicitly calls to 'reseed RNG in fork process' (since 0.14.0) to improve multiprocessing safety for random UUIDs, standard library's `uuid.uuid4()` has historically had issues where child processes generated identical UUIDs if the RNG was not reseeded. Although `uuid-utils` addresses this, always test UUID generation thoroughly in multiprocessing environments to ensure uniqueness.","severity":"gotcha","affected_versions":"<0.14.0 (partially), all versions (best practice)"}],"env_vars":null,"last_verified":"2026-05-12T18:19:55.286Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Install the library using pip: `pip install uuid-utils`","cause":"The `uuid-utils` package is not installed in the current Python environment or the environment is not active.","error":"ModuleNotFoundError: No module named 'uuid_utils'"},{"fix":"Import `uuid_utils` and use its functions: `import uuid_utils\nmy_uuid_v7 = uuid_utils.uuid7()`","cause":"You are attempting to call `uuid.uuid7()` from Python's standard `uuid` module, which does not support UUIDv6, v7, or v8. `uuid-utils` provides these newer UUID versions.","error":"AttributeError: module 'uuid' has no attribute 'uuid7'"},{"fix":"Install the Rust toolchain by following instructions on `rustup.rs`: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`","cause":"`uuid-utils` is a Rust-backed Python library and requires the Rust toolchain (compiler `rustc` and package manager `cargo`) to be installed for compilation during installation.","error":"error: can't find Rust compiler"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":"0.15.0","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1,"disk_size":"19.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1,"disk_size":"19.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.01,"mem_mb":1,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":1,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"20.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.2,"disk_size":"21.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.7,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"12.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.2,"disk_size":"12.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0,"mem_mb":0.2,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.3,"disk_size":"12.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.3,"disk_size":"12.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0,"mem_mb":0.1,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.9,"disk_size":"18.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.9,"disk_size":"18.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.9,"import_time_s":0.01,"mem_mb":0.9,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.9,"disk_size":"19M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}