GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

joke2k

faker – Fakerは、あなたのために偽のデータを生成するPythonパッケージ

投稿日:

Fakerは、あなたのために偽のデータを生成するPythonパッケージです。 http://faker.rtfd.org

Fakerは、あなたのために偽のデータを生成するPythonパッケージです。 データベースのブートストラップ、見栄えのよいXML文書の作成、ストレステストのための永続性の補完、プロダクションサービスから取得したデータの匿名化など、Fakerはあなたのためのものです。

FakerはPHP FakerPerl FakerRuby Fakerに大きな影響を受けています


_|_|_|_|          _|
_|        _|_|_|  _|  _|      _|_|    _|  _|_|
_|_|_|  _|    _|  _|_|      _|_|_|_|  _|_|
_|      _|    _|  _|  _|    _|        _|
_|        _|_|_|  _|    _|    _|_|_|  _|


詳細については、 拡張ドキュメントを参照してください。

基本的な使用法

pipでインストールする:

pip install Faker

注:このパッケージは以前は fake-factory と呼ばれていました

faker.Faker()を使用してfaker.Faker()ジェネレータを作成および初期化します。これは、必要なデータ型の名前を付けたプロパティにアクセスしてデータを生成できます。

from faker import Faker
fake = Faker()

fake.name()
# 'Lucy Cechtelar'

fake.address()
# "426 Jordy Lodge
#  Cartwrightshire, SC 88120-6700"

fake.text()
# Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
# beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
# amet quidem. Iusto deleniti cum autem ad quia aperiam.
# A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
# quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
# voluptatem sit aliquam. Dolores voluptatum est.
# Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
# Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
# Et sint et. Ut ducimus quod nemo ab voluptatum.

fake.name()メソッドを呼び出すたびに、異なる(ランダムな)結果がfake.name()ます。 これは、 faker.Generator.method_name()faker.Generator.format(method_name)呼び出すためfaker.Generator.format(method_name)

for _ in range(10):
  print(fake.name())

# Adaline Reichel
# Dr. Santa Prosacco DVM
# Noemy Vandervort V
# Lexi O'Conner
# Gracie Weber
# Roscoe Johns
# Emmett Lebsack
# Keegan Thiel
# Wellington Koelpin II
# Ms. Karley Kiehn V

プロバイダー

ジェネレータのプロパティ( nameaddresslorem )のそれぞれを「偽」と呼びます。 フェイザージェネレータには、多くのものが「プロバイダ」にパッケージされています。

拡張ドキュメントバンドルされているプロバイダのリストとコミュニティプロバイダのリストを確認してください。

ローカリゼーション

faker.Factoryは、ローカライズされたデータを返すために、ロケールを引数として取ることができます。 ローカライズされたプロバイダが見つからない場合、工場はデフォルトのen_USロケールに戻ります。

from faker import Faker
fake = Faker('it_IT')
for _ in range(10):
    print(fake.name())

> Elda Palumbo
> Pacifico Giordano
> Sig. Avide Guerra
> Yago Amato
> Eustachio Messina
> Dott. Violante Lombardo
> Sig. Alighieri Monti
> Costanzo Costa
> Nazzareno Barbieri
> Max Coppola

利用可能なFakerロケールは、ソースコードのプロバイダパッケージの下で確認できます。 Fakerのローカリゼーションは進行中のプロセスであり、お客様のお手伝いが必要です。 あなた自身のロケール用にローカライズされたプロバイダを作成し、プルリクエスト(PR)を送信することを躊躇しないでください。

ローカライズされたプロバイダ:

  • ar_EG – アラビア語(エジプト)
  • ar_PS – アラビア語(パレスチナ)
  • ar_SA – アラビア語(サウジアラビア)
  • bg_BG – ブルガリア語
  • cs_CZ – チェコ
  • de_DE – ドイツ語
  • dk_DK – デンマーク語
  • el_GR – ギリシャ語
  • en_AU – 英語(オーストラリア)
  • en_CA – 英語(カナダ)
  • en_GB – 英語(イギリス)
  • en_US – 英語(アメリカ合衆国)
  • es_ES – スペイン語(スペイン語)
  • es_MX – スペイン語(メキシコ)
  • et_EE – エストニア語
  • fa_IR – ペルシア語(イラン)
  • fi_FI – フィンランド語
  • fr_FR – フランス語
  • hi_IN – ヒンディー語
  • hr_HR – クロアチア語
  • hu_HU – ハンガリー語
  • it_IT – イタリア語
  • ja_JP – 日本語
  • ko_KR – 韓国語
  • lt_LT – リトアニア語
  • lv_LV – ラトビア語
  • ne_NP – ネパール
  • nl_NL – オランダ語(オランダ語)
  • no_NO – ノルウェー語
  • pl_PL – ポーランド語
  • pt_BR – ポルトガル語(ブラジル)
  • pt_PT – ポルトガル語(ポルトガル)
  • ro_RO – ルーマニア語
  • ru_RU – ロシア語
  • sl_SI – スロベニア
  • sv_SE – スウェーデン語
  • tr_TR – トルコ語
  • uk_UA – ウクライナ語
  • zh_CN – 中国(中国)
  • zh_TW – 中国語(台湾)

