# v0.26.x series (current stable)

## v0.26.0 (8th March 2024)

*Yanked release.*

## v0.26.1 (8th March 2024)

This is a major release. This is a summary of the most important changes:

* We dropped support for Python 3.8, following the
  [Numpy deprecation policy](https://numpy.org/neps/nep-0029-deprecation_policy.html).
  If you are using our PyPI package, you will need to create a new environment
  based on Python 3.9 or more recent to upgrade to v0.26.0. If you are running
  a development setup, you will need to recreate your dev environment
  accordingly with the
  {ref}`development environment setup instructions <sec-developer_guide-dev_install-setup_conda>`.
* We provide now experimental support for Windows. Please reach out through our
  issue board or discussions forum if you need help.
* We added the Hapke surface reflection model (see the {class}`.HapkeBSDF` API
  documentation). This model primarily aims at representing bare soil (without)
  vegetation).
* A new post-processing pipeline architecture, based on the
  [Hamilton library](https://hamilton.dagworks.io), streamlines our
  post-processing, improves its flexibility and maintainability. While this
  should not have a noticeable impact from a user's perspective, it will allow
  the implementation of several features prevented by the old pipeline system.
  A {doc}`tutorial </tutorials/advanced/postprocessing_pipelines>` showcases a
  few features of this new system.
* We introduced a new scene loader based on JSON files designed to facilitate
  the loading of mesh-based canopy scenes. The scene loader is described in a
  {ref}`user guide page <sec-user_guide-canopy_scene_loader>`, and a simplified
  interface automating the loading of the RAMI-V scenarios is provided.

### Removed

* ⚠️ Drop support of Python 3.8 ({ghpr}`382`): Eradiate now requires Python 3.9+.

### Added

* Split bitmap-to-xarray converter between data array and dataset steps
  ({ghpr}`383`).
* Add an Ubuntu-Based Dev Container for the Eradiate development environment
  ({ghpr}`384`).
* Add support for the Hapke BSDF model ({ghpr}`386`).
* Add experimental support for the Windows platform ({ghpr}`390`).
* {class}`.DistantFluxMeasure` can now be instantiated with the factory alias
  `distantflux` ({ghpr}`387`).
* Add a new scene loader functionality ({ghpr}`392`).
* Add support for preconfigured RAMI-V scenarios ({ghpr}`392`).

### Changed

* Required custom Mitsuba build bumped to v0.2.0 (based on Mitsuba v3.4.1).
* Transition post-processing pipelines to the
  [Hamilton library](https://hamilton.dagworks.io) ({ghpr}`387`).
* We now depend on the [Hamilton](https://pypi.org/project/sf-hamilton/) and
  [Graphviz](https://pypi.org/project/graphviz/) packages ({ghpr}`387`).

### Fixed

* Fix unit definition bug ({ghpr}`393`).
* Fix non-portable path handling ({ghpr}`390`).
* Fix number representation bug on Windows ({ghpr}`390`).
* Fix a bug in {class}`.MultiDeltaSpectrum` that would prevent using a number
  of wavelengths larger than the size of the default spectral discretization
  ({ghpr}`387`).
* Fix a bug in {func}`.mi_render` where array-to-int casting was not done
  correctly ({ghpr}`387`).

### Internal changes

* 🖥️ Allow different package specifications for Pip and Conda ({ghpr}`385`).
* 🖥️ Registered modes are now stored as {class}`.Mode` instances ({ghpr}`387`).
* 🖥️ {class}`.BinSet` and {class}`.WavelengthSet` now inherit from a common
  {class}`.SpectralSet` interface ({ghpr}`387`).
* 🖥️ The {class}`.BinSet` class's interface is extended with properties
  returning bin bounds and centres ({ghpr}`387`).
* 🖥️ The {meth}`.BinSet.from_absorption_data` method was refactored for improved
  maintainability ({ghpr}`387`).
* 🖥️ Bin selection routine test code was rewritten and relocated to the test
  file related to the parent class ({ghpr}`387`).
* 🖥️ The {class}`.MultiDeltaSpectrum` code was refactored for improved
  maintainability ({ghpr}`387`).

## v0.26.2 (15th March 2024)

This is a fix release.

### Changed

* The `repr` of some fields of the {class}`.AtmosphereRadProfile` and
  {class}`.MultiDeltaSpectrum` classes was modified for improved readability
  ({ghpr}`395`).
* The `extra_objects` field of the {class}`EarthObservationExperiment` subclasses
  can now be initialized with `None` ({ghpr}`395`).

### Fixed

* When opening a molecular absorption coefficient database, bins are sorted by
  ascending lower bound values ({ghpr}`395`).
* Fix a bug in post-processing pipelines where radiosity node would not appear
  for in situ sensors ({ghpr}`395`).

## v0.26.3 (upcoming release)

This is a fix release.

### Changed

* Required custom Mitsuba build bumped to v0.2.1 (based on Mitsuba v3.4.1). This
  update contains minor fixes for the Hapke BSDF plugin.

### Fixed

* Fix incorrect path to the `komodo` dataset ({ghpr}`398`).
* Online data stores now make additional attempts if a download fails
  ({ghpr}`398`).
