Changelog

All notable changes to yaml2plot will be documented in this file.

Version 1.0.0 (2025-07-XX)

🚀 Major Release – Complete API Overhaul

⚠️ Breaking Changes

  • Legacy API Removed – The following symbols no longer exist: * SpiceData class and reader.py module * SpicePlotter class and plotter.py module * Helper functions: explore_signals(), load_spice(), config_from_file(), config_from_yaml(), validate_config() * Configuration model PlotConfig

  • Configuration Keys Lower-casedX/Yx/y for consistency.

  • Single Data Interface – Only load_spice_raw (returns WaveDataset + dict of NumPy arrays) is supported.

  • Unified Plot Functionplot() now accepts either a file path or pre-loaded data plus a PlotSpec.

  • Package Namespace Trimmed – Public API now exposes exactly four symbols: load_spice_raw, PlotSpec, plot, and WaveDataset.

🎉 New Features & Improvements

  • PlotSpec 1.0 – Pydantic-validated model with helpers PlotSpec.from_yaml and PlotSpec.model_validate.

  • Standalone Plotting Module – Refactored core.plotting with cleaner helpers, automatic zoom config, correct Y-axis ordering, and ~75 % complexity reduction.

  • Processed-Data Integration – Pass arbitrary NumPy arrays via processed_data for mixed raw/derived traces.

  • Complex-Number Handling – Transparent plotting of AC analysis results; magnitude/phase examples in docs.

  • Automatic Renderer Detection – Chooses the best Plotly renderer for Jupyter vs. CLI.

  • Higher Test Coverage – 91 % overall (96 % plotting, 88 % PlotSpec).

  • Documentation Revamp – Quick-start, configuration guide, API reference, and examples updated for the new workflow.

🔧 Internal / Developer

  • Pure src/ layout with zero legacy code remaining.

  • Clean CLI built on WaveDataset + plot.

  • Extensive refactor of unit tests; legacy tests archived.

Version 0.1.0 (2025-01-XX)

Initial Release

Features

  • Core API Functions:

    • plot() - Main plotting function with required configuration parameter

    • explore_signals() - Signal discovery with categorized output

    • load_spice() - SPICE file loading with Path object support

    • validate_config() - Configuration validation with helpful warnings

  • Configuration System:

    • config_from_file() - Load configuration from YAML files

    • config_from_yaml() - Create configuration from YAML strings

    • config_from_dict() - Create configuration from Python dictionaries

    • Multi-figure support for complex layouts

    • Comprehensive validation with clear error messages

  • SPICE Data Handling:

    • Case-insensitive signal access (all normalized to lowercase)

    • Automatic signal categorization (voltage, current, other)

    • Modern pathlib integration throughout API

    • Support for processed data integration

  • Advanced Plotting:

    • Plotly-based interactive plots

    • Logarithmic scale support (both X and Y axes)

    • Customizable plot titles, labels, and styling

    • Grid and legend control

    • Multi-subplot layouts

Architecture

  • Clean 3-Step Workflow: Discovery → Configuration → Plotting

  • Explicit over Implicit: No hidden magic, all behavior transparent

  • Modern src/ Layout: Ready for PyPI publication

  • Comprehensive Test Suite: 226 tests with 92% coverage

Dependencies

  • plotly >= 5.0.0

  • numpy >= 1.20.0

  • PyYAML >= 6.0

  • spicelib >= 1.0.0

Supported Python

  • Python 3.8+

  • Tested on Python 3.8, 3.9, 3.10, 3.11, 3.12

Known Issues

  • None at initial release

Legend:

  • 🎉 New Features: New functionality added

  • 🐛 Bug Fixes: Issues resolved

  • 📝 Documentation: Documentation improvements

  • ⚠️ Breaking Changes: Changes that break backward compatibility

  • 🔧 Internal: Internal improvements not affecting public API