Spec-Zone.ru › Python 3.11

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 байтов (содержащая шесть целочисленных полей в порядке big-endian байтов).

UUID.bytes_le

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

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) и имени (которое является строкой).

END_OF_DOCUMENT_MARKER
uuid.uuid4()

Сгенерировать случайный UUID.

uuid.uuid5(namespace, name)

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

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

uuid.NAMESPACE_DNS

Когда указано это пространство имён, строка имя — это полностью квалифицированное доменное имя.

uuid.NAMESPACE_URL

Когда указано это пространство имён, строка имя — это URL.

uuid.NAMESPACE_OID

Когда указано это пространство имён, строка имя — это ISO OID.

uuid.NAMESPACE_X500

Когда указано это пространство имён, строка имя — это 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)

В этом спецификации определено пространство имён Uniform Resource Name для 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')

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/uuid.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API