Open znicholls opened 1 year ago
Three questions:
which dependencies specifically are overly restrictive?
It varies over time. Of the current list, matplotlib < 3.7.1 and numpy < 1.24 could bite if you're in the wrong project. Python < 3.12 is also painful if you want to explore in the latest Python version. Previously pint and pandas have been pinned which has caused headaches downstream.
which parts would be part of the core vs. the full package?
As a start: core: IamDataFrame and everything it depends on. Full package (including logging hacks etc.): everything else
who would have to shoulder the additional maintenance effort after the split?
The pyam mainteners. That's obviously a downside but I think the upsides are:
Pyam is great, but it is super restrictive with its supported versions of dependencies. For users, this is great. For anyone who wants to use it as a dependency of another package, it's really painful because upgrading pyam causes all sorts of other things to update which results in weird and wonderful bugs (see e.g. our fun in https://github.com/iiasa/climate-assessment/pull/36).
One way out of this would be to split out a pyam-core package (call it whatever) that has the key bits of functionality, without all the package pinning (and logging mangling). Pyam would continue to exist and support direct users. However, the split would allow pyam-core to be used as a dependency without the dependency headaches that the current approach leads to.
@phackstock would be interested in your thoughts on this given the pain you've gone through with climate-assessment. cc @lewisjared and @jkikstra