_Release for first Zenodo DOI_
[![Zenodo DOI](https://zenodo.org/badge/doi/10.5281/zenodo.5526360.svg)](https://doi.org/10.5281/zenodo.5526360)
See all documentation for this version [here](https://qrules.rtfd.io/en/0.9.2).
💡 New features
<details>
<summary>Added more pretty reprs through decorator (85)</summary>
Following classes are now better represented in Jupyter noteboooks:
- `InitialFacts`
- `InteractionProperties`
- `EdgeSettings`
- `NodeSettings`
- `GraphSettings`
- `GraphElementProperties`
- `QNProblemSet`
- `QuantumNumberSolution`
- `QNResult`
- `ExecutionInfo`
</details>
<details>
<summary>ProblemSet can now be rendered as DOT (86)</summary>
Closes 28
</details>
<details>
<summary>Allow setting custom topologies in STM (103)</summary>
Closes 96
Made the `StateTransitionManager.topologies` attribute public, so that it's easier to feed custom topologies to the `StateTransitionManager`. Note that the `topologies` attribute is immutable and can only be modified by overwriting it, so I decided to avoid cluttering the code with additional setters and getters.
An example for 2-to-2 topologies (see also 29) is illustrated in a new notebook.
</details>
🐛 Bug fixes
<details>
<summary>Use functools.wraps in decorators (b988057)</summary>
Improves the docstrings of decorated functions.
</details>
📝 Documentation
<details>
<summary>Removed references to the expert system in the documentation (104)</summary>
Links in the documentation were sometimes still pointing to the `expertsystem` website. Best avoided by keeping `intersphinx_mapping` as small as possible.
</details>
<details>
<summary>Added conservation rules page (84)</summary>
Describe how to use the [`conservation_rules`](https://qrules.readthedocs.io/en/0.9.1/api/qrules.conservation_rules.html) module separately.
A preview _with cell output_ can be viewed here:
https://qrules.readthedocs.io/en/doc-conservation-rules/usage/conservation.html
(until this PR is closed).
</details>
<details>
<summary>Decreased code line width in notebooks (88)</summary>
Input code cells that are too wide get a scroll bar. That's ok, but it looks just a bit better when you can see the entire code without scrolling.
</details>
<details>
<summary>Page content on the documentation is now wider (98)</summary>
See ComPWA/ampform104
</details>
<details>
<summary>Embedded GPLv3+ license file (100)</summary>
Some platforms like Zenodo and conda-forge require the license file to be packaged.
</details>
<details>
<summary>Extended package description in README and removed tick-boxed (101)</summary>
Removed the tick-boxes there, because they do not render correctly on PyPI.
</details>
<details>
<summary>Added package description for PyPI (102)</summary>
Closes https://github.com/ComPWA/compwa-org/issues/61
Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
</details>
<details>
<summary>Removed references to the expert system in the documentation (104)</summary>
Links in the documentation were sometimes still pointing to the `expertsystem` website. Best avoided by keeping `intersphinx_mapping` as small as possible.
</details>
<details>
<summary>Added a notebook that shows how to feed custom topologies to the StateTransitionManager (103)</summary>
Closes 96
An example for 2-to-2 topologies (see also 29) is illustrated in a new notebook.
</details>
<details>
<summary>Switched to compwa-org web-page for contributing (93)</summary>
</details>
🖱️ Developer Experience
<details>
<summary>Switched to pre-commit.ci where possible (87)</summary>
[pre-commit.ci](https://pre-commit.ci) is faster than GitHub Actions, so it would be better to switch to that. Another major advantage: it can auto-fix style problems.
The only problem is that hooks like `pylint`, `mypy`, and even `flake8` require additional dependencies and we don't want to maintain a list of those in both `setup.cfg` (required for code editors that use those dependencies) as well as in `.pre-commit-config.yaml`. There are also hooks like `pyright` and `editorconfig-checker` that don't work well on pre-commit.ci.
This PR makes all hooks that don't require additional dependencies (like `black` and `isort`) ['non-local'](https://pre-commit.com/#repository-local-hooks). This also works better with source control in VSCode.
Caveat: pinned requirements might diverge from the versions of the hooks.
This PR is a bit experimental -- we'll have to see how well this works out before it is implemented in AmpForm etc.
Another potential problem is that (as far as I know), pre-commit.ci cannot switch off [autoupdate](https://pre-commit.ci/#configuration) (at most set to `quarterly`). It is (for now) better to upgrade the hooks along with the requirement pinning though.
</details>
🔨 Internal maintenance
<details>
<summary>Removed mdit-py-plugins version limit (94)</summary>
See https://github.com/ComPWA/ampform/pull/147
</details>