funkybob est une bibliothèque Python permettant de générer des noms aléatoires de style Docker, comme ceux-ci :
ecstatic_ritchie, kind_beaver, sharp_heisenberg, angry_nightingale, ...
funkybob prend en charge la génération de noms précédés d'un nombre arbitraire d'adjectifs, afin d'augmenter le nombre de noms uniques pouvant être générés :
Random names with no adjectives:
swirles, khorana, blackwell, ...
Random names preceeded by an adjective:
ecstatic_ritchie, kind_beaver, sharp_heisenberg, ...
Random names preceeded by two adjectives:
admiring_dazzling_noether, thirsty_wonderful_agnesi, silly_wizardly_feynman, ...
Random names preceeded by three adjectives:
cranky_goofy_hopeful_wright, competent_jolly_suspicious_kare, cocky_competent_gifted_yalow, ...
Lorsque vous utilisez plus d'un adjectif, funkybob garantit que deux noms avec le même ensemble d'adjectifs ne peuvent pas apparaître, même si l'ordre est différent. Ainsi, par exemple, si le nom inspiring_stupefied_payne
a été généré, alors vous pouvez être sûr que le nom stupefied_inspiring_payne
ne sera pas généré ultérieurement. Cela rend les noms beaucoup plus faciles à distinguer et moins susceptibles de générer de la confusion.
Le package est hébergé sur PyPI, pour l'installer, utilisez :
$ pip install funkybob
funkybob propose trois générateurs de noms différents :
SimpleNameGenerator : cela fournit une séquence déterministe de noms -- aucun caractère aléatoire n'est impliqué. Cela renverra les noms en double une fois que toutes les combinaisons auront été obtenues. Utile si vous ne vous souciez que des performances.
RandomNameGenerator : renvoie les noms générés aléatoirement. Il peut renvoyer des noms en double à tout moment.
UniqueRandomNameGenerator : renvoie les noms générés aléatoirement, mais contrairement à RandomNameGenerator, aucun doublon n'est renvoyé. Contrairement aux deux autres générateurs, celui-ci a une taille limitée et cessera de produire des valeurs une fois que tous les noms uniques auront été renvoyés.
Ce tableau résume les caractéristiques des trois générateurs :
Générateur | Infini | Aléatoire | Doublons |
---|---|---|---|
Générateur de nom simple | Oui | Non | Oui |
Générateur de noms aléatoires | Oui | Oui | Oui |
UniqueRandomNameGenerator | Non | Oui | Non |
Les trois générateurs sont itérables, ce qui signifie que vous pouvez simplement utiliser iter()
et next()
dessus afin de récupérer les noms :
>> > import funkybob
>> > generator = funkybob . RandomNameGenerator ()
>> > it = iter ( generator )
>> > next ( it )
'practical_hoover'
>> > next ( it )
'stupefied_ramanujan'
>> > next ( it )
'zealous_aryabhata'
Vous pouvez passer les paramètres members
et separator
pour modifier le nombre d'adjectifs ou la mise en forme des noms :
>> > # This will generate names with 3 members (2 adjectives + 1 last name),
>> > # separated by a colon
>> > generator = funkybob . RandomNameGenerator ( members = 3 , separator = ':' )
>> > it = iter ( generator )
>> > next ( it )
'friendly:hopeful:neumann'
>> > next ( it )
'admiring:trusting:montalcini'
>> > next ( it )
'practical:suspicious:blackwell'
Les générateurs ont un attribut unique_count
que vous pouvez utiliser pour vérifier le nombre de noms uniques pouvant être générés :
>> > generator . unique_count
740094
En plus de tout ce qui précède, UniqueRandomNameGenerator offre une interface de type séquence, ce qui signifie, par exemple, que vous pouvez utiliser l'indexation ou la méthode len()
(ce qui revient à accéder à l'attribut unique_count
) :
>> > generator = funkybob . UniqueRandomNameGenerator ()
>> > generator [ 0 ]
'xenodochial_yalow'
>> > generator [ 1 ]
'kind_mccarthy'
>> > generator [ 2 ]
'happy_hawking'
>> > len ( generator )
16089
Vous pouvez augmenter le nombre de members
afin d'augmenter la taille, au prix d'avoir des noms plus longs.
UniqueRandomNameGenerator prend également en charge un paramètre supplémentaire : seed
. Ceci peut être utilisé pour initialiser le générateur pseudo-aléatoire. Si vous transmettez toujours la même valeur, la même séquence de noms sera générée. Cela peut être utile dans les tests lorsque vous avez besoin de noms prévisibles.