New features:
- New CI workflow step, `lint`, to ensure notebooks style consistency https://github.com/diana-hep/madminer/commit/2047dc7851e265dc2d36ff6694256dd23f086ffb.
Internal changes:
- Drop support for Python 3.6 https://github.com/diana-hep/madminer/pull/484 ([support ends on December 2021](https://www.python.org/dev/peps/pep-0494/#and-beyond-schedule)).
- Added support for Python 3.9 https://github.com/diana-hep/madminer/pull/484.
- Upgrade notebook examples to Python3 syntax https://github.com/diana-hep/madminer/pull/480.
- Upgrade `numpy` minimum version to version `1.20.0` https://github.com/diana-hep/madminer/pull/486.
- Complete rewrite of the HDF5 interface functions https://github.com/diana-hep/madminer/pull/483.
- Definition of _dataclass_ models to ease attribute access https://github.com/diana-hep/madminer/pull/485:
- `Benchmark`.
- `FiniteDiffBenchmark`.
- `AnalysisParameter`.
- `NuisanceParameter`.
- `Cut`, `Efficiency` and `Observable`.
- `Systematic` (and the `SystematicType` enum https://github.com/diana-hep/madminer/commit/6183d555ef0b367af24ab1193c0a98bd95fb5460).
Breaking changes
There are multiple **backward compatibility breaking changes** to consider ⚠️ :
- The HDF5 file keys to store madminer settings and / or serialized data have changed. We recommend re-creating them.
- The methods [LHEReader.add_cut()](https://github.com/diana-hep/madminer/blob/v0.9.0/madminer/lhe/lhe_reader.py#L472-L503) and [DelphesReader.add_cut()](https://github.com/diana-hep/madminer/blob/v0.9.0/madminer/delphes/delphes_reader.py#L511-L542) got their `pass_if_not_parsed` arg. renamed to `required`.
- The method [LHEReader.add_efficiency()](https://github.com/diana-hep/madminer/blob/v0.9.0/madminer/lhe/lhe_reader.py#L505-L534) got its `value_if_not_parsed` arg. renamed to `default`.
- The function [combine_and_shuffle](https://github.com/diana-hep/madminer/blob/v0.9.0/madminer/sampling/combine.py#L30-L35) got its `overwrite_existing_file` unused argument removed.