We are proud to announce pymovements v0.22.0 🎉
## 🏆 Highlights
- HTML representations for Jupyter notebooks (#1112)
## 💥 Breaking Changes
- restrict boolean arguments in `to_dict()` to keyword-only (#1150)
- remove `utils.checks` from public api (#1094)
- rename `zT` to `z_target_pos` in GazeBaseVR definition (#1068)
## ⚠️ Deprecations
- deprecate `utils.plotting` (#1081)
## ✨ Enhancements
- add `exclude_none` argument to `to_dict()` methods (#1149)
- implement `Experiment.from_dict()` (#1108)
- support passing `DatasetDefinition` to gaze init and io (#1004)
- make `DatasetDefinition.long_name` optional (#1121)
## 📀 Datasets
- add PoTeC reading measures (#1146)
- add OneStop dataset (#1142)
- add PoTeC fixation resources (#1104)
- add EMTeC reading measures (#1122)
- remove mirrors from datasets with no real mirrors (#1059)
- rename `zT` to `z_target_pos` in GazeBaseVR definition (#1068)
## 🛠️ Maintenance
- restrict boolean arguments in `to_dict()` to keyword-only (#1150)
- update pyarrow requirement from \<19.1 to \<20.1 (#1132)
- update polars requirement from \<1.28 to \<1.30 (#1133 #1137)
- create workflow for benchmarking import times (#1087)
- reduce CI compute by canceling outdated runs in PRs (#1123)
- set `patterns` default to `None` in `from_asc()` (#1092)
- remove `utils.checks` from public api (#1094)
## 📖 Documentation
- HTML representations for Jupyter notebooks (#1112)
- correct typo in readme code comment (#1130)
## 👷👷♀️👷♂️ Contributors
Shoutout to all our contributors for making this release possible!
@SiQube, @Yanis750, @dkrako, @pufferss and @saeub