pydantic-factories 1.17.3


pip install pydantic-factories

  Latest version

Released: Apr 03, 2023


Meta
Author: Na'aman Hirschfeld
Maintainer: Na'aman Hirschfeld
Requires Python: >=3.8,<4.0

Classifiers

Environment
  • Web Environment

Framework
  • Pytest

Intended Audience
  • Developers

License
  • OSI Approved :: MIT License

Natural Language
  • English

Operating System
  • OS Independent

Programming Language
  • Python
  • Python :: 3
  • Python :: 3.8
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.8
  • Python :: 3.9

Topic
  • Software Development
  • Software Development :: Libraries
  • Software Development :: Testing
  • Software Development :: Testing :: Unit
  • Utilities

Typing
  • Typed

Starlite Logo - Light Starlite Logo - Dark

PyPI - License PyPI - Python Version

Discord Matrix Reddit

⚠️

The next version of this library is released as polyfactory. Users are encouraged to migrate to it.

⚠️

Pydantic-Factories

This library offers powerful mock data generation capabilities for pydantic based models, dataclasses and TypeDicts. It can also be used with other libraries that use pydantic as a foundation.

Check out the documentation 📚.

Installation

pip install pydantic-factories

Example

from datetime import date, datetime
from typing import List, Union

from pydantic import BaseModel, UUID4

from pydantic_factories import ModelFactory


class Person(BaseModel):
    id: UUID4
    name: str
    hobbies: List[str]
    age: Union[float, int]
    birthday: Union[datetime, date]


class PersonFactory(ModelFactory):
    __model__ = Person


result = PersonFactory.build()

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 pydantic model and model-fields, which are used as a source of truth for data generation.

The factory parses the information stored in the pydantic model and generates a dictionary of kwargs that are passed to the Person class' init method.

Features

  • ✅ supports both built-in and pydantic types
  • ✅ supports pydantic field constraints
  • ✅ supports complex field types
  • ✅ supports custom model fields
  • ✅ supports dataclasses
  • ✅ supports TypedDicts

Why This Library?

  • 💯 powerful
  • 💯 extensible
  • 💯 simple
  • 💯 rigorously tested

Contributing

This library is open to contributions - in fact we welcome it. Please see the contribution guide!

Extras: None
Dependencies:
faker
pydantic (>=1.10.0)
typing-extensions