uuid — UUID objects according to RFC 4122¶
This module provides immutable UUID objects (the UUID class) and the functions uuid1() , uuid3() , uuid4() , uuid5() for generating version 1, 3, 4, and 5 UUIDs as specified in RFC 4122.
If all you want is a unique ID, you should probably call uuid1() or uuid4() . Note that uuid1() may compromise privacy since it creates a UUID containing the computer’s network address. uuid4() creates a random 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:
The UUID was generated by the platform in a multiprocessing-safe way.
The UUID was not generated in a multiprocessing-safe way.
The platform does not provide information on whether the UUID was generated safely or not.
class uuid. UUID ( hex = None , bytes = None , bytes_le = None , fields = None , int = None , version = None , * , is_safe = SafeUUID.unknown ) ¶
Create a UUID from either a string of 32 hexadecimal digits, a string of 16 bytes in big-endian order as the bytes argument, a string of 16 bytes in little-endian order as the bytes_le argument, a tuple of six integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as the fields argument, or a single 128-bit integer as the int argument. When a string of hex digits is given, curly braces, hyphens, and a URN prefix are all optional. For example, these expressions all yield the same UUID:
UUID('') 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 of hex, bytes, bytes_le, fields, or int must be given. The version argument is optional; if given, the resulting UUID will have its variant and version number set according to RFC 4122, overriding bits in the given hex, bytes, bytes_le, fields, or int.
Comparison of UUID objects are made by way of comparing their UUID.int attributes. Comparison with a non-UUID object raises a TypeError .
str(uuid) returns a string in the form 12345678-1234-5678-1234-567812345678 where the 32 hexadecimal digits represent the UUID.
UUID instances have these read-only attributes:
The UUID as a 16-byte string (containing the six integer fields in big-endian byte order).
The UUID as a 16-byte string (with time_low, time_mid, and time_hi_version in little-endian byte order).
A tuple of the six integer fields of the UUID, which are also available as six individual attributes and two derived attributes:
the first 32 bits of the UUID
the next 16 bits of the UUID
the next 16 bits of the UUID
the next 8 bits of the UUID
the next 8 bits of the UUID
the last 48 bits of the UUID
the 14-bit sequence number
The UUID as a 32-character lowercase hexadecimal string.
The UUID as a 128-bit integer.
The UUID as a URN as specified in RFC 4122.
The UUID variant, which determines the internal layout of the UUID. This will be one of the constants RESERVED_NCS , RFC_4122 , RESERVED_MICROSOFT , or RESERVED_FUTURE .
The UUID version number (1 through 5, meaningful only when the variant is RFC_4122 ).
An enumeration of SafeUUID which indicates whether the platform generated the UUID in a multiprocessing-safe way.
The uuid module defines the following functions:
Get the hardware address as a 48-bit positive integer. The first time this runs, it may launch a separate program, which could be quite slow. If all attempts to obtain the hardware address fail, we choose a random 48-bit number with the multicast bit (least significant bit of the first octet) set to 1 as recommended in RFC 4122. “Hardware address” means the MAC address of a network interface. On a machine with multiple network interfaces, universally administered MAC addresses (i.e. where the second least significant bit of the first octet is unset) will be preferred over locally administered MAC addresses, but with no other ordering guarantees.
Changed in version 3.7: Universally administered MAC addresses are preferred over locally administered MAC addresses, since the former are guaranteed to be globally unique, while the latter are not.
Generate a UUID from a host ID, sequence number, and the current time. If node is not given, getnode() is used to obtain the hardware address. If clock_seq is given, it is used as the sequence number; otherwise a random 14-bit sequence number is chosen.
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. 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).
The uuid module defines the following namespace identifiers for use with uuid3() or uuid5() .
When this namespace is specified, the name string is a fully qualified domain name.
When this namespace is specified, the name string is a URL.
When this namespace is specified, the name string is an ISO OID.
When this namespace is specified, the name string is an X.500 DN in DER or a text output format.
The uuid module defines the following constants for the possible values of the variant attribute:
Reserved for NCS compatibility.
Specifies the UUID layout given in RFC 4122.
Reserved for Microsoft compatibility.
Reserved for future definition.
RFC 4122 — A Universally Unique IDentifier (UUID) URN Namespace
This specification defines a Uniform Resource Name namespace for UUIDs, the internal format of UUIDs, and methods of generating UUIDs.
Example¶
Here are some examples of typical usage of the uuid module:
>>> 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('') >>> # 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')
Generate a UUID in Python
Python is a very popular, interpreted, dynamically typed, object-oriented programming language.
First released in 1991 by Guido van Rossum, Python makes use of indentation and whitespace to delimit different blocks of code. It is a general-purpose language and as such is used in many different contexts including (to name just a few) web applications and artificial intelligence.
How to Generate a UUID in Python
The Python language has built-in support for generating Version 1, 3, 4 and 5 UUIDs. Here’s an example of how you can create a Version 4 UUID in Python code.
import uuidmyuuid = uuid.uuid4()print('Your UUID is: ' + str(myuuid))
Explanation
- On line #1, we import Python’s built-in uuid module.
- On line #3, we generate a new Version 4 UUID using the uuid module and store it in the variable, myuuid . This is an instance of Python’s UUID class, not a string.
- On line #5, we use Python’s function, str , to convert from the UUID object to a string.
- The output from line #5 will be something like:
Your UUID is: c303282d-f2e6-46ca-a04a-35d3d873712d
Python’s uuid module has a number of other functions, such as for generating other UUID versions (i.e. 1, 3, 4, and 5). An instance of the Python UUID class has a number of useful methods on it, such as for converting the UUID to bytes, or for converting to a 32 character string (i.e. normal UUID without the ‘-‘ characters).
Convert from a String to a UUID
Although it’s rare, in some circumstances you might need to convert from a string (like the one generated on line #5 above) or byte representation of a UUID back into an instance of UUID .
Python’s uuid module provides for this scenario with the constructor method, uuid.UUID . You can call this method like this:
import uuidmyuuid = uuid.uuid4()myuuidStr = str(myuuid)sameMyUuid = uuid.UUID(myuuidStr)assert myuuid == sameMyUuid
Explanation
- Line #3 generates a new Version 4 UUID.
- Line #4 converts the UUID instance into a string, using the str function.
- Line #6 converts the string representation of a UUID into a Python UUID instance ( sameMyUuid ) using the uuid.UUID() method. Note that this method accepts a number of different formats, including strings and bytes.
- Line #7 is included to show that the 2 UUID instances are equal.
How can we improve this page? Let us know!
Technical Stuff
This blog is all about technical questions in C, C++, data structures like linked lists, Binary trees, UNIX and other software developement issues which I faced.
Pages
Sunday, May 25, 2014
How to convert UUID to String in Python.
A universally unique identifier (UUID) is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE). Check here for more details.
I recently faced a scenario where I need to use string format of the UUID value. I searched in google and could not find proper answer. Finally I got the solution and here it is. After Creating a UUID, we can get different different values depending on the format. For example, we can get int, hex and byte values of UUID. Similarly using urn (Uniform resource name), we can get the string value of the UUID as shown below.
>>> uid = uuid.uuid1() #creating UUID >>> uid UUID('52f8e1ba-e3ac-11e3-8232-a82066136178') >>> uid.int #int format of UUID 110288963624339905056441828728831697272L >>> uid.hex #hexa format of UUID '52f8e1bae3ac11e38232a82066136178' >>> uid.bytes #bytes format of UUID 'R\xf8\xe1\xba\xe3\xac\x11\xe3\x822\xa8 f\x13ax' >>> uid.urn #uniform resource name 'urn:uuid:52f8e1ba-e3ac-11e3-8232-a82066136178' >>>
From the above example uid.urn returns string value ‘urn:uuid:52f8e1ba-e3ac-11e3-8232-a82066136178’. But we need only value and we dont need first nine characters ‘urn:uuid:’, so we can skip those 9 characters to get the string value as shown below.
>>> uid_str = uid.urn >>> str = uid_str[9:] >>> str '52f8e1ba-e3ac-11e3-8232-a82066136178' >>>