MDSplus / mdsplus

The MDSplus data management system
https://mdsplus.org/
Other
73 stars 44 forks source link

Upload MDSplus to PyPI to enable installation with `pip`? #2623

Open namurphy opened 1 year ago

namurphy commented 1 year ago

At present, MDSplus is not able to be installed via the Python Packaging Index (PyPI) via pip. Making MDSplus installable via pip would make the installation process a lot easier, and thus remove some barriers to access to using this package. It would also make it possible for downstream packages (i.e. WiPPLPy) to be fully installable via pip.

We have a lot of experience with Python packaging over at PlasmaPy, and I would be happy to work with you to make MDSplus pip-installable. Is this something you would be interested in? There's also a lot of helpful information in the recently updated Python Packaging User Guide.

Thank you!

kuchtact commented 1 year ago

I definitely think that having MDSplus be pip installable would be great and make it a lot easier to onboard new users. Over at the Big Red Ball at UW-Madison, it's quite a pain to get people remote access to the data and a pip install would be grand.

ModestMC commented 1 year ago

https://github.com/MDSplus/mdsplus/pull/2618

What you're looking for is a Conda package users can just easily install that allows users to make use of https://github.com/MDSplus/mdsplus/blob/21ead653c84e800c288b1dd99fad90a88f8510f3/python/MDSplus/connection.py#L216-L217

When the new build system gets released, this will come back out of the icebox

mwinkel-dev commented 1 year ago

This issue is an instance of a larger question: "which package managers should MDSplus support?".

In the olden days, it was sufficient to support the operating system's package manager (apt for Ubuntu, rpm for RedHat and so forth). Now the software ecosystems around some languages (e.g., Python) are large enough to merit consideration of additional package managers.

As @ModestMC posted above, he and his colleagues are already working on a Conda package manager distribution of MDSplus.

namurphy commented 1 year ago

Thank you for the replies! Having MDSplus be conda-installable is indeed helpful, but availability on conda would not be enough to allow MDSplus to fully participate in the scientific pythoniverse. For that, it is very important for MDSplus to be installable specifically via pip.

A consequence of MDSplus not being installable from PyPI via pip is that any package that depends on MDSplus would not be able to be fully installed via pip either. In particular, we won't be able to use MDSplus as a dependency of PlasmaPy if it isn't installable via pip.

I also started wondering...how possible would it be to split off the Python functionality into its own repository? The reason I'm asking is that most Python release workflows assume that the entire repo is for the Python package, though I think it would be possible to make a custom GitHub Action to take care of this.

Thank you again!

mwinkel-dev commented 1 year ago

Hi @namurphy -- Thank you for the additional information. I have alerted my manager to this issue. And the software team has already had some preliminary discussions about pip, conda and other package managers.

Although I see the merit in your points, our small software team is already busy with several high priority tasks. It will likely be a few months before we can focus on package managers and figure out which ones MDSplus should support.

Please monitor this issue in the coming weeks and months. It is A-OK to post to this issue to request a status update.

ciortiz commented 3 months ago

Hi! I'm curious to know of any updates that have been made towards addressing this issue. The pip-installation functionality would be great for easing MDSplus implementation within the fusion Python ecosystem.

WhoBrokeTheBuild commented 3 months ago

Hi @ciortiz, unfortunately not, and uploading MDSplus to pypi is probably a non-starter. There is a conda package maintained by the community that tries to fill this need, and very recently we've started publishing a pure-python implementation of MDSplus, but with only thin client support.

You can check it out here https://pypi.org/project/mdsthin/