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¶
generatefills every cell of adpm-synth-template/1template 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 insideand),isnull,inwith any set operand,matchfor LEIs anddd/mm/yyyydates,and,or,notandif. Values are rounded to the reporting decimals and every rule is evaluated once more.GenerationResultholds the report, ready fordpmxbrl.write_xbrl_csv, the generated values (data, a dpm-xl data provider) and every rule counted once:passed,failed,not_evaluatedwith the reason, andnot_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 withSYNTH(LEI_PREFIX) and has valid ISO 17442 check digits, so none can be a real entity's LEI. build_reportturns changed values into a report again.write_scaled_packagestreams 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_templatereads and validates a template field by field, and raisesTemplateError, naming the field such astables[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 generatewith--seed,--open-rows,--max-rounds,--scale-rows,--reference-date,--entity,--leveland--json(withschema_version1),--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.txtandllms-full.txtfor AI agents.