# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.2.0] - 2026-04-17

## Added

- `iter_bliss_scan_data_from_memory` and `iter_bliss_scan_data_from_memory_slice`: Add support for lima2 detectors.

## [2.1.1] - 2026-03-09

### Fixed

- Support `h5py=3.16`: does not support broadcasting for dimensions with size zero.

## [2.1.0] - 2026-01-26

### Added

- `ewoksdata.data.hdf5.dataset_writer.IndexedDatasetWriter`: Add data points to stack in any order (single HDF5 dataset).
- `ewoksdata.data.hdf5.dataset_writer.IndexedStackDatasetWriter`: Add data points to a stack of stacks in any order (single HDF5 dataset).

### Fixed

- `ewoksdata.data.bliss.iter_bliss_scan_data`: raise a `ValueError` for empty string in `lima_names` or `counter_names`.

## [2.0.3] - 2025-12-03

### Fixed

- `get_data`: avoid data access when determining URL type.

## [2.0.2] - 2025-12-01

### Fixed

- `get_data`: fix bug in waiting for HDF5 file to be created.

## [2.0.1] - 2025-11-21

### Fixed

- In-memory buffering is now opt-in for `blissdata>=2`.

## [2.0.0] - 2025-11-21

### Added

- `ewoksdata.data.bliss.iter_bliss_scan_data_from_hdf5`: data iteration from file only.
- Support new `blisdata>=2.3.0` imports.

### Changed

- `ewoksdata.data.bliss.iter_bliss_scan_data`: support optionally data iteration from memory.
- `ewoksdata.data.bliss.iter_bliss_data`: support optionally data iteration from memory.
- `ewoksdata.data.bliss.iter_bliss_scan_data`: in-memory buffering is now opt-in for `blissdata>=2`
  when iterating from blissdata-cache.
- `ewoksdata.data.bliss.iter_bliss_data`: in-memory buffering is now opt-in for `blissdata>=2`
  when iterating from blissdata-cache.

### Fixed

- `ewoksdata.data.bliss.get_data`: fix error type when HDF5 file does not exist.

## [1.3.0] - 2025-09-18

### Changed

- `iter_bliss_scan_data_from_memory` for `blissdata>=2` iterates over stream view's
  instead of loading their data at once.

### Fixed

- HDF5 `DataUrl` without a data path (the HDF5 root group).

## [1.2.1] - 2025-06-24

### Fixed

- `ewoksdata.data.bliss.get_data`: Fixed an issue where the function failed to wait for the
  completion of a Bliss scan due to not recognizing Bliss HDF5 files.

## [1.2.0] - 2025-05-27

### Added

- `ewoksdata.data.hdf5.dataset_writer`: New optional arg `overwrite` (default: False) to
  `DatasetWriter` to overwrite the dataset if it exists.

## [1.1.0] - 2025-05-06

### Added

- `ewoksdata.nexus.create_url`: New optional arg `overwrite` (default: False) to recreate the
  url target if it exists.

## [1.0.0] - 2025-02-03

### Changed

- Drop Python 3.6 and 3.7.
- Explicit HDF5 flushing for `_DatasetWriterBase` derived classes.
- `ewoksdata.test.data.bliss_scans`: `save_bliss_scan` can now save positioners and a scan title.
- Dependency fixes:
- `blissdata` uses a private method from `silx` which is removed since `2.2`.

## [0.6.0] - 2024-10-17

### Added

- Iterate Bliss data from memory within a slice.
- Support `blissdata` 2.0.

## [0.5.1] - 2024-08-03

### Fixed

- `ContextIterator` was not a proper generator API.

## [0.5.0] - 2024-08-02

### Added

- `iter_bliss_data` and `iter_bliss_scan_data` are now context iterators. These are context managers
  that yield an iterator but can also be used as a normal iterator.

## [0.4.4] - 2024-07-02

### Fixed

- Support Python 3.12.

## [0.4.3] - 2024-06-24

