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

uuid.uuid4()

Генерирует случайный UUID.

uuid.uuid5(namespace, name)

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

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

uuid.NAMESPACE_DNS

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

uuid.NAMESPACE_URL

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

uuid.NAMESPACE_OID

При указании этого пространства имён строка имя является ISO OID.

uuid.NAMESPACE_X500

При указании этого пространства имён строка имя является 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