Skip to main content

Generate randomized instances of pydantic classes for testing

Project description

pydantic-rng

A simple library for generating random, valid Pydantic models.

This tool helps you quickly create mock data for testing, prototyping, and demonstration purposes by generating random values that conform to your Pydantic model schemas. It supports a wide range of types and validation constraints.

✨ Features

  • Type-aware Generation: Generates appropriate data for common Python types (str, int, float, bool, list, dict, set, etc.).
  • pydantic Integration: Works seamlessly with Pydantic's BaseModel for recursive data generation.
  • Constraint Support: Respects a wide variety of Pydantic validation constraints from the annotated_types library, including MinLen, MaxLen, Ge, Gt, Le, Lt, and MultipleOf.
  • Configurable: Customize the behavior of the random generator with global settings for things like numeric and string ranges, and the probability of generating None for optional fields.

🚀 Installation

Install the package (usually as a dev dependency):

uv add --dev pydantic-rng

Generate Basic Class RNG

from pydantic import BaseModel
from pydantic_rng import generate

class User(BaseModel):
    user_id: int
    name: str
    is_active: bool
    email: str | None

random_user = generate(User)
print(random_user.model_dump_json(indent=2))

Or, more usually...

from typing import Annotated

from tqdm.rich import trange # requires `rich` as well
from pydantic import BaseModel, Field
from pydantic_rng import generate

N = 1_000_000


class World(BaseModel):
  radius: Annotated[float, Field(gt=0, lt=360)]

with open("random-data.jsonl", "w") as f:
  for _ in trange(N):
    item = generate(World)
    f.write(item.model_dump_json() + "\n")

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

pydantic_rng-0.1.5.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

pydantic_rng-0.1.5-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_rng-0.1.5.tar.gz.

File metadata

  • Download URL: pydantic_rng-0.1.5.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.14

File hashes

Hashes for pydantic_rng-0.1.5.tar.gz
Algorithm Hash digest
SHA256 fedaddd82a19f14deef9824146efdee40907ea8c706b62094c16352f6b3500e8
MD5 70d1c19ec1ab3368b646f942450a37d9
BLAKE2b-256 0b5d757da5a6b69059785b4610eb756b05e5924348aaf5ed111d9cc4d9f0ea2b

See more details on using hashes here.

File details

Details for the file pydantic_rng-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_rng-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 44160a1a0e2b083963c62f970a167b0693af7729ece0c329b0c793670f701ce6
MD5 fd8cbcf0e5143884566a854b0f3d8afb
BLAKE2b-256 b0be48527419b8be6ec27c6d281ad9221afece0dca626d6d0ce73f41194b0145

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