WEAC v3.0
WEAC v3.0 represents a major architectural upgrade that completely restructures the codebase into a modern, modular package. This release significantly improves code organization, performance, and maintainability while adding comprehensive testing and enhanced documentation.
Highlights
-
Core refactor to a modular architecture under
weac/
:- New packages:
analysis/
,components/
,core/
,utils/
- Introduces
analysis.Analyzer
,analysis.criteria_evaluator
, andanalysis.plotter
- New Pydantic-backed configuration and data models in
components/
- Adds
core.system_model
,core.eigensystem
,core.slab
,core.scenario
,core.slab_touchdown
,core.unknown_constants_solver
- Utility modules for data handling and conversions (e.g.,
utils.snowpilot_parser
,utils.geldsetzer
)
- New packages:
-
Performance improvements:
- Property caching for improved efficiency
- Input validation with Pydantic models
-
Comprehensive test suite:
- Tests across
tests/analysis
,tests/components
,tests/core
, andtests/utils
- Integration and regression tests, including comparison to reference WEAC version
- Test materials and consolidated test structure
- Tests across
-
Documentation improvements:
- Enhanced Sphinx project with fixed builds for Sphinx 8.x compatibility
- README improvements for usage, roadmap, and links
- Removed deprecated
sphinxawesome_theme.highlighting
extension
-
CI and tooling enhancements:
- Updated GitHub Actions workflows for formatting, linting, testing, and docs deployment
- Standardized configuration in
pyproject.toml
- Dependency caching and streamlined setup
- Cleaned
.gitignore
/.cursorignore
and added.gitmodules
BREAKING CHANGES
- Legacy modules removed:
weac/layered.py
,weac/mixins.py
,weac/plot.py
,weac/tools.py
,weac/inverse.py
,weac/eigensystem.py
- API restructuring: imports move under
weac/analysis
,weac/components
,weac/core
,weac/utils
- Renaming:
crack_length
→cut_length
across scenario-related APIs - Constants alignment and internal behavior changes consistent with new architecture
- Scripts removed:
main.py
andvalidation_cc.py
are no longer available
Migration Guide
Update your imports to the new package layout:
# New imports
from weac.components import ScenarioConfig, Segment, Layer, Config, ModelInput
from weac.core.system_model import SystemModel
from weac.analysis.analyzer import Analyzer
from weac.analysis.plotter import Plotter
API Changes:
- Replace
crack_length
withcut_length
in your scenario/config usage - Use
analysis.Plotter
andanalysis.Analyzer
for plotting and analysis APIs - Migrate from removed legacy modules to their new equivalents listed above
Documentation and CI
-
Docs build now succeeds with Sphinx 8.x:
docs/sphinx/conf.py
derives version viaimportlib.metadata.version("weac")
- Deprecated extensions removed for better compatibility
-
CI improvements use
pyproject.toml
for lint settings, add caching, and streamline setup
How to Verify
- Run the full test suite:
python -m pytest -q
- Build docs locally:
sphinx-apidoc -o docs/sphinx/ weac --force --separate cd docs/sphinx && make clean html
This major release maintains WEAC's core functionality while providing a significantly improved foundation for future development. The modular architecture, comprehensive testing, and enhanced documentation make WEAC more maintainable and extensible than ever before.