c21u / cert-mailer

Tool for emailing Blockcerts introduction emails and cert issuances
MIT License
5 stars 3 forks source link

Installation fails due to conflicting six version #6

Open NeolithEra opened 4 years ago

NeolithEra commented 4 years ago

Hi, users are unable to run Cert-mailer due to dependency conflict with six package. As shown in the following full dependency graph of Cert-mailer, Cert-mailer requires six==1.11.0,while tox>=2.3.1 requires six>=1.14.0.

According to pip’s “first found wins” installation strategy, six 1.11.0 is the actually installed version. However, six 1.11.0 does not satisfy six>=1.14.0.

Dependency tree-----------

cert-mailer - 0.0.4
| +- certifi(install version:2018.10.15 version range:==2018.10.15)
| +- chardet(install version:3.0.4 version range:==3.0.4)
| +- configargparse(install version:0.13.0 version range:==0.13.0)
| +- docopt(install version:0.4.0 version range:==0.4.0)
| +- idna(install version:2.7 version range:==2.7)
| +- mandrill-really-maintained(install version:1.2.4 version range:==1.2.4)
| | +- docopt(install version:0.4.0 version range:>=0.4.0)
| | +- requests(install version:2.20.0 version range:>=0.13.2)
| | | +- certifi(install version:2018.10.15 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | | +- urllib3(install version:1.24 version range:>=1.21.1,<1.25)
| +- pillow(install version:5.3.0 version range:==5.3.0)
| +- python-http-client(install version:3.1.0 version range:==3.1.0)
| +- qrcode(install version:6.0 version range:==6.0)
| +- requests(install version:2.20.0 version range:==2.20.0)
| | +- certifi(install version:2018.10.15 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.7 version range:>=2.5,<2.8)
| | +- urllib3(install version:1.24 version range:>=1.21.1,<1.25)
| +- sendgrid(install version:5.6.0 version range:==5.6.0)
| | +- flask(install version:0.10.1 version range:==0.10.1)
| | | +- itsdangerous(install version:1.1.0 version range:>=0.21)
| | | +- jinja2(install version:2.11.2 version range:>=2.4)
| | | | +- MarkupSafe(install version:2.0.0a1 version range:>=0.23)
| | | +- werkzeug(install version:1.0.1 version range:>=0.7)
| | +- python-http-client(install version:2.2.1 version range:==2.2.1)
| | +- pyyaml(install version:3.11 version range:==3.11)
| | +- six(install version:1.10.0 version range:==1.10.0)
| +- six(install version:1.11.0 version range:==1.11.0)
| +- tox(install version:3.14.6 version range:>=3.0.0)
| | +- six(install version:1.15.0 version range:>=1.14.0)
| +- urllib3(install version:1.24 version range:==1.24)

Thanks for your help. Best, Neolith

NeolithEra commented 4 years ago

Solution

  1. Loosen the version range of six to be >=1.11.0.
  2. Remove your direct dependency six, and use the six transitively introduced by tox. @stuartf Which solution do you prefer, 1 or 2? Please let me know your choice. May I pull a request to solve this issue?
stuartf commented 4 years ago

I think I prefer removing the direct dependency on six, I don't think it's actually even used by the code and was possibly added as a dependency by mistake. I'd gladly accept a pull request