Si on teste du code qui utilise des uuid, on veut vérifier qu’on récupère bien des uuid valides là où on les attend.
Le plus simple est de déléguer cette vérification au module uuid
qui est déjà celui qu’on utilise pour les produire.
from uuid import UUID def is_uuid(uuid_string, version=4): try: # Si uuid_string est un code hex valide mais pas un uuid valid, # UUID() va quand même le convertir en uuid valide. Pour se prémunir # de ce problème, on check la version original (sans les tirets) avec # le code hex généré qui doivent être les mêmes. uid = UUID(uuid_string, version=version) return uid.hex == uuid_string.replace('-', '') except ValueError: return False |
Et pouf:
>>> import uuid >>> print(uuid.uuid4()) 1049d03f-6f45-4637-89ff-f57567f6d022 >>> is_uuid('1049d03f-6f45-4637-89ff-f57567f6d022') True >>> is_uuid('1049d03f6f45463789fff57567f6d022') True >>> is_uuid('1049d03f6f45') False |
À chaque fois que j’utilise un uuid, j’ai un peu l’impression d’user la fabrique de l’univers, comme si je fabriquais quelque chose d’unique pour le mettre la poubelle, et qui n’existera plus jamais. Le gâchis d’un flocon de neige virtuel :)