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 имеют атрибут 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 необязательны. Например, все эти выражения дают один и тот же 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-байтовой строки (содержащей шесть целочисленных полей в порядке возрастания байтов).

UUID.bytes_le

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

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-адреса (т.е. где второй наименее значимый бит первого октета сброшен) будут предпочтительнее локально управляемых MAC-адресов, но без каких-либо других гарантий упорядочения.

Изменено в версии 3.7: Универсально администрируемые 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 является ISO OID.

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 - Пространство имен URN универсально уникального идентификатора (UUID)

Эта спецификация определяет пространство имен унифицированного имени ресурса для UUID, внутренний формат UUID и методы генерации UUID.

Пример

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

>>> import uuid

>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'

>>> # get the raw 16 bytes of the UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
Вернуться на верх