The following is the code in 1.80 for UUID generation from gluon/utils.py.
Can someone explain to me what is going on here? What's with all the
bitshifting?

web2py_uuid_locker = thread.allocate_lock()
node_id = uuid.getnode()
milliseconds = int(time.time() * 1e3)

def rotate(i):
    a = random.randrange(256)
    b = (node_id >> 4*i) % 256
    c = (milliseconds >> 4*i) % 256
    return (a + b + c) % 256

def web2py_uuid():
    web2py_uuid_locker.acquire()
    try:
        bytes = [chr(rotate(i)) for i in range(16)]
        return str(uuid.UUID(bytes=bytes, version=4))
    finally:
        web2py_uuid_locker.release()

-- 
Craig Younkins

Reply via email to