### Fixed

- Support pip 24.1.

## [0.4.2] - 2024-04-08

### Fixed

- `iter_bliss_scan_data_from_memory` was yielding lima data wrong.

## [0.4.1] - 2024-03-20

### Fixed

- The blissdata<1 dependency does not have redis.

## [0.4.0] - 2024-03-12

### Added

- Support Bliss 2.0.

## [0.3.0] - 2023-07-13

### Changed

- Replaced the `bliss` extra install option with `online`.

### Fixed

- Check for empty-directory when calling os.makedirs.

## [0.2.7] - 2023-05-30

### Added

- `StackDatasetWriter`: write HDF5 dataset with one extra dimension than `DatasetWriter`.

### Fixed

- `iter_bliss_scan_data_from_memory` capture lima exceptions.

## [0.2.6] - 2023-05-02

### Changed

- `get_data` support non-HDF5 URL's without scheme.

## [0.2.5] - 2023-04-25

### Changed

- `iter_bliss_scan_data_from_memory` retry getting the lima proxy.

### Fixed

- `create_nexus_group` bug when no directory is provided.
- `iter_bliss_scan_data_from_memory` check lima acquisition number.

## [0.2.4] - 2023-04-18

### Fixed

- `DatasetWriter` time based flushing fix alignment.

## [0.2.3] - 2023-04-18

### Changed

- Retry getting the Redis node when getting data from memory.
- `DatasetWriter` optional time-based flushing.

### Fixed

- Fix `blissdata` bug.

## [0.2.2] - 2023-04-11

### Changed

- Add `h5exists`.
- `DatasetWriter` fill value is NaN.
- `DatasetWriter` support dataset attributes.

### Fixed

- `DatasetWriter` for small datasets without chunking failed.

## [0.2.1] - 2023-04-02

### Fixed

- Missing `blissdata` dependency.

## [0.2.0] - 2023-03-31

### Changed

- Use `blissdata` to iterate over scan data.

## [0.1.1] - 2023-02-15

### Added

- `DatasetWriter`: works as a context manager.

## [0.1.0] - 2023-01-04

### Added

- `iter_bliss_data`: iterator for online Bliss data.
- `get_data`: get online Bliss data.
- `DatasetWriter`: write HDF5 dataset with chunk guessing and alignment.
- `last_lima_image`: last image of a running scan.

[unreleased]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.2.0...HEAD
[2.2.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.1.1...v2.2.0
[2.1.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.1.0...v2.1.1
[2.1.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.0.3...v2.1.0
[2.0.3]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.0.2...v2.0.3
[2.0.2]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.0.1...v2.0.2
[2.0.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v2.0.0...v2.0.1
[2.0.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v1.3.0...v2.0.0
[1.3.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v1.2.1...v1.3.0
[1.2.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v1.2.0...v1.2.1
[1.2.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v1.1.0...v1.2.0
[1.1.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v1.0.0...v1.1.0
[1.0.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.6.0...v1.0.0
[0.6.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.5.1...v0.6.0
[0.5.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.5.0...v0.5.1
[0.5.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.4.4...v0.5.0
[0.4.4]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.4.3...v0.4.4
[0.4.3]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.4.2...v0.4.3
[0.4.2]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.4.1...v0.4.2
[0.4.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.4.0...v0.4.1
[0.4.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.3.0...v0.4.0
[0.3.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.7...v0.3.0
[0.2.7]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.6...v0.2.7
[0.2.6]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.5...v0.2.6
[0.2.5]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.4...v0.2.5
[0.2.4]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.3...v0.2.4
[0.2.3]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.2...v0.2.3
[0.2.2]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.1...v0.2.2
[0.2.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.2.0...v0.2.1
[0.2.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.1.1...v0.2.0
[0.1.1]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/compare/v0.1.0...v0.1.1
[0.1.0]: https://gitlab.esrf.fr/workflow/ewoksapps/ewoksdata/-/tags/v0.1.0
