funkybob は、次のような Docker スタイルのランダム名を生成するための Python ライブラリです。
ecstatic_ritchie, kind_beaver, sharp_heisenberg, angry_nightingale, ...
funkybob は、生成できる一意の名前の数を増やすために、任意の数の形容詞が前に付く名前の生成をサポートしています。
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, ...
複数の形容詞を使用する場合、funkybob は、順序が異なっていても、同じ形容詞のセットを持つ 2 つの名前が出現しないようにします。したがって、たとえば、 inspiring_stupefied_payne
yne という名前が生成された場合、 stupefied_inspiring_payne
という名前は後で生成されないことがわかります。これにより、名前がはるかに区別しやすくなり、混乱が生じる可能性が低くなります。
パッケージは PyPI でホストされており、インストールするには以下を使用します。
$ pip install funkybob
funkybob には 3 つの異なる名前ジェネレーターが付属しています。
SimpleNameGenerator : これは、ランダム性を含まない、決定的な名前のシーケンスを提供します。すべての組み合わせが得られると、重複した名前が返されます。パフォーマンスだけを重視する場合に便利です。
RandomNameGenerator : ランダムに生成された名前を返します。いつでも重複した名前が返される可能性があります。
UniqueRandomNameGenerator : ランダムに生成された名前を返しますが、RandomNameGenerator とは異なり、重複は返されません。他の 2 つのジェネレーターとは異なり、このジェネレーターにはサイズが制限されており、すべての一意の名前が返されると値の生成が停止されます。
次の表は、3 つのジェネレーターすべての機能をまとめたものです。
ジェネレータ | 無限 | ランダム | 重複 |
---|---|---|---|
SimpleNameGenerator | はい | いいえ | はい |
ランダムネームジェネレーター | はい | はい | はい |
UniqueRandomNameGenerator | いいえ | はい | いいえ |
3 つのジェネレーターはすべて反復可能です。つまり、単純にiter()
とnext()
を使用して名前を取得できます。
>> > import funkybob
>> > generator = funkybob . RandomNameGenerator ()
>> > it = iter ( generator )
>> > next ( it )
'practical_hoover'
>> > next ( it )
'stupefied_ramanujan'
>> > next ( it )
'zealous_aryabhata'
members
とseparator
パラメーターを渡して、形容詞の数や名前の形式を変更できます。
>> > # 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'
ジェネレーターには、生成できる一意の名前の数を確認するために使用できるunique_count
属性があります。
>> > generator . unique_count
740094
上記のすべてに加えて、UniqueRandomNameGenerator はシーケンスのようなインターフェイスを提供します。これは、たとえば、インデックス付けまたはlen()
メソッド ( unique_count
属性へのアクセスと同じです) を使用できることを意味します。
>> > generator = funkybob . UniqueRandomNameGenerator ()
>> > generator [ 0 ]
'xenodochial_yalow'
>> > generator [ 1 ]
'kind_mccarthy'
>> > generator [ 2 ]
'happy_hawking'
>> > len ( generator )
16089
サイズを拡大するには、名前が長くなりますが、 members
の数を増やすことができます。
UniqueRandomNameGenerator は、追加パラメーターseed
もサポートしています。これは、擬似乱数ジェネレーターを初期化するために使用できます。常に同じ値を渡すと、同じ名前のシーケンスが生成されます。これは、テストで予測可能な名前が必要な場合に役立ちます。