What’s New in Revision 0.9.0
These are the changes in SpectroChemPy-0.9.0. See Release notes for a full changelog, including other versions of SpectroChemPy.
New Features
Core plugin system: external packages can now register readers, writers, processors, visualizers, analyses, simulations, and dataset accessors via
spectrochempy.pluginsentry points.Plugin API: stable public interface at
spectrochempy.api.pluginsfor plugin authors, with versioned API guarantees.Plugin template: cookie-cutter project template in
plugins/plugin-template/.Plugin test harness:
PluginTestHarnessinspectrochempy.testing.pluginsfor isolated plugin testing without global state leakage.Plugin documentation: developer guide covering architecture, API policy, packaging, and testing.
NMR plugin (
spectrochempy-nmr): TopSpin/Bruker reader and NMR utilities are now provided by an official plugin atplugins/spectrochempy-nmr/.IRIS plugin (
spectrochempy-iris): IRIS analysis and plotting are now provided by an official plugin atplugins/spectrochempy-iris/.Cantera plugin (
spectrochempy-cantera): Plug Flow Reactor simulation utilities added atplugins/spectrochempy-cantera/as an experimental plugin (not officially supported, API may change).NDMath internal refactor: extracted focused private helpers (
_prepare_operation_quantities,_check_coordinate_compatibility,_resolve_operation_units,_execute_operation) and_ExecutionPlanclass fromNDMath._op(), reducing it from ~300 to ~70 lines.__array_ufunc__now explicitly rejects unsupported ufunc methods (reduce,accumulate,outer,at) by returningNotImplemented.Hypercomplex / quaternion support has been extracted from the core into the official
spectrochempy-hypercomplexplugin. Usedataset.hyper.set_quaternion()after installing the plugin.Carroucell reader extracted from the core into the official
spectrochempy-carroucellplugin.Added
NDDataset.reshape().
Bug Fixes
Refactored PSD processing.
Core publication workflows now only trigger on core release tags (
spectrochempy-v*), preventing accidental core republication when plugin releases are created.PyPI publication uses
skip-existingto avoid hard failures on duplicate version uploads.Conda stable (
mainlabel) uploads no longer use--force, preventing accidental overwrites of published releases.
Dependency Updates
Core dependency trimming:
osqpandnumpydocremoved from core dependencies;xlrdmoved to the carroucell plugin.Added
spectrochempy[plugins]pip extra that installs the official plugins: NMR, IRIS, Hypercomplex, and Carroucell. Cantera is available separately as an experimental plugin.
Breaking Changes
Reader functions (e.g.
read_omnic,read_opus) are no longer available asNDDatasetmethods. Usescp.read_omnic(...)or plugin-namespaced access (e.g.scp.nmr.read_topspin(...)) instead.TopSpin reading is now provided by the official NMR plugin. Use
scp.nmr.read_topspin(...)after installingspectrochempy[nmr]. The historicalscp.read_topspin(...)alias remains available as a compatibility layer.IRIS analysis is now provided by the official IRIS plugin. Use
scp.iris.IRISorfrom spectrochempy.iris import IRISafter installingspectrochempy[iris]. Limited root-level compatibility aliases remain available with deprecation warnings.