Information about Indico 3.0

Yesterday afternoon we finally deployed Indico 3.0 to our main instance at CERN. As you can imagine, this is an important step towards a proper public release. While we are not there yet, it’s coming much closer.

If you are interested in the upcoming changes, have a look at our blog post describing the new version.


If you are the developer or maintainer of any Indico plugins, you may also want to start working on porting those to Indico 3:

To adapt the code to Python 3, use modernize and pyupgrade (both installable via pip):

  • modernize --no-diffs -n -w -x import indico_yourplugin/
  • pyupgrade --py39-plus indico_yourplugin/**/*.py

Note that the second command requires a shell that supports ** (e.g. zsh); otherwise you can also use the equivalent with find or similar tools. These tools should take care of most of the changes, but of course you need to test your code in case they missed anything that only works on Python 2. Also, make sure there are no six imports left at the end - this is something Python-3-only code doesn’t need.

Moving to Python 3 may be a good opportunity to refresh the package metadata a bit as well.

For example, we started using setup.cfg instead of setup.py for the metadata (so all the latter contains is the import and call of setup).
See here and here for an example. You can just copy those files, remove our header in the python file, and adapt the setup.cfg content.

If you have a README for your plugin, reference it in your setup.cfg as well, so it’s visible on PyPI:

long_description = file: README.md
long_description_content_type = text/markdown; charset=UTF-8; variant=CommonMark

If you use a different markdown dialect or rst for the README, adapt those two lines accordingly.

For testing purposes, you can use the development setup guide which has already been updated for 3.0.