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
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.13.tar.gz
(16.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pyfake-0.0.13-py3-none-any.whl
(16.9 kB
view details)
File details
Details for the file pyfake-0.0.13.tar.gz.
File metadata
- Download URL: pyfake-0.0.13.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5513b7b2e963588f615612b71524fc3dc0cfd9603203abf43cca295cbf10c32f
|
|
| MD5 |
7f60e845f1db2271f7608116e6dd1c60
|
|
| BLAKE2b-256 |
dd35d03b406036041fea757a120f429d5955e0325299daec474285c072cd489b
|
File details
Details for the file pyfake-0.0.13-py3-none-any.whl.
File metadata
- Download URL: pyfake-0.0.13-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c9d046ee1c7fa281fba90cfa0b45e7541053f830ed0c453f92472366df3b88e
|
|
| MD5 |
a2e528f7035a94a47fd93cba87e4042b
|
|
| BLAKE2b-256 |
819be99ed9c4321f843a44a148407ca2618c915949c0c189ba9b629d8ed32f1e
|