geoschem / gcpy

Python toolkit for GEOS-Chem. Contains basic plotting scripts, plus the suite of GEOS-Chem benchmarking utilities.
https://gcpy.readthedocs.io
Other
51 stars 24 forks source link

Make GCPy a conventional Python package #290

Closed sdeastham closed 7 months ago

sdeastham commented 7 months ago

Name and Institution (Required)

Name: Sebastian Eastham Institution: Imperial College London

Confirm you have reviewed the following documentation

New GCPy feature or discussion

Requiring users to directly manipulate PYTHONPATH (as is currently recommended) is awkward, non-standard, and makes it difficult to include GCPy as a dependency for other packages. Being able to install GCPy using pip (or, better yet, having it as a package on conda-forge) would significantly increase its accessibility and usability.

lizziel commented 7 months ago

Thanks for the suggestion! GCPy is actually already available on conda-forge as geoschem-gcpy. However, the version there is v1.3.2 and we have had a few releases since (1.3.3, 1.4.0). We should update that since it looks like there is demand for this. The conda-forge page says there have been >40k downloads.

yantosca commented 7 months ago

Thanks @lizziel and @sdeastham. It may be a while since we can get to this. Also, I think the issue that we had was that a package update broke the GCPy package (i.e. they de-listed older ESMF versions). For the time being we have been specifying an environment file with packages that we know work.

One tricky thing: when you make a package it is expected that it should work with a number of Python versions. We haven't really tested with anything other than Python 3.9 (since in Python 3.10 there were some updates to the language that may have broken legacy features). Then you go down the rabbit hole of Python Package Hell.

We of course will gladly accept any assistance from the community in restoring the package (or giving us best practices): @msulprizio @kilicomu @laestrada @lizziel @yidant

yantosca commented 7 months ago

So with a little bit of fiddling, I was able to push the 1.4.2 release of GCPy to PyPi. See: https://pypi.org/project/geoschem-gcpy/1.4.2/

There is also a way of setting up a GitHub action so that this will be done automatically at each release. I need to figure out how to do that.

yantosca commented 7 months ago

Actually there are instructions: https://medium.com/@VersuS_/automate-pypi-releases-with-github-actions-4c5a9cfe947d. I'll check this out.

yantosca commented 7 months ago

Closed by #294

sdeastham commented 7 months ago

Thanks for the suggestion! GCPy is actually already available on conda-forge as geoschem-gcpy. However, the version there is v1.3.2 and we have had a few releases since (1.3.3, 1.4.0). We should update that since it looks like there is demand for this. The conda-forge page says there have been >40k downloads.

This is great to know, and thank you @lizziel and @yantosca for the swift action!

For what it's worth, I'd suggest that the Installing GCPy page (https://gcpy.readthedocs.io/en/stable/Getting-Started-with-GCPy.html#) include this information. I suspect that, for most users, installing with conda/mamba is hugely preferable to a GitHub download (it certainly is for me). Nonetheless, thanks again!

yantosca commented 7 months ago

Thanks @sdeastham. We will update the page. We made a quick 1.4.2 release to test if it could be released on PyPi, but we anticipate a 1.4.3 or 1.5.0 release soon as we have a couple more features esp. for the benchmarking.

FYI, the 1.4.2 release got pushed to PyPi but somehow it did not build for conda-forge. This needs to be investigated. It could be that conda-forge has stricter requirements. We are also using some out-of-date packages (specifically esmpy 8.1.1 and the RTD packages) so maybe conda-forge doesn't like that.