v0.7.0
What's new in 0.7.0
Document generation
Generate real documents (HTML, PDF, Markdown) from any table, one file per row.
tables = misata.generate("An ecommerce store with 200 orders")
paths = misata.generate_documents(tables, "invoice", output_dir="/tmp/invoices")Built-in templates: invoice, patient_report, user_profile, transaction_receipt, generic. Auto-detects the right template from column names with template="auto". PDF output via pip install "misata[documents]".
Multi-provider LLM
LLMSchemaGenerator now supports OpenAI, Groq, Anthropic (native SDK), Gemini, and Ollama, pick the one you have a key for.
Custom callable generators
Override any column with a Python function, vectorized or per-row:
tables = misata.generate_from_schema(schema, custom_generators={
"orders": {"amount": lambda df, ctx: df["plan"].map({"pro": 99, "free": 0})}
})Schema import + FK integrity
misata.from_dict_schema() converts any {table: {col: {type, ...}}} dict to a SchemaConfig. misata.verify_integrity() checks FK relationships post-generation.
Kaggle vocabulary enrichment
misata.enrich_from_kaggle("ecommerce") downloads CC0 datasets and stores real-world vocabulary locally — names, companies, cities — used automatically in all subsequent generation calls.
Other additions
- generate_more(tables, schema, n) : append rows without regenerating from scratch
- Domain-aware text by default : no more lorem-ipsum for name/email/company columns
- Fixed: country columns, duplicate emails on small datasets, unique IDs
Full changelog: CHANGELOG.md