Skip to content

v0.7.1 - Localisation, YAML schema-as-code, new constraint types

Choose a tag to compare

@rasinmuhammed rasinmuhammed released this 16 Apr 05:13
· 113 commits to main since this release

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 format

15 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_JP

New 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.yaml
misata init --db postgresql://localhost/myapp  # introspects your DB
misata 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.1

Full changelog

See CHANGELOG.md for the complete list of changes.