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 :)
Ça parait légèrement utile, mais comme la principale problématique c’est d’être sur que l’uuid est bien unique, ce n’est que légèrement utile.
Ça peut faire un test avant de faire un traitement plus lourd, comme appeler une API externe ou simplement faire une recherche en base de données. Si l’uuid n’est pas valide, on s’économise des traitements plus lourds que cette fonction.
@Xavier Combelle Le but n’est vraiment de vérifier si l’uuid est bien unique (ce qui doit être d’ailleurs impossible à moins d’avoir la liste de tout les uuid généré depuis le début de l’existence de ce standard) mais juste de vérifier que la chaine fourni est bien un uuid (en terme de format)
À 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
Je croyais être le seul à penser ça.
Ce site devrait te plaire :) : http://wasteaguid.info/
“À 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”
Je plussoie totalement
@Purexo : c’est le principe d’uuid “Unique Universal Identifier”. C’est un algo qui permet d’un avoir un identifiant “unique” sans registre centrale.
Il y a tout de même une collision possible, mais au vue de nombre de combinaisons possibles (10^38), tu peux partir du principe qu’il est unique, sinon, ton utilisateur est Frane Selak.
Pour se prévenir
de se problème” -> de ce probleme (dans le commentaire du code)
Content de revoir de l’agitation sur ce blog :)
Oui, mais à ce compte là, à chaque fois que tu dis ou écris une phrase tu uses aussi la fabrique de l’univers. Puisqu’il existe un nombre fini (bien que très grand) de phrases possibles.
Et que dire de tes empreintes digitales ?