# `uuid` — UUID objects according to RFC 4122

Вихідний код: Lib/uuid.py

Цей модуль надає незмінні об’єкти `UUID` (клас `UUID`) і функції `uuid1()`, `uuid3()`, `uuid4()`, `uuid5()` для генерації UUID версій 1, 3, 4 і 5, як зазначено в RFC 4122.

Якщо все, що вам потрібно, це унікальний ідентифікатор, ви, ймовірно, повинні викликати `uuid1()` або `uuid4()`. Зауважте, що `uuid1()` може порушувати конфіденційність, оскільки створює UUID, що містить мережеву адресу комп’ютера. `uuid4()` створює випадковий UUID.

Depending on support from the underlying platform, `uuid1()` may or may not return a «safe» UUID. A safe UUID is one which is generated using synchronization methods that ensure no two processes can obtain the same UUID. All instances of `UUID` have an `is_safe` attribute which relays any information about the UUID’s safety, using this enumeration:

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, які також доступні як шість окремих атрибутів і два похідних атрибути:

  Поле | Значення
  --- | ---
  `time_low` | the first 32 bits of the UUID
  `time_mid` | the next 16 bits of the UUID
  `time_hi_version` | the next 16 bits of the UUID
  `clock_seq_hi_variant` | the next 8 bits of the UUID
  `clock_seq_low` | the next 8 bits of the UUID
  `node` | the last 48 bits of the UUID
  `time` | the 60-bit timestamp
  `clock_seq` | the 14-bit sequence number

`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)

  Generate a UUID based on the MD5 hash of a namespace identifier (which is a UUID) and a name (which is a string).

`uuid.``uuid4`()

  Згенеруйте випадковий UUID.

`uuid.``uuid5`(namespace, name)

  Generate a UUID based on the SHA-1 hash of a namespace identifier (which is a UUID) and a name (which is a string).

Модуль `uuid` визначає наступні ідентифікатори простору імен для використання з `uuid3()` або `uuid5()`.

`uuid.``NAMESPACE_DNS`

  When this namespace is specified, the name string is a fully qualified domain name.

`uuid.``NAMESPACE_URL`

  Якщо вказано цей простір імен, рядок name є URL-адресою.

`uuid.``NAMESPACE_OID`

  Якщо вказано цей простір імен, рядок name є ідентифікатором ISO OID.

`uuid.``NAMESPACE_X500`

  Якщо вказано цей простір імен, рядок name є X.500 DN у DER або текстовому форматі виводу.

The `uuid` module defines the following constants for the possible values of the `variant` attribute:

`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')