uuid — UUID объекты согласно RFC 4122

Исходный код: Lib/uuid.py


Модуль предоставляет неизменяемые объекты UUID (класс UUID) и функции uuid1(), uuid3(), uuid4(), uuid5() для создания UUID версий 1, 3, 4 и 5, как указано в RFC 4122.

Если вам нужен только уникальный идентификатор, вам, вероятно, следует вызвать uuid1() или uuid4(). Обратите внимание, что uuid1() может нарушить конфиденциальность, поскольку создает UUID, содержащий сетевой адрес компьютера. uuid4() создает случайный UUID.

В зависимости от поддержки со стороны основной платформы может uuid1(), или не может возвратить «безопасный» UUID. Безопасный UUID - это UUID, генерируемый с помощью методов синхронизации, которые не позволяют двум процессам получить один и тот же UUID. Все сущности UUID имеют is_safe атрибут который передает любую информацию о безопасности UUID, используя следующее перечисление:

class uuid.SafeUUID

Добавлено в версии 3.7.

safe

UUID был сгенерирован платформой многопроцесснобезопасным способом.

unsafe

UUID не был создан многопроцесснобезопасным способом.

unknown

Платформа не предоставляет информацию о том, был ли UUID сгенерирован безопасно или нет.

class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)

Создать UUID из строка из 32 шестнадцатеричных цифр, строка из 16 байт в порядке big-endian в качестве аргумента bytes, строка из 16 байт в порядке little-endian в качестве аргумента bytes_le, кортеж из шести целых чисел (32-битный time_low, 16-битный time_mid, 16-битный time_hi_version, 8-битный clock_seq_hi_variant, 8-битный clock_seq_low, 48-битный node) в качестве аргумента fields или одно 128-битное целое число в качестве аргумента int. При задании строка шестнадцатеричных цифр все фигURNе скобки, дефисы и префикс URN являются необязательными. Например, все эти выражения yield один и тот же UUID:

UUID('{12345678-1234-5678-1234-567812345678}')
UUID('12345678123456781234567812345678')
UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
UUID(bytes=b'\x12\x34\x56\x78'*4)
UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' +
              b'\x12\x34\x56\x78\x12\x34\x56\x78')
UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
UUID(int=0x12345678123456781234567812345678)

Должен быть дан ровно один из hex, bytes, bytes_le, fields или int. Аргумент version необязателен; если задан, результирующий UUID будет иметь свой вариант и номер версии, установленные согласно RFC 4122, переопределяя биты в данном hex, bytes, bytes_le, fields или int.

Сравнение объектов UUID производится путем сравнения их UUID.int атрибуты. Сравнение с объектом, не являющимся объектом UUID, вызывает TypeError.

str(uuid) возвращает строка в форме 12345678-1234-5678-1234-567812345678 где 32 шестнадцатеричных цифры представляют UUID.

UUID сущности имеют эти атрибуты: только для чтения

UUID.bytes

UUID в виде 16-байтового строка (содержащего шесть целых полей в порядке байтов big-endian).

UUID.bytes_le

UUID как 16-байтовый строка (с time_low, time_mid и time_hi_version в прямом порядоке байтов (little-endian).

UUID.fields

Кортеж из шести целых полей UUID, которые также доступны как шесть отдельных атрибуты и два производных атрибуты:

Поле Смысл
time_low первые 32 бита UUID
time_mid следующие 16 битов UUID
time_hi_version следующие 16 битов UUID
clock_seq_hi_variant следующие 8 битов UUID
clock_seq_low следующие 8 битов UUID
node последние 48 битов UUID
time 60-битная временная метка
clock_seq 14-разрядный порядковый номер
UUID.hex

Ты UUID на шестнадцатеричный 32-символ «строка

UUID.int

UUID как 128-битное целое число.

UUID.urn

UUID как URN, как указано в RFC 4122.

UUID.variant

Вариант UUID, определяющий внутренний формат UUID. Это будет одна из констант RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT или RESERVED_FUTURE.

UUID.version

Номер версии UUID (от 1 до 5, имеет значение, только если вариантом является RFC_4122).

UUID.is_safe

Перечисление SafeUUID, указывающее, сгенерировала ли платформа UUID многопроцесснобезопасным способом.

Добавлено в версии 3.7.

Модуль uuid определяет следующие функции:

uuid.getnode()

Получите аппаратный адрес как 48-битное положительное целое число. При первом запуске он может запустить отдельную программу, которая может быть довольно медленной. Если все попытки получить аппаратный адрес завершатся неудачей, мы выберем случайное 48-битное число с битом многоадресной передачи (младшим битом первого октета), установленным на 1, как рекомендуется в RFC 4122. «Аппаратный адрес» означает MAC-адрес сетевого интерфейса. На машине с несколькими сетевыми интерфейсами универсально администрируемые MAC-адреса (т.е. где unset второй младший бит первого октета) будут предпочтительнее локально администрируемых MAC-адресов, но без других гарантий упорядочения.

Изменено в версии 3.7: Универсально администрируемые MAC-адреса предпочтительнее локально администрируемых MAC-адресов, поскольку первые гарантированно являются глобально уникальными, тогда как вторые нет.

uuid.uuid1(node=None, clock_seq=None)

Создать UUID из идентификатора хоста, порядкового номера и текущего времени. Если node не задан, getnode() используемый получить аппаратный адрес. Если clock_seq дано, оно используемый в качестве порядкового номера; в противном случае выбирается случайный 14-битовый порядковый номер.

uuid.uuid3(namespace, name)

Создать UUID на основе хэша MD5 идентификатора пространства имен (который является UUID) и имени (который является строка).

uuid.uuid4()

Создание случайного UUID.

uuid.uuid5(namespace, name)

Создать UUID на основе хэша SHA-1 идентификатора пространства имен (который является UUID) и имени (который является строка).

Модуль uuid определяет следующие идентификаторы пространства имен для использования с uuid3() или uuid5().

uuid.NAMESPACE_DNS

Если указано это пространство имен, name строка является полным доменным именем.

uuid.NAMESPACE_URL

Если указано это пространство имен, name строка является URL- адресом.

uuid.NAMESPACE_OID

Если указано это пространство имен, name строка является OID ISO.

uuid.NAMESPACE_X500

Если указано это пространство имен, то name строка является X.500 DN в формате DER или текстовом формате вывода.

Модуль uuid определяет следующие константы для возможного значения variant атрибут:

uuid.RESERVED_NCS

Зарезервировано для совместимости с NCS.

uuid.RFC_4122

Задает макет UUID, указанный в RFC 4122.

uuid.RESERVED_MICROSOFT

Зарезервировано для совместимости с Microsoft.

uuid.RESERVED_FUTURE

Зарезервировано для будущего определения.

См.также

RFC 4122 - универсально уникальный идентификатор (UUID) пространство имен
URN эта спецификация определяет однородное пространство имен имени ресурса для UUIDs, внутреннего формата UUIDs и методов создания UUIDs.

Пример

Ниже приведены некоторые примеры типичного использования модуля uuid:

>>> import uuid

>>> # создать UUID на основе идентификатора хоста и текущего времени
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

>>> # сделать UUID используя хэш MD5 пространства имен UUID и имя
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

>>> # создать случайный UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

>>> # сделать UUID используя хэш SHA-1 пространства имен UUID и имя
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

>>> # создать UUID из строки шестнадцатеричных цифр (фигурные скобки и дефисы игнорируются)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

>>> # преобразование UUID в строка шестнадцатеричных цифр в стандартной форме
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'

>>> # получить необработанные 16 байт UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

>>> # создать UUID из 16-байтовой строки
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')