Skip to main content

Fake entire data schemas.

Project description

Factory Boss

Fake entire data schemas. Easily.

Original repository: https://github.com/mariushelf/factory_boss

Use case

Factory Boss can help you whenever you need to mock data schemas, for example when you cannot work or develop with the original data for privacy, GDPR related issues and security concerns.

Features

Factory Boss can mock entire data schemas, including relationships and dependencies between features and objects.

Schema specifications are read from a simple yaml format. The generated output is a list of dictionaries for each mocked entity, which can easily be written to a database, converted to pandas DataFrames etc.

Installation

This package is available on PyPI and can be installed with pip install factory_boss.

Usage

Mocking a data schema consists of two steps:

  1. Specify the schema.
  2. Generate data.

Specify a schema

Schemas are specified in yaml, including relationships between entities and mock rules.

See simple_schema.yaml for an example.

Generate mock data

from pprint import pprint
import yaml
from factory_boss.generator import Generator
from factory_boss.spec_parser.parser import SpecParser

with open("examples/simple_schema.yaml", "r") as f:
    schema = yaml.safe_load(f)

parser = SpecParser()
parsed_spec = parser.parse(schema)

generator = Generator(parsed_spec)
instances = generator.generate()
print("INSTANCES")
print("=========")
pprint(instances)

See factory_boss/scripts/generate.py for the full script.

Roadmap

Many much, above all documentation.

Here are biggest "milestones":

  1. documentation
  2. finalize the schema specification
  3. support dynamic fields (generate fields via a Python function with other fields as input)

In the issues section there are some more tickets.

Contributing

I'm more than happy to accept help in the form of bug reports, feature requests, or pull requests, even though there is no formal "contribution guideline" yet.

If you want to help just reach out to me :)

Acknowledgements

This work wouldn't be possible without the amazing faker package.

Factory Boss is also heavily inspired by factory_boy, but has a different focus. While factory_boy excels at generating single objects and test fixtures, Factory Boss aims at faking entire data schemas. In that sense it offers both a subset and a superset of factory_boy's features.

License

MIT -- see LICENSE

Author: Marius Helf (helfsmarius@gmail.com)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

factory_boss-0.1.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

factory_boss-0.1.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file factory_boss-0.1.0.tar.gz.

File metadata

  • Download URL: factory_boss-0.1.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.2

File hashes

Hashes for factory_boss-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fea9318cbfc848781a1c529e3a299f48b76b277da638b30548eb827c20b52931
MD5 060de7175f162b3e9c4ad6460fd77a00
BLAKE2b-256 c7c2d95e4ae1e581982a24e04b72ceacb2f62666c9aec1c6f9280571df738f65

See more details on using hashes here.

File details

Details for the file factory_boss-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: factory_boss-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.2

File hashes

Hashes for factory_boss-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c12668e4053d79b5e9bd05acc7f8c13db7d67bdb05d727b2825ba2c02a03c3d
MD5 308dc185f233c038a51a44c9d0ae39cd
BLAKE2b-256 82d9955a6836826dadbb163a3cd9c3dabe0760676d0f715e466ecca394c7e35c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page