Skip to content

Sam-Strand/my_id

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyID

Python библиотека для работы с уникальными идентификаторами фиксированной длины.

Особенности

  • Безопасная генерация - Использование криптографически безопасного генератора
  • Детерминированное создание - Возможность генерации ID из исходных данных
  • Фиксированный формат - Строгий формат: 22 символа (буква + буквы/цифры)
  • Интеграция с Pydantic - Полная поддержка валидации в Pydantic моделях
  • Простота использования - Интуитивно понятный API

Установка

Способ 1: Установка из репозитория (требуется Git)

pip install git+https://github.com/Sam-Strand/my_id.git

Способ 2: Установка готового пакета (без Git)

pip install https://github.com/Sam-Strand/my_id/releases/download/v1.0.1/my_id-1.0.1-py3-none-any.whl

Быстрый старт

from my_id import MyID

# Создание случайного ID
uid = MyID()
print(f"Случайный ID: {uid}")
# Пример: A1b2C3d4E5f6G7h8I9j0K1

# Создание детерминированного ID из строки
consistent_id = MyID.derive("hello world")
print(f"Детерминированный ID: {consistent_id}")
# Всегда одинаковый для одних и тех же данных: DpN9xpaiPUuDGbVcki1P8v

# Валидация существующего ID
try:
    valid_id = MyID("B123456789012345678901")
    print(f"Валидный ID: {valid_id}")
except ValueError as e:
    print(f"Ошибка: {e}")

MyIDTuple

Создает кортеж (tuple) из MyID переданных строкой через запятую. Наследуется от tuple, содержит кортеж валидных MyID. Актуально для валидации параметров get запросов.

Пример

# Создание кортежа ID из строки
ids = MyIDTuple('xqqumRbXZ1KdIXDOBLcFTE,xELq0jsA9rgDlTkYXJXz6S,YXtOWu9Uv06iLOItdhPSWl')
# Или из списка
ids = MyIDTuple(['xqqumRbXZ1KdIXDOBLcFTE', MyID(), MyID('YXtOWu9Uv06iLOItdhPSWl')])  # Каждый элемент валидируется

# Доступ к элементам
first_id = ids[0]  # MyID('xqqumRbXZ1KdIXDOBLcFTE')
for uid in ids:
    print(uid)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages