Hi all, I got some feedback on iminuit 2.0 and despite my original intentions, I ended up breaking some of the more obscure interface in the overhaul. The opportunity to get a clean slate is just too good to miss for doing a v2.0. I am thinking about how to make the transition more smooth.
I suppose the most elegant way is to make a last 1.x release, v1.6, in which I deprecate the interface that I haven't deprecated yet but are going to remove in v2.0. Then people can use v1.6 to check what they have to change, since the deprecation warnings will tell them. Makes sense?
ParticleI also removed the dependency on
tabulateand replaced with
to_dictmethods, following your suggestion. I did make sure that the doc(strings) of the latter methods contain nice examples with
tabulatesuch that the reader is straightforwardly helped, as easy-print methods are quite handy.
Dear all, I am ready to finish the work on iminuit 2.0. You can see the long list of changes here: https://iminuit.readthedocs.io/en/latest/changelog.html#id2 and you can see the new version in action in the basic tutorial https://github.com/scikit-hep/iminuit/blob/develop/tutorial/basic_tutorial.ipynb (you probably have to reload the page until it actually displays the notebook).
While the list of breaking changes is rather long, some are rather peripheral. I think the highlight is the changed
__init__ of Minuit. Most of the keyword arguments were removed, you now set limits and fix parameters by assigning to the
Minuit.from_array_func was merged with
__init__, e.g. the syntax for a numpy function is
Minuit(np_fcn, (1, 2, 3)) while it remains
Minuit(fcn, a=1, b=2) for a normal function.
Minuit(fcn, 1, 2) now also works.
scanto find a minimum in addition to
from iminuit.v1 import Minuitand get a Minuit object that keeps your old scripts running. It is a significant amount of extra work, because I then also have to carry over the old tests that used the old interface (to make sure it is actually a perfect facade)