Create snowflakes with encoded data in them.
Project description
flakemaker
The flakemaker
library offers a straightforward approach to generating unique, time-based identifiers similar to Discord's snowflake IDs, but repurposing the worker and process IDs into a generalized "parameter".
Features
- Generates 64-bit snowflake IDs.
- Customizable epoch.
- Includes a user-defined parameter at snowflake generation. Note that this replaces the worker and process ids!
Quickstart
Generating a Snowflake
To generate a snowflake, create an instance of SnowflakeGenerator
and call the generate
method with your parameter.
from flakemaker import SnowflakeGenerator
generator = SnowflakeGenerator() # you can put a time here in milliseconds since 1970
snowflake = generator.generate(42) # or any value from 0-1023
print(f"Generated snowflake: {snowflake}")
# Generated snowflake: 17359567945990144
Parsing a Snowflake
To parse an existing snowflake and extract its creation time and parameter, use the parse
method.
dt, parameter = generator.parse(snowflake)
print(f"Timestamp: {dt}, Parameter: {parameter}")
# Timestamp: datetime.datetime(2024, 2, 17, 13, 49, 13, 466377), Parameter: 42
This method returns the timestamp of the snowflake as a datetime
object in UTC and the parameter encoded within the snowflake.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
flakemaker-1.0.0.post1.tar.gz
(3.7 kB
view hashes)
Built Distribution
Close
Hashes for flakemaker-1.0.0.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84c58f3a17ec590e4f33bc618c949848b39d1f2c7d5e6562435d90f5f8b0c4f6 |
|
MD5 | abe2459e22105f858e96cbfda3a06702 |
|
BLAKE2b-256 | 1669b87d1d45b2291f30b0dc4f8bc8a49acaeb7787c8834e92c51f2b0a861899 |