Skip to main content

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


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 details)

Uploaded Source

Built Distribution

flakemaker-1.0.0.post1-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file flakemaker-1.0.0.post1.tar.gz.

File metadata

  • Download URL: flakemaker-1.0.0.post1.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for flakemaker-1.0.0.post1.tar.gz
Algorithm Hash digest
SHA256 dfb5696dce20200ca904febea188f5d361ef5aa254caa5dec7173fc9710660db
MD5 39f8f4d8158577510d1e6b2cee14a08e
BLAKE2b-256 544db0e820e5af3b60f43752c410368eb650e3c256021e3060a392d74358f1fa

See more details on using hashes here.

File details

Details for the file flakemaker-1.0.0.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for flakemaker-1.0.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 84c58f3a17ec590e4f33bc618c949848b39d1f2c7d5e6562435d90f5f8b0c4f6
MD5 abe2459e22105f858e96cbfda3a06702
BLAKE2b-256 1669b87d1d45b2291f30b0dc4f8bc8a49acaeb7787c8834e92c51f2b0a861899

See more details on using hashes here.

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