21.20.uuid — UUID objects according toRFC 4122¶
Source code:Lib/uuid.py
This module provides immutableUUID objects (theUUID class)and the functionsuuid1(),uuid3(),uuid4(),uuid5() forgenerating version 1, 3, 4, and 5 UUIDs as specified inRFC 4122.
If all you want is a unique ID, you should probably calluuid1() oruuid4(). Note thatuuid1() may compromise privacy since it createsa UUID containing the computer’s network address.uuid4() creates arandom UUID.
- class
uuid.UUID(hex=None,bytes=None,bytes_le=None,fields=None,int=None,version=None)¶ Create a UUID from either a string of 32 hexadecimal digits, a string of 16bytes in big-endian order as thebytes argument, a string of 16 bytes inlittle-endian order as thebytes_le argument, a tuple of six integers(32-bittime_low, 16-bittime_mid, 16-bittime_hi_version,8-bitclock_seq_hi_variant, 8-bitclock_seq_low, 48-bitnode) as thefields argument, or a single 128-bit integer as theint argument.When a string of hex digits is given, curly braces, hyphens,and a URN prefix are all optional. For example, theseexpressions all yield the same 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)
Exactly one ofhex,bytes,bytes_le,fields, orint must be given.Theversion argument is optional; if given, the resulting UUID will have itsvariant and version number set according toRFC 4122, overriding bits in thegivenhex,bytes,bytes_le,fields, orint.
Comparison of UUID objects are made by way of comparing their
UUID.intattributes. Comparison with a non-UUID objectraises aTypeError.str(uuid)returns a string in the form12345678-1234-5678-1234-567812345678where the 32 hexadecimal digitsrepresent the UUID.
UUID instances have these read-only attributes:
UUID.bytes¶The UUID as a 16-byte string (containing the six integer fields in big-endianbyte order).
UUID.bytes_le¶The UUID as a 16-byte string (withtime_low,time_mid, andtime_hi_versionin little-endian byte order).
UUID.fields¶A tuple of the six integer fields of the UUID, which are also available as sixindividual attributes and two derived attributes:
Field
Meaning
time_lowthe first 32 bits of the UUID
time_midthe next 16 bits of the UUID
time_hi_versionthe next 16 bits of the UUID
clock_seq_hi_variantthe next 8 bits of the UUID
clock_seq_lowthe next 8 bits of the UUID
nodethe last 48 bits of the UUID
the 60-bit timestamp
clock_seqthe 14-bit sequence number
UUID.hex¶The UUID as a 32-character hexadecimal string.
UUID.int¶The UUID as a 128-bit integer.
UUID.variant¶The UUID variant, which determines the internal layout of the UUID. This will beone of the constants
RESERVED_NCS,RFC_4122,RESERVED_MICROSOFT, orRESERVED_FUTURE.
Theuuid module defines the following functions:
uuid.getnode()¶Get the hardware address as a 48-bit positive integer. The first time thisruns, it may launch a separate program, which could be quite slow. If allattempts to obtain the hardware address fail, we choose a random 48-bit numberwith its eighth bit set to 1 as recommended inRFC 4122. “Hardware address”means the MAC address of a network interface, and on a machine with multiplenetwork interfaces the MAC address of any one of them may be returned.
uuid.uuid1(node=None,clock_seq=None)¶Generate a UUID from a host ID, sequence number, and the current time. Ifnodeis not given,
getnode()is used to obtain the hardware address. Ifclock_seq is given, it is used as the sequence number; otherwise a random14-bit sequence number is chosen.
uuid.uuid3(namespace,name)¶Generate a UUID based on the MD5 hash of a namespace identifier (which is aUUID) and a name (which is a string).
uuid.uuid4()¶Generate a random UUID.
uuid.uuid5(namespace,name)¶Generate a UUID based on the SHA-1 hash of a namespace identifier (which is aUUID) and a name (which is a string).
Theuuid module defines the following namespace identifiers for use withuuid3() oruuid5().
uuid.NAMESPACE_DNS¶When this namespace is specified, thename string is a fully-qualified domainname.
uuid.NAMESPACE_URL¶When this namespace is specified, thename string is a URL.
uuid.NAMESPACE_OID¶When this namespace is specified, thename string is an ISO OID.
uuid.NAMESPACE_X500¶When this namespace is specified, thename string is an X.500 DN in DER or atext output format.
Theuuid module defines the following constants for the possible valuesof thevariant attribute:
uuid.RESERVED_NCS¶Reserved for NCS compatibility.
uuid.RESERVED_MICROSOFT¶Reserved for Microsoft compatibility.
uuid.RESERVED_FUTURE¶Reserved for future definition.
See also
- RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
This specification defines a Uniform Resource Name namespace for UUIDs, theinternal format of UUIDs, and methods of generating UUIDs.
21.20.1.Example¶
Here are some examples of typical usage of theuuid module:
>>>importuuid>>># 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.bytesb'\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')
