pypi weac 3.0.0
v3.0.0

latest release: 3.0.1
14 days ago

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, and analysis.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)
  • Performance improvements:

    • Property caching for improved efficiency
    • Input validation with Pydantic models
  • Comprehensive test suite:

    • Tests across tests/analysis, tests/components, tests/core, and tests/utils
    • Integration and regression tests, including comparison to reference WEAC version
    • Test materials and consolidated test structure
  • 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_lengthcut_length across scenario-related APIs
  • Constants alignment and internal behavior changes consistent with new architecture
  • Scripts removed: main.py and validation_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 with cut_length in your scenario/config usage
  • Use analysis.Plotter and analysis.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 via importlib.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.

Don't miss a new weac release

NewReleases is sending notifications on new releases.