This also runs black to reformat the affected files, which had been
causing failures because of upstream updates.
Ideally, we need a more sophisticated toolchain for managing the
versions of the dependencies instead of just requirements.txt. This
should be due in a possible future cleanup.
Signed-off-by: Zixuan James Li <p359101898@gmail.com>
Now we will be able to execute `zulip-run-bot` with the `-r` argument
to search for and run bots from the `zulip_bots.registry` entry_point.
Each entry point should have the name correspond to the bot name,
and have the value be the bot module. E.g, an Python package for a
bot called "packaged_bot" should have an `entry_points` setup like
the following:
setup(
...
entry_points={
"zulip_bot.registry":[
"packaged_bot=packaged_bot.packaged_bot"
]
}
...
)
whose file structure may look like this:
packaged_bot/
├───packaged_bot/
| ├───packaged_bot.py # The bot module
| ├───test_packaged_bot.py
| ├───packaged_bot.conf
| └───doc.md
└───setup.py # Register the entry points here
Add test case.
This will make it easier to run standalone
bots in containers like Heroku that prefer
env-var-style configuration.
For now this is undocumented, but we should
update the server docs once a few folks have
tried it out.
(The history behind requiring the config file
is that I wanted to keep things simple and
be strongly opinionated about how you run
bots, so that the docs didn't overwhelm folks,
but this use case has come up more frequently.)