Pydantic v2 deterministic fixtures, pytest fixtures, JSON generator, secure sandboxed CLI with Pluggy providers.
Generate deterministic Pydantic v2 data, pytest fixtures, and JSON quickly with a safe, task-focused CLI built for modern testing workflows.
- You keep tests reproducible with cascaded seeds across
random, Faker, and optional NumPy. - You run untrusted models inside a safe-import sandbox with network, filesystem, and memory guards.
- You drive JSON, pytest fixtures, schemas, and explanations from the CLI or Python helpers.
- You extend generation with Pluggy providers and preset bundles without forking core code.
You also stay observant while you work: every command can emit structured logs, diff artifacts against disk, and surface sandbox warnings so you catch regressions before they land.
pip install pydantic-fixturegen
# Extras: orjson, regex, hypothesis, watch
pip install 'pydantic-fixturegen[all]'Other flows → docs/install.md
- Create a small Pydantic v2 model file.
- List models:
pfg list ./models.py - Generate JSON:
pfg gen json ./models.py --include models.User --n 2 --indent 2 --out ./out/User - Generate fixtures:
pfg gen fixtures ./models.py --out tests/fixtures/test_user.py --cases 3Full steps → docs/quickstart.md
JSON, fixtures, and schema commands all share flags like --include, --exclude, --seed, --preset, and --watch, so once you learn one flow you can handle the rest without re-reading the help pages.
pfg list <path>
pfg gen json <target> [--n --jsonl --indent --out]
pfg gen fixtures <target> [--style --scope --cases --out]
pfg gen schema <target> --out <file>
pfg doctor <target>pfg listdiscovers models with AST or safe-import; add--astwhen you must avoid imports.pfg gen jsonemits JSON or JSONL; scale with--n,--jsonl,--shard-size, and--freeze-seeds.pfg gen fixtureswrites pytest modules; tune--style,--scope,--cases, and--return-type.pfg gen schemadumps JSON Schema atomically; point--outat a file or directory template.pfg doctoraudits coverage and sandbox warnings; fail builds with--fail-on-gaps.
All commands → docs/cli.md
| key | type | default | purpose |
|---|---|---|---|
| seed | int | str | null | null | Global seed |
| locale | str | en_US | Faker locale |
| union_policy | enum | first | Union branch |
| enum_policy | enum | first | Enum choice |
| json.indent | int | 2 | Pretty JSON |
| json.orjson | bool | false | Fast JSON |
| emitters.pytest.style | enum | functions | Fixture style |
| emitters.pytest.scope | enum | function | Fixture scope |
[tool.pydantic_fixturegen]
seed = 42
[tool.pydantic_fixturegen.json]
indent = 2Full matrix and precedence → docs/configuration.md
- Freeze seeds for CI determinism → docs/seeds.md
- Use watch mode → docs/quickstart.md#watch-mode
- Templated output paths → docs/output-paths.md
- Provider customization → docs/providers.md
- Capture explain trees or JSON diagnostics for review → docs/explain.md
Index · Quickstart · Cookbook · Configuration · CLI · Concepts · Features · Security · Architecture · Troubleshooting · Alternatives
Open issues for bugs or ideas, start Discussions for design questions, and follow the security policy when you disclose sandbox bypasses.
MIT. See LICENSE.