# Getting Started

Polyfactory is a simple and powerful mock data generation library, based around type hints and supporting dataclasses, `TypedDicts`, Pydantic models, `msgspec Struct's` and more.

## Installation

    pip install polyfactory

## Example

Minimal example using a dataclass

    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)
        assert isinstance(person_instance.name, str)
        assert isinstance(person_instance.age, float)
        assert isinstance(person_instance.height, float)
        assert isinstance(person_instance.weight, float)

That is 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 the `Person` class constructor.

## 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, `TypedDicts`, Pydantic, Odmantic, and Beanie ODM models, as well as custom factories.