Skip to main content

This is a tool that automatically generates short IDs

Project description

Slim-ID: A Lightweight ID Generation Library for Python

下の方に日本語の説明があります

Overview

  • This is a tool that automatically generates short IDs.
  • It has a mechanism to avoid collisions with already generated IDs.

Features

  • Specify the desired length for generated IDs (default is 5 characters)
  • Automatically increases the length if the generated ID conflicts with existing IDs
  • Specify the alphabet to use for the ID (default is URL-safe Base64, but hexadecimal can also be specified)
  • Uses cryptographically secure random number generation internally, providing a degree of protection against attackers predicting the random number from timestamps, etc.
  • Requires a user-defined function to determine if a generated ID conflicts with existing IDs. This function is expected to handle dictionary lookups or database queries, for example.

Usage Example

import sys
import slim_id

id_dic = {}

def exists(arg_id):
    return (arg_id in id_dic)

# Generate an ID using Slim-ID
s_id = slim_id.gen(exists)
id_dic[s_id] = True
print(s_id)

# Generate an ID using Slim-ID with custom parameters
s_id = slim_id.gen(
    exists,  # Function to determine if an ID exists in the database
    length = 7,  # Base length (automatically increases if a collision occurs)
    ab = "16",  # Alphabet type (base64url... URL-safe Base64, 16... hexadecimal)
)
id_dic[s_id] = True
print(s_id)

Custom Alphabet for Generating Slim-ID

Users can now specify a custom character set for generating IDs, allowing for tailored ID generation to meet specific needs. When using a custom alphabet, provide a list of characters to be used.

import sys
import slim_id

id_dic = {}

def exists(arg_id):
    return (arg_id in id_dic)

# Generate a basic Slim-ID
s_id = slim_id.gen(exists)
id_dic[s_id] = True
print(s_id)

# Generate a Slim-ID using a custom alphabet
s_id = slim_id.gen(
    exists,  # Function to check if the ID already exists in the database
    length = 7,  # Base length (will increase automatically if a collision occurs)
    ab = list("0123456789"),  # Custom alphabet
)
id_dic[s_id] = True
print(s_id)

With this feature, IDs are generated using the specified custom alphabet set. For example, in the code above, the generated IDs will consist only of numbers.

概要

  • 短いIDを自動生成するツールです
  • 生成済みIDとの衝突を回避する仕組みを持っています

特徴

  • 生成されるIDの長さを指定可能(デフォルトは5文字)
  • 生成されたIDが既存のIDと衝突する場合、長さが自動的に増える
  • IDに使用するアルファベットを指定可能(デフォルトはURLセーフなBase64だが、16進数も指定できる)
  • 内部で暗号学的に安全な乱数生成を使用しており、タイムスタンプなどから乱数を推定する攻撃者に対してある程度の保護を提供
  • 生成されたIDが既存のIDと衝突しているかどうかを判断する関数をユーザーが定義する必要がある。この関数は、辞書の引当やDBの引き当てなどを処理することが想定されている。
import sys
import slim_id

id_dic = {}

def exists(arg_id):
    return (arg_id in id_dic)

# Slim-IDを使用してIDを生成
s_id = slim_id.gen(exists)
id_dic[s_id] = True
print(s_id)

# カスタムパラメータを使用してSlim-IDでIDを生成
s_id = slim_id.gen(
    exists,  # IDがデータベースに存在するかどうかを判断する関数
    length = 7,  # 基本長(衝突が発生した場合、自動的に長くなります)
    ab = "16",  # アルファベットの種類(base64url... URLセーフな64進数、16... 16進数)
)
id_dic[s_id] = True
print(s_id)

カスタムアルファベット指定

ユーザーが任意の文字セットを指定してIDを生成できるようになりました。これにより、特定のニーズに応じたID生成が可能になります。 (カスタム指定の場合は、アルファベットの文字のリストを指定します。)

import sys
import slim_id

id_dic = {}

def exists(arg_id):
    return (arg_id in id_dic)

# 基本的なSlim-IDの生成
s_id = slim_id.gen(exists)
id_dic[s_id] = True
print(s_id)

# カスタムアルファベットを使用してSlim-IDでIDを生成
s_id = slim_id.gen(
    exists,  # IDがデータベースに存在するかどうかを判断する関数
    length = 7,  # 基本長(衝突が発生した場合、自動的に長くなります)
    ab = list("0123456789"),  # カスタムアルファベットの種類
)
id_dic[s_id] = True
print(s_id)

これにより、指定されたカスタムアルファベットのセットからIDが生成されます。例えば、上記の例では数字のみを使用してIDが生成されます。

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

slim-id-0.0.3.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

slim_id-0.0.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file slim-id-0.0.3.tar.gz.

File metadata

  • Download URL: slim-id-0.0.3.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.32.3 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.8.8

File hashes

Hashes for slim-id-0.0.3.tar.gz
Algorithm Hash digest
SHA256 620507b68e5696efee9fac96aa9a532e6a2590fa1827dbc7f42cc2e014f56327
MD5 55369be836b3f5ea4de191e25f32b204
BLAKE2b-256 c700b002130c8623df9a2a025ecf73f485bab7865d52aa806c73dccfb5831eb5

See more details on using hashes here.

File details

Details for the file slim_id-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: slim_id-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.32.3 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.8.8

File hashes

Hashes for slim_id-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1481e628fff0ad929dcc9fc35298545c30cdb117868ea2dc7b3de68520da0f26
MD5 bcd08d265f40e88bf7bb508b6169f7ac
BLAKE2b-256 4f0c3788184662af01bd7eb1896dcac12dfb6b67c96b5b2e8170c2ec3eb0fc29

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