Metadata-Version: 2.4
Name: meridian-plugin-synthetic
Version: 1.0.0
Summary: Deterministic, schema-driven synthetic data generation for Meridian V1
Project-URL: Documentation, https://github.com/zephytiju/meridian-plugin-synthetic#readme
Project-URL: Issues, https://github.com/zephytiju/meridian-plugin-synthetic/issues
Project-URL: Repository, https://github.com/zephytiju/meridian-plugin-synthetic
Author: Meridian contributors
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: fixtures,meridian,streaming,synthetic-data,testing
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Python: <3.15,>=3.12
Requires-Dist: meridian-storage-core==1.0.0
Requires-Dist: meridian-storage-evidence==1.0.0
Requires-Dist: meridian-storage-query==1.0.0
Requires-Dist: meridian-storage-semantics==1.0.0
Requires-Dist: meridian-storage-streaming==1.0.0
Provides-Extra: test
Requires-Dist: build==1.3.0; extra == 'test'
Requires-Dist: hatchling==1.27.0; extra == 'test'
Requires-Dist: hypothesis==6.138.3; extra == 'test'
Requires-Dist: jsonschema==4.25.1; extra == 'test'
Requires-Dist: mypy==1.17.1; extra == 'test'
Requires-Dist: pip-audit==2.9.0; extra == 'test'
Requires-Dist: pytest-cov==6.2.1; extra == 'test'
Requires-Dist: pytest==9.0.3; extra == 'test'
Requires-Dist: ruff==0.12.11; extra == 'test'
Requires-Dist: twine==6.1.0; extra == 'test'
Description-Content-Type: text/markdown

<!-- SPDX-License-Identifier: Apache-2.0 -->

# Meridian Synthetic Plugin

`meridian-plugin-synthetic` is the in-process, deterministic synthetic-data
generation plugin for Meridian V1. It generates schema-valid Records,
relation-aware fixtures, canonical datasets, and provider-neutral Events. Every
write goes through released Meridian public contracts.

This repository contains exactly one Python distribution and is licensed under
the Apache License, Version 2.0.

## Install

The plugin requires the released Meridian V1 Core, Semantics, Query, Evidence,
and Streaming distributions. After those artifacts are available:

```console
python -m pip install meridian-plugin-synthetic
```

## Use

```python
from meridian_storage.plugins.synthetic import Generator, MemorySink, SyntheticSpec

spec = SyntheticSpec.load(spec_document)
sink = MemorySink(max_bytes=spec.bounds.max_memory_bytes)
run = Generator(spec).run(sink, workers=4)

assert run.validation.passed
records = sink.records(run.run_id)
```

`SyntheticSpec` pins the package coordinate, optional implementation digest,
schema fingerprints, seed, locale set, time interval, counts, generators,
relations, validation rules, output mode, and execution bounds. Random streams
are derived from logical coordinates, so partitioning, worker count, and run ID
do not change generated values.

Available sinks are:

- `MemorySink` for bounded tests and fixtures;
- `MeridianRecordSink` for public `structured.put` writes;
- `MeridianStreamingSink` for public `streaming.publish_batch` writes; and
- `CanonicalDatasetSink` for canonical NDJSON partitions followed by an
  explicit `ArtifactPublisher` hand-off.

Direct Record writes require a `DirectWritePolicy`. Production targets require
an explicit approval flag from the owning process. Dataset publication never
uses the Object Catalog directly; the caller supplies the Configuration &
Artifact plugin bridge.

Source-backed generation accepts only an explicit, projected
`structured.query` Expression and a digest-pinned deterministic transform. Run
evidence includes source boundaries, query fingerprints, transform digests, and
row counts, but never source values.

## Contracts and support

Serialized schemas are in [`contracts`](contracts), design alignment is in
[`docs/architecture.md`](docs/architecture.md), and the compatibility pin is in
[`compatibility.json`](compatibility.json). Python 3.12 through 3.14 is
supported. Report vulnerabilities using [`SECURITY.md`](SECURITY.md).
