aGrUM/pyAgrum 2.0.0 released

Posted on Fri 28 March 2025 in News

ANNOUNCE: aGrUM 2.0.0

aGrUM/pyAgrum 2.0.0 is out.

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).

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).

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

  • Changed name of pyAgrum's package: from pyAgrum to pyagrum.
  • Split module into pyagrum.base/bn/cn/id/mrf sub-modules.
  • Alignd wheel naming with binary distribution format.
  • Renamed pyagrum.lib.Discretizer to pyagrum.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 pyagrum.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.
  • Update CIs for apple silicon.
  • Removed old deprecation.
  • Added new experimental pyAgrum's model : Mixture of Bayesian Networks (thanks to Rodrique Tavernier).
  • Licences are now included in the wheels.