multiscale / muscle3

The third major version of the MUltiScale Coupling Library and Environment
Apache License 2.0
25 stars 13 forks source link

NumPy version (unnecessarily?) pegged #34

Closed LourensVeen closed 4 years ago

LourensVeen commented 4 years ago

In https://github.com/multiscale/muscle3/issues/22#issuecomment-575198940, libmuscle Python refuses to install because there's another package installed that depends on numpy<=1.14.5,>=1.13.3. We should check which version we really need, and widen the requirement as far as possible to improve compatibility.

LourensVeen commented 4 years ago

Numpy's versioning policy is at https://numpy.org/neps/nep-0023-backwards-compatibility.html. It seems that this boils down to it being always safe to use any bugfix release (e.g. 1.15.x should all be compatible), and if you're not currently using any deprecated functionality, then the next two minor versions (e.g. 1.16 and 1.17) should also be safe. But something can be deprecated in 1.16 and then removed in 1.18, so that's not necessarily compatible.

Looking at this again, MUSCLE 3 Python doesn't currently require numpy at all. It will once we get support for sending and receiving arrays, but right now it only does for the examples. And the requirements.txt there doesn't list a number. So the mentioned issue is a configuration problem on Eagle, and has nothing to do with MUSCLE.

The above analysis will still be useful though when we do add array support. For now, let's close this.

LourensVeen commented 4 years ago

Array/grid support has just been merged into develop. It specifies numpy>=1.12. Given the above, there's a small risk of future incompatibility, but since we're really only using very basic properties of the ndarray class and its array constructor, the chance of a strict constraint breaking compatibility with other libraries unnecessarily is much higher than that of a change in NumPy breaking MUSCLE 3.