Skip to main content

Mock data generation for pydantic and dataclasses

Project description

PyFactories

PyFactories

🚀 Mock data generation for pydantic and dataclasses. 🚀

Test Suite Package version Supported Python versions


Documentation: https://pyfactories.tarsild.io 📚

Source Code: https://github.com/tarsil/pyfactories


Motivation

Pydantic Factories was initially created and used by a lot of people and it is an extremely powerful package that was heavily tested by the same authors of Starlite, now, Litestar. During their own evolution and development they felt the need to add more support to the package that was no longer only pydantic and therefore they created the Polyfactory and archived the Pydantic Factories.

PyFactories is a literal fork from the latest Pydantic Factories and aims to continue the same work set by the previous creators with the difference that will be only maintaining the factories for Pydantic and the upcoming Pydantic 2.0+.

The team behind Pydantic Factories did a fantastic job and the credit goes to them while PyFactories continues its own fork path.

If you aim to use something more than just Pydantic, it is strongly recommended to visit Polyfactory and migrate to it and of course, leave them a ⭐️.

In the meantime if you only want the Pydantic side of things, then you can use PyFactories in the same fashion as its ancestor.

Installation

pip install pyfactories

Migrate from Pydantic Factories

It is actually straightforward, you simply need to replace pydantic_factories with pyfactories in your imports and that is it.

Example

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

from pydantic import UUID4, BaseModel

from pyfactories 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()

And just its own ancestor, this is it. Almost no work, you are able to create mock data objects that fits the Person Pydantic 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

Being initially the fork of Pydantic Factories, that also means:

  • ✅ 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

This library was widely used before because of its powerfull features and therefore with the upcoming Pydantic 2.0, it will be even more robust with the core done in Rust.

  • 💯 Powerful
  • 💯 Extensible
  • 💯 Simple
  • 💯 Rigorously tested

Contributing

This library is open to contributions. Please see the contribution guide!

Star the initial authors

Although the intial Pydantic Factories is no longer maintained, there is always the Polyfactory that deserves a ⭐️.

Download files

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

Source Distribution

pyfactories-2.0.0.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

pyfactories-2.0.0-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file pyfactories-2.0.0.tar.gz.

File metadata

  • Download URL: pyfactories-2.0.0.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for pyfactories-2.0.0.tar.gz
Algorithm Hash digest
SHA256 9f51c2fd45085c3cb1dda11f9c6c44e55b0c9eaf59c9d410d77121927fa5a5eb
MD5 5943001a0b7c5241081ab31008ce7adf
BLAKE2b-256 f8e7c3204a2fe0ad155288cdbce287f2906c90e317350d675379d972a16acf74

See more details on using hashes here.

File details

Details for the file pyfactories-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyfactories-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 30.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for pyfactories-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c15bfe51b23877e001ff06d68e70f1ade6d98f533305e76f5e57bfad4aa3139
MD5 a756aafe0ab418050bf03fc0d220d19b
BLAKE2b-256 f4289724a1bcfcf0b353659b8aa69bce362d102271fd9fed6dde6328a86720ea

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