- Github repository: https://github.com/vahidtwo/vuid/
- Documentation https://vahidtwo.github.io/vuid/
- PIPY Package https://pypi.org/project/vuid/
The VUID is a Python package designed to generate vahid unique identifiers (VUIDs) based on a custom epoch time and a base-62 encoding scheme. The package provides a simple and efficient way to create unique IDs that can be used in various applications, such as database keys, distributed systems, or any scenario where uniqueness is critical.
- Custom Epoch Time: The package uses a custom epoch time (
START_EPOC_TIME
) to ensure uniqueness and avoid collisions with other timestamp-based ID systems. - Base-62 Encoding: Utilizes a base-62 encoding scheme (0-9, A-Z, a-z) to generate compact and human-readable IDs.
- High Performance: Capable of generating over 800,000 unique IDs per second, making it suitable for high-throughput systems.
- Timestamp Extraction: Allows extraction of the creation timestamp from a generated VUID.
- Randomness: Adds a 4-character random suffix to each ID to further ensure uniqueness.
To install the package, use pip:
pip install vuid
To generate a unique VUID, simply create an instance of the VUID
class with a timestamp:
from datetime import datetime
from vuid import VUID
# Generate a VUID using the current time
timestamp = datetime.now().timestamp()
vuid = VUID(timestamp)
print(vuid) # Example output: "1A2b3C4d5"
You can extract the creation time of a VUID using the created_time
property:
creation_time = vuid.created_time
print(creation_time) # Example output: "2025-01-04 12:04:08"
If you already have a VUID code, you can create a VUID
object from it:
existing_code = "CS21A2b3C4d5"
vuid = VUID.from_code(existing_code)
print(vuid.created_time) # Output: "2025-07-22 05:24:09"
print(vuid.extra) # Output: 1738
print(vuid.prefix) # Output: "C"
The VUID
class supports comparison operations, allowing you to compare two VUIDs:
vuid1 = VUID(datetime.now().timestamp())
vuid2 = VUID(datetime.now().timestamp())
print(vuid1 == vuid2) # False
print(vuid1 < vuid2) # True or False, depending on the timestamps
- Parameters:
timestamp
: A timestamp (in seconds) used to generate the VUID.prefix
: A string used to add as prefix in the VUID.extra
: An integer to save extra info in the VUID.
- Returns: A
VUID
object.
- Parameters:
code
: An existing VUID code.extra_index
: if you have put extra you must the start index of the extra.
- Returns: A
VUID
object.
code
: Returns the code as a string.extra
: Returns the extra as an integer.created_time
: Returns the creation time of the VUID as adatetime
object.
__str__()
: Returns the VUID as a string.__repr__()
: Returns a formal representation of the VUID.__eq__(other)
: Compares two VUIDs for equality.__hash__()
: Returns the hash of the VUID.__lt__(other)
,__le__(other)
,__gt__(other)
,__ge__(other)
,__ne__(other)
: Comparison methods for VUIDs.
- The package is optimized for high performance, capable of generating over 800,000 unique IDs per second.
- Tested to generate 11,592,876 unique codes in 14.04 seconds.
- The current implementation supports IDs with a maximum length of 9 characters. If the timestamp exceeds the 5-character limit (after base-62 encoding), a warning will be logged.
- The package is designed to work until January 15, 2054, after which the timestamp encoding will overflow.
Contributions are welcome! Please open an issue or submit a pull request on the GitHub repository.
This project is licensed under the BEER-WARE License. See the LICENSE file for details.