noraeisner / LATTE

Lightcurve Analysis Tool for Transiting Exoplanet
GNU Lesser General Public License v3.0
39 stars 10 forks source link

Potential dependency conflicts between tesslatte and astropy #6

Open NeolithEra opened 4 years ago

NeolithEra commented 4 years ago

Hi, as shown in the following full dependency graph of tesslatte, tesslatte requires astropy ==3.1.1, tesslatte requires *_astroplan _ (astroplan 0.6 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency astroplan 0.6 transitively introduces astropy >=1.3**.

Obviously, there are multiple version constraints set for astropy in this project. However, according to pip's “first found wins” installation strategy, astropy 3.1.1 (i.e., the newest version satisfying constraint ==3.1.1) is the actually installed version.

Although the first found package version astropy 3.1.1 just satisfies the later dependency constraint (astropy ==3.1.1), such installed version is very close to the upper bound of the version constraint of astropy specified by astroplan 0.6.

Once astroplan upgrades,its newest version will be installed, as tesslatte does not specify the upper bound of version constraint for astroplan. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded astroplan version introduces a higher version of astropy, violating its another version constraint ==3.1.1.

According to the release history of astroplan, it habitually upgrates Astropy in its recent releases. For instance, astroplan 0.2 upgrated Astropy’s constraint from >=1.0 to >=1.2, and astroplan 0.2.1 upgrated Astropy’s constraint from >=1.2 to >=1.3.

As such, it is a warm warning of a potential dependency conflict issue for tesslatte.

Dependency tree

tesslatte - 0.1.19
| +- astroplan(install version:0.6 version range:*)
| | +- astropy(install version:3.1.1 version range:>=1.3)
| | +- numpy(install version:1.18.2 version range:>=1.10)
| | +- pytz(install version:2019.3 version range:*)
| | +- six(install version:1.14.0 version range:*)
| +- astropy(install version:3.1.1 version range:==3.1.1)
| +- astroquery(install version:0.4.1.dev6017 version range:*)
| +- lightkurve (install version:1.9.1 version range:>1.2.0)
| | +- astropy(install version:3.1.1 version range:>=1.3)
| | +- astroquery(install version:0.4.1.dev6017 version range:>=0.3.9)
| | +- bs4(install version:0.0.1 version range:*)
| | | +- beautifulsoup4(install version:4.9.0 version range:*)
| | | | +- soupsieve(install version:2.0 version range:>1.2)
| | +- fbpca(install version:1.0 version range:>=1.0)
| | +- matplotlib(install version:3.2.0rc1 version range:>=1.5.3)
| | | +- cycler(install version:0.10.0 version range:>=0.10)
| | | | +- six(install version:1.14.0 version range:*)
| | | +- kiwisolver(install version:1.2.0 version range:>=1.0.1)
| | | +- numpy(install version:1.18.2 version range:>=1.11)
| | | +- pyparsing(install version:3.0.0a1 version range:>=2.0.1)
| | | +- python-dateutil(install version:2.8.1 version range:>=2.1)
| | +- numpy(install version:1.18.2 version range:>=1.11)
| | +- oktopus(install version:0.1.2 version range:*)
| | | +- autograd(install version:1.3 version range:*)
| | | | +- future(install version:0.18.2 version range:>=0.15.2)
| | | | +- numpy(install version:1.18.2 version range:>=1.12)
| | | +- numpy(install version:1.18.2 version range:*)
| | | +- scipy(install version:1.2.3 version range:*)
| | +- pandas(install version:1.0.3 version range:*)
| | +- patsy(install version:0.5.1 version range:>=0.5.1)
| | | +- numpy(install version:1.18.2 version range:>=1.4)
| | | +- six(install version:1.14.0 version range:*)
| | +- requests(install version:2.23.0 version range:*)
| | | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | | +- idna(install version:2.9 version range:>=2.5,<3)
| | | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| | +- scipy(install version:1.2.3 version range:>=0.19.0)
| | +- tqdm(install version:4.45.0 version range:>=4.25.0)
| | +- uncertainties(install version:3.1.2 version range:*)
| +- matplotlib(install version:3.2.0rc1 version range:==3.2.0rc1)
| | +- cycler(install version:0.10.0 version range:>=0.10)
| | | +- six(install version:1.14.0 version range:*)
| | +- kiwisolver(install version:1.2.0 version range:>=1.0.1)
| | +- numpy(install version:1.18.2 version range:>=1.11)
| | +- pyparsing(install version:3.0.0a1 version range:>=2.0.1)
| | +- python-dateutil(install version:2.8.1 version range:>=2.1)
| +- mock (install version:4.0.2 version range:>2.0.0)
| +- numpy(install version:1.18.2 version range:*)
| +- pandas(install version:1.0.3 version range:*)
| +- reportlab(install version:3.5.42 version range:*)
| | +- pillow(install version:7.1.1 version range:>=4.0.0)
| +- reproject(install version:0.4 version range:==0.4)
| +- requests(install version:2.23.0 version range:*)
| | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | +- idna(install version:2.9 version range:>=2.5,<3)
| | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| +- scipy(install version:1.2.3 version range:*)
| +- seaborn(install version:0.10.0 version range:*)
| | +- matplotlib(install version:3.2.0rc1 version range:>=2.1.2)
| | | +- cycler(install version:0.10.0 version range:>=0.10)
| | | | +- six(install version:1.14.0 version range:*)
| | | +- kiwisolver(install version:1.2.0 version range:>=1.0.1)
| | | +- numpy(install version:1.18.2 version range:>=1.11)
| | | +- pyparsing(install version:3.0.0a1 version range:>=2.0.1)
| | | +- python-dateutil(install version:2.8.1 version range:>=2.1)
| | +- numpy(install version:1.18.2 version range:>=1.13.3)
| | +- pandas(install version:1.0.3 version range:>=0.22.0)
| | +- scipy(install version:1.2.3 version range:>=1.0.1)
| +- sklearn(install version:0.0 version range:*)
| | +- scikit-learn(install version:0.22.2.post1 version range:*)
| +- tess-point(install version:0.4.2 version range:*)

Thanks for your help. Best, Neolith

NeolithEra commented 4 years ago

Suggested Solution

  1. Loosen the version range of astropy to be >=3.1.1.
  2. Remove your direct dependency astropy, and use the astropy transitively introduced by astroplan.
  3. Change your direct dependency astroplan to be <=0.6. @noraeisner Which solution do you prefer, 1 ,2or 3? Please let me know your choice. May I pull a request to solve this issue?
NeolithEra commented 4 years ago

@noraeisner,Could you help me review this issue? Thx :p