Package: faker-schema
faker-schema============Generate fake data using `joke2k'sfaker <https://github.com/joke2k/faker>`__ and your own schema.Installation------------.. code:: bashpip install faker-schemaUsage-----Getting started^^^^^^^^^^^^^^^.. code:: pythonfrom faker_schema.faker_schema import FakerSchemaschema = {'employee_id': 'uuid4', 'employee_name': 'name', 'employee address': 'address','email_address': 'email'}faker = FakerSchema()data = faker.generate_fake(schema)print(data)# {'employee_id': '956f0cf3-a954-5bff-0aaf-ee0e1b7e1e1b', 'employee_name': 'Adam Wells',#  'employee address': '189 Kyle Springs Suite 110\nNorth Robin, OR 73512',#  'email_address': 'jmcgee@gmail.com'}Available Schema Types^^^^^^^^^^^^^^^^^^^^^^This library is dependent on `faker <https://github.com/joke2k/faker>`__for availabble schema types. Faker provides a wide variety of data typesvia providers. For a list of available providers, checkout`Providers <http://faker.readthedocs.io/en/master/providers.html>`__ and`CommunityProviders <http://faker.readthedocs.io/en/master/communityproviders.html>`__Once you know what types you want to generate your fake data, you canstart defining your own schemaDefining your schema^^^^^^^^^^^^^^^^^^^^The expected schema is a dictionary, where the keys are field names andthe values are the types of the fields. The schema dictionay can havenested dictionaries and lists too.Loading schemas^^^^^^^^^^^^^^^faker-schema currently provides two ways of loading your schema:-  JSON file-  JSON string.. code:: pythonimport jsonfrom faker_schema.faker_schema import FakerSchemafrom faker_schema.schema_loader import load_json_from_file, load_json_from_stringschema = load_json_from_file('path_to_json_file')faker = FakerSchema()data = faker.generate_fake(schema)# ORjson_string = '{"employee_id"": "uuid4", "employee_name": "name"", "employee address":"address", "email_address": "email"}'schema = load_json_from_string(json_string)faker = FakerSchema()data = faker.generate_fake(schema)You can define your own way of loading a schema, convert it to a Pythondictionary and pass it to the FakerSchema instance. The aim was tode-couple schema loading/generation from fake data generation. If youwant to contribute more schema loading techniques, please open a GitHubissue or send a pull request.Using different locales^^^^^^^^^^^^^^^^^^^^^^^The `Faker <https://github.com/joke2k/faker>`__ library provides a listof different `locales <https://github.com/joke2k/faker#localization>`__.You can choose your required locale from that list and provid it to theFakerSchema instance.. code:: pythonfrom faker_schema.faker_schema import FakerSchemaschema = {'employee_id': 'uuid4', 'employee_name': 'name', 'employee address': 'address','email_address': 'email'}faker = FakerSchema(locale='it_IT')data = faker.generate_fake(schema)print(data)# {'employee_id': '47f8bb04-fc05-25c9-73cc-e8a22f29ee4e', 'employee_name': 'Caio Negri',#  'employee address': 'Stretto Davis 34\nDamico lido, 54802 Vibo Valentia (TR)',#  'email_address': 'nunzia19@libero.it'}More Schema Examples^^^^^^^^^^^^^^^^^^^^Nested Dictionary^^^^^^^^^^^^^^^^^.. code:: pythonfrom faker_schema.faker_schema import FakerSchemaschema = {'EmployeeInfo': {'ID': 'uuid4', 'Name': 'name', 'Contact': {'Email': 'email','Phone Number': 'phone_number'}, 'Location': {'Country Code': 'country_code','City': 'city', 'Country': 'country', 'Postal Code': 'postalcode','Address': 'street_address'}}}faker = FakerSchema()data = faker.generate_fake(schema)# {'EmployeeInfo': {'ID': '0751f889-0d83-d05f-4eeb-16f575c6b4a3', 'Name': 'Stacey Williams',#  'Contact': {'Email':'jpatterson@yahoo.com', 'Phone Number': '1-077-859-6393'},#  'Location': {'Country Code': 'IE', 'City': 'Dyermouth', 'Country':#  'United States Minor Outlying Islands', 'Postal Code': '84239',#  'Address': '94806 Joseph Plaza Apt. 783'}}}Nested List^^^^^^^^^^^.. code:: pythonfrom faker_schema.faker_schema import FakerSchemaschema = {'Employer': 'name', 'EmployeList': [{'Name': 'name'}, {'Name': 'name'},{'Name': 'name'}]}faker = FakerSchema()data = faker.generate_fake(schema)# {'Employer': 'Faith Knapp', 'EmployeList': [{'Name': 'Douglas Bailey'},# {'Name': 'Karen Rivera'}, {'Name': 'Linda Vance MD'}]}Generating a certain number of fake data from given schema^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.. code:: pythonfrom faker_schema.faker_schema import FakerSchemaschema = {'employee_id': 'uuid4', 'employee_name': 'name', 'employee address': 'address','email_address': 'email'}faker = FakerSchema()data = faker.generate_fake(schema, iterations=4)print(data)# [{'employee_id': 'e07a7964-9636-bca6-2a58-4a69ac126dc5', 'employee_name':# 'Charlene Blankenship', 'employee address': '0431 Edward Mountains Suite 697\nPort Douglas,# TX 96239-7277', 'email_address': 'ashley86@yahoo.com'}, {'employee_id':# '42b02262-3e0c-cf40-8257-4a0af122dddb', 'employee_name': 'Cheryl Stevens',# 'employee address': '48066 Eric Lake\nPhillipshire, MO 57224', 'email_address':# 'lisa05@nash.info'}, {'employee_id': '41efbcc4-bb32-9260-b2b3-8fac29782e01',# 'employee_name': 'Dennis Campbell', 'employee address':# '52418 Diana Mills Suite 590\nEast Mackenzie, HI 16222', 'email_address':# 'jennifer39@gmail.com'}, {'employee_id': '80bf12ff-2f3a-6db6-f3a6-14cb50076a46',# 'employee_name': 'Jimmy Avery', 'employee address':# '6867 Eddie Forest Apt. 735\nBranditon, IL 32717', 'email_address': 'ashley64@griffin.com'}]BYOP (Bring Your Own Provider)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^If you are using a community provider or you created your own provider,you can use those with faker-schema as well. I will use the provider,`faker\_web <https://github.com/thiagofigueiro/faker_web>`__ as anexample.After `installing <https://github.com/thiagofigueiro/faker_web#usage>`__faker\_web,.. code:: pythonfrom faker import Fakerfrom faker_schema import FakerSchemafrom faker_web import WebProviderfake = Faker()fake.add_provider(WebProvider)faker = FakerSchema(faker=fake)headers_schema = {'Content-Type': 'content_type', 'Server': 'server_token'}fake_headers = faker.generate_fake(headers_schema)print(fake_headers)# {'Content-Type': 'application/json', 'Server': 'Apache/2.0.51 (Ubuntu)'}Development-----------Running tests~~~~~~~~~~~~~-  Using make.. code:: bashmake test-  Using nose.. code:: bashnosetests-  Using nose with coverage.. code:: bashnosetests --with-coverage --cover-package=faker_schema --cover-erase -v --cover-htmlRunning flake8~~~~~~~~~~~~~~-  Using make.. code:: bashmake flake8-  Using flake8.. code:: bashflake8 --max-line-length 99 faker_schema/ tests/Author------Usman Ehtesham Gul (`ueg1990 <https://github.com/ueg1990>`__) -uehtesham90@gmail.comContribute----------If you want to add any new features, or improve existing one or if youfind bugs, please open a GitHub issue or feel free to send a pullrequest. If you have any questions or need help/mentoring withcontributions, feel free to contact me via email