v0.7.1 - Localisation, YAML schema-as-code, new constraint types
What's new in 0.7.1
Localisation — 15-locale data packs with automatic story detection
Misata now generates country-accurate data with no extra configuration. Drop a geographic signal into your story and the right statistics flow through automatically.
tables = misata.generate("German SaaS company in Berlin with 2k enterprise customers")
# → de_DE names, salary ~ lognormal median €45k, 5-digit postcodes, GmbH/AG suffixes
tables = misata.generate("Brazilian fintech with R$ payments and CPF verification")
# → pt_BR names, salary median ~R$33.6k, national IDs in CPF format ###.###.###-##
tables = misata.generate("Indian startup in Bangalore with ₹ salary bands")
# → hi_IN names, salary median ~₹350k/yr, Aadhaar 12-digit ID format15 built-in locales: en_US · en_GB · de_DE · fr_FR · pt_BR · es_ES · hi_IN · ja_JP · zh_CN · ar_SA · ko_KR · nl_NL · it_IT · pl_PL · tr_TR
Each pack carries real salary distributions (OECD/World Bank/ILO 2023–24), age priors, currency symbols, postcode patterns, national ID formats, ranked top cities, company suffixes, and VAT rates. Salary and age distribution parameters are injected automatically into the generation pipeline — no schema changes required.
Force or override a locale explicitly:
misata generate --story "Ecommerce store with 10k orders" --locale ja_JPNew public API: misata.LocalePack, misata.LocaleRegistry, misata.LOCALE_PACKS, misata.detect_locale(), misata.get_locale_pack()
YAML schema-as-code (python misata init)
Define your schema in a file, commit it to git, reproduce it anywhere — no LLM required.
misata init # scaffolds misata.yamlmisata init --db postgresql://localhost/myapp # introspects your DBmisata init --story "A marketplace with sellers and buyers"misata generate # reads misata.yaml automatically
Arrow shorthand for relationships: "users.user_id → orders.user_id"
New constraint types
- InequalityConstraint : enforces col_a OP col_b (e.g. price > cost) on every generated row
- ColumnRangeConstraint : clips a column to [low_col, high_col] per row
- Both available in Python and in misata.yaml
Installation
pip install misata==0.7.1Full changelog
See CHANGELOG.md for the complete list of changes.