keiffster / program-y

Python 3.x based AIML 2.0 Chatbot interpreter, framework, related programs and knowledge files
https://keiffster.github.io/program-y/
Other
348 stars 138 forks source link

Conflicts between programy and botbuilder-schema #246

Closed NeolithEra closed 3 years ago

NeolithEra commented 4 years ago

Hi, users are unable to run programy due to dependency conflict with botbuilder-schema package. As shown in the following full dependency graph of programy, botframework-connector requires botbuilder-schema >=4.5.0b5,while programy requires botbuilder-schema ==1.10.0.

According to pip’s “first found wins” installation strategy, botbuilder-schema 4.5.0b4 is the actually installed version. However, botbuilder-schema 4.5.0b4 does not satisfy >=4.5.0b5.

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

programy - 3.9.1
| +- botbuilder-core(install version: 4.5.0b4 version range: ==4.5.0b4)
| | +-botbuilder-schema(install version:4.5.0b4 version range:>=4.4.0b1)
| | +-botframework-connector(install version:4.5.0b5 version range:>=4.4.0b1)
| | | +-botbuilder-schema(install version:4.5.0b5 version range:>=4.5.0b5)
| +- apscheduler(install version:3.6.1 version range:==3.6.1)
| | +- pytz(install version:2019.3 version range:*)
| | +- setuptools(install version:42.0.2 version range:>=0.7)
| | +- six(install version:1.13.0 version range:>=1.4.0)
| | +- tzlocal(install version:2.0.0 version range:>=1.2)
| | | +- pytz(install version:2019.3 version range:*)
| +- autocorrect(install version:0.3.0 version range:==0.3.0)
| +- beautifulsoup4(install version:4.8 version range:==4.8)
| +- botbuilder-core(install version:4.5.0b4 version range:==4.5.0b4)
| +- botbuilder-schema(install version:4.5.0b4 version range:==4.5.0b4)
| +- discord.py(install version:1.2.3 version range:==1.2.3)
| +- emoji(install version:0.5.3 version range:==0.5.3)
| +- flask(install version:1.1.1 version range:==1.1.1)
| | +- click(install version:7.0 version range:>=5.1)
| | +- itsdangerous(install version:1.1.0 version range:>=0.24)
| | +- jinja2(install version:2.10.3 version range:>=2.10.1)
| | | +- markupsafe(install version:1.1.1 version range:>=0.23)
| | +- werkzeug(install version:0.16.0 version range:>=0.15)
| +- flask-socketio(install version:4.2.1 version range:==4.2.1)
| | +- flask(install version:1.1.1 version range:>=0.9)
| | | +- click(install version:7.0 version range:>=5.1)
| | | +- itsdangerous(install version:1.1.0 version range:>=0.24)
| | | +- jinja2(install version:2.10.3 version range:>=2.10.1)
| | | | +- markupsafe(install version:1.1.1 version range:>=0.23)
| | | +- werkzeug(install version:0.16.0 version range:>=0.15)
| | +- python-socketio(install version:4.4.0 version range:>=4.3.0)
| | | +- python-engineio(install version:3.11.1 version range:>=3.9.0)
| | | +- six(install version:1.13.0 version range:>=1.9.0)
| +- kik(install version:1.5.0 version range:==1.5.0)
| | +- requests(install version:2.22.0 version range:>=2.3.0)
| | | +- certifi(install version:2019.11.28 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)
| | +- six(install version:1.10.0 version range:==1.10.0)
| +- line-bot-sdk(install version:1.14.0 version range:==1.14.0)
| | +- future(install version:0.18.2 version range:*)
| | +- requests(install version:2.22.0 version range:>=2.0)
| | | +- certifi(install version:2019.11.28 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)
| +- lxml(install version:4.4.1 version range:==4.4.1)
| | +- cython(install version:0.29.14 version range:>=0.29.7)
| +- metoffer(install version:1.3.2 version range:==1.3.2)
| +- pymessenger(install version:0.0.7.0 version range:==0.0.7.0)
| | +- requests(install version:2.22.0 version range:*)
| | | +- certifi(install version:2019.11.28 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)
| | +- requests-toolbelt(install version:0.9.1 version range:*)
| | | +- requests(install version:2.22.0 version range:>=2.0.1,<3.0.0)
| | | | +- certifi(install version:2019.11.28 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)
| | +- six(install version:1.13.0 version range:*)
| +- pymongo(install version:3.9.0 version range:==3.9.0)
| +- pymysql(install version:0.9.3 version range:==0.9.3)
| +- python-dateutil(install version:2.8.0 version range:==2.8.0)
| | +- six(install version:1.13.0 version range:>=1.5)
| +- python-telegram-bot(install version:12.0.0 version range:==12.0.0)
| | +- certifi(install version:2019.11.28 version range:*)
| | +- cryptography(install version:2.8 version range:*)
| | +- future(install version:0.18.2 version range:>=0.16.0)
| | +- tornado(install version:6.0.3 version range:>=5.1)
| +- pyyaml(install version:5.1.2 version range:==5.1.2)
| +- redis(install version:3.3.8 version range:==3.3.8)
| +- requests(install version:2.22.0 version range:==2.22.0)
| | +- certifi(install version:2019.11.28 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)
| +- slackclient(install version:1.3.1 version range:==1.3.1)
| | +- requests(install version:2.22.0 version range:>=2.11,<3.0a0)
| | | +- certifi(install version:2019.11.28 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)
| | +- six(install version:1.13.0 version range:>=1.10,<2.0a0)
| | +- websocket-client(install version:0.54.0 version range:>=0.35,<0.55.0)
| | | +- six(install version:1.13.0 version range:*)
| +- sleekxmpp(install version:1.3.3 version range:==1.3.3)
| | +- dnspython(install version:1.16.0 version range:*)
| | +- pyasn1(install version:0.4.8 version range:*)
| | +- pyasn1-modules(install version:0.2.7 version range:*)
| +- sqlalchemy(install version:1.3.8 version range:==1.3.8)
| +- textblob(install version:0.15.3 version range:==0.15.3)
| | +- nltk(install version:3.4.5 version range:>=3.1)
| +- tweepy(install version:3.8.0 version range:==3.8.0)
| | +- pysocks(install version:1.7.1 version range:>=1.5.7)
| | +- requests(install version:2.22.0 version range:>=2.11.1)
| | | +- certifi(install version:2019.11.28 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)
| | +- requests-oauthlib(install version:1.3.0 version range:>=0.7.0)
| | +- six(install version:1.13.0 version range:>=1.10.0)
| +- twilio(install version:6.30.0 version range:==6.30.0)
| | +- pyjwt(install version:1.7.1 version range:>=1.4.2)
| | +- pytz(install version:2019.3 version range:*)
| | +- six(install version:1.13.0 version range:*)
| +- viberbot(install version:1.0.11 version range:==1.0.11)
| | +- future(install version:0.18.2 version range:*)
| | +- requests(install version:2.22.0 version range:*)
| | | +- certifi(install version:2019.11.28 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)
| +- wget(install version:3.2 version range:==3.2)
| +- wikipedia(install version:1.4.0 version range:==1.4.0)
| | +- beautifulsoup4(install version:4.8 version range:*)
| | +- requests(install version:2.22.0 version range:<3.0.0,>=2.0.0)
| | | +- certifi(install version:2019.11.28 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)

Thanks for your help. Best, Neolith

NeolithEra commented 4 years ago

Suggested Solution

  1. Fix your direct dependency to be botbuilder-schema>=4.5.0b4. I have checked this revision will not affect your downstream projects now.
  2. Ask your upstream project botframework-connector to loose the version range of botbuilder-schema.
  3. Remove your direct dependency botbuilder-schema, and use botbuilder-schema transitively introduced by botbuilder-core.

@keiffster Which solution do you prefer, 1, 2 or 3? Please let me know your choice. I can submit a PR to solve this issue.

keiffster commented 4 years ago

I'd go with 1, botframework-connector is owned by and produced by Microsoft, I don't think we are big enough to influence them

Post v4.0 release I am going to seperate all of the clients into their own Pypi packages, so that you install programy-core and then the clients of choice. This will significantly reduce the over package size of Programy which is growing past 30Mb

NeolithEra commented 4 years ago

@keiffster Thanks for your feedback. I will submit a PR with solution 1.

keiffster commented 4 years ago

Fixed and will be deployed in v4.0