AppScale / appscale-tools

A set of command-line tools that can be used to interact with AppScale.
Other
51 stars 49 forks source link

Potential dependency conflicts between appscale-tools and httplib2 #772

Open NeolithEra opened 4 years ago

NeolithEra commented 4 years ago

Hi, as shown in the following full dependency graph of appscale-tools, appscale-tools requires *_httplib2 _ , while the installed version of google-api-python-client(1.5.4) requires _httplib2 >=0.8,<1dev**_.

According to Pip's “first found wins” installation strategy, httplib2 0.14.0 is the actually installed version.

Although the first found package version httplib2 0.14.0 just satisfies the later dependency constraint (httplib2 >=0.8,<1dev), it will lead to a build failure once developers release a newer version of httplib2.

Dependency tree--------

appscale-tools - 3.8.1
| +- adal(install version:1.2.2 version range:>=0.4.7)
| +- appscale-agents(install version:3.8.1 version range:*)
| | +- adal(install version:1.2.2 version range:>=0.4.7)
| | +- argparse(install version:1.4.0 version range:*)
| | +- azure(install version:2.0.0 version range:==2.0.0)
| | +- azure-mgmt-marketplaceordering(install version:0.2.1 version range:*)
| | +- boto(install version:2.49.0 version range:*)
| | +- cryptography(install version:2.8 version range:*)
| | +- google-api-python-client(install version:1.5.4 version range:==1.5.4)
| | | +- httplib2(install version:0.14.0 version range:>=0.8,<1dev)
| | | +- oauth2client(install version:4.0.0 version range:<5.0.0dev,>=1.5.0)
| | | | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | | | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | | | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | | | +- rsa(install version:4.0 version range:>=3.1.4)
| | | | +- six(install version:1.13.0 version range:>=1.6.1)
| | | +- six(install version:1.13.0 version range:>=1.6.1,<2dev)
| | | +- uritemplate(install version:3.0.1 version range:<4dev,>=3.0.0)
| | +- httplib2(install version:0.14.0 version range:*)
| | +- keyring(install version:18.0.1 version range:>=12.0.2,<19.0.0)
| | +- keyrings.alt(install version:3.1.1 version range:>=3.1,<3.2)
| | +- keyrings.alt(install version:3.1.1 version range:<3.2,>=3.1)
| | +- msrestazure(install version:0.4.34 version range:==0.4.34)
| | +- oauth2client(install version:4.0.0 version range:==4.0.0)
| | | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | | +- rsa(install version:4.0 version range:>=3.1.4)
| | | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | | +- six(install version:1.13.0 version range:>=1.6.1)
| | +- PyYAML(install version:5.2b1 version range:*)
| | +- requests(install version:2.22.0 version range:>=2.20.0)
| | | +- certifi(install version:2019.9.11 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.8 version range:>=2.5,<2.9)
| | | +- urllib3(install version:1.25.7 version range:<1.26,>=1.21.1)
| | +- retrying(install version:1.3.3 version range:==1.3.3)
| | | +- six(install version:1.13.0 version range:>=1.7.0)
| | +- setuptools(install version:33.1.1 version range:<34,>=11.3)
| | +- soappy(install version:0.12.22 version range:*)
| | +- tabulate(install version:0.7.7 version range:==0.7.7)
| | +- termcolor(install version:1.1.0 version range:*)
| | +- wstools(install version:0.4.3 version range:==0.4.3)
| | | +- docutils(install version:0.15.2 version range:*)
| +- argparse(install version:1.4.0 version range:*)
| +- boto(install version:2.49.0 version range:*)
| +- cryptography(install version:2.8 version range:>=2.3.0)
| +- google-api-python-client(install version:1.5.4 version range:==1.5.4)
| | +- httplib2(install version:0.14.0 version range:>=0.8,<1dev)
| | +- oauth2client(install version:4.0.0 version range:<5.0.0dev,>=1.5.0)
| | | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | | +- rsa(install version:4.0 version range:>=3.1.4)
| | | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | | +- six(install version:1.13.0 version range:>=1.6.1)
| | +- six(install version:1.13.0 version range:>=1.6.1,<2dev)
| | +- uritemplate(install version:3.0.1 version range:<4dev,>=3.0.0)
| +- haikunator(install version:2.1.0 version range:*)
| +- httplib2(install version:0.14.0 version range:*)
| +- oauth2client(install version:4.0.0 version range:==4.0.0)
| | +- httplib2(install version:0.14.0 version range:>=0.9.1)
| | +- pyasn1(install version:0.4.8 version range:>=0.1.7)
| | +- pyasn1-modules(install version:0.2.7 version range:>=0.0.5)
| | +- rsa(install version:4.0 version range:>=3.1.4)
| | | +- pyasn1(install version:0.4.8 version range:>=0.1.3)
| | +- six(install version:1.13.0 version range:>=1.6.1)
| +- pyOpenSSL(install version:19.1.0 version range:>=18.0.0)
| | +- cryptography(install version:2.8 version range:>=2.8)
| | +- six(install version:1.13.0 version range:>=1.5.2)
| +- PyYAML(install version:5.2b1 version range:*)
| +- requests(install version:2.22.0 version range:>=2.20.0)
| | +- certifi(install version:2019.9.11 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.8 version range:>=2.5,<2.9)
| | +- urllib3(install version:1.25.7 version range:<1.26,>=1.21.1)
| +- retrying(install version:1.3.3 version range:==1.3.3)
| | +- six(install version:1.13.0 version range:>=1.7.0)
| +- setuptools(install version:33.1.1 version range:<34,>=11.3)
| +- soappy(install version:0.12.22 version range:*)
| +- tabulate(install version:0.7.7 version range:==0.7.7)
| +- termcolor(install version:1.1.0 version range:*)
| +- wstools(install version:0.4.3 version range:==0.4.3)
| | +- docutils(install version:0.15.2 version range:*) 

Thanks for your attention. Best, Neolith

NeolithEra commented 4 years ago

Suggested Solution

  1. Fix your direct dependencies to be httplib2 <1dev.
  2. Ask your upstream project google-api-python-client to loose the version range of httplib2 to be >=0.9.2.

@shatterednirvana Which solution do you prefer, 1 or 2? Please let me know your choice. May I pull a request to solve this issue?

whoarethebritons commented 4 years ago

Hey @NeolithEra , 1 would be the best way to go since we pin the version of google-api-python-client to 1.5.4, feel free to open a PR for this and I can run our tests on it.