Skip to main content

A fake data generator that is pydantic compatible.

Project description

Pyfake

A flexible, schema-driven fake data generator built on top of Pydantic v2.

Documentation · Github · PyPI

Generate realistic fake data for your Pydantic models with ease. Perfect for testing, prototyping, and anywhere you need valid mock data.

⚡ Quick Example

from typing import Annotated, List, Set, Literal
from pydantic import BaseModel, Field
from pyfake import fake
from rich import print


class Playlist(BaseModel):
    track_ids: List[int]
    genre: Literal["rock", "pop", "jazz"]
    tags: Annotated[List[str], Field(min_length=2, max_length=5)]
    unique_ratings: Set[int]

result = fake(Playlist, as_dict=True)
print(result)

# {
#     "track_ids": [28, 25, 95, 40], 
#     "genre": "pop", 
#     "tags": ["CJKHILHXTN", "qkhhjDJYiV"], 
#     "unique_ratings": {17, 49}
# }

✨ Why Pyfake?

Problem Most fake data generators Pyfake
Random but not structured ❌ Generates random data without understanding the schema ✅ Reads your Pydantic models to produce structured, schema-aware data
Structured but not realistic ❌ Generates data that fits the schema but isn't realistic (e.g. random strings for names) ✅ Uses intelligent generators to produce realistic fake data (e.g. names, addresses)
Hard to extend ❌ Difficult to add custom generators or handle complex types ✅ Easily extensible with a flexible generator registry and schema resolution system
Support for constraints ❌ Ignores field constraints like min_length, gt, multiple_of ✅ Respects all Pydantic field constraints when generating data
Support for python primitive types ❌ Limited support for complex types like Decimal, UUID, datetime ✅ Full support for Python primitives, including Decimal, UUID, datetime, and more
Reproducibility ❌ No built-in way to generate the same fake data across runs ✅ Supports seeding for reproducible fake data generation

🧠 How It Works

Pyfake reads your Pydantic schema and:

  • Inspects field types and constraints
  • Applies intelligent generators
  • Produces validated fake data

Installation

Using uv (Recommended)

uv add pyfake

Using pip

python -m venv .venv
source .venv/bin/activate
pip install pyfake

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

pyfake-0.0.12.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfake-0.0.12-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file pyfake-0.0.12.tar.gz.

File metadata

  • Download URL: pyfake-0.0.12.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyfake-0.0.12.tar.gz
Algorithm Hash digest
SHA256 1856e211909eea03deb56f3f9c7e3d67e26e9ccfcd1649ea11aa3120ead71eea
MD5 b0e4427ac984ff946e46c0a4b21f02da
BLAKE2b-256 a68939fce7d32866295e7f08d4171970302c136c92f73b4cea606534a24358eb

See more details on using hashes here.

File details

Details for the file pyfake-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: pyfake-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyfake-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 36244922d919433544caf2ee0963777d47c2d68042c0a38a206e24d72690f68d
MD5 db31e545d2dea913c2b037ff8015d09f
BLAKE2b-256 1bdf1e86b4c8235308a15303b0e71e46838861226fee2c8000b1f260af4586a8

See more details on using hashes here.

Supported by

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