Spec-Zone.ru › Python 3.12

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

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

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

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

uuid.uuid3(namespace, name)

Сгенерировать UUID на основе хеша MD5 идентификатора пространства имён (который является UUID) и имени (объекта bytes или строки, которая будет закодирована с использованием UTF-8).

uuid.uuid4()

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

uuid.uuid5(namespace, name)

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

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

uuid.NAMESPACE_DNS

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

uuid.NAMESPACE_URL

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

uuid.NAMESPACE_OID

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

uuid.NAMESPACE_X500

Если указано это пространство имён, строка name является DN формата X.500 в 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.

Использование командной строки

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

Модуль uuid можно запустить из командной строки как скрипт.

python -m uuid [-h] [-u {uuid1,uuid3,uuid4,uuid5}] [-n NAMESPACE] [-N NAME]

Допускаются следующие параметры:

-h, --help

Показать справочное сообщение и завершить работу.

-u <uuid>
--uuid <uuid>

Указать имя функции, используемой для генерации uuid. По умолчанию используется uuid4().

-n <namespace>
--namespace <namespace>

Пространство имён — это UUID или @ns, где ns — это известный заранее определённый UUID, задаваемый именем пространства имён. Например: @dns, @url, @oid и @x500. Требуется только для функций uuid3() / uuid5().

-N <name>
--name <name>

Имя, используемое при генерации uuid. Требуется только для функций uuid3() / uuid5().

Пример

Ниже приведены примеры типичного использования модуля 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')

Пример использования командной строки

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

# generate a random uuid - by default uuid4() is used
$ python -m uuid

# generate a uuid using uuid1()
$ python -m uuid -u uuid1

# generate a uuid using uuid5
$ python -m uuid -u uuid5 -n @url -N example.com

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

Spec-Zone.ru

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