On 15/02/2021 02:53, Craig Rodrigues wrote:
It's time for another Twisted release!

There are two major announcements for this release:

- Python 2.7 support has been dropped.  Twisted 21.2.0 supports Python 3.5 and higher only
- This will be the last Twisted release to support Python 3.5.

Thanks Craig for getting this release ready.

It looks like it is incompatible with Python 3.5.2: exception as below. There's no real reason you should care about this, except that it is (still!) what Ubuntu 16.04LTS ships with, and Ubuntu claim to still be supporting 16.04 until April this year, so this might catch a few people by surprise, as it did me[1]. Anyway, I suggest bumping `python_requires` in `setup.cfg` (https://github.com/twisted/twisted/blob/trunk/setup.cfg#L27), to stop the new version being installed on systems where it won't work.

(env3)rav@faith:~$ python3
Python 3.5.2 (default, Oct  7 2020, 17:19:02)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from twisted.python import log
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/synapse/env3/lib/python3.5/site-packages/twisted/python/log.py", line 20, in <module>
    from twisted.python import reflect
  File "/home/synapse/env3/lib/python3.5/site-packages/twisted/python/reflect.py", line 377, in <module>
    def _safeFormat(formatter: Union[types.FunctionType, Type[str]], o: object) -> str:
  File "/usr/lib/python3.5/typing.py", line 552, in __getitem__
    dict(self.__dict__), parameters, _root=True)
  File "/usr/lib/python3.5/typing.py", line 512, in __new__
    for t2 in all_params - {t1} if not isinstance(t2, TypeVar)):
  File "/usr/lib/python3.5/typing.py", line 512, in <genexpr>
    for t2 in all_params - {t1} if not isinstance(t2, TypeVar)):
  File "/usr/lib/python3.5/typing.py", line 1077, in __subclasscheck__
    if super().__subclasscheck__(cls):
  File "/usr/lib/python3.5/abc.py", line 225, in __subclasscheck__
    for scls in cls.__subclasses__():
TypeError: descriptor '__subclasses__' of 'type' object needs an argument


[1] Yes, yes, I know. I'm going to fix it real soon, I promise.