Skip to content

Changelog

All notable changes to this project are documented here. The project follows semantic versioning.

1.0.0 - 2026-10-24

The first public release.

Generating reports

  • generate fills every cell of a dpm-synth-template/1 template with a value for its data type and repairs the values, round by round, until the module's DPM-XL rules pass. Repairs cover sums, differences, products of two cells, abs, sign rules (also inside and), isnull, in with any set operand, match for LEIs and dd/mm/yyyy dates, and, or, not and if. Values are rounded to the reporting decimals and every rule is evaluated once more.
  • GenerationResult holds the report, ready for dpmxbrl.write_xbrl_csv, the generated values (data, a dpm-xl data provider) and every rule counted once: passed, failed, not_evaluated with the reason, and not_applicable.
  • Reports are reproducible: the same template, seed, options and versions give the same bytes.
  • Reports are synthetic: the entity is the fictional LEI SYNTHETICDPMXL000002 (DEFAULT_ENTITY), and every generated LEI-shaped identifier starts with SYNTH (LEI_PREFIX) and has valid ISO 17442 check digits, so none can be a real entity's LEI.
  • build_report turns changed values into a report again.
  • write_scaled_package streams open tables with millions of rows into a package laid out as dpm-xbrl writes it, for load tests; scaled rows keep the enumerated key values of the solved rows they repeat.

Templates

  • load_template reads and validates a template field by field, and raises TemplateError, naming the field such as tables[2].cells[0].datapoint, for an unreadable, non-JSON or invalid template, including repeated table, cell or rule codes and text that cannot be written as UTF-8. Unknown fields are ignored.

Command line

  • dpm-synth generate with --seed, --open-rows, --max-rounds, --scale-rows, --reference-date, --entity, --level and --json (with schema_version 1), --version, and examples in --help.
  • Exit statuses: 0 every evaluable rule passes, 1 some fail (the package is written), 2 usage error, 3 unreadable or invalid template, or a package that cannot be written.

Project

  • Depends on dpm-xl and dpm-xbrl 1.x, and uses only their public APIs.
  • Python 3.11 to 3.15, tested in CI.
  • A documentation site at https://luukhopman.github.io/dpm-synth/, with llms.txt and llms-full.txt for AI agents.