Given that the generation-3 butler will be available only after we are scheduled to have dropped Python 2 support next year, it is currently being developed as a Python 3 only package.
This raises the question of this topic: Which Python 3 features can we use once we are in a Python 3 only world?
In particular I was considering using PEP 484 type annotations to enable static analysis (which I think is useful for a core infrastructure component). This will obviously have to be RFC’d, but I was wondering what else we should explicitly decide to use or not use?
A priori I would presume that any feature available in our supported Python version should be usable. There may be some features that we collectively decide are not appropriate for our usage or should be restricted (akin to brace initialization in C++), but given the relative recency of Python 3 and its relative lack of backward-compatibility cruft, I wouldn’t expect much of that. I’d also look to authorities and external best practice guides first.