lmfit fails to fit or fits without uncertainties calculated even with very good initial starting parameters, why?
Answer:
For some reason, lmfit does not seem to like np.float64. Simply changing the type of data passed in to np.float32 first completely fixes the problem in many cases (for me at least).
This is true even when the values are only a few decimal points long and therefore do not change at all when casting to float32.
I've come across this problem a few times now and it super frustrating but turns out to be easy to fix. Just wanted to put this here so others might find it because it's caused me lots of headaches in the past and I've never managed to find information about this.
Symptoms of problem:
Even with very good initial parameters for fitting data (based on the initial fit looking like a very close fit to data), running model.fit(...)  either fails to fit the data completely, or does fit but with a warning in the fit.fit_report() ##  Warning: uncertainties could not be estimated:.... Other very similar fits may run without error, so it seems like it is for no good reason at all.
Note, this is not in the limit of data or any fit values being super tiny or huge which actually does make things more difficult for the minimizer to handle.