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.