Skip to content

Simple and powerful factories for mock data generation

License

Notifications You must be signed in to change notification settings

Iipin/polyfactory

 
 

Repository files navigation

Polyfactory

Litestar - Polyfactory Logo - Light Litestar - Polyfactory Logo - Dark

PyPI - License PyPI - Python Version

Coverage Maintainability Rating Reliability Rating Quality Gate Status Security Rating

Reddit Discord Matrix Medium

All Contributors

Polyfactory is a simple and powerful mock data generation library, based around type hints and supporting dataclasses, typed-dicts, Pydantic models and more.

Polyfactory part of the Litestar project and as such actively maintained by a community of maintainers and contributors.

Example

from dataclasses import dataclass

from polyfactory.factories import DataclassFactory


@dataclass
class Person:
    name: str
    age: float
    height: float
    weight: float


class PersonFactory(DataclassFactory[Person]):
    __model__ = Person


def test_is_person() -> None:
    person_instance = PersonFactory.build()
    assert isinstance(person_instance, Person)

That's it - with almost no work, we are able to create a mock data object fitting the Person class model definition.

This is possible because of the typing information available on the dataclass, which are used as a source of truth for data generation.

The factory parses the information stored in the dataclass and generates a dictionary of kwargs that are passed to Person.

Documentation

Usage and API reference documentation is available on https://polyfactory.litestar.dev/.

Installation

pip install polyfactory

Relation to Pydantic-Factories

Prior to version 2, this library was known as pydantic-factories, a name under which it gained quite a bit of popularity. A main motivator for the 2.0 release was that we wanted to support more than just Pydantic models, something which also required a change to its core architecture. As this library would no longer be directly tied to Pydantic, polyfactory was chosen as its new name to reflect its capabilities; It can generate mock data for dataclasses, typed-dicts, Pydantic, odmantic, and beanie ODM models, as well as custom factories.

Contributing

This library is a community driven open source project. We welcome and encourage contributions. Please checkout the GitHub issues, read the contribution guide (at the repository's root), and you're always welcome to join our discord server.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Jacob Coffee
Jacob Coffee

🚇 ⚠️ 💻 📖
Janek Nouvertné
Janek Nouvertné

🚇 ⚠️ 💻 🎨 📖 🚧 📆 👀
Na'aman Hirschfeld
Na'aman Hirschfeld

🚇 ⚠️ 💻
Marek Czaplicki
Marek Czaplicki

💻
Piotr Przybyło
Piotr Przybyło

💻
sygutss
sygutss

🐛 💻
chrisbeardy
chrisbeardy

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Simple and powerful factories for mock data generation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Makefile 0.1%