Linux Foundation Energy has announced the 1.10 release series of Power Grid Model (PGM), including support for columnar data and a generic branch component type. PGM is a high-performance Python/C++ library for steady-state distribution power system analysis.
Details of all changes in this release follow, and the release notes are also available.
Highlights
- ✅ Added native support for columnar data formats (see #548 and the documentation).
- ✅ Added a generic branch component type (see #729, #752 and the documentation).
- ✅ Update data IDs are now optional in certain cases (see #548 and the documentation).
- 💥 Multiple bug fixes (e.g., see #670, #671, #672, #690, #703).
- 💥 Explicitly forbid certain cases of unsupported usages (see below for details, and #774 and #784).
- 🚀 Improved numeric stability of source injection calculation (see #458).
- 🚀 Various improvements to the user experience (e.g., see #668, #674 and #697).
- 🚀 Improvements and fixes to the documentation.
- 🎉 Various improvements to the internal implementation and compiler support.
Support for Python 3.9 was dropped
As agreed upon during the last Power Grid Model meet-up, support for Python 3.9 was dropped. Please refer to our Release Strategy on details.
Explicitly disallowing unsupported behavior
The following changes affect previously undefined or unsupported behavior. Migration strategies are provided below.
- The
power_grid_model.core
library was renamed topower_grid_model._core
(see #787). Thecore
module was never intended to be directly used by users as it contains the core of thepower_grid_model
implementation. The same is true for several functions in the modules inpower_grid_model.validation
(see #822).- Migration: if you do use the
power_grid_model.core
module in your workflow, please migrate to other functions exposed in the public modules inpower_grid_model
that are not prefixed with a leading underscore (_
). Idem for usage of functions inpower_grid_model.validation
.
- Migration: if you do use the
- Providing data types (dtypes) that are not consistent with ones internally used in the Python library is now explicitly forbidden (see #811). This behavior was already undefined.
- Migration: you can use the
initialize_array
orpower_grid_meta_data
exposed via the Python API, or convert your arrays to conform to the internally used data types.
- Migration: you can use the
Please contact us on the issue board or discussion board if you find missing features or need help otherwise.
What’s Changed
- [Feature] Check generated code by @figueroa1395 in #658
- Bump fsfe/reuse-action from 3 to 4 by @dependabot in #665
- Bump pypa/cibuildwheel from 2.19.1 to 2.19.2 by @dependabot in #664
- Feature/Added missing metaclass by @figueroa1395 in #667
- fix #669 transformer tap regulator without other transformer type in data by @mgovers in #670
- fix also support empty trafo list in validation by @mgovers in #671
- [BUG] Fix source param calculation by @nitbharambe in #672
- Rectify source documentation by @nitbharambe in #673
- Drop python 3.9 by @Jerry-Jinfeng-Guo in #638
- Feature/main model wrapper by @mgovers in #660
- [FEATURE] Add simple self_test to Python API by @zhen0427 in #674
- Feature/test row based dataset by @mgovers in #675
- Clearify the reference direction of branch and branch3 by @zhen0427 in #679
- Columnar data Python API step 2 by @nitbharambe in #676
- [FEATURE] Numerically stable source injection in power flow. by @figueroa1395 in #666
- Add type hinting in python API by @zhen0427 in #680
- Feature/calculation type in options by @mgovers in #681
- Bump pypa/cibuildwheel from 2.19.2 to 2.20.0 by @dependabot in #683
- Feature / Binary search in Automatic Tap Changer by @Jerry-Jinfeng-Guo in #668
- Feature/columnar dataset by @mgovers in #678
- remove erroneously added unused and test logic after #668 by @mgovers in #684
- Feature/calculation type options in tests by @mgovers in #682
- Remove unused alias topology by @nitbharambe in #686
- Bugfix/dont crash on invalid homogeneous batch dataset by @mgovers in #690
- Path changes to cmake files by @Laurynas-Jagutis in #689
- Implementation of TypeVar in more scripts by @zhen0427 in #685
- Refactor meta data generator to remove lambda hack by @TonyXiang8787 in #693
- fix compiler flag with new setuptools by @TonyXiang8787 in #694
- Feature/enable mypy for users by @mgovers in #697
- add columnar data to data types (but don’t use yet) by @mgovers in #663
- license for py.typed by @mgovers in #701
- Use black-jupyter in pre-commit by @nitbharambe in #700
- [BUG] data filter of list to not crash by @nitbharambe in #705
- BugFix / Handle access violation to unconnected-regulated transformers by @Jerry-Jinfeng-Guo in #703
- Update quickstart.md by @PaulSchulz in #709
- Feature/C++ header only wrapper for C API by @figueroa1395 in #688
- Feature/cpp api tests by @figueroa1395 in #707
- Refactor data filter functionality by @nitbharambe in #704
- Feature/columnar data serialization by @mgovers in #708
- columnar data python api serialization by @nitbharambe in #687
- Allow python 3.13 by @TonyXiang8787 in #713
- more efficient columnar deserialization by @mgovers in #716
- Feature / Add columnar data support in main model by @Jerry-Jinfeng-Guo in #712
- Bump pypa/cibuildwheel from 2.20.0 to 2.21.0 by @dependabot in #721
- Feature / Rename API tests by @Jerry-Jinfeng-Guo in #719
- Feature / Columnar data C API by @Jerry-Jinfeng-Guo in #711
- fix quick start by @TonyXiang8787 in #724
- Renew build guide by @TonyXiang8787 in #725
- Bump pypa/cibuildwheel from 2.21.0 to 2.21.1 by @dependabot in #728
- MutableDataset to ConstDataset for columnar data by @nitbharambe in #732
- Feature/Update validation for columnar by @figueroa1395 in #734
- improve user build guide by @TonyXiang8787 in #737
- Feature/add nightly by @mgovers in #736
- Improve C and CPP API target structure by @TonyXiang8787 in #741
- remove not-needed handle creation in meta data by @TonyXiang8787 in #743
- Feature/nightly part 2 by @mgovers in #742
- Feature/full clang tidy by @mgovers in #744
- Update README.md by @mgovers in #745
- Remove static functions in CPP wrapper by @TonyXiang8787 in #747
- add check code quality + citations to nightly by @mgovers in #750
- Feature / Add enum options to deserialize relevant attributes by @Jerry-Jinfeng-Guo in #746
- Add numpy to mypy check by @mgovers in #753
- Feature/Update reuse by @figueroa1395 in #754
- add component attribute filter options to init by @mgovers in #757
- Feature/columnar dataset python extension by @mgovers in #699
- remove experimental flag on columnar output by @mgovers in #759
- Feature / deserialization data filter relevant logic in place by @Jerry-Jinfeng-Guo in #758
- Bump pypa/cibuildwheel from 2.21.1 to 2.21.2 by @dependabot in #763
- move datasetype from dataset to _utils by @nitbharambe in #761
- Feature/Re route validation tests by @figueroa1395 in #718
- create generic_branch #729 by @scud-soptim in #752
- columnar data batch list conversion by @nitbharambe in #760
- Bug/Fix columnar batch validation function by @figueroa1395 in #768
- Feature/Add utils to Cpp wrapper by @figueroa1395 in #767
- Repro case for buffer alignment by @mgovers in #769
- Bump actions ubuntu 24.04 by @figueroa1395 in #770
- Fix Nightly Clang-Tidy run by @mgovers in #775
- auto tap validation test for meshed grid with transformers by @mgovers in #777
- Bug/Convert to/form row/col util function by @figueroa1395 in #779
- Remove sphinx workaround by @mgovers in #780
- Bump pypa/cibuildwheel from 2.21.2 to 2.21.3 by @dependabot in #782
- Add dtype compatibility check by @nitbharambe in #776
- Improvement/Integration tests for columnar data by @figueroa1395 in #778
- [Feature] columnar data Python API docs by @mgovers in #781
- Bug/Fix feedstock mac by @figueroa1395 in #790
- BugFix / Capital enums made lower case by @Jerry-Jinfeng-Guo in #792
- Build guide docs – build docs from local by @nitbharambe in #789
- Columnar data docs – native data interface serialization by @nitbharambe in #788
- Columnar data documentation (Terminology) by @nitbharambe in #783
- [Feature] – columnar data examples by @mgovers in #785
- improve C API documentation by @mgovers in #799
- Bug / Fix error handling tests in API tests by @Jerry-Jinfeng-Guo in #795
- Fix/missing validation of k for generic branch by @scud-soptim in #804
- Feature – columnar performance docs by @mgovers in #801
- Fix const issue in the cpp header by @TonyXiang8787 in #808
- UB update unknown id repro case by @mgovers in #805
- BUG in test / Memory access violation in update test by @Jerry-Jinfeng-Guo in #810
- Feature / Update Python validation to support optional
id
in update data by @Jerry-Jinfeng-Guo in #793 - Feature/improve docs by @mgovers in #807
- update input data optional ids modification by @nitbharambe in #812
- Add branch power calculation explanation in docs by @nitbharambe in #815
- fix error msg of validator by @nitbharambe in #816
- Feature/resolve comments optional ids by @mgovers in #818
- Optional IDs tests by @nitbharambe in #817
- Feature / row based data optional id field support in update data by @Jerry-Jinfeng-Guo in #813
- Feature / columnar data optional id field support in update data by @Jerry-Jinfeng-Guo in #771
- Feature/support for optional IDs per component type by @figueroa1395 in #819
- Remove compatibility convert for output by @nitbharambe in #821
- Feature/Update documentation for optional update IDs by @figueroa1395 in #814
- Throw error on wrong dtype by @mgovers in #811
- Feature/private core module by @mgovers in #787
- make validation core functions private by @mgovers in #822
- Fix/Nightly build by @figueroa1395 in #825
- Release/v1.10.x by @mgovers in #823
Full Changelog: v1.9.0...v1.10.0