# aGrUM Changelog ## Changelog for 2.0.0 This major update brings several important changes that align with our goals of improving usability, compliance, and consistency. Below are the three main motivations behind this significant upgrade: #### 1. License Change : MIT+LGPLV3 The first major change in version 2.0.0 is the update to our software license. This change ensures better alignment with modern open-source standards and provides clearer guidelines for usage, distribution, and modification ([see here for details](https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html)). #### 2. Package Name Update to Follow PEP8 To adhere to Python's PEP8 naming conventions, we have renamed the package from `pyAgrum` to `pyagrum`. We are aware that this change may cause some inconvenience, but it is necessary to ensure consistency with Python's style guidelines and improve the overall user experience. The transition to version 2.0.0 is the right time to implement this change, as it allows us to make a clean break and set a solid foundation for future development. #### 3. Class Renaming: Potential to Tensor In an effort to make the library more intuitive and reflective of its functionality, we have renamed the `Potential` class to `Tensor`. This change better represents the mathematical nature of the class and aligns with common terminology in the field ([see here for details](https://agrum.gitlab.io/articles/tensors-in-pyagrum.html)). #### 4. Modular Code Structure We have reworked the internal structure of the code to make it more modular. This redesign allows for easier extensibility and maintenance in the long term. By breaking down the code into more independent and reusable components, we aim to facilitate future enhancements and possible contributions from the community. ----- #### Detailed Changelog - aGrUM - Split library into `BASE`/`BN`/`CN`/`FMDP`/`ID`/`MRF` sub-libraries . - Enhanced swig files (thanks to Julien Schueller!). - Improved compilation time for the whole library. - Removed obsolete deprecated, experimental code. - Moved `gum::Potential` to `gum::Tensor`. - used functions of `std::filesystem`. - Removed uses of `mkstemp`/`opendir`/`dup`/etc. and inclusions of `dirent.h` and `unistd.h`. - Minor typos in aGrUM's testsuite. - pyAgrum - Split module into `pyAgrum.base`/`bn`/`cn`/`id`/`mrf` sub-modules. - Changed name of pyAgrum's package: from `pyAgrum` to `pyAgrum`. - Alignd wheel naming with binary distribution format. - Renamed `gum.lib.Discretizer` to `gum.lib.DiscreteTypeProcessor`. - Fixed a bug for `pyAgrum.DiscreteTypeProcessor` with a boolean variable in the database (thanks to Yann Le Biannic). - Fixed a bug then calling `gum.BNLearner.learnEssentialGraph` with a score-based algorithm (thanks to Yann Le Biannic). - *pyAgrum-izing* types in `swig`-generated `cpp` files. - Removed obsolete deprecated, experimental codes. - Moved `pyAgrum.Potential` to `pyAgrum.Tensor`. - Added glossary in readthedoc site. - Improved notebooks, docstrings and sphinx documentations. - Stable abi for wheel generation. Added possibility to turn off stable abi use. - CIs for apple silicon. - Removed old deprecation. - Added new experimental pyAgrum's model : Miture of Bayesian Networks (thanks to Rodrique Tavernier). - Licences are now included in the wheels.