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.