How to generate a random UUID which is reproducible (with a seed) in Python How to generate a random UUID which is reproducible (with a seed) in Python python python

How to generate a random UUID which is reproducible (with a seed) in Python


Almost there:

uuid.UUID(int=rd.getrandbits(128))

This was determined with the help of help:

>>> help(uuid.UUID.__init__)Help on method __init__ in module uuid:__init__(self, hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None) unbound uuid.UUID method    Create a UUID from either a string of 32 hexadecimal digits,    a string of 16 bytes 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('{12345678-1234-5678-1234-567812345678}')    UUID('12345678123456781234567812345678')    UUID('urn:uuid:12345678-1234-5678-1234-567812345678')    UUID(bytes='\x12\x34\x56\x78'*4)    UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' +                  '\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 set according to RFC 4122,    overriding the given 'hex', 'bytes', 'bytes_le', 'fields', or 'int'.


Faker makes this easy

>>> from faker import Faker>>> f1 = Faker()>>> f1.seed(4321)>>> print(f1.uuid4())cc733c92-6853-15f6-0e49-bec741188ebb>>> print(f1.uuid4())a41f020c-2d4d-333f-f1d3-979f1043fae0>>> f1.seed(4321)>>> print(f1.uuid4())cc733c92-6853-15f6-0e49-bec741188ebb


This is based on a solution used here:

import hashlibimport uuidm = hashlib.md5()m.update(seed.encode('utf-8'))new_uuid = uuid.UUID(m.hexdigest())