# Changelog

All changes of DMT starting from version 1.3.0 will be documented in this file. A breaking change of DMT is defined as a change in one of the test cases for the core modules. If the API changes there, the MAJOR version has to be increased.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]- 

## Added

- Pushing release-candidates to Pypi with ensured transparent versioning using git tags.
- Added cycler and colormath package dependencies
- Proper optional pylatex dependency
- Added pass-through kwargs from SpecifierStr.to_label() to SpecifierStr.to_tex()

## Changed

- Updated to pyqtgraph 0.13.1. QApplication in plot.py from QWidgets is tried to use, if this does not work, fall back to old implementation from Qt.QtGui

### Removed

- Removed gitlab.com repository from pipeline.

## [1.7.0] - 2022.08.17

### Added

- Added local and full docker container for DMT-core. It is build in 3 steps
    - Builder: Builds ngspice, adms, trilinos and xyce
    - Base: copys from builder, texlive and installs only necessary runtime and python environment
    - full or Version_XX: Includes the latest or respective DMT install
- dmt example bash script which uses the docker container to run a python/dmt script.
- Generating CycloneDX SBOM from the container
- Added a RuntimeWarning when loading a parameter for a MCard which is out of bounds.
- Added a mdm-reader test case for SkywaterPDK raw measurement data
- Added an example to the docu how to read and handle the SkywaterPDK raw data in a DutLib
- Added McSkywater to simulate Skywater130 PDK models using DutNgspice
- Added an error for non-unique dut names in a DutLib. Names must be unique to generate separate save folders.

### Changed

- Correct Bibtex to cite for the published paper.
- format and test stages of the CI pipeline are done for reg-ex "main" (so incl. "pre-main"), the following only for "main"
- `SpecifierStr.sub_specifiers` are now `frozenset` instead of a list. This fixes the order issue and at the same time improves readability when testing.
- `SpecifierStr.__contains__` now properly testing containement without the shortcut using string casts.
- The DMT.core.Sweep attributes are now proteced by setters and getters to ensure types.
- All McParameter names are casted to lower case.

### Fixed

- CI Release name

## Deprecated

- DMT.core.naming.set_col_name deprecated as SpecifierStr creation is much better documented.

## [1.6.2] - 2022.06.14

### Fixed

- double entry in the paper bib file.

## [1.6.1] - 2022.06.14

### Fixed

- gitlab CI buildchain

## [1.6.0] - 2022.06.07

### Added

- Issue and pull request templates and better descriptions
- Added more installation help in the documentation
- ngspice now allows SGP BJTs
- use_tex parameter for Plot.plot_py() to turn off LaTeX use

### Changed

- Cleaned setup.py from unneeded dependencies and also introduces extras_require to allow the different optional installations to work properly.
- Choosing PySide2 as plot backend without setting the environment variable. The new way is not blocking other backends, if PySide2 is not installed and the variable is unset.
- Moved Smithplot and Plot2Axis to separate files.

### Fixed

- "bias_val" variable in DutHdev.get_bias_info was unset
- Some possible runtime errors fixed thanks to pylance linting.
- Hdevpy linting errors
- pathlib.Path is always resolved before calling parent. Fixes #5
- pandas setting with copy
- plot siunitx
## Deprecated

- The user DMT configuration file will be moved to `$XDG_CONFIG_HOME/DMT/DMT_config.yaml` for linux and MacOS, with defaulting to `~/.config/DMT/DMT_config.yaml`. For Windows, the new default will be `%LOCALAPPDATA%\DMT\DMT_config.yaml`

## [1.5.0-rc.3] - 2022.04.15

### Added

- added "no ending" to parameter loading in MCard
- Added 3 policies how to handle missing parameters for McParameterCollection.set_values.
- Documentation for M1 mac installation
- logs directory directly in repo using .gitkeep

### Changed

- semver deprecated VersionInfo. Replaced by migration strategy from <https://python-semver.readthedocs.io/en/latest/migration/migratetosemver3.html?highlight=VersionInfo#use-version-instead-of-versioninfo>
- Sweep creation had a faulty type for sweepdef

## [1.4.0] - 2022.03.08

### Added

- Documentation for DMT.external library.
- Added a proper Sweep.get_sweep

### Changed

- Merged df_to_sweep with Sweep.get_sweep to get_sweepdef
- if copy_va_files = False in DutView, the VA-File is copied into a central VA-Codes cache and imported from there using a relative path into the netlist. This way the files are more likely to be cached correctly by the interfaced simulator.
- For compatibility with python 3.8 and 3.9, do not use | operator for typing.

### Move

- Moved DMT.verilogae.helpers into DMT.external.verilogae. This is more fitting.
- Moved vectorize, check_nan_inf and memoize to extraction.model
- Moved SI_UNITS_CONVERTER, resolve_siunitx and tex_to_label from core.utils to external.latex
- Moved is_iterable, flatten and strictly_increasing to data_processor

### Removedand

- Removed DMT.core.tikz_postprocess. Currently no final implementation and also no integration with pyqtgraph. This feature will return with pyqtgraph integration and better documentation! No major bump as it was not part of test cases.

### Deprecated

- core.df_to_sweep is now deprecated (and merge into Sweep.get_sweep)

## [1.3.0] - 2022.02.25

### Added

- Added ```__version__``` attribute and use it in setup.py
- Added ```_Excluded``` class to correctly implement the Verilog-AMS standard
- Added a test case for DMT.verilogae.helpers.get_param_list
- Added McParameterCollection to replace the deprecated McParameterComposition

### Changed

- renamed load_model method of MCard to load_model_parameters to better reflect what the method does.
- removed data_processor and data_reader pyx files and pyx import. The speed up is not worth the effort of two files to maintain.

### Move

- Moved the core in its own repository to protect proprietary data in the full repository

### Deprecated

- McParameterComposition is deprecated. Its name can be confusing because of the composition design pattern.
