Harden code, improve tests, and consolidate test suite - #95
Merged
Conversation
- Refactor `.values` calls in `grid.py` to maintain Dask laziness for mask handling. - Implement `Regridder.clear_cache()` and `clear_instance_cache()` for improved memory management. - Add `__del__` to `Regridder` to ensure automatic cleanup of worker-local caches. - Improve ESMF error handling by translating cryptic codes into descriptive messages. - Harden `_apply_weights_core` to handle empty or NaN-only input arrays gracefully. - Add comprehensive new tests for hardening verification, Aero Protocol compliance, and cache isolation. - Format codebase with `ruff`.
…33388927676 Harden tests and code
- Resolved formatting issues in test files and core logic. - Added missing NumPy-style docstrings and type hints to CLI and internal functions. - Verified that all unit tests pass with both Eager and Lazy backends. - Ensured compliance with the Aero Protocol for backend-agnostic computation. - Verified that pre-commit hooks (ruff, ruff-format) pass completely.
…186392 Fix linting and CI issues for PR NOAA-EMC#94
Moved approximately 70 fragmented test files into 11 categorical files: - test_backends.py - test_diagnostics.py - test_grids.py - test_integration.py - test_misc.py - test_optimization.py - test_protocol.py - test_regridder.py - test_unstructured.py - test_utils.py - test_viz.py Each file contains migrated test functions and classes, with name conflicts resolved by appending suffixes. Shared fixtures like dask_client and sample_input were preserved. All original test_aero_*.py and other redundant test files were removed to improve repository structure and maintainability.
…8799792 Consolidate and logically name test suite
- Add Architecture overview with Mermaid diagram to index.md - Create Scientific Hygiene guide (Aero Protocol, NaN handling, diagnostics) - Document xarray accessors in new accessors.md - Complete missing grid generation utilities in utils.md - Update navigation and examples README - Fix SyntaxError and missing import in tests/test_utils.py
Harden Documentation and Scientific Guides
Collaborator
Author
|
@jules can you help |
- Replace star imports with explicit imports in `tests/test_utils.py`. - Fix bare except in `tests/test_utils.py`. - Remove redundant empty test files that only contained star imports and no tests. - Consolidate ESMF check logic in `tests/test_utils.py`. - Ensure compliance with `ruff` linting rules.
…35715884 Fix linting issues in tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements and enhancements to the
xregridpackage, focusing on robustness, memory management, and developer usability. The changes include enhanced error handling for ESMF regridding initialization, new cache management methods for better memory control in distributed/Dask environments, improved robustness for edge cases in the core regridding logic, and expanded documentation for CLI and internal APIs. Additionally, the pull request removes several test files, likely as part of a test suite reorganization.Key changes:
Robustness and Error Handling
_apply_weights_coreto return all-NaN arrays when the input data is empty or has no spatial elements, preventing shape or calculation errors.Cache and Memory Management
Regridderdestructor. This helps prevent memory leaks in long-running or parallelized workflows. [1] [2] [3]CLI and API Documentation
parse_args,main) for improved developer clarity and maintainability. [1] [2]Mask and Grid Handling
Test Suite Reorganization
Other minor changes include a small update to the
README.mdto clarify the project description.