* aGrUM * Adding new class `gum::InfomationTheory` that regroups every information theory concepts (entropies, conditional entropies and mutual information, ...) with only one inference, which allows also conditioned information theory concepts. * Adding `gum::Potential::expectedValue()` * Adding the alternative *fast* syntax for NumericalDiscreteVariable : `{1.5:3.5:3}` meaning from 1.5 to 3.5 in 3 steps. * Updating `GraphicalModel::exists(const std::string&)` : return false instead of throwing an exception. * Adding `gum::graphicalModels::variables()` and a new alias for `gum::VariableSet`. * Fixing a bug in `gum::ShaferShenoyInference` for joint posterior when some nodes in the target received hard evidence. * Improving error message w.r.t `gum::*::jointPosterior`. * Adding mingw as a target for CI. * Fixing dangling pointers in testsuite, only detected by MSVC. * Optimized `gum::PDAG::cSeparation` * Renaming `gum::Set::isProper{Sub|Super}Set` to `gum::Set::isStrict{Sub|Super}Set`. * pyAgrum * swig>4.1 is now needed. * Enabling installation with poetry (thanks to Lorenzo Conti) * Adding new class `pyAgrum.InfomationTheory` that regroups every information theory concepts (entropies, conditional entropies and mutual information, ...) with only one inference, which allows also conditioned information theory concepts. * Adding `pyAgrum.Potential.expectedValue()`. * Restructuring a bit the sphinx documentation. * Down-exporting the read-only API for every types of discrete Variable to `pyAgrum.DiscreteVariable`. (see `VariablesTestSuite.testExportDerivedReadOnlyAPIforDiscreteVariable`) * Updating notebooks to the new down-exported read-only API of `pyAgrum.DiscreteVariable`. * Adding the alternative *fast* syntax for NumericalDiscreteVariable : `{1.5:3.5:3}` meaning from 1.5 to 3.5 in 3 steps. * Updating docs for new *fast* syntax. * Updating `GraphicalModel::exists(const std::string&)` : return false instead of throw an exception. * Initiating a new notebook about the interaction with ipywidget * Optimized and correctly wrapped `gum::PDAG::cSeparation` (thanks to Kenneth Lee). * New functions `pyAgrum.lib.explain.nestedMarkovBlankets` and `pyAgrum.lib.explain.nestedMarkovBlanketsNames`.