コマンドラインの使用法

インストール時に、コマンドラインからfakerを起動することができます:

faker [-h] [--version] [-o output]
      [-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}]
      [-r REPEAT] [-s SEP]
      [-i {package.containing.custom_provider otherpkg.containing.custom_provider}]
      [fake] [fake argument [fake argument ...]]

場所:

  • faker :あなたの環境にインストールされたスクリプトです。開発時に代わりにpython -m faker使用できます
  • -h 、– --help :ヘルプメッセージを表示します。
  • --version :プログラムのバージョン番号を表示します。
  • -o FILENAME :出力を指定されたファイル名にリダイレクトします。
  • -l {bg_BG,cs_CZ,...,zh_CN,zh_TW} :ローカライズされたプロバイダの使用を許可する
  • -r REPEAT :指定された数の出力を生成します。
  • -s SEP :生成された各出力の後に指定されたセパレータを生成します。
  • -i {my.custom_provider other.custom_provider}使用する追加カスタムプロバイダのリスト。 これは、カスタムProviderクラス自体ではなく、Providerクラスを含むパッケージのインポートパスです。
  • fakenameaddresstextなどの出力を生成するための偽のname text
  • [fake argument ...][fake argument ...]に渡すためのオプションの引数(例えば、プロファイルfakeはカンマで区切られたフィールド名のオプションリストを最初の引数として取ります)

例:

$ faker address
968 Bahringer Garden Apt. 722
Kristinaland, NJ 09890

$ faker -l de_DE address
Samira-Niemeier-Allee 56
94812 Biedenkopf

$ faker profile ssn,birthdate
{'ssn': u'628-10-1085', 'birthdate': '2008-03-29'}

$ faker -r=3 -s=";" name
Willam Kertzmann;
Josiah Maggio;
Gayla Schmitt;

プロバイダの作成方法

from faker import Faker
fake = Faker()

# first, import a similar Provider or use the default one
from faker.providers import BaseProvider

# create new provider class
class MyProvider(BaseProvider):
    def foo(self):
        return 'bar'

# then add new provider to faker instance
fake.add_provider(MyProvider)

# now you can use:
fake.foo()
> 'bar'

Loremプロバイダをカスタマイズする方法

デフォルトのlorem ipsumを使用したくない場合は、独自の単語セットを提供できます。 次の例は、 cakeipsumから選択された単語のリストを使ってそれを行う方法を示しています:

from faker import Faker
fake = Faker()

my_word_list = [
'danish','cheesecake','sugar',
'Lollipop','wafer','Gummies',
'sesame','Jelly','beans',
'pie','bar','Ice','oat' ]

fake.sentence()
#'Expedita at beatae voluptatibus nulla omnis.'

fake.sentence(ext_word_list=my_word_list)
# 'Oat beans oat Lollipop bar cheesecake.'

Factory Boyとの使い方

ファクトリーボーイはすでにFakerと統合されて出荷されています。 単にfactory_boyメソッドを使用します。

import factory
from myapp.models import Book

class BookFactory(factory.Factory):
    class Meta:
        model = Book

    title = factory.Faker('sentence', nb_words=4)
    author_name = factory.Faker('name')

ランダムインスタンスへのアクセス

ジェネレータの.randomプロパティは、値を生成するために使用されるrandom.Randomのインスタンスを返します。

from faker import Faker
fake = Faker()
fake.random
fake.random.getstate()

デフォルトでは、すべてのジェネレータはrandom.Randomの同じインスタンスを共有します。これはfrom faker.generator import randomアクセスできます。 これを使うと、すべてのfakerインスタンスに影響を与えたいプラグインに便利です。

ジェネレータのシード

ユニットテストのためにFakerを使用する場合、同じデータセットを生成することがしばしばあります。 便宜上、ジェネレータは、共有乱数ジェネレータをseed()するseed()メソッドも提供します。 フェイザーとシードの同じバージョンで同じメソッドを呼び出すと、同じ結果が得られます。

from faker import Faker
fake = Faker()
fake.seed(4321)

print(fake.name())
> Margaret Boehm

各ジェネレータは、同じ方法で動作するseed_instance()メソッドを使用して、共有のものとは別のrandom.Random独自のインスタンスに切り替えることもできます。 例えば:

from faker import Faker
fake = Faker()
fake.seed_instance(4321)

print(fake.name())
> Margaret Boehm

データセットを更新し続けるうちに、結果はパッチバージョン間で一貫しているとは限りません。 パッチをハードコードすると、 Fakerのバージョンがパッチ番号に固定されていることを確認してください。

テスト

依存関係のインストール:

$ pip install -r tests/requirements.txt

テストを実行する:

$ python setup.py test

または

$ python -m unittest -v tests

プロバイダのドキュメントを書く:

$ python -m faker > docs.txt

寄稿

寄稿をご覧ください。

ライセンス

FakerはMITライセンスの下でリリースされます。 詳細については、バンドルされたLICENSEファイルを参照してください。

クレジット







-joke2k
-, , , , , ,

執筆者: