Changelog
=========
All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog `_,
and this project adheres to `Semantic Versioning `_.
[2.0.0] - 2026-01-20
--------------------
Added
^^^^^
- **Python 3.10-3.12 Support**: Extended compatibility from Python 3.12-only to 3.10, 3.11, and 3.12.
- **Multi-Version CI Testing**: GitHub Actions now tests against all supported Python versions.
- **Improved Documentation**: Enhanced contribution guide with full development workflow.
- **Comprehensive Library Testing**:
- Implemented unit tests for all dataset classes (``Dataset2D``, ``DatasetTimeSeries``, ``DatasetLightningBase``, etc.) in ``eyefeatures.deep.datasets``.
- Implemented unit tests for model architectures (``VitNet``, ``VitNetWithCrossAttention``, ``SimpleRNN``, ``GIN``, ``Classifier``, ``Regressor``) in ``eyefeatures.deep.models``.
- New tests for ``Extractor``, ``BaseTransformer``, ``SaccadeFeatures``, ``FixationFeatures``, and ``IndividualNormalization`` in the ``features`` module.
- Advanced tests for ``ShannonEntropy``, ``RQAMeasures``, and ``HHTFeatures`` confirming multi-group and multi-feature support.
- Scanpath-based tests for ``EucDist``, ``HauDist``, and ``Extractor`` consistency checks.
- New automated consistency tests ensuring ``feature_names_in_`` accurately predicts output columns.
- **Warning-Free Test Output**:
- Forced Matplotlib ``Agg`` backend via ``MPLBACKEND`` environment variable to eliminate 70+ deprecation warnings from the Tk backend and Pillow.
- Protected PyTorch Lightning ``self.log`` calls with safer internal trainer checks, preventing warnings during isolated model unit tests.
- **Infrastructure & Tools**:
- Successfully achieved and verified **>80% project-wide code coverage**.
- Established CI/CD pipeline via GitHub Actions for automated testing.
- Added local developer tools including ``pre-commit`` hooks for code style and quality.
- Centralized shared test fixtures in ``tests/conftest.py``.
Changed
^^^^^^^
- **Architectural Refinements**:
- **Unified MeasureTransformer Architecture**: Refactored base class to natively support multiple feature outputs and centralized grouping logic (``pk``).
- **Automated Feature Discovery**: Implemented ``get_feature_names_out`` across 30+ transformers, enabling ``Extractor`` to automatically populate ``feature_names_in_``.
- **Simplified Normalization**: Enhanced ``IndividualNormalization`` with automatic column inference and support for simple list-based feature specifications.
- **Deep Model Standardization**: Refactored ``VitNet`` and ``VitNetWithCrossAttention`` for consistent projections; updated ``SimpleRNN`` for hidden state access.
- Standardized dataset constructors to require explicit coordinate labels (``x``, ``y``).
- **Configuration**: Moved Matplotlib backend initialization to the top of ``tests/conftest.py`` for consistent headless execution.
Fixed
^^^^^
- **Deep Module Stability**: Resolved bugs in datasets; fixed division-by-zero in graph feature extraction and shadowing bugs in ``GINConv``.
- **Mathematical & Topological Correctness**:
- Fixed ``RuntimeWarning`` (log(0)) in ``persistence_entropy_curve`` and standardized ``float`` return types.
- Fixed Fill Path Calculation logic in ``pairwise.py`` to correctly calculate the expected path of expected paths.
- Validated original implementations for ``HurstExponent`` and ``SpectralEntropy`` after architecture refactor.
Removed
^^^^^^^
- Deprecated Jupyter Notebooks (``.ipynb``) from the ``tests/`` directory.