Source code for wheezy.core.uuid

""" ``uuid`` module.
"""

from base64 import b64decode, b64encode
from binascii import Error
from uuid import UUID

BASE64_ALTCHARS = "-_".encode("latin1")
BASE64_SUFFIX = "==".encode("latin1")
UUID_EMPTY = UUID("00000000-0000-0000-0000-000000000000")


[docs]def shrink_uuid(uuid): """Returns base64 representation of ``uuid``. >>> shrink_uuid(UUID('a4af2f54-e988-4f5c-bfd6-351c79299b74')) 'pK8vVOmIT1y_1jUceSmbdA' >>> shrink_uuid(UUID('d17aba88-19c3-400e-adee-3ecf935db272')) '0Xq6iBnDQA6t7j7Pk12ycg' >>> shrink_uuid(UUID('39ae13ee-202a-42d1-9117-6fb6fdd169a4')) 'Oa4T7iAqQtGRF2-2_dFppA' >>> shrink_uuid(UUID_EMPTY) 'AAAAAAAAAAAAAAAAAAAAAA' """ assert isinstance(uuid, UUID) return (b64encode(uuid.bytes, BASE64_ALTCHARS)[:22]).decode("latin1")
[docs]def parse_uuid(s): """ >>> parse_uuid('pK8vVOmIT1y_1jUceSmbdA') UUID('a4af2f54-e988-4f5c-bfd6-351c79299b74') >>> parse_uuid('0Xq6iBnDQA6t7j7Pk12ycg') UUID('d17aba88-19c3-400e-adee-3ecf935db272') >>> parse_uuid('Oa4T7iAqQtGRF2-2_dFppA') UUID('39ae13ee-202a-42d1-9117-6fb6fdd169a4') >>> parse_uuid('AAAAAAAAAAAAAAAAAAAAAA') UUID('00000000-0000-0000-0000-000000000000') Return an empty uuid in case the string is empty or length not equal to 22. >>> parse_uuid('') UUID('00000000-0000-0000-0000-000000000000') >>> parse_uuid('x') UUID('00000000-0000-0000-0000-000000000000') Incorrect base64 padding. >>> parse_uuid('AAAAAAAAAA*AAAAAAAAAAA') UUID('00000000-0000-0000-0000-000000000000') """ if not s or len(s) != 22: return UUID_EMPTY try: raw = b64decode(s.encode("latin1") + BASE64_SUFFIX, BASE64_ALTCHARS) except (TypeError, Error): # Incorrect padding return UUID_EMPTY assert len(raw) == 16 return UUID(bytes=raw)