Using Rasa without transitive dependencies

Currently, Rasa has a bunch of dependencies for various chat integrations. This is the list from setup.py from master branch.

slackclient~=1.3
python-telegram-bot~=11.0
twilio~=6.0
webexteamssdk~=1.1
mattermostwrapper~=2.0
rocketchat_API~=0.6.0

These packages, in turn, pull in a lot of other packages. All these dependencies are unused for the bots that use their own custom channels. Is there a plan to create something like “Rasa Lite” only with the core functionality? Our deployment bundles easily grow north of 200MBs (Spacy’s en_core_web_md being a major contributor) and we’d rather not have these extra packages lying around.

hi @akshay2000 - thanks for the suggestion! This is something we wanted to do but never got around to. I think it still makes sense, this would be an awesome contribution. Would you be up for tackling it?

Sounds interesting. I’d love to contribute. I will create a GitHub issue to discuss and track the approach. My initial idea is to drop those dependencies from setup.py and set up imports in Rasa channels code so that failed imports print error messages saying something on the lines of “you need package x to use this channel”. This is similar to what happens when a pipeline uses Spacy but it is not installed.

1 Like

Hey, Any update regarding this. I also faced a similar issue, with a lot of unwanted dependencies lying around. Was trying to deploy the bot to heroku, via github automatic deploy. The slug size exceeded 500 mb (580.4 mb). Is te rasa-lite docker image available ?