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

Поле

Значение

UUID.time_low

Первые 32 бита UUID.

UUID.time_mid

Следующие 16 бит UUID.

UUID.time_hi_version

Следующие 16 бит UUID.

UUID.clock_seq_hi_variant

Следующие 8 бит UUID.

UUID.clock_seq_low

Следующие 8 бит UUID.

UUID.node

Последние 48 бит UUID.

UUID.time

60-битная временная метка.

UUID.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-адреса предпочтительнее локально управляемых 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 на основе хэша SHA1 идентификатора пространства имен (который является 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')
Вернуться на